شِفر (کود) آردوینو و ویدیو برای حساس(حس کننده) دما و رطوبت DHT11
در این آموزش، نحوهٔ استفاده از حساس(حس کننده) دما و رطوبت DHT11 با آردوینو را بررسی میکنیم. این حساس(حس کننده) گزینهای کمهزینه برای اندازهگیری هر دو پارامتر دما و رطوبت است و آن را به انتخابی ایدهآل برای پروژههای مختلف تبدیل میکند. ما سیمکشی، شِفر (کود) لازم و چگونگی تعامل اجزا برای ارائهٔ اندازهگیریهای دقیق را پوشش خواهیم داد.

تا پایان این آموزش قادر خواهید بود دما را برحسب سلسیوس، فارنهایت و کلوین و همچنین میزان رطوبت را از حساس(حس کننده) DHT11 بخوانید. برای وضوح بیشتر حتماً ویدیو را در زمانهای مشخصشده ببینید (در ویدیو در 00:00).
شرح سختافزار
حساس(حس کننده) DHT11 شامل سه پایه است: زمین، تغذیه و دیتا. پایه زمین به زمین آردوینو متصل میشود، در حالی که پایه تغذیه به منبع 5V از آردوینو متصل است. پایه دیتا مسئول ارتباط بین آردوینو و حساس(حس کننده) است و به آردوینو امکان خواندن مقادیر دما و رطوبت را میدهد.
این حساس(حس کننده) از خروجی دیجیتال استفاده میکند، به این معنی که دادهها را بهصورت سریال به آردوینو ارسال میکند. این دستگاه دارای یک ترمیستور برای اندازهگیری دما و یک حساس(حس کننده) رطوبت خازنی است. DHT11 سیگنالهای آنالوگ دریافتی را به سیگنالهای دیجیتال تبدیل میکند و پردازش دادهها را برای میکروکنترلرهایی مانند آردوینو سادهتر میسازد.
جزئیات دیتاشیت
| تولیدکننده | ASAIR |
|---|---|
| شماره قطعه | DHT11 |
| ولتاژ منطقی/ورودی-خروجی | 3.3-5.5 ولت |
| ولتاژ تغذیه | 3.3-5.5 ولت |
| جریان خروجی (برای هر کانال) | ۰٫۵ میلیآمپر |
| جریان پیک (برای هر کانال) | 2.5 mA |
| راهنمای فرکانس PWM | مربوط نیست |
| آستانههای منطقی ورودی | 0.3*Vدیدیتا 0.7*Vدی دی |
| افت ولتاژ / RDS(on)/ اشباع | قابل اعمال نیست |
| محدودیتهای حرارتی | 0 تا 60 °C |
| بسته | 4 پایه DIP |
| یادداشتها / واریانتها | کمهزینه و آسان برای استفاده |
- ولتاژ کاری بین 3.3V تا 5.5V.
- حداکثر جریان خروجی 2.5 mA.
- دامنه دما از 0 تا 60 درجه سانتیگراد.
- دامنه رطوبت از 20% تا 90%.
- برای خوانشهای پایدار از مقاومت پول-آپ روی پایه داده استفاده کنید.
- برای جلوگیری از ورودیهای شناور، اتصال مناسب را برقرار کنید.
- هنگام اتصال برق مراقب پلاریته معکوس باشید.
- برای نتایج دقیقتر، خوانشها را حداقل 1 ثانیه به تأخیر بیندازید.
دستورالعملهای سیمکشی

برای سیمکشی حساس(حس کننده) DHT11 به آردوینو، مراحل زیر را دنبال کنید:
ابتدا پایه زمین (معمولاً سیاه یا قهوهای) حساس(حس کننده) DHT11 را به زمین (GND) آردوینو متصل کنید. سپس پایه تغذیه (معمولاً قرمز) DHT11 را به خروجی 5V آردوینو وصل کنید. در نهایت پایه داده (معمولاً زرد یا سفید) را به پایه دیجیتال 2 آردوینو وصل کنید. مطمئن شوید از یک مقاومت پول-آپ (حدود 10k اهم) بین پایه داده و پایه تغذیه استفاده کنید تا ارتباط پایدار باشد.
نمونههای شِفر (کود) و راهنمای گامبهگام
در شِفر (کود) آردوینو، کار را با وارد کردن فایل هدر لازم برای حساس(حس کننده) DHT11 آغاز میکنیم:
#include این خط کتابخانهای را وارد میکند که شامل توابع لازم برای برقراری ارتباط با حساس(حس کننده) DHT11 است. سپس یک نمونه از کلاس DHT11 ایجاد میکنیم:
dht11 DHT11; // create object of DHT11این خط شیء DHT11 را مقداردهی اولیه میکند که از آن برای خواندن دادهها از حساس(حس کننده) استفاده خواهیم کرد. پایه متصل به DHT11 بهصورت زیر تعریف شده است:
#define dhtpin 2 // set the pin to connect to DHT11این پایه دادهٔ حساس(حس کننده) را روی پایه 2 آردوینو تنظیم میکند. درloop()در تابع، دادههای حساس(حس کننده) را میخوانیم:
DHT11.read(dhtpin);// initialize the readingاین خط فرآیند خواندن را آغاز میکند، و رطوبت را میتوان با:
int humidity = DHT11.humidity;// get humidityمقدار رطوبت در متغیر ذخیره میشودhumidity، که سپس همراه با مقادیر دما تبدیلشده به سلسیوس، فارنهایت و کلوین، روی نمایشگر مسلسل چاپ میشود
نمایش / چه انتظاری داشته باشید
وقتی شِفر (کود) را اجرا کنید، باید مقادیر دما و رطوبت را در نمایشگر مسلسل ببینید. خوانشهای دما هر نیمثانیه بهروزرسانی میشوند (در ویدئو در 00:00). اگر حساس(حس کننده) گرم یا خنک شود، متوجه تغییر مقادیر خواهید شد. مراقب باشید، چون DHT11 حداکثر دمایی برابر با 60 درجه سانتیگراد دارد؛ عبور از این مقدار ممکن است به خوانشهای نادرست منجر شود.
برچسبهای زمانی ویدیو
- 00:00- معرفی حساس(حس کننده) DHT11
- 01:30- دستورالعملهای سیمکشی
- 02:15- مروری بر شِفر (کود)
- 03:00- اجرای شِفر (کود) و خروجی مورد انتظار
/*
* This is the Arduino code for the DHT11 module to read temperature and humidity.
* This code can display temperature in:
* C is used to get Celsius.
* F is used to get Fahrenheit.
* K is used for Kelvin.
* Watch the video https://youtu.be/FjZBt6eU9b4
*
* Written by Ahmad Nejrabi for Robojax Video
* Date: January 4, 2018, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*/
// header file from GitHub: https://github.com/adidax/dht11
#include <dht11.h>
dht11 DHT11; // create object of DHT11
#define dhtpin 2 // set the pin to connect to DHT11
void setup() {
Serial.begin(9600);// setting up serial monitor
}
void loop() {
DHT11.read(dhtpin);// initialize the reading
//code for Robojax.com video
int humidity = DHT11.humidity;// get humidity
Serial.print(getTemp('C'));
Serial.print("C ");
Serial.print(getTemp('F'));
Serial.print("F ");
Serial.print(getTemp('K'));
Serial.print("K ");
Serial.print(" humidity:");
Serial.print (humidity);
Serial.println("% ");
Serial.println();
delay(500);
}
/*
* getTemp(char type)
* type character of upper case.
* C is used to get Celsius.
* F is used to get Fahrenheit.
* K is used for Kelvin.
*/
float getTemp(char type) {
float temp = (float)DHT11.temperature;//get temp
if(type =='F')
{
return temp * 1.8 + 32;// convert to Fahrenheit
}else if(type =='K')
{
return temp + 274.15;// convert to Kelvin
}else{
return temp;
}
}
منابع و مراجع
-
خارجیکتابخانه DHT11 در گیتهابgithub.com
فایلها📁
کتابخانههای آردوینو (zip)
-
کتابخانه آردوینو DHT22
robojax-DHT22_library.zip0.01 MB
فایل فریزینگ
-
حساس(حس کننده) دما DHT11
Temperature Sensor DHT11.fzpz0.01 MB
راهنمای کاربر
-
راهنمای کاربری DHT11
robojax-DHT11_manual.pdf0.82 MB