در این آموزش، ابتدا کمی به مبحث رطوبت میپردازیم. سپس توضیح خواهیم داد که DHT11 چگونه رطوبت را اندازه میگیرد. پس از آن نیز، راه اندازی سنسور دما و رطوبت DHT11 با آردوینو را به شما نشان میدهیم. چند نمونه کد نیز ارائه میکنیم تا بتوانید از این سنسور در پروژههای خود استفاده کنید.
سنسور دما و رطوبت DHT11 به شما این امکان را میدهد که بهراحتی اطلاعات دما و رطوبت را به پروژههای الکترونیکی خود اضافه کنید. این سنسور برای ایستگاههای آب و هوایی کنترل از راه دور، سیستمهای کنترل خانگی یا سیستمهای نظارت بر مزرعه و باغ گزینهای ایدهآل است.
بازههای اندازهگیری و دقت DHT11 عبارتند از:
- بازه رطوبت: %20 – %90
- دقت رطوبت: %5±
- بازه دما: 0-50 درجه سانتی گراد
- دقت دما: %2± درجه سانتی گراد
- ولتاژ کاری: 3-5.5 ولت
رطوبت نسبی چیست؟
سنسور DHT11 رطوبت نسبی را اندازه میگیرد. رطوبت نسبی، نسبت مقدار بخار آب در هوا به نقطه اشباع آن است. در نقطه اشباع، بخار آب بر روی سطوح متراکم و جمع میشود و شبنم را تشکیل میدهد.
نقطه اشباع با دمای هوا تغییر میکند. هوای سرد قبل از اشباع شدن، بخار آب کمتری نگه میدارد و هوای گرم تا رسیدن به نقطه اشباع، بخار آب بیشتری نگه میدارد.
از فرمول زیر برای محاسبه رطوبت نسبی استفاده میشود:
RH: رطوبت نسبی
wρ: چگالی بخار آب
sρ: چگالی بخار آب در نقطه اشباع
رطوبت نسبی به صورت درصد بیان میشود. در رطوبت نسبی %100، میعان رخ میدهد و در رطوبت نسبی %0، هوا کاملا خشک خواهد بود.
چگونه سنسور DHT11 ، چگالی و دما را اندازه میگیرد؟
سنسور DHT11 بخار آب را با اندازهگیری مقاومت الکتریکی بین دو الکترود، تشخیص میدهد. المان تشخیص رطوبت، یک سطح نگهدارنده رطوبت با دو الکترود است که در سطح سنسور قرار گرفته است. وقتی بخار آب توسط این سطح جذب میشود، سطح، یونهای آن را آزاد میکند. این موضوع باعث میشود هدایت بین الکترودها افزایش پیدا کند. در نتیجه، تغییر مقاومت بین دو الکترود، به رطوبت نسبی وابسته است. با افزایش رطوبت نسبی، مقاومت بین دو الکترود کاهش مییابد، درحالیکه کاهش رطوبت نسبی، مقاومت بین الکترودها را افزایش میدهد.
سنسور DHT11، دما را با یک سنسور دمای NTC اندازه میگیرد. با حذف روکش پلاستیکی، میتوانید الکترودهای روی سطح را مشاهده کنید:
آی سی نصب شده در پشت قطعه، مقاومت اندازهگیری شده را به رطوبت نسبی تبدیل میکند. همچنین ضرایب کالیبراسیون را ذخیره کرده و انتقال اطلاعات بین سنسور دما و رطوبت DHT11 و آردوینو را کنترل میکند.
سنسور DHT11، تنها از یک سیم سیگنال برای ارسال داده به آردوینو استفاده میکند. تغذیه آن از دو سیم مجزای 5V و Gnd تامین میشود. علاوه بر این، بین خط سیگنال و 5V، باید یک مقاومت 10K اهم پول آپ وجود داشته باشد تا بتوان مطمئن شد که سطح سیگنال به صورت پیش فرض”یک” باقی میماند. دو نوع مختلف از DHT11 موجود است که ممکن است با یکی از آنها مواجه شوید. نوع اول، 4 پایه و نوع دوم، 3 پایه دارد و روی یک برد کوچک نصب شده است. نوع نصب شده بر روی برد به خاطر داشتن مقاومت 10KΩ پول آپ، برای خط سیگنال مناسبتر است. پایههای هر دو نوع را میتوانید در شکل زیر ببینید:
چگونه سنسور دما و رطوبت DHT11 را با آردوینو راهاندازی کنیم؟
راه اندازی سنسور دما و رطوبت DHT11 با آردوینو بسیار ساده است، اما اتصالات بسته به نوع سنسوری که استفاده میکنید، متفاوت است.
اتصال DHT11 با سه پایه:
اتصال DHT11 با چهار پایه:
تذکر: مقاومت R1 همان مقاومت 10KΩ پول آپ است.
نمایش رطوبت و دما بر روی مانیتور سریال
قبل از اینکه بتوانید سنسور دما و رطوبت DHT11 با آردوینو راه اندازی کنید، باید کتابخانه DHTLib library را نصب کنید. این کتابخانه همه توابع مورد نیاز برای دریافت رطوبت و دمای خوانده شده از سنسور را دارد. نصب آن ساده است، فقط کافی است فایل DHTLib.zip را دانلود کرده و آردوینو را باز کنید. سپس به مسیر Sketch>include Library>Add .ZIP Library رفته و فایل DHTLib.zip را انتخاب کنید.
پس از نصب کتابخانه، نمونه برنامه زیر را روی آردوینو آپلود کنید و مانیتور سریال را باز کنید:
#include <dht.h>
dht DHT;
#define DHT11_PIN 7
void setup(){
Serial.begin(9600);
}
void loop(){
int chk = DHT.read11(DHT11_PIN);
Serial.print("Temperature = ");
Serial.println(DHT.temperature);
Serial.print("Humidity = ");
Serial.println(DHT.humidity);
delay(1000);
}
باید رطوبت و دمای خوانده شده را ببینید که با فاصلههای یک ثانیهای نمایش داده میشود.
اگر نمیخواهید از پایه 7 برای سیگنال داده استفاده کنید، میتوانید شماره پایه را در خط 5 کد، در عبارت #define DHT11_PIN 7 تغییر دهید.
نمایش رطوبت و دما روی LCD یکی از روشهای مناسب برای نمایش رطوبت و دمای خوانده شده، نمایش بر روی LCD کاراکتری 16×2 است. برای این کار، کد زیر را بر روی آردوینو آپلود کنید:
#include <dht.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
dht DHT;
#define DHT11_PIN 7
void setup(){
lcd.begin(16, 2);
}
void loop(){
int chk = DHT.read11(DHT11_PIN);
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.print(DHT.temperature);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Humidity: ");
lcd.print(DHT.humidity);
lcd.print("%");
delay(1000);
}
استفاده از اطلاعات سنسور در برنامههای دیگر
اگر نخواهیم رطوبت و دمای خوانده شده را نمایش دهیم، اما بخواهیم روی آنها محاسبه انجام داده یا چیزهای دیگر را کنترل کنیم، باید چه کاری انجام دهیم؟ کد زیر حداقل برنامه ممکن برای راهاندازی سنسور رطوبت و دما DHT11 است. شما میتوانید کد زیر را به برنامههای خود اضافه کنید و از متغیرهای DHT.humidity و DHT.temperature در هر تابعی استفاده کنید.
#include <dht.h>
dht DHT;
#define DHT11_PIN 7
void setup(){
}
void loop(){
int chk = DHT.read11(DHT11_PIN);
delay(1000);
}
امیدواریم از این مقاله نهایت استفاده را کرده باشید. حتما نظرات، سوالات و پیشنهادات خود را با ما به اشتراک بگذارید.