درس ESP32 28/55 - مستشعر حرارة DHT11 مع شاشة LCD | مجموعة تعليمية ESP32 من SunFounder
في هذا البرنامج التعليمي، سنستعرض كيفية توصيل مستشعر درجة الحرارة والرطوبة DHT11 مع الميكروكنترولر ESP32. باستخدام هذا الإعداد، سنقوم بقياس درجة الحرارة والرطوبة المحيطية، وعرض النتائج على كل من المراقب التسلسلي وشاشة LCD. بالإضافة إلى ذلك، سنقوم بتنفيذ جرس ينشط عندما تتجاوز درجة الحرارة حدًا معينًا.
يظهر هذا المشروع استخدام مستشعر DHT11 ويبرز أيضًا تنوع ESP32، الذي يتضمن قدرات Wi-Fi و Bluetooth مدمجة. في نهاية هذا الدرس، سيكون لديك إعداد يعمل على مراقبة الظروف البيئية باستمرار وتوفير تغذية راجعة في الوقت الحقيقي.
للحصول على دليل مرئي، تحقق من الفيديو المرفق بهذا الدليل (في الفيديو عند :00). دعونا نبدأ!
شرح الأجهزة
المكونات الرئيسية المستخدمة في هذا المشروع هي متحكم ESP32، حساس DHT11، وشاشة LCD. سيعمل ESP32 كعقل العملية، حيث يقوم بمعالجة البيانات من حساس DHT11 والتحكم في إخراج الشاشة LCD.
يقيس مستشعر DHT11 الرطوبة ودرجة الحرارة، موفراً قراءات من خلال خط بيانات واحد. يتطلب مصدر طاقة يتراوح بين 3.3 فولت و 5.5 فولت ويتميز باستهلاك منخفض للطاقة، مما يجعله مناسبًا للتطبيقات التي تعمل بالبطارية. سيعرض شاشة LCD قيم درجة الحرارة والرطوبة في الوقت الحقيقي.
تفاصيل ورقة البيانات
| الصانع | غابة |
|---|---|
| رقم الجزء | دي إتش تي 11 |
| جهد المنطق/الدخل والخرج | ٣٫٣ - ٥٫٥ ف |
| جهد الإمداد | ٣.٣ فولت |
| تيار الإخراج (لكل قناة) | 0.5 مللي أمبير عادي. |
| التيار الأقصى (لكل قناة) | ٢.٥ مللي أمبير كحد أقصى |
| إرشادات تردد PWM | N/A |
| عتبات منطق الإدخال | 0.3 فولت (منخفض)، 0.7 فولت (مرتفع) |
| فرق الجهد / رDS(on)/ تشبع | غير قابل للتطبيق |
| الحدود الحرارية | 0°C إلى 60°C |
| حزمة | ديب-4 |
| ملاحظات / متغيرات | الدقة: 1 درجة مئوية / 1% رطوبة نسبية |
- استخدم مقاومة سحب (5 كΩ موصى بها) على خط البيانات.
- احتفظ بأسلاك المستشعر قصيرة (أقل من 20 م) لضمان قراءات دقيقة.
- قم بتغذية DHT11 بجهد 3.3 فولت لتحقيق أداء مثالي.
- يجب أن تكون فترة أخذ العينات لا تقل عن ثانية واحدة.
- تحقق من اتصالات الأسلاك إذا فشلت القراءات (مثل، غير متصل، دبوس غير صحيح).
تعليمات التوصيل


لتوصيل مستشعر DHT11 بـ ESP32، ابدأ بتوصيل دبوس VCC الخاص بـ DHT11 (الدبوس الأيسر) بمخرج 3.3V الخاص بـ ESP32. بعد ذلك، قم بتوصيل دبوس الأرض (الدبوس الرابع) بدبوس أرضي (GND) على ESP32. يجب توصيل دبوس البيانات (الدبوس الثاني) بدبوس GPIO 14 على ESP32.
لشاشة LCD، قم بتوصيل دبوس VCC بمخرج 5 فولت من ESP32. يجب توصيل دبوس الأرض بمسمار أرضي على ESP32. يجب توصيل دبابيس SDA و SCL الخاصة بالشاشة بدبابيس GPIO 21 و 22، على التوالي. تأكد من أن جميع الاتصالات آمنة لتجنب أي مشاكل أثناء قراءة البيانات.
أمثلة الشيفرة ومشيّدة
في الجزء الأول من الشيفرة، نقوم بتهيئة مستشعر DHT ونحدد رقم الدبوس مع#define DHTPIN 14هذا المعرف يسمح لنا بالإشارة بسهولة إلى الدبوس المتصل بخط بيانات DHT11 عبر الشيفرة.
#include "DHT.h"
#define DHTPIN 14 // Set the pin connected to the DHT11 data pin
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
في الsetup()نقوم بتهيئة الاتصال التسلسلي لأغراض تصحيح الأخطاء ونبدأ بمستشعر DHT. تتضمن الحلقة الرئيسية تأخيرًا قدره ثانيتين لضمان أننا لا نضغط على المستشعر بالطلبات.
بعد ذلك، نقرأ قيم الرطوبة ودرجة الحرارة باستخدامfloat humidity = dht.readHumidity();وfloat temperature = dht.readTemperature();تقوم هذه المعرفات بتخزين القيم المقاسة للاستخدام لاحقًا.
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
}
أخيرًا، نتحقق من أي أخطاء قراءة ونطبع القيم على شاشة السيريال باستخدامSerial.print(). هذا يتيح لنا مراقبة القراءات في الوقت الحقيقي.
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
في كود LCD، نقوم بتهيئة الـ LCD وعرض درجة الحرارة والرطوبة على الشاشة باستخدام الـlcd.print()وظيفة. يوفر هذا تمثيلاً بصريًا للبيانات التي تم جمعها بواسطة مستشعر DHT11.
عرض / ما يمكن توقعه
بمجرد توصيل كل شيء بشكل صحيح وتحميل الشيفرة إلى ESP32، يجب أن ترى قراءة درجة الحرارة والرطوبة المعروضة على المراقب التسلسلي وشاشة LCD. إذا تجاوزت درجة الحرارة 30°C، سيقوم الجرس بالتنبيه، موفرًا تنبيهًا صوتيًا.
كن حذرًا من الاتصالات العكسية وتأكد من عدم تعرض المستشعر لظروف قاسية، حيث يمكن أن يؤثر ذلك على القراءات. قد تحتاج إلى تعديل العتبة للجرس بناءً على متطلباتك (في الفيديو عند 15:30).
طوابع زمنية للفيديو
- :00 بدء
- 1:57 مقدمة في DHT11
- :18 توصيل DHT11 مع ESP32
- 7:67 شرح كود أردوينو
- 11:49 اختيار لوحة ESP32 ومنفذ COM في Arduino IDE
- 13:30 عرض المشروع
- 15:32 الحصول على فهرنهايت
- 16:04 عرض درجة الحرارة على شاشة LCD باستخدام ESP32
- 17:20 DHT11 و LCD مع شفرة ESP32
- 19:49 عرض DHT11 على LCD مع ESP32
- 21:33 اتخاذ إجراء بشأن قيمة درجة الحرارة
#include "DHT.h"
#define DHTPIN 14 // قم بتحديد الدبوس المتصل بدبوس بيانات DHT11
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
Serial.println("DHT11 test!");
dht.begin();
}
void loop() {
// انتظر بضع ثوانٍ بين القياسات.
delay(2000);
// قراءة درجة الحرارة أو الرطوبة تستغرق حوالي 250 مللي ثانية!
// قد تكون قراءات المستشعرات قديمة حتى 2 ثانيتين (إنه مستشعر بطيء جداً)
float humidity = dht.readHumidity();
// اقرأ درجة الحرارة بالسيلسيوس (الإعداد الافتراضي)
float temperature = dht.readTemperature();
// تحقق مما إذا كانت هناك أية قراءات فاشلة واخرج مبكرًا (للمحاولة مرة أخرى).
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// اطبع الرطوبة ودرجة الحرارة
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
}
/*
* هذا هو كود Arduino لقياس درجة الحرارة والرطوبة باستخدام DHT11/DHT22 وعرضه على شاشة LCD كتب بواسطة أحمد شمشيري لمجموعة التعلم IoT من SunFounder ESP32 شاهد الفيديو الكامل https://youtu.be/qRUFZX4eDJg الكود الكامل، مخطط الأسلاك وموارد أخرى لهذا البرنامج التعليمي متاحة على https://robojax.com/RJT711
*/
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 14 // قم بتعيين الدبوس المتصل بدبوس بيانات DHT11
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
// قم بتهيئة كائن LCD بعنوان I2C 0x27، 16 عمودًا، و2 صفًا
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// ابدأ الاتصال التسلسلي عند 115200 باود
Serial.begin(115200);
// تهيئة الـ dht11
dht.begin();
// تهيئة شاشة LCD
lcd.init();
lcd.backlight();
// مسح شاشة LCD
lcd.clear();
}
void loop() {
// انتظر بضع ثوانٍ بين القياسات.
delay(2000);
// يستغرق قياس درجة الحرارة أو الرطوبة حوالي 250 مللي ثانية!
// قد تكون قراءة المستشعرات قديمة تصل إلى 2 ثانية (إنه مستشعر بطيء جداً)
float humidity = dht.readHumidity();
// اقرأ درجة الحرارة كما هي مئوية (الإعداد الافتراضي)
float temperature = dht.readTemperature();
// تحقق مما إذا كانت هناك أي قراءات قد فشلت واغلق مبكرًا (لإعادة المحاولة).
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// عرض درجة الحرارة والرطوبة على الشاشة LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.write(223); // رمز الدرجة
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humi: ");
lcd.print(humidity);
lcd.print("%");
}
Common Course Links
Common Course Files
الأشياء التي قد تحتاجها
-
أمازوناشترِ DHT11 من أمازونamzn.to
-
بانجودشراء وحدة DHT11 من Banggoodbanggood.com
الموارد والمراجع
-
توثيقدليل ESP32 28/55 - صفحة مستند SunFounder لمستشعر درجة الحرارة DHTdocs.sunfounder.com
ملفات📁
Fritzing File
-
حساس الرطوبة ودرجة الحرارة DHT11 (3 دبابيس)
DHT11 Humitidy and Temperature Sensor (3 pins).fzpz0.20 MB
دليل المستخدم
-
دليل مستخدم DHT11
robojax-DHT11_manual.pdf0.82 MB