عناوين الدرس

عرض درجة الحرارة والرطوبة

مبتدئ

في هذا المشروع سوف نتعلم كيفية استخدام DHT11 أو جهاز الاستشعار DHT22  مع لوحة الاردوينو لقياس درجة الحرارة و الرطوبة . وسيتم طباعة درجة حرارة الغرفة والرطوبة على شاشة الـ LCD .

temp-humidity-display

القطع المطلوبة:

الأدوات التي تحتاجها لهذا المشروع :

humidity sensor

مستشعر درجة الحرارة و الرطوبة DHT11

LCDشاشة عرض 16×2 شاشة

potentiometer 10k

Potentiometer 10K Ω

220 Ω resistor

مقاومة 220 اوم

Half-size Breadboard

لوح تجارب حجم متوسط (Half size breadboard )

arduino uno r3

Arduino Uno R3

Jumper Wires Male/Male

 اسلاك توصيل ذكر/ذكر (Jumper Wires Male Male)

حساسات DHT11/DHT22 :

هذه الأجهزة شعبية جدا لهواة الالكترونيات لأنها رخيصة و تقدم أداء رائعة. وفي يلي يتم توضيح المواصفات و الفرق بين هذه الحساسات :
DHT22 هو نسخة أكثر تكلفة لأنها تقدم مواصفات أفضل . مثلا في نطاق قياس درجة الحرارة هو من -40 إلى +125  درجة مئوية مع 0.5 درجة دقة ، في حين  DHT11من 0 الى 50 درجة مئوية مع 2 درجة دقة. أيضا DHT22 لديه نطاق قياس رطوبة أفضل ، من 0 إلى 100% مع 2-5% من الدقة. في حين DHT11  نطاق الرطوبة من 20 الى 90% مع  5% من الدقة.

temp-humidity-display

هناك مواصفتان في DHT11 هي أفضل من DHT22. وهي معدل أخذ العينات (Sampling Rate) في مستشعر DHT11  هي 1Hz او قراءة كل ثانية، في حين  DHT22 معدل أخذ العينات هي 0.5Hz أو قراءة كل 2 ثانية. كما أن DHT11  أصغر حجما.
جهد التشغيل الكهربائي لكل من أجهزة الاستشعار هي 5-3 فولت ، في حين الحد الأقصى للتيار المستخدم عند القياس هو 2.5mA.

هذة الحساسات  تتألف من مستشعر الرطوبة , و NTC  مستشعر درجة الحرارة (أو الثرمستور) و IC على الجانب الخلفي للحساس .

temp-humidity-display

حساسات DHTxx  لديها أربعة دبابيس ، VCC ، GND ، دبوس البيانات (Data Pin)  ودبوس لا يتم استخدامه. مطلوب Pull-up resistor من  5Kالى 10K اوم للحفاظ على خط البيانات و من أجل تمكين الاتصال بين المستشعر و لوحة الاردوينو. هناك بعض الإصدارات من هذه الحساسات التي تأتي مع لوحة جانبية مدمجة مع pull-up resistor و لديها 3 دبابيس.

temp-humidity-display

مبدأ عمل DHT11 :

في هذا المشروع سنقوم بإستخدام المستشعر DHT11. بعد توصيل المستشعر إلى المتحكم، يقوم المتحكم MCU بإرسال نبضة بدء (Start signal ) للحساس لينقله من وضع الأستعداد إلى وضع التشغيل و بعد اكتمال وصول النبضه إلى الحساس و استجابته لهذه النبضة ، يرسل الحساس موجه تضم 40 Bit تضم اشارات الحرارة و الرطوبة إلى المتحكم الذي يقوم بدوره بمعالجتها و إظهار النتائج .

temp-humidity-display

تصميم لوح التجارب

 قم بتوصيل الدائرة الكهربائية للمستشعر كما هو موضح بالصورة :

temp-humidity-display

ثم قم بإضافة  LCD  ويتم توصيلها كما هو موضح بالصورة التالية :

temp-humidity-display

في هذا المشروع سيتم توصيل الشاشة كالتالي :

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;
X
تم إضافة المنتج إلى السلة بنجاح