في هذا المشروع سوف نتعلم كيفية استخدام DHT11 أو جهاز الاستشعار DHT22 مع لوحة الاردوينو لقياس درجة الحرارة و الرطوبة . وسيتم طباعة درجة حرارة الغرفة والرطوبة على شاشة الـ LCD .
القطع المطلوبة:
الأدوات التي تحتاجها لهذا المشروع :
مستشعر درجة الحرارة و الرطوبة DHT11
لوح تجارب حجم متوسط (Half size breadboard )
اسلاك توصيل ذكر/ذكر (Jumper Wires Male Male)
حساسات DHT11/DHT22 :
هذه الأجهزة شعبية جدا لهواة الالكترونيات لأنها رخيصة و تقدم أداء رائعة. وفي يلي يتم توضيح المواصفات و الفرق بين هذه الحساسات :
DHT22 هو نسخة أكثر تكلفة لأنها تقدم مواصفات أفضل . مثلا في نطاق قياس درجة الحرارة هو من -40 إلى +125 درجة مئوية مع 0.5 درجة دقة ، في حين DHT11من 0 الى 50 درجة مئوية مع 2 درجة دقة. أيضا DHT22 لديه نطاق قياس رطوبة أفضل ، من 0 إلى 100% مع 2-5% من الدقة. في حين DHT11 نطاق الرطوبة من 20 الى 90% مع 5% من الدقة.
هناك مواصفتان في DHT11 هي أفضل من DHT22. وهي معدل أخذ العينات (Sampling Rate) في مستشعر DHT11 هي 1Hz او قراءة كل ثانية، في حين DHT22 معدل أخذ العينات هي 0.5Hz أو قراءة كل 2 ثانية. كما أن DHT11 أصغر حجما.
جهد التشغيل الكهربائي لكل من أجهزة الاستشعار هي 5-3 فولت ، في حين الحد الأقصى للتيار المستخدم عند القياس هو 2.5mA.
هذة الحساسات تتألف من مستشعر الرطوبة , و NTC مستشعر درجة الحرارة (أو الثرمستور) و IC على الجانب الخلفي للحساس .
حساسات DHTxx لديها أربعة دبابيس ، VCC ، GND ، دبوس البيانات (Data Pin) ودبوس لا يتم استخدامه. مطلوب Pull-up resistor من 5Kالى 10K اوم للحفاظ على خط البيانات و من أجل تمكين الاتصال بين المستشعر و لوحة الاردوينو. هناك بعض الإصدارات من هذه الحساسات التي تأتي مع لوحة جانبية مدمجة مع pull-up resistor و لديها 3 دبابيس.
مبدأ عمل DHT11 :
في هذا المشروع سنقوم بإستخدام المستشعر DHT11. بعد توصيل المستشعر إلى المتحكم، يقوم المتحكم MCU بإرسال نبضة بدء (Start signal ) للحساس لينقله من وضع الأستعداد إلى وضع التشغيل و بعد اكتمال وصول النبضه إلى الحساس و استجابته لهذه النبضة ، يرسل الحساس موجه تضم 40 Bit تضم اشارات الحرارة و الرطوبة إلى المتحكم الذي يقوم بدوره بمعالجتها و إظهار النتائج .
تصميم لوح التجارب
قم بتوصيل الدائرة الكهربائية للمستشعر كما هو موضح بالصورة :
ثم قم بإضافة LCD ويتم توصيلها كما هو موضح بالصورة التالية :
في هذا المشروع سيتم توصيل الشاشة كالتالي :
Arduino | LCD |
Pin 12 | RS pin |
Pin 11 | Enable pin |
Pin 5 | D4 pin |
Pin 4 | D5 pin |
Pin 3 | D6 pin |
Pin 2 | D7 pin |
يمكنك العودة إلى الدرس الثاني عشر للإطلاع على طريقة توصيل باقي المنافذ على شاشة الـ LCD .
الكود البرمجي للأردوينو
أولا نحن بحاجة إلى تثبيت مكتبة الـDHT التي يمكنك تنزيلها من هنا أو من الموقع الرسمي اردوينو هنا. ثم يتم تحديد رقم المنفذ لقراءة البيانات من المستشعر.
ثم قم برفع البرنامج التالي على الاردوينو:
#include <LiquidCrystal.h> // includes the LiquidCrystal Library #include <dht.h> #define dataPin A0 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7) dht DHT; void setup() { lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display } void loop() { int readData = DHT.read11(dataPin); float t = DHT.temperature; float h = DHT.humidity; lcd.setCursor(0,0); // Sets the location at which subsequent text written to the LCD will be displayed lcd.print("Temp.: "); // Prints string "Temp." on the LCD lcd.print(t); // Prints the temperature value from the sensor lcd.print((char)223); //degree symbol lcd.print("C"); lcd.setCursor(0,1); lcd.print("Humi.: "); lcd.print(h); lcd.print(" %"); delay(2000); }
لمحة عن الكود :
سيتم استخدام الدالة ()read11 ليتم قراءة البيانات من المستشعر
int readData = DHT.read11(dataPin);
ثم الحصول على قيم درجة الحرارة و الرطوبة و يتم وضع القيم في متغيرات.
float t = DHT.temperature; float h = DHT.humidity;