ماژول سنسور دما و رطوبت
ماژول سنسور دما و رطوبت DHT11 – دقیق و مقرون بهصرفه
ماژول سنسور DHT11 یک سنسور دمای دیجیتال و رطوبتسنج با کالیبراسیون دیجیتال است که برای اندازهگیری همزمان دما و رطوبت محیط با دقت مناسب طراحی شده است. این ماژول با رابط دیجیتال تکسیم، انتخاب ایدهآلی برای پروژههای IoT، خانه هوشمند و سیستمهای مانیتورینگ است.
🌡️ ویژگیهای اصلی
🔹 اندازهگیری همزمان دما و رطوبت نسبی
🔹 خروجی دیجیتال – رابط تکسیم ساده
🔹 کالیبراسیون دیجیتال – بدون نیاز به کالیبره دستی
🔹 مصرف برق پایین – مناسب سیستمهای باتریدار
🔹 قیمت مناسب – اقتصادی برای پروژههای دانشجویی
🔹 نصب آسان – پایههای استاندارد 2.54mm
📊 مشخصات فنی دقیق
مشخصات اندازهگیری:
-
دمای کاری: 0°C تا 50°C (±2°C دقت)
-
رطوبت کاری: 20% تا 90% RH (±5% دقت)
-
رزولوشن دما: 1°C (8-bit)
-
رزولوشن رطوبت: 1% RH (8-bit)
-
زمان نمونهبرداری: 1 هرتز (1 بار در ثانیه)
مشخصات الکتریکی:
-
ولتاژ کاری: 3.3V تا 5.5V DC
-
جریان کاری: 0.5mA تا 2.5mA
-
جریان standby: 40µA تا 100µA
-
پروتکل ارتباطی: Single-wire دوطرفه
-
طول کابل مجاز: تا 20 متر
مشخصات فیزیکی:
-
ابعاد ماژول: 15.5mm × 12mm × 5.5mm
-
ابعاد سنسور: 12mm × 12mm × 5.5mm
-
وزن: 1.5 گرم
-
پایهها: 3 پین (VCC, DATA, GND)
-
فاصله پایه: استاندارد 2.54mm
-
سوراخ نصب: قطر 3mm
اجزای ماژول:
-
سنسور DHT11 اصلی
-
مقاومت Pull-up 4.7KΩ
-
خازن فیلتر 100nF
-
LED نشانگر تغذیه
-
هدر 3 پین نری
🔌 پیکربندی پایهها
پینهای ماژول:
پین 1 (چپ): VCC (3.3V - 5.5V) پین 2 (وسط): DATA (خروجی داده) پین 3 (راست): GND (زمین)
اتصال به آردوینو Uno/Nano:
ماژول DHT11 → آردوینو VCC → 5V یا 3.3V DATA → پین دیجیتال (مثلاً D2) GND → GND *نیاز به مقاومت Pull-up 4.7KΩ بین DATA و VCC *(معمولاً روی ماژول موجود است)
💻 کتابخانه و کد نمونه
نصب کتابخانه DHT:
-
در Arduino IDE به مسیر بروید: Tools → Manage Libraries
-
جستجو کنید: “DHT sensor library” by Adafruit
-
روی Install کلیک کنید
-
کتابخانه “Adafruit Unified Sensor” را نیز نصب کنید
کد پایه خواندن دادهها:
#include <DHT.h> // تعریف پین و نوع سنسور #define DHTPIN 2 // پین اتصال داده #define DHTTYPE DHT11 // نوع سنسور // ایجاد شیء سنسور DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("آزمایش سنسور DHT11"); // راهاندازی سنسور dht.begin(); delay(2000); // منتظر تثبیت سنسور } void loop() { // تاخیر بین خواندنها (حداقل 2 ثانیه) delay(2000); // خواندن رطوبت float humidity = dht.readHumidity(); // خواندن دما به سلسیوس float temperature = dht.readTemperature(); // خواندن دما به فارنهایت float fahrenheit = dht.readTemperature(true); // بررسی خطای خواندن if (isnan(humidity) || isnan(temperature) || isnan(fahrenheit)) { Serial.println("خطا در خواندن از سنسور!"); return; } // محاسبه حرارت لحاظشده (Heat Index) float heatIndex = dht.computeHeatIndex(temperature, humidity, false); // نمایش نتایج Serial.println("======================"); Serial.print("رطوبت: "); Serial.print(humidity); Serial.println(" %"); Serial.print("دما: "); Serial.print(temperature); Serial.println(" °C"); Serial.print("دما: "); Serial.print(fahrenheit); Serial.println(" °F"); Serial.print("حرارت لحاظشده: "); Serial.print(heatIndex); Serial.println(" °C"); }
کد پیشرفته با نمایشگر LCD:
#include <DHT.h> #include <LiquidCrystal.h> #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); // اتصال LCD: RS=12, EN=11, D4=5, D5=4, D6=3, D7=2 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); dht.begin(); lcd.print("سنسور DHT11"); lcd.setCursor(0, 1); lcd.print("در حال راهاندازی"); delay(2000); } void loop() { delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { lcd.clear(); lcd.print("خطا در سنسور"); return; } // نمایش روی LCD lcd.clear(); lcd.print("T:"); lcd.print(t, 1); lcd.print("C H:"); lcd.print(h, 0); lcd.print("%"); // نمایش وضعیت آسایش lcd.setCursor(0, 1); if (t >= 30) { lcd.print("گرم!"); } else if (t <= 10) { lcd.print("سرد!"); } else if (h >= 70) { lcd.print("مرطوب!"); } else if (h <= 30) { lcd.print("خشک!"); } else { lcd.print("مطلوب"); } }
کلاس مدیریت سنسور با آلارم:
class DHTMonitor { private: DHT* dhtSensor; float tempThresholdHigh; float tempThresholdLow; float humidThresholdHigh; float humidThresholdLow; int alarmPin; public: DHTMonitor(int pin, float tempHigh, float tempLow, float humidHigh, float humidLow, int alarm) { dhtSensor = new DHT(pin, DHT11); tempThresholdHigh = tempHigh; tempThresholdLow = tempLow; humidThresholdHigh = humidHigh; humidThresholdLow = humidLow; alarmPin = alarm; pinMode(alarmPin, OUTPUT); dhtSensor->begin(); } void readAndCheck() { delay(2000); float temp = dhtSensor->readTemperature(); float humid = dhtSensor->readHumidity(); if (isnan(temp) || isnan(humid)) { triggerAlarm(3); // 3 بوق برای خطای سنسور return; } bool alarm = false; // بررسی دمای بالا if (temp > tempThresholdHigh) { Serial.println("هشدار: دمای بالا!"); alarm = true; } // بررسی دمای پایین if (temp < tempThresholdLow) { Serial.println("هشدار: دمای پایین!"); alarm = true; } // بررسی رطوبت بالا if (humid > humidThresholdHigh) { Serial.println("هشدار: رطوبت بالا!"); alarm = true; } // بررسی رطوبت پایین if (humid < humidThresholdLow) { Serial.println("هشدار: رطوبت پایین!"); alarm = true; } if (alarm) { triggerAlarm(2); // 2 بوق برای هشدار } else { digitalWrite(alarmPin, LOW); } // چاپ اطلاعات Serial.print("دما: "); Serial.print(temp); Serial.print(" °C | رطوبت: "); Serial.print(humid); Serial.println(" %"); } void triggerAlarm(int beeps) { for (int i = 0; i < beeps; i++) { digitalWrite(alarmPin, HIGH); delay(200); digitalWrite(alarmPin, LOW); delay(200); } } }; // استفاده از کلاس DHTMonitor monitor(2, 35.0, 10.0, 80.0, 20.0, 8); void setup() { Serial.begin(9600); Serial.println("سیستم مانیتورینگ دما و رطوبت"); } void loop() { monitor.readAndCheck(); }
🎯 کاربردهای عملی
1. خانه هوشمند:
-
کنترل سیستم تهویه مطبوع
-
مدیریت رطوبتساز و دستگاههای خشککن
-
مانیتورینگ اتاق سرور
-
کنترل گلخانه خانگی
2. کشاورزی و گلخانه:
-
کنترل رطوبت خاک و هوا
-
اتوماسیون آبیاری
-
مانیتورینگ شرایط رشد گیاهان
-
هشدار یخزدگی
3. ذخیرهسازی:
-
انبار مواد غذایی
-
داروخانه و آزمایشگاه
-
موزه و آرشیو
-
کتابخانه
4. پروژههای آموزشی:
-
آزمایشهای علمی مدارس
-
پروژههای دانشگاهی
-
کارگاههای الکترونیک
-
مسابقات رباتیک
5. صنعت:
-
خطوط تولید مواد غذایی
-
صنایع دارویی
-
سالنهای رنگ و پوشش
-
آزمایشگاههای کنترل کیفیت
⚠️ نکات مهم و عیبیابی
نکات نصب:
-
سنسور را دور از منابع حرارتی مستقیم نصب کنید
-
از تابش مستقیم نور خورشید جلوگیری کنید
-
سنسور را در جریان هوای آزاد قرار دهید
-
از تماس مستقیم با آب خودداری کنید
مشکلات رایج و راهحل:
| مشکل | علت احتمالی | راهحل |
|---|---|---|
| خواندن NaN | اتصال نامناسب | پایهها را بررسی کنید |
| دادههای نادرست | نویز الکتریکی | از خازن 100µF روی VCC استفاده کنید |
| پاسخ ندادن سنسور | کابل بلند | کابل را کوتاهتر کنید (≤20m) |
| دقت پایین | کالیبراسیون | سنسور را 24 ساعت در محیط بگذارید |
افزایش دقت:
// خواندن میانگین 5 نمونه float readAverageTemperature() { float sum = 0; int validReadings = 0; for(int i = 0; i < 5; i++) { float temp = dht.readTemperature(); if(!isnan(temp)) { sum += temp; validReadings++; } delay(250); } return (validReadings > 0) ? (sum / validReadings) : NAN; }
📈 مقایسه با سنسورهای مشابه
| سنسور | دما | رطوبت | قیمت | رابط | توضیح |
|---|---|---|---|---|---|
| DHT11 | 0-50°C (±2°C) | 20-90% (±5%) | کم | Digital 1-wire | اقتصادی، پایهای |
| DHT22 | -40-80°C (±0.5°C) | 0-100% (±2%) | متوسط | Digital 1-wire | دقیقتر، محدوده وسیعتر |
| AM2302 | -40-80°C (±0.5°C) | 0-100% (±2%) | متوسط | Digital 1-wire | مشابه DHT22 با کابل |
| SHT31 | -40-125°C (±0.3°C) | 0-100% (±2%) | بالا | I2C | حرفهای، دقت بالا |
| BME280 | -40-85°C (±1°C) | 0-100% (±3%) | بالا | I2C/SPI | فشارسنج هم دارد |
🔧 پروژههای پیشنهادی
پروژه 1: ایستگاه هواشناسی مینیاتوری
// با DHT11 + فشارسنج BMP180 + نمایشگر OLED
پروژه 2: سیستم هشدار نشت آب
// DHT11 برای رطوبت + سنسور آب + بوزر
پروژه 3: کنترلر فن اتوماتیک
// DHT11 + رله + فن کامپیوتر
پروژه 4: دادهبرداری با SD Card
// DHT11 + ماژول SD Card + RTC
💡 نکات نگهداری و کالیبراسیون
نگهداری صحیح:
-
هر 6 ماه سنسور را با هوای فشرده تمیز کنید
-
از تماس با مواد شیمیایی خودداری کنید
-
در دمای زیر 0°C و بالای 60°C استفاده نکنید
-
در محیطهای با رطوبت زیر 20% و بالای 90% به صورت مداوم استفاده نکنید
کالیبراسیون دورهای:
-
هر 12 ماه با یک دماسنج و رطوبتسنج مرجع مقایسه کنید
-
اگر خطای بیش از 3°C یا 7% RH داشت، سنسور را تعویض کنید
🔥 نکته حرفهای: برای پروژههای حساس، از میانگینگیری 10 نمونهگیری با فاصله 200ms استفاده کنید.
🎯 بهترین انتخاب برای: دانشجویان، علاقهمندان به الکترونیک، توسعهدهندگان IoT، کشاورزان، صاحبان گلخانه، مهندسین کنترل
📞 پشتیبانی فنی
-
راهنمای نصب گام به گام
-
کمک در عیبیابی پروژه
-
مشاوره انتخاب سنسور مناسب
-
طراحی مدار اختصاصی









ترانزیستورها
خازنها
دیودها
رگولاتورها
مقاومتها
کریستال و اسیلاتور
مدارات مجتمع
ابزارها
تجهیزات
تجهیزات لحیمکاری
مولتیمتر و ابزار اندازهگیری
منبع تغذیه و باتری
تستر