حساس الحرارة والرطوبة DHT

حساس الحرارة والرطوبة DHT:

 يمكن استخدام الحساس في الكثير من التطبيقات التي تتطلب معرفة درجة الحرارة والرطوبة مثل التحكم بأجهزة التكيف وغيرها. هناك نوعان للحساس DHT11 و DHT22 يلخص الجدول التالي أهم خصائص  النوعين :

DHT11DHT22
جهد التشغيل 3-5 فولتجهد التشغيل 3-5 فولت
نطاق الحرارة 0-50 درجة مئوية مع نسبة خطأ ± 2 درجة مئوية نطاق الحرارة 0-50 درجة مئوية مع نسبة خطأ ± 0.5 درجة مئوية
نطاق الرطوبة 20-80 درجة مع نسبة خطأ ± 5 درجةنطاق الرطوبة 0-100 درجة مع نسبة خطأ ± 2.5 درجة

يمكن الملاحظة أن الحساس DHT22 يمتمتع بنطاق أكبر و دقة أعلى لذلك سيتم استخدامه في هذا الدرس

تثبيت المكتبة الخاصة بالحساس DHT

لتسهيل عملية القراءة من الحساس  نقوم بتنصيب مكتبة “DHT sensor library ”  يمكن تنزيل المكتبة بطريقين :

1- قائمة إدارة المكتبات.

2- تحميل المكتبة من موقع “Github”

التوصيل

يحتوي DHT22 module  على ثلاث منافذ حيث يتم استخدام منفذين لنغذية الحساس بالطاقة Vcc و GND. الأنفذ الأوسط يستخدم لنقل البيانات للأردوينو وفي هذا الدرس قمنا بتوصيله بالمنفذ رقم 2 للأردوينو.

التمرين 1 : عرض درجة الحرارة والرطوبة على السيريال مونيتور ​

يمكنك ملاحظة أننا نحتاج لتعريف المنفذ الموصل بالحساس ونوع الحساس في بداية البرنامج. بعد ذلك يتم انشاء كائن dht وتمرير رقم المنفذ ونوع الحساس. يتم قراءة قيمة درجة الحرارة وحفظها في المتغير t كما يتم قراءة قيمة الرطوبة وحفظها في المتغير . لاحظ أن المتغيرين t و h من النوع float حيث ان درجة الحرارة والرطوبة غالبا لا تكون رقم صحيح بل تحتوي على فواصل عشرية. أخيرا نقوم بعرض هذه القيم على السيريال مونيتور.

				
					#include "DHT.h"

#define DHTPIN 2   // define used pin
#define DHTTYPE DHT22  // define the type of DHT sensor 
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin(); }
  
void loop() {
  float t = dht.readTemperature(); // assign Temperature value to t
  float h = dht.readHumidity();    // assign Humidity value to h
 
  Serial.print("Temp: ");
  Serial.print(t);
  Serial.print(" C");
  Serial.print("Humid: ");
  Serial.print(h);
  Serial.println(" %");
  delay(2000);
  
}
				
			

التمرين 2 : عرض درجة الحرارة والرطوبة على شاشة lcd

هذا التمرين شبيه بالتمرين السابق إلا ان القراءات يتم عرضها على شاشة LCD بدلا من السيريال مونيتور. أولا نحتاج لتضمين المكتبة Wire.h المخصصة لتقنية التواصل I2C و المكتبة LiquidCrystal_I2C.h المخصصة للشاشة LCD with I2C.

تاتي مكتبة Wire مدمجة لكن تحتاج لتنزيل مكتبة LiquidCrystal_I2C . يمكن تحميل المكتبة من قائمة ادارة المكتبات أو عن طريق موقع اردوينو

لاحظ انشاء الكائن lcd  وتمرير طول وعرض الشاشة (2*16). يتم استخدام الأمر ()lcd.setCursor لتحديد وضع المؤشر (نقطة بداية النص المراد طباعته).

				
					#include "Wire.h"
#include "LiquidCrystal_I2C.h"
#include "DHT.h"

#define DHTPIN 2      // define used pin
#define DHTTYPE DHT22   // define the type of DHT sensor 
DHT dht(DHTPIN, DHTTYPE);    // declaration of dht object
LiquidCrystal_I2C lcd(0x27,16,2);  // declaration of lcd object

void setup() {
  dht.begin();
  lcd.init();   
  lcd.backlight();}
  
void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  lcd.clear();  // clear the lcd
  lcd.setCursor(0,0);  // set printing start point
  lcd.print("Humid: ");
  lcd.setCursor(7,0); 
  lcd.print(h);

  lcd.setCursor(0,1);
  lcd.print("Temp: ");
  lcd.setCursor(7,1);
  lcd.print(t);
  delay(2000);}
				
			

انتقل إلى المتجر

انتقال إلى الأعلى