انستیتو تحقیقات ماهیان

پروژه اتصال سنسور DHT-22 به Arduino

۳۱ فروردین ۱۳۹۶

سنسور DHT-22 (که با نام AM2302 نیز شناخته می شود)، یک سنسور عالی جهت سنجش دما و رطوبت با خروجی دیجتال می باشد. این سنسور از دو سنسور تشکیل شده است :

  • سنسور رطوبت خازنی
  • سنسور دمای ترمیستوری (مقاومت وابسته به دما)

این سنسور در قالب یک ماژول عرضه می گردد که دارای یک مبدل A/D داخلی نیز می باشد و خروجی این ماژول یک سیگنال دیجیتال است.

مشخصات فنی سنسور :

  • تغذیه ۳V تا ۵V
  • حداکثر جریان تغذیه ۵mA
  • اندازه گیری رطوبت از ۰% تا ۱۰۰% با دقت ۲ تا ۵ درصد
  • اندازه گیری دما از منفی ۴۰ درجه سانتی گراد تا مثبت ۸۰ درجه سانتی گراد با دقت مثبت/منفی نیم درجه سانتی گراد

شکل زیر این ماژول را به همراه ترتیب پایه ها نشان می دهد :

 

پروژه اتصال سنسور DHT-22 به Arduino

مطابق شکل، پایه اول این ماژول به تغذیه VCC (بین ۳V تا ۵V) و پایه چهارم این ماژول به زمین GND متصل می شود و پایه دوم این تراشه خروجی سنسور ما خواهد بود که باید به برد متصل کنیم. پایه سوم نیازی به اتصال به جایی ندارد.

در ادامه مجموعه پروژه های آردوینو، در این آموزش نحوه کار با این سنسور و چاپ رطوبت و دمای محیط در خروجی سریال را توسط برد Arduino UNO توضیح می دهیم.

اجزای مورد نیاز :

  • برد بورد
  • برد Arduino Uno R3
  • سنسور DHT22
  • یک عدد مقاومت ۱۰K اهم

سخت افزار :

مطابق شکل زیر، تغذیه و زمین ماژول را به ترتیب توضیح داده شده در بالا به تغذیه و زمین میکروکنترلر (و یا در صورت نیاز به تغذیه جداگانه) متصل کنید و پایه خروجی ماژول (پایه دوم) را به پایه D2 (یا پایه ی دلخواه دیگر) برد آردوینو متصل کنید.

پروژه اتصال سنسور DHT-22 به Arduino

یک مقاومت ۱۰K اهم بین پایه دوم و اول (پایه خروجی و تغذیه VCC) ماژول متصل کنید.

نکته مهم : اگر از برد آردوینو با تغذیه ۳٫۳V استفاده می کنید (مانند برد Arduino Due)، حتما تغذیه ماژول هم باید به ۳٫۳V متصل شود.

 

پروژه اتصال سنسور DHT-22 به Arduino

نرم افزار :

وارد محیط برنامه نویسی آردوینو شوید و مطابق آموزش های آردوینو، با زدن گزینه New یا فایل sketch جدید بسازید.

پروژه اتصال سنسور DHT-22 به Arduino

کدهای زیر را وارد کنید :

 

// 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 (" *Ft");

   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 مقدار رطوبت را از مبدل آنالوگ به دیجیتال خروجی سنسور می خوانیم ( این فرایند حدود ۲۵۰ms زمان لازم دارد) و در متغیر h ذخیره می کنیم.

توسط تابع dht.readtemperature مقدار دما برحسب درجه سلسیوس را در متغیر t ذخیره می کنیم و مقدار دما بر حسب فارنهایت را در متغیر f ذخیره می کنیم.

توسط عبارت شرطی if صحیح بودن مقادیر خوانده شده از سنسور را بررسی و اگر مشکلی وجود داشت عبارت “Failed to read from DHT sensor!” را به خروجی سریال ارسال می کنیم.

در ادامه مقدار دما و رطوبت را به خروجی سریال ارسال می کنیم.

تست برنامه :

با اجرای برنامه، در خروجی سریال مقدار دما و مقدار رطوبت محیط نمایش داده می شود و به مدت هر ۲ ثانیه یکبار این مقادیر با مقادیر جدید جایگزین می شوند.

پروژه اتصال سنسور DHT-22 به Arduino

 

تالیف و گردآوری : Melec.ir

tutorialspoint.com