سنسورهای DHT11 و DHT22 از جمله سنسورهای پرکاربرد برای اندازهگیری دما و رطوبت محیط هستند که به دلیل سادگی استفاده و قیمت مناسب، در پروژههای آردوینو بسیار محبوب شدهاند. این مقاله به شما کمک میکند تا این سنسورها را با آردوینو راهاندازی کنید.
معرفی سنسورهای DHT11 و DHT22
این سنسورها از نوع دیجیتال هستند و دادههای دما و رطوبت را به صورت سریال تک سیمه (One-Wire) ارسال میکنند. تفاوت اصلی بین DHT11 و DHT22 در دقت، محدوده اندازهگیری و سرعت نمونهبرداری است:
* محدوده رطوبت: 20% تا 90% RH با دقت ±5%.
* رزولوشن: 1 درجه سانتیگراد و 1% RH.
* سرعت نمونهبرداری: هر 1 ثانیه یک بار.
* قیمت پایینتر.
* محدوده رطوبت: 0% تا 100% RH با دقت ±2-5%.
* رزولوشن: 0.1 درجه سانتیگراد و 0.1% RH.
* سرعت نمونهبرداری: هر 2 ثانیه یک بار.
* قیمت بالاتر و دقت بیشتر.
هر دو سنسور معمولاً در یک ماژول با سه یا چهار پایه عرضه میشوند. اگر چهار پایه داشته باشد، پایه سوم (NC) معمولاً استفاده نمیشود.
اتصال سختافزاری
برای اتصال سنسور DHT به آردوینو، به یک مقاومت پولآپ (Pull-up Resistor) نیاز دارید که معمولاً 4.7 کیلواهم تا 10 کیلواهم است. برخی از ماژولهای DHT این مقاومت را به صورت داخلی دارند.
پایههای سنسور DHT (معمولاً 3 یا 4 پایه):
1. VCC (یا 3V-5V): به 5V آردوینو متصل میشود.
2. Data (یا SIG): به یکی از پینهای دیجیتال آردوینو (مثلاً پین 2) متصل میشود. مقاومت پولآپ بین این پایه و VCC قرار میگیرد.
3. NC (Not Connected): در برخی مدلها وجود دارد و استفاده نمیشود.
4. GND: به GND آردوینو متصل میشود.
نمودار اتصال (مثال برای DHT11/DHT22 با مقاومت خارجی):
نصب کتابخانه (Library Installation)
برای کار با سنسورهای DHT، استفاده از کتابخانه Adafruit DHT Sensor Library توصیه میشود.
1. نرمافزار Arduino IDE را باز کنید.
2. به مسیر
3. در پنجره Library Manager، عبارت "DHT sensor" را جستجو کنید.
4. کتابخانه "DHT sensor library by Adafruit" را پیدا کرده و نصب کنید.
5. همچنین، این کتابخانه به کتابخانه "Adafruit Unified Sensor" نیاز دارد. آن را نیز جستجو و نصب کنید.
کد نمونه (Sample Code)
این کد دما و رطوبت را از سنسور DHT میخواند و در سریال مانیتور نمایش میدهد.
توضیح کد:
1.
2.
3.
4.
5.
*
*
6.
*
*
*
*
*
*
* در نهایت، مقادیر خوانده شده را در سریال مانیتور چاپ میکند.
نکات عیبیابی:
* مطمئن شوید که VCC و GND به درستی وصل شدهاند.
* نوع سنسور (
* ممکن است سنسور خراب باشد.
* تاخیر بین خواندنها را افزایش دهید (مثلاً به 2000 میلیثانیه).
* کتابخانه "Adafruit Unified Sensor" را نیز نصب کردهاید.
با دنبال کردن این مراحل، میتوانید به راحتی سنسورهای DHT11 یا DHT22 را با آردوینو خود راهاندازی کرده و دادههای دما و رطوبت را در پروژههایتان استفاده کنید.
معرفی سنسورهای DHT11 و DHT22
این سنسورها از نوع دیجیتال هستند و دادههای دما و رطوبت را به صورت سریال تک سیمه (One-Wire) ارسال میکنند. تفاوت اصلی بین DHT11 و DHT22 در دقت، محدوده اندازهگیری و سرعت نمونهبرداری است:
- DHT11:
* محدوده رطوبت: 20% تا 90% RH با دقت ±5%.
* رزولوشن: 1 درجه سانتیگراد و 1% RH.
* سرعت نمونهبرداری: هر 1 ثانیه یک بار.
* قیمت پایینتر.
- DHT22 (AM2302):
* محدوده رطوبت: 0% تا 100% RH با دقت ±2-5%.
* رزولوشن: 0.1 درجه سانتیگراد و 0.1% RH.
* سرعت نمونهبرداری: هر 2 ثانیه یک بار.
* قیمت بالاتر و دقت بیشتر.
هر دو سنسور معمولاً در یک ماژول با سه یا چهار پایه عرضه میشوند. اگر چهار پایه داشته باشد، پایه سوم (NC) معمولاً استفاده نمیشود.
اتصال سختافزاری
برای اتصال سنسور DHT به آردوینو، به یک مقاومت پولآپ (Pull-up Resistor) نیاز دارید که معمولاً 4.7 کیلواهم تا 10 کیلواهم است. برخی از ماژولهای DHT این مقاومت را به صورت داخلی دارند.
پایههای سنسور DHT (معمولاً 3 یا 4 پایه):
1. VCC (یا 3V-5V): به 5V آردوینو متصل میشود.
2. Data (یا SIG): به یکی از پینهای دیجیتال آردوینو (مثلاً پین 2) متصل میشود. مقاومت پولآپ بین این پایه و VCC قرار میگیرد.
3. NC (Not Connected): در برخی مدلها وجود دارد و استفاده نمیشود.
4. GND: به GND آردوینو متصل میشود.
نمودار اتصال (مثال برای DHT11/DHT22 با مقاومت خارجی):
- DHT VCC --- به آردوینو 5V
- DHT Data --- به آردوینو Digital Pin 2
- مقاومت 10KΩ --- بین DHT Data و DHT VCC
- DHT GND --- به آردوینو GND
نصب کتابخانه (Library Installation)
برای کار با سنسورهای DHT، استفاده از کتابخانه Adafruit DHT Sensor Library توصیه میشود.
1. نرمافزار Arduino IDE را باز کنید.
2. به مسیر
Sketch > Include Library > Manage Libraries... بروید.3. در پنجره Library Manager، عبارت "DHT sensor" را جستجو کنید.
4. کتابخانه "DHT sensor library by Adafruit" را پیدا کرده و نصب کنید.
5. همچنین، این کتابخانه به کتابخانه "Adafruit Unified Sensor" نیاز دارد. آن را نیز جستجو و نصب کنید.
کد نمونه (Sample Code)
این کد دما و رطوبت را از سنسور DHT میخواند و در سریال مانیتور نمایش میدهد.
C++:
محتوای بلوک کدها در دسترس شما نیست. برای مشاهده بلوک کدها، وارد انجمن شوید یاثبت نام کنید
توضیح کد:
1.
#include "DHT.h": کتابخانه DHT را وارد میکند.2.
#define DHTPIN 2: پین دیجیتال آردوینو که سنسور به آن متصل است را تعریف میکند.3.
#define DHTTYPE DHT11: نوع سنسور را مشخص میکند (میتوانید آن را به DHT22 تغییر دهید).4.
DHT dht(DHTPIN, DHTTYPE);: یک شیء از کلاس DHT ایجاد میکند که با پین و نوع سنسور شما کار میکند.5.
setup():*
Serial.begin(9600);: ارتباط سریال را برای نمایش خروجی در سریال مانیتور با سرعت 9600 بیت بر ثانیه آغاز میکند.*
dht.begin();: سنسور DHT را راهاندازی میکند.6.
loop():*
delay(2000);: یک تاخیر 2 ثانیهای ایجاد میکند. این تاخیر برای اطمینان از اینکه سنسور زمان کافی برای جمعآوری دادهها را دارد، ضروری است.*
dht.readHumidity();: رطوبت را میخواند.*
dht.readTemperature();: دما را به سانتیگراد میخواند.*
dht.readTemperature(true);: دما را به فارنهایت میخواند (با ارسال true به عنوان پارامتر).*
isnan(h) || isnan(t) || isnan(f): بررسی میکند که آیا خواندن دادهها با موفقیت انجام شده است یا خیر. isnan به معنای "is not a number" است و نشاندهنده خطای خواندن است.*
dht.computeHeatIndex(t, h, false);: شاخص گرما را بر اساس دما و رطوبت محاسبه میکند. پارامتر false برای محاسبه در واحد سانتیگراد است.* در نهایت، مقادیر خوانده شده را در سریال مانیتور چاپ میکند.
نکات عیبیابی:
- "Failed to read from DHT sensor!":
* مطمئن شوید که VCC و GND به درستی وصل شدهاند.
* نوع سنسور (
DHTTYPE) را در کد با سنسور واقعی خود مطابقت دهید.* ممکن است سنسور خراب باشد.
- مقادیر غیرمنطقی:
* تاخیر بین خواندنها را افزایش دهید (مثلاً به 2000 میلیثانیه).
- کتابخانه نصب نمیشود:
* کتابخانه "Adafruit Unified Sensor" را نیز نصب کردهاید.
با دنبال کردن این مراحل، میتوانید به راحتی سنسورهای DHT11 یا DHT22 را با آردوینو خود راهاندازی کرده و دادههای دما و رطوبت را در پروژههایتان استفاده کنید.