كود أردوينو وفيديو لمستشعر DHT11 لدرجة الحرارة والرطوبة
في هذا الدرس التعليمي، سنستعرض كيفية استخدام حساس DHT11 لقياس درجة الحرارة والرطوبة مع لوحة أردوينو. هذا الحساس خيار منخفض التكلفة لقياس كل من الحرارة والرطوبة، مما يجعله مناسبًا لمجموعة متنوعة من المشاريع. سنغطي التوصيلات، الكود اللازم، وكيف تتفاعل المكونات لتقديم قراءات دقيقة.

بحلول نهاية هذا البرنامج التعليمي، ستتمكن من قراءة درجة الحرارة بالدرجة المئوية والفهرنهايت والكلفن، فضلاً عن قراءة مستويات الرطوبة من مستشعر DHT11. لمزيد من الإيضاح، تأكد من مشاهدة الفيديو عند الأوقات المشار إليها (في الفيديو عند 00:00).
شرح الأجهزة
يتكون حساس DHT11 من ثلاثة أطراف: الأرضي، والطاقة، والبيانات. الطرف الأرضي يتصل بأرضية الأردوينو، بينما يتصل طرف الطاقة بمصدر 5 فولت من الأردوينو. طرف البيانات مسؤول عن الاتصال بين الأردوينو والحساس، مما يسمح للأردوينو بقراءة قيم درجة الحرارة والرطوبة.
يستخدم هذا المستشعر خرجًا رقميًا، مما يعني أنه يرسل البيانات بتنسيق تسلسلي إلى أردوينو. يحتوي على ثيرمستور لقياس درجة الحرارة ومستشعر رطوبة سعوي. يقوم DHT11 بتحويل الإشارات التناظرية التي يتلقاها إلى إشارات رقمية، مما يسهل على المتحكمات الدقيقة مثل أردوينو معالجة البيانات.
تفاصيل ورقة البيانات
| المصنّع | إيه إس إيه آي آر |
|---|---|
| رقم القطعة | DHT11 |
| جهد المنطق/الإدخال والإخراج | 3.3-5.5 فولت |
| جهد التغذية | 3.3-5.5 فولت |
| تيار الإخراج (لكل قناة) | 0.5 ميلي أمبير |
| التيار الأقصى (لكل قناة) | 2.5 ميلي أمبير |
| إرشادات تردد PWM | غير متوفر |
| عتبات منطقية للمدخلات | 0.3*Vدي ديإلى 0.7*Vدي دي |
| هبوط الجهد / Rمقاومة المصرف-المصدر عند التشغيل/ التشبع | غير متاح |
| الحدود الحرارية | 0 إلى 60 درجة مئوية |
| حزمة | حزمة DIP ذات 4 أطراف |
| ملاحظات / متغيرات | منخفض التكلفة وسهل الاستخدام |
- جهد التشغيل بين 3.3 فولت و5.5 فولت.
- الحد الأقصى لتيار الخرج 2.5 mA.
- نطاق درجات الحرارة من 0 إلى 60 درجة مئوية.
- نطاق الرطوبة من 20٪ إلى 90٪.
- استخدم مقاوم سحب للأعلى على دبوس البيانات للحصول على قراءات مستقرة.
- تأكد من التوصيل السليم لتجنب المدخلات العائمة.
- انتبه إلى قطبية معكوسة عند توصيل الطاقة.
- أجّل القراءات لمدة لا تقل عن 1 ثانية للحصول على نتائج دقيقة.
تعليمات الأسلاك

لتوصيل حساس DHT11 بلوحة الأردوينو الخاصة بك، اتبع الخطوات التالية:
أولاً، قم بتوصيل دبوس الأرضي في حساس DHT11 (عادةً أسود أو بني) بالأرضي (GND) على لوحة الأردوينو. بعد ذلك، قم بتوصيل دبوس الطاقة في DHT11 (عادةً أحمر) بمخرج 5V على الأردوينو. أخيراً، قم بتوصيل دبوس البيانات (عادةً أصفر أو أبيض) بالدبوس الرقمي 2 على الأردوينو. تأكد من استخدام مقاوم سحب للأعلى (حوالي 10 كيلوأوم) بين دبوس البيانات ودبوس الطاقة لضمان اتصال مستقر.
أمثلة على الكود ودليل إرشادي
في كود الأردوينو، نبدأ بتضمين ملف الترويسة الضروري لمستشعر DHT11:
#include يستورد هذا السطر المكتبة التي تحتوي على الدوال اللازمة للتفاعل مع مستشعر DHT11. بعد ذلك، نقوم بإنشاء مثيل لفئة DHT11:
dht11 DHT11; // create object of DHT11يقوم هذا السطر بتهيئة كائن DHT11 الذي سنستخدمه لقراءة البيانات من المستشعر. يتم تعريف الدبوس المتصل بـ DHT11 كما يلي:
#define dhtpin 2 // set the pin to connect to DHT11هذا يعيّن دبوس البيانات للمستشعر إلى الدبوس 2 على لوحة الأردوينو. فيloop()في الدالة، نقرأ بيانات المستشعر:
DHT11.read(dhtpin);// initialize the readingيبدأ هذا السطر عملية القراءة، ويمكن الوصول إلى الرطوبة باستخدام:
int humidity = DHT11.humidity;// get humidityقيمة الرطوبة مخزنة في المتغيرhumidity، والذي يُطبع بعد ذلك على شاشة المراقبة التسلسلية إلى جانب قيم درجات الحرارة المحوَّلة إلى سيلسيوس وفهرنهايت وكلفن.
عرض توضيحي / ما الذي تتوقعه
عند تشغيل الكود، يجب أن ترى قراءات درجة الحرارة والرطوبة معروضة في نافذة المراقبة التسلسلية. ستتحدّث قراءات درجة الحرارة كل نصف ثانية (في الفيديو عند 00:00). إذا تم تسخين المستشعر أو تبريده، فستلاحظ تغير القيم وفقًا لذلك. كن حذرًا، إذ أن DHT11 له حد أقصى لدرجة الحرارة يبلغ 60 درجة مئوية؛ قد يؤدي تجاوز هذا إلى قراءات غير دقيقة.
طوابع زمنية للفيديو
- 00:00- مقدمة عن مستشعر DHT11
- 01:30تعليمات التوصيل الكهربائي
- 02:15- نظرة عامة على الشيفرة
- 03:00- تشغيل الكود والمخرجات المتوقعة
/*
* This is the Arduino code for the DHT11 module to read temperature and humidity.
* This code can display temperature in:
* C is used to get Celsius.
* F is used to get Fahrenheit.
* K is used for Kelvin.
* Watch the video https://youtu.be/FjZBt6eU9b4
*
* Written by Ahmad Nejrabi for Robojax Video
* Date: January 4, 2018, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*/
// header file from GitHub: https://github.com/adidax/dht11
#include <dht11.h>
dht11 DHT11; // create object of DHT11
#define dhtpin 2 // set the pin to connect to DHT11
void setup() {
Serial.begin(9600);// setting up serial monitor
}
void loop() {
DHT11.read(dhtpin);// initialize the reading
//code for Robojax.com video
int humidity = DHT11.humidity;// get humidity
Serial.print(getTemp('C'));
Serial.print("C ");
Serial.print(getTemp('F'));
Serial.print("F ");
Serial.print(getTemp('K'));
Serial.print("K ");
Serial.print(" humidity:");
Serial.print (humidity);
Serial.println("% ");
Serial.println();
delay(500);
}
/*
* getTemp(char type)
* type character of upper case.
* C is used to get Celsius.
* F is used to get Fahrenheit.
* K is used for Kelvin.
*/
float getTemp(char type) {
float temp = (float)DHT11.temperature;//get temp
if(type =='F')
{
return temp * 1.8 + 32;// convert to Fahrenheit
}else if(type =='K')
{
return temp + 274.15;// convert to Kelvin
}else{
return temp;
}
}
الموارد والمراجع
-
خارجيمكتبة DHT11 على جيت هابgithub.com
ملفات📁
مكتبات أردوينو (ملف مضغوط)
-
مكتبة DHT22 لأردوينو
robojax-DHT22_library.zip0.01 MB
Fritzing File
-
جهاز استشعار الحرارة DHT11
Temperature Sensor DHT11.fzpz0.01 MB
دليل المستخدم
-
دليل مستخدم DHT11
robojax-DHT11_manual.pdf0.82 MB