مهندس موفق الکترونیک

ارتباط رزبری‌پای با DHT11

مقدمه

  • سنسور DHT11 مقادیر رطوبت و دما را اندازه‌گیری کرده و به صورت سریال روی یک خط مهیا می‌سازد.
  • این سنسور می‌تواند رطوبت را به صورت درصدی (۲۰ تا ۹۰ درصد RH) اندازه‌گیری کرده و دما را در محدوده ۰ تا ۵۰ درجه سلسیوس اندازه‌گیری کند.
  • سنسور دارای ۴ پین است؛ که یکی از این پین‌ها برای ارسال داده به شکل سریال به کار می‌رود.
  • پالس‌های TON و TOFF به عنوان منطق ۱ یا منطق ۰ یا پالس شروع و پایان فریم دیکود می‌شوند.

ارتباط رزبری‌پای با DHT11

برای کسب اطلاعات بیشتر درباره سنسور DHT11 و نحوه بکاگیری آن، به مطلب سنسور DHT11 در بخش ماژول‌ها و سنسورها مراجعه کنید.

دیاگرام اتصالات

ارتباط رزبری‌پای با DHT11

مثال

  • در اینجا، قصد داریم بین سنسور DHT11 و رزبری‌پای ارتباط برقرار کرده و رطوبت و دما را روی ترمینال نمایش دهیم.
  • ما در این مثال از کتابخانه‌ی پایتون سنسور DHT، نوشته Adafruit در گیت‌هاب استفاده می‌کنیم. کتابخانه‌ی Adafruit سنسور DHT، برای خواندن رطوبت و دما روی رزبری‌پای یا Beaglebone Black نوشته شده است. این کتابخانه برای سنسورهایی مانند DHT22 ،DHT11 یا AM2302 نوشته شده است.

کتابخانه‌ی Adafruit سنسور DHT را از اینجا دانلود کنید.

  • کتابخانه را از حالت فشرده خارج کرده و با وارد کردن کد زیر، آن را در همان دایرکتوری که دانلود شده نصب کنید.
sudo python setup.py install
  • پس از نصب کتابخانه و پکیج‌های وابسته‌ی آن، مثال اسکچ simpletest را از کتابخانه‌ی موجود در پوشه‌ی مثال‌ها باز کنید.
  • در این کد، رزبری‌پای رطوبت و دما را از سنسور DHT11 خوانده و آنها را روی ترمینال چاپ می‌کند. در این مثال مقادیر تنها یک بار خوانده و چاپ می‌شوند. بنابراین، تغییراتی در برنامه ایجاد کرده‌ایم تا مقادیر بی‌وقفه چاپ شوند.
مطلب پیشنهادی:  نوشتن و اجرای یک برنامه C روی رزبری‌پای

نکته:

  • به متغیر سنسور در کتابخانه، نوع سنسور مناسب را اختصاص دهید. در اینجا، ما از سنسور DHT11 استفاده کرده‌ایم.
sensor = Adafruit_DHT.DHT11
  • اگر می‌خواهید از سنسور DHT22 استفاده کنید، آنگاه باید عبارت DHT22 را به متغیر سنسور اضافه کنید.
  • همچنین تعریف پین Beaglebone را کامنت کرده و اعلان پین رزبری‌پای را از حالت کامنت خارج کنید.
  • سپس شماره‌ی پینی که پین داده‌ی سنسور DHT به آن متصل است را مشخص کنید.همان طور که در شکل بالا مشخص است، در اینجا، داده خروجی سنسور DHT11 به GPIO4 متصل است.

برنامه پایتون

#!/usr/bin/python

# Copyright (c) 2014 Adafruit Industries
# Author: Tony DiCola

# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:

# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
import Adafruit_DHT

# Sensor should be set to Adafruit_DHT.DHT11,
# Adafruit_DHT.DHT22, or Adafruit_DHT.AM2302.
sensor = Adafruit_DHT.DHT11

# Example using a Beaglebone Black with DHT sensor
# connected to pin P8_11.
#pin = 'P8_11'

# Example using a Raspberry Pi with DHT sensor
# connected to GPIO4.
pin = 4

# Try to grab a sensor reading. Use the read_retry method which will retry up
# to 15 times to get a sensor reading (waiting 2 seconds between each retry).
while True:
     humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
     print('Temp={0:0.1f}*C Humidity={1:0.1f}%'.format(temperature, humidity))
'''
# Note that sometimes you won't get a reading and
# the results will be null (because Linux can't
# guarantee the timing of calls to read the sensor).
# If this happens try again!
if humidity is not None and temperature is not None:
print('Temp={0:0.1f}*C Humidity={1:0.1f}%'.format(temperature, humidity))
else:
    print('Failed to get reading. Try again!')
'''

خروجی DHT11

ارتباط رزبری‌پای با DHT11

منبع: ترجمه از سایت electronicwings.com

مطلب پیشنهادی:  اتصال سنسور رطوبت DHT22 به رزبری‌پای

اگر آموزش ارتباط رزبری‌پای با DHT11 براتون مفید واقع شده ما را نیز دعا کنید و اگر خواستین می‌توانید از محتوا‌ی رایگان آموزشی حمایت مالی کنید. همچنین نظرات، پیشنهادات و درخواست‌های خود را در کامنت‌ها ⇓ بنویسید.

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *