سنسورهای رطوبت و دما متعددی جهت اندازه گیری و سنجش آب و هوا تولید شده است که در این آموزش قصد داریم به یکی از پرکاربردترین آنها یعنی سنسور رطوبت و دما دیجیتال DHT11 بپردازیم. سنسور DHT11 از قبل عمل کالیبراسیون بر روی آن انجام شده است و نیاز به اجزای اضافی ندارد. بنابراین ما می توانیم بهراحتی سنسور DHT11 را راه اندازی کنیم و عملیات خواندن رطوبت نسبی و درجه حرارت را توسط سنسور DHT11 انجام دهیم.
همچنینDHT11 یک سنسور دما و رطوبت دیجیتال فوق العاده مقرون به صرفه است. این ماژول دما و رطوبت، درون خود از یک سنسور رطوبت خازنی و یک ترمیستور برای اندازهگیری دما استقاده میکند که دارای مداری برای تبدیل مقادیر انالوگ به صورت دیجیتال است لذا برای خواندن مقادیر شما نیازی به پین های آنالوگ میکرو نخواهید داشت. تنها نکتهای که در کار با این سنسور باید رعایت شود، زمانبندی دقیق در هنگام خواندن مقادیر از سنسور بوده که برای این سنسور یک عیب محسوب میشود .
تعریف پایه های سنسور DHT11
برای آسانتر شدن اتصال سخت افزاری سنسور ترتیب پایهها را ملاحظه میکنید:
نحوه اتصال بین سنسور DHT11 و رزبری پای
همانند تصویر زیر برای اتصال سنسور DHT11 و رزبری پای مراحل زیر را دنبال می کنیم:
اتصال پین دیتا سنسور به یکی از پین های I/O رزبری پای ( سیم سبزکه به GPIO4 متصل است. )
قرار دادن مقاومت ۱۰ کیلو بین پین دیتا و پین مثبت
آماده سازی نرم افزاری Raspberry Pi
قبل از اسکریپت نویسی پایتون برای سنسور DHT11 ابتدا باید از آپدیت بودن رزبری پای مورد استفاده مطمئن شویم. بدین منظور پنجره CommandLine را باز کرده و دستورات زیر را جهت به روز رسانی سیستم عامل و نصب آن وارد میکنیم:
sudo apt-get update
sudo apt-get upgrade
در ادامه بعد از به روز رسانی و نصب آن باید python و (پکیج های کتابخانه استاندارد پایتون) pip را بر روی رزبری پای خود نصب کنیم. بدین منظور دستور زیر را در CommandLine وارد می کنیم:
sudo apt-get install python-dev python-pip
حال قبل از دانلود کتابخانه DHT11، با وارد کردن دستور زیر در CommandLine از نصب بودن آخرین نسخه پکیجهای setuptools, wheel و pip مطمئن میشویم:
اکنون با استفاده از pip و دستور زیر، کتابخانه پایتون برای ارتباط با رزبری پای را دانلود میکنیم.
sudo pip install Adafruit_DHT
برنامه نویسی پایتون برای سنسور DHT11
ابتدا با وارد کردن دستور زیر یک اسکریپت پایتون برای کدنویسی ایجاد میکنیم:
nano ~/humidity.py
سپس بعد از وارد شدن به اسکریپت پایتون، ابتدا کتابخانه مربوط به سنسور را با دستور زیر اضافه میکنیم :
import Adafruit_DHT
با استفاده از این کتابخانه به راحتی می توانیم با سنسور ارتباط برقرار کرده و به راحتی دما و رطوبت محیط را بخوانیم.
DHT_SENSOR = Adafruit_DHT.DHT11
حال باید پین متصل شده به رزبری پای را در کد مشخص کنیم :
DHT_PIN =4
در ادامه با استفاده از تابع “read_retry” و حلقه نامتناهی “while TRUE:” به صورت پیوسته دما و رطوبت را از سنسور خود تا اتمام اسکریپت پایتون میخوانیم:
whileTrue:
humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)
در پایان نحوه خروجی کد را با کد زیر مشخص میکنیم:
if humidity isnotNoneand temperature isnotNone:print("Temp={0:0.1f}*C Humidity={1:0.1f}%".format(temperature, humidity))else:print("Failed to retrieve data from humidity sensor")
کد بالا بدین معنی بوده که در صورت دریافت اطلاعات صحیح دما و رطوبت از سنسور، مقادیر آنها را در خروجی نشان داده و در غیر این صورت پیغام خطا را نمایش دهد.
برنامه کامل پایتون
import Adafruit_DHT
import time
import Adafruit_CharLCD as LCD
# Raspberry Pi pin setup
lcd_rs =25
lcd_en =24
lcd_d4 =23
lcd_d5 =17
lcd_d6 =18
lcd_d7 =22
lcd_backlight =2# Define LCD column and row size for 16x2 LCD.
lcd_rows =2
DHT_SENSOR = Adafruit_DHT.DHT11
DHT_PIN =4
lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight)
lcd.message(Redronic')# Wait 5 seconds
time.sleep(5.0)
lcd.clear()whileTrue:
humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)if humidity isnotNoneand temperature isnotNone:print("Temp={0:0.1f}*C Humidity={1:0.1f} %".format(temperature, humidity))
lcd.message(“Temp={0:0.1f}*C Humidity={1:0.1f}%".format(temperature, humidity))else:print("Failed to retrieve data from humidity sensor")
در پایان با اتمام نوشتن کد بالا و فشار دادن کلید های CTRL + X و سپس Y (در انتها زدن کلید Enter) اقدام به ذخیره اسکریپت نوشته شده کرده و با وارد کردن دستور زیر در پنجره Command Line آن را اجرا میکنیم: