سنسور DHT-22 (که با نام AM2302 نیز شناخته می شود)، یک سنسور عالی جهت سنجش دما و رطوبت با خروجی دیجتال می باشد. این سنسور از دو سنسور تشکیل شده است :
- سنسور رطوبت خازنی
- سنسور دمای ترمیستوری (مقاومت وابسته به دما)
این سنسور در قالب یک ماژول عرضه می گردد که دارای یک مبدل A/D داخلی نیز می باشد و خروجی این ماژول یک سیگنال دیجیتال است.
مشخصات فنی سنسور :
- تغذیه 3V تا 5V
- حداکثر جریان تغذیه 5mA
- اندازه گیری رطوبت از 0% تا 100% با دقت 2 تا 5 درصد
- اندازه گیری دما از منفی 40 درجه سانتی گراد تا مثبت 80 درجه سانتی گراد با دقت مثبت/منفی نیم درجه سانتی گراد
شکل زیر این ماژول را به همراه ترتیب پایه ها نشان می دهد :
مطابق شکل، پایه اول این ماژول به تغذیه VCC (بین 3V تا 5V) و پایه چهارم این ماژول به زمین GND متصل می شود و پایه دوم این تراشه خروجی سنسور ما خواهد بود که باید به برد متصل کنیم. پایه سوم نیازی به اتصال به جایی ندارد.
در ادامه مجموعه پروژه های آردوینو، در این آموزش نحوه کار با این سنسور و چاپ رطوبت و دمای محیط در خروجی سریال را توسط برد Arduino UNO توضیح می دهیم.
اجزای مورد نیاز :
- برد بورد
- برد Arduino Uno R3
- سنسور DHT22
- یک عدد مقاومت 10K اهم
سخت افزار :
مطابق شکل زیر، تغذیه و زمین ماژول را به ترتیب توضیح داده شده در بالا به تغذیه و زمین میکروکنترلر (و یا در صورت نیاز به تغذیه جداگانه) متصل کنید و پایه خروجی ماژول (پایه دوم) را به پایه D2 (یا پایه ی دلخواه دیگر) برد آردوینو متصل کنید.
یک مقاومت 10K اهم بین پایه دوم و اول (پایه خروجی و تغذیه VCC) ماژول متصل کنید.
نکته مهم : اگر از برد آردوینو با تغذیه 3.3V استفاده می کنید (مانند برد Arduino Due)، حتما تغذیه ماژول هم باید به 3.3V متصل شود.
نرم افزار :
وارد محیط برنامه نویسی آردوینو شوید و مطابق آموزش های آردوینو، با زدن گزینه New یا فایل sketch جدید بسازید.
کدهای زیر را وارد کنید :
// Testing DHT-22 humidity/temperature sensor //Melec.ir Arduino Toturial Project
#include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("DHT22 test!"); dht.begin(); } void loop() { delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); // Read temperature as Celsius (the default) float f = dht.readTemperature(true); if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; } float hif = dht.computeHeatIndex(f, h); float hic = dht.computeHeatIndex(t, h, false); Serial.print ("Humidity: ");
Serial.print (h); Serial.print (" %\t"); Serial.print ("Temperature: "); Serial.print (t); Serial.print (" *C "); Serial.print (f); Serial.print (" *F\t"); Serial.print ("Heat index: "); Serial.print (hic); Serial.print (" *C "); Serial.print (hif); Serial.println (" *F"); }
توضیح برنامه :
توسط دستور #define پایه دوم برای اتصال سنسور در نظر گرفته شده است. در صورتی که سنسور را به پایه ی دیگری متصل کرده اید این بخش را تغییر دهید.
در ابتدا در تابع setup عبارت “DHT22 test!” را به خروجی سریال ارسال می کنیم و سپس توسط تابع dht.begin سنسور را راه اندازی می کنیم.
در ادامه در حلقه loop توسط تابع dht.readhumidity مقدار رطوبت را از مبدل آنالوگ به دیجیتال خروجی سنسور می خوانیم ( این فرایند حدود 250ms زمان لازم دارد) و در متغیر h ذخیره می کنیم.
توسط تابع dht.readtemperature مقدار دما برحسب درجه سلسیوس را در متغیر t ذخیره می کنیم و مقدار دما بر حسب فارنهایت را در متغیر f ذخیره می کنیم.
توسط عبارت شرطی if صحیح بودن مقادیر خوانده شده از سنسور را بررسی و اگر مشکلی وجود داشت عبارت “Failed to read from DHT sensor!” را به خروجی سریال ارسال می کنیم.
در ادامه مقدار دما و رطوبت را به خروجی سریال ارسال می کنیم.
تست برنامه :
با اجرای برنامه، در خروجی سریال مقدار دما و مقدار رطوبت محیط نمایش داده می شود و به مدت هر 2 ثانیه یکبار این مقادیر با مقادیر جدید جایگزین می شوند.
تالیف و گردآوری : Melec.ir
tutorialspoint.com
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.
ببخشید اردینو قابلیت ارتصال چند سنسور DHT22را دارد
سلام، بستگی به تابعی که نوشته شده داره ولی تا جایی که بنده قبلا از لایبری پروتکل 1WIRE آردوینو استفاده کردم بصورت شی گرا نوشته شده و میشه تعداد دلخواه ایجاد و به هر پایه مورد نظر ربط داد…پس میشه DH22 را هم همین کار را کرد بازم چک کنید اون لایبری ساپورت کنه.
سلام میشه این برنامه رو با کدویژن هم قرار بدین🙏🙏🙏
سلام، شاید پروژه زیر کمک کنه:
اتصال DHT-11 به AVR
سلام چطوری دوتا سنسور DHT به آردوینو وصل کنیم
Dht11 و 22 رو میخوام وصل کنم
دائم 11 باید روشن باشه رو صفحه کارکتری ولی 22 سوکتیه
الان هرکاری میکنم هردوتا و نمیتونه با هم راه بندازه
توی لایبراری آردوینو کدوم نسخه dht رو باید نصب کیم
سلام، آرمین جان اصولا باید اخرین نسخه را نصب کنی و اگر باگ داشت سوئیچ کنی روی پایین تر.