حساس الحرارة والرطوبة DHT11/ DHT22
هل فكرت بعمل مشروع نظام للتحكم بالرطوبة أو درجة الحرارة، أو الاحتفاظ بسجل للمناخ في البيوت الزجاجية الخاصة بالمزارع، أو عمل محطة طقس لتتبع درجة الحرارة والرطوبة في منطقتك؟
يمكن أن يكون حساس الحرارة والرطوبة DHT11 أو DHT22 هو الخيار الأفضل لمشروعك، تابع المقال لمعرفة المعلومات التي تحتاجها عن هذه الأنواع من الحساسات.
ما هو DHT11/DHT22 وكيف يعمل؟
هو عبارة عن مستشعر رقمي لقياس درجة الحرارة والرطوبة النسبية يتميز بأنه منخفض التكلفة ويعطي قراءات دقيقة، ويستخدم واجهة اتصال تسلسلية عن طريق سلك واحد يقوم بإرسال البيانات الى المتحكم.
يعتمد الحساس في عمله على قياس درجة الحرارة من خلال مستشعر يقوم بقياس مقاومة الثرمستور (مقاومة حرارية) والتي تتغير قيمتها بحسب تغير درجة الحرارة وقياس الرطوبة من خلال مستشعر من نوع سعوي يقوم بقياس التغيرات في السعة الكهربائية.
ماذا يوجد داخل DHT11/DHT22؟
-ثرمستور: عبارة عن مقاومة حرارية تتغير قيمتها بحسب درجة الحرارة.
-
مستشعر رطوبة سعوي: عبارة عن حساس يقوم بقياس الرطوبة النسبية من خلال قياس التغيرات في السعة الكهربائية.
-
دارة متكاملة ic: شريحة صغيرة تعالج قراءات الثرمستور وحساس الرطوبة السعوي وتحولها إلى إشارة رقمية كما أنها تتحكم في ا لاتصال بين الحساس والمتحكم.
-
مقاومة: عنصر غير فعال وظيفته ينظم تدفق التيار الكهربائي.
-
غلاف: غطاء يحيط بمكونات الحساس لحمايتها.
كيف يتم نقل البيانات بين الحساس والمتحكم؟
1- يرسل الحساس إشارة لبدء الاتصال مع المتحكم.
2- يرسل المتحكم اشارة للحساس يطلب فيها البيانات.
3- يرسل الحساس مجموعة بيانات من 40 بت تحتوي على 8بت للقيمة الصحيحة للرطوبة ة8 بت للقيمة العشرية للرطوبة و8بت للقيمة الصحيحة لدرجة الحرارة و8بت للقيمة العشرية لدرجة الحرارة و8 بت لفحص الخطأ.
4- يقوم المتحكم بالتحقق من المجموع وصحة البيانات
5- يقوم المتحكم بمعالجة البيانات وتخزين أو عرض درجة الحرارة والرطوبة
الفرق بين DHT11 و DHT22
يعد كل من DHT11 و DHT22 أكثر الحساسات استخدامًا في سلسلة DHTxx. يبدون متشابهين نوعًا ما ولديهم نفس الأقطاب، لكن مواصفاتهم مختلفة، وهذه مقارنة بينهما:
جهد التشغيل | 3 حتى 5 فولت | 3 حتى 5 فولت |
تيارالتشغيل | 2.5mA كحد أقصى | 2.5mA كحد أقصى |
مجال الرطوبة | 20-80% / 5% | 0-100% / 2-5% |
مجال الحرارة | -40 to 80°C / ± 0.5°C | 0-50°C / ± 2°C |
معدل العينات | 1HZ | 0.5HZ |
المميزات | استهلاك منخفض | دقة عالية |
بالمقارنة بينهما نلاحظ أن DHT22 يعد حساس درجة حرارة ورطوبة أكثر تقدمًا وبأداءً أعلى مقارنة بـ DHT11، إنه مناسب للمشاريع التي تتطلب دقة عالية ومجال واسع من القيم، بينما يعد DHT11 مناسبًا أكثر للمشاريع منخفضة التكلفة ومنخفضة الطاقة وتطلب مجال أقل من القيم.
وأهم ميزة لحساس DHT11 على حساس DHT22 أن معدل أخذ البيانات أو القراءات كل 1Hz أي كل 1 ثاتية بينما في DHT22 تكون كل 0.5Hz أي كل ص ثانية.
على الرغم من هذه الاختلافات فإن جهد التشغيل لكل منها يتراوح من 3 إلى 5 فولت وتيار 2.5 مللي أمبير، ولكن أفضل جزء هو أن حساسات DHT11 و DHT22 قابلة للتبديل مما يعني أنه إذا قمت ببناء مشروعك بواحد يمكنك ببساطة فصله واستبداله بالنوع الآخر، قد تحتاج إلى تعديل التعليمات البرمجية الخاصة بك قليلاً لكن الأسلاك تظل كما هي.
أقطاب الحساس DHT11/DHT22
Vcc: قطب للتغذية
Gnd: قطب الأرضي
Data: قطب البيانات
Nc: لا يتم توصيله
مميزات وعيوب DHT11/DHT22
-
بعد التعرف أكثر على هذه الحساسات نجد أنها تتمير بأنها تمت معايرتها من قبل المصنع ولا تحتاج أي مكونات إضافية، فقط بعض التوصيلات وكود بسيط من خلال الاردوينو وسوف تستطيع البدء بقياس درجة الحرارة والرطوبة، بالاضافة الى أنها توفر قراءات دقيقة لدرجة الحرارة والرطوبة من مرتبة فاصلة عشرية
-
العيب الوحيد في هذه الحساسات أنها تحتاج وقت ثانية أو ثانيتيين لكي تعطيك بيانات جديدة
ملاحظة: حسب مواصفات الحساس فإنه يمكن توصيل تغذية له من 3.3 الى 5.5 فولت ولكن يوصى بتغذية 5 فولت حيث يمكن نقل البيانات على بعد 20 متر بينما في حال تغذية 3.3 فإنه يمكن نقل البيانات الى متر واحد بالاضافة الى احتمالية وجود أخطاء أكبر.
العناصر المستخدمة
- حساس DHT11 أو DHT22
- أردوينو أونو ARDUINO UNO
- أسلاك توصيل
- لوحة توصيل Bread Board
مخطط التوصيل
في حال كنت تستخدم الحساس بشكل منفصل فإنك تحتاج لوصل مقاومة رفع 10K بين أقطاب Vcc وقطب Out لكي يتم الاتصال بشكل صحيح مع الاردوينو، ولكن في حال كنت تستخدم الحساس بشكل Module لا تحتاج لإضافة أي شيء لأنه يأتي مع مقاومة رفع ومكثف لترشيح الضجيج في مصدر التغذية.
الكود البرمجي
لتسهيل عملية كتابة الكود سوف نستخدم مكتبة خاصة للتعامل مع حساسات DHTxx ولإضافة المكتبة سوف نتبع الخطوات التالية:
من القائمة العلوية نذهب الى:
Sketch > Include Library > Manage Libraries…
وننتظر قليلا حتى يتم تحديث قائمة المكتبات المثبتة وبعدها نبحث عن ‘dhtlib’ ونضغط على خيار التنزيل
#include <dht.h>
#define dataPin 8 // Defines pin number to which the sensor is connected
dht DHT; // Creats a DHT object
void setup()
{
Serial.begin(9600);
}
void loop()
{
//Uncomment whatever type you're using!
int readData = DHT.read22(dataPin); // DHT22/AM2302
//int readData = DHT.read11(dataPin); // DHT11
float t = DHT.temperature; // Gets the values of the temperature
float h = DHT.humidity; // Gets the values of the humidity
// Printing the results on the serial monitor
Serial.print("Temperature = ");
Serial.print(t);
Serial.print(" ");
Serial.print((char)176);//shows degrees character
Serial.print("C | ");
Serial.print((t * 9.0) / 5.0 + 32.0);//print the temperature in Fahrenheit
Serial.print(" ");
Serial.print((char)176);//shows degrees character
Serial.println("F ");
Serial.print("Humidity = ");
Serial.print(h);
Serial.println(" % ");
Serial.println("");
delay(2000); // Delays 2 secods
}