مهندس موفق الکترونیک

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

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

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

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

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

  • تغذیه 3V تا 5V
  • حداکثر جریان تغذیه 5mA
  • اندازه گیری رطوبت از 0% تا 100% با دقت 2 تا 5 درصد
  • اندازه گیری دما از منفی 40 درجه سانتی گراد تا مثبت 80 درجه سانتی گراد با دقت مثبت/منفی نیم درجه سانتی گراد

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

 

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

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

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

مطلب پیشنهادی:  راه اندازی سروموتور با آردوینو

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

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

سخت افزار :

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

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

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

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

 

پروژه اتصال سنسور 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 (" *F\t");

   Serial.print ("Heat index: ");

   Serial.print (hic);

   Serial.print (" *C ");

   Serial.print (hif);

   Serial.println (" *F");
}

توضیح برنامه :

توسط دستور #define پایه دوم برای اتصال سنسور در نظر گرفته شده است. در صورتی که سنسور را به پایه ی دیگری متصل کرده اید این بخش را تغییر دهید.

مطلب پیشنهادی:  پروژه ساخت قفل‌ درب RFID با آردوینو

در ابتدا در تابع setup عبارت “DHT22 test!” را به خروجی سریال ارسال می کنیم و سپس توسط تابع dht.begin سنسور را راه اندازی می کنیم.

در ادامه در حلقه loop توسط تابع dht.readhumidity مقدار رطوبت را از مبدل آنالوگ به دیجیتال خروجی سنسور می خوانیم ( این فرایند حدود 250ms زمان لازم دارد) و در متغیر h ذخیره می کنیم.

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

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

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

تست برنامه :

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

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

 

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

tutorialspoint.com

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    جلسه بعدی >>

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

7 دیدگاه

  1. ببخشید اردینو قابلیت ارتصال چند سنسور DHT22را دارد

    • میلاد جهاندیده

      سلام، بستگی به تابعی که نوشته شده داره ولی تا جایی که بنده قبلا از لایبری پروتکل 1WIRE آردوینو استفاده کردم بصورت شی گرا نوشته شده و میشه تعداد دلخواه ایجاد و به هر پایه مورد نظر ربط داد…پس میشه DH22 را هم همین کار را کرد بازم چک کنید اون لایبری ساپورت کنه.

  2. سلام میشه این برنامه رو با کدویژن هم قرار بدین🙏🙏🙏

  3. سلام چطوری دوتا سنسور DHT به آردوینو وصل کنیم
    Dht11 و 22 رو میخوام وصل کنم
    دائم 11 باید روشن باشه رو صفحه کارکتری ولی 22 سوکتیه
    الان هرکاری میکنم هردوتا و نمیتونه با هم راه بندازه

  4. توی لایبراری آردوینو کدوم نسخه dht رو باید نصب کیم