في هذا الدليل، سنقوم بإنشاء نظام مراقبة درجة الحرارة عن بُعد باستخدام ESP32 وبروتوكول MQTT. يتيح لنا هذا المشروع نشر بيانات درجة الحرارة إلى وسيط MQTT والتحكم في LED عن بُعد باستخدام واجهة ويب. من خلال الضغط على زر، يمكننا إرسال قراءات درجة الحرارة إلى السحابة، ويمكننا أيضًا تلقي أوامر لتشغيل أو إيقاف LED.
esp32-47-mqt-1
ESP32 هو متحكم دقيق قوي يحتوي على واي فاي وبلوتوث مدمجين، مما يجعله مثاليًا لتطبيقات إنترنت الأشياء (IoT). في هذا الإعداد، سنستخدم مقاومة حرارية NTC لقياس درجة الحرارة، وزر ضغط لتشغيل القراءات، وLED للإشارة إلى الحالة. سيتم إرسال البيانات إلى HiveMQ، وهو وسيط MQTT شائع، حيث يمكن الوصول إليها عن بُعد (في الفيديو عند 00:45).
esp32-47-mqt-2
شرح الأجهزة
لهذا المشروع، سنستخدم المكونات التالية:
وحدة التحكم الدقيقة ESP32:تعتبر هذه اللوحة وحدة المعالجة المركزية، حيث تدير اتصالات الواي فاي وتواصل MQTT.
NTC ثيرمستور:هذا المستشعر للحرارة يغير مقاومته بناءً على درجة الحرارة. ويوفر إشارة تناظرية يمكن لـ ESP32 قراءتها لتحديد درجة الحرارة الحالية.
إل إي ديسيتم استخدام هذا الدايود الباعث للضوء للإشارة إلى الحالة استنادًا إلى الأوامر المستلمة عبر MQTT.
زر الضغط:سيؤدي الضغط على هذا الزر إلى جعل ESP32 يقرأ درجة الحرارة وينشرها إلى وسيط MQTT.
تفاصيل ورقة البيانات
المصنع
صن فاوندر
رقم الجزء
ESP32
جهد المنطق/الإدخال/الإخراج
٣.٣ فولت
جهد الإمداد
٥ فولت (عبر USB)
تيار الخرج (لكل قناة)
12 مللي أمبير كحد أقصى
توجيه تردد PWM
حتى 40 كيلو هرتز
عتبات منطق الإدخال
0.3 فولت (منخفض)، 2.4 فولت (مرتفع)
القيود الحرارية
-40 إلى 85 درجة مئوية
حزمة
ESP32-WROOM-32
تأكد من مستويات الفولتية الصحيحة لتجنب التلف.
استخدم المقاومات السُحب للمفتاح الدافع لضمان قراءات مستقرة.
يمكن أن تساعد المكثفات المفصولة في استقرار مصدر الطاقة.
كن حذرًا بشأن توصيل الأسلاك الخاصة بالثرمستور لتجنب القراءات غير الصحيحة.
تحقق من تفاصيل خادم MQTT الخاص بك لتحقيق اتصال ناجح.
تعليمات التوصيل
esp32-47-mqtt-wiring
لربط المكونات، ابدأ بتوصيل الثرمستور NTC. قم بتوصيل طرف واحد من الثرمستور بمصدر 3.3 فولت على ESP32. الطرف الآخر يتصل بالطرف 36 على ESP32، ويجب أيضًا توصيله بمقاومة 10 كΩ، والتي تتصل بدورها بالأرض. هذا ينشئ مقسم جهد يسمح لـ ESP32 بقراءة مقاومة الثرمستور.
بعد ذلك، قم بتوصيل الصمام الثنائي الباعث للضوء (LED). يتم توصيل الساق الأطول (الأنود) للصمام الثنائي بالسن 4 على ESP32 من خلال مقاومة 220 أوم، بينما يتم توصيل الساق الأقصر (الكاثود) بالأرض. بالنسبة للزر الضاغط، قم بتوصيل جانب واحد بـ 3.3 فولت والجانب الآخر بالسن 14 على ESP32. بالإضافة إلى ذلك، قم بتوصيل مقاومة 10 كأوم من دبوس الزر إلى الأرض لضمان حالة LOW مستقرة عندما لا يتم الضغط على الزر.
تثبيت المكتبة المطلوبة
الPubSubClientتُستخدم المكتبة هنا، يمكنك تثبيتها من الـمدير المكتبة.
esp32-47-mqtt-مكتبة
أمثلة الشفرات وجولة توضيحية
في إعداد النظام، نقوم بتهيئة الاتصال التسلسلي، وتهيئة اتصال الواي فاي، وتكوين خادم MQTT. إليك جزء من كود الإعداد:
تقوم هذه الجزء من الكود بإنشاء الاتصال بشبكة الواي فاي وإعداد خادم MQTT. كما يتم تكوين أوضاع الدبابيس للزر والled هنا.
تقوم دالة الحلقة بالتحقق بشكل مستمر من حالة الزر وتنشر بيانات درجة الحرارة عند الضغط عليه. إليك مقتطف مركز من الحلقة:
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
if (digitalRead(buttonPin)) {
long now = millis();
if (now - lastMsg > 5000) {
lastMsg = now;
char tempString[8];
dtostrf(thermistor(), 1, 2, tempString);
client.publish("SF/TEMP", tempString);
}
}
}
في هذه الحلقة، نتحقق مما إذا كان ESP32 متصلًا بخادم MQTT. إذا تم الضغط على الزر، يقوم بقراءة درجة الحرارة من الثرمستور وينشرها على الموضوع "SF/TEMP" كل 5 ثوانٍ.
عرض / ماذا تتوقع
عند إعداد المشروع وتشغيله، سيؤدي الضغط على الزر إلى نشر درجة الحرارة الحالية إلى وسيط MQTT. يمكنك مراقبة هذه البيانات من أي عميل MQTT. بالإضافة إلى ذلك، يمكنك إرسال رسائل للتحكم في LED؛ إرسال "تشغيل" سيضيء المصباح، بينما "إيقاف" سيطفئه. راقب السلوك المتوقع في الفيديو عند 15:30، حيث تظهر قراءات درجة الحرارة بعد كل ضغط على الزر.
طوابع زمنية للفيديو
00:00 ابدأ
:05 مقدمة عن المشروع
خدمة HiveMQ المجانية 7:06
7:56 شرح الأسلاك
رمز Arduino 11:11 موضّح
18:46 اختيار لوحة ESP32 ومنفذ COM في Arduino IDE
٢٠:٣٠ عرض لخادم HiveMQ المجاني
الصور
esp32-47-mqt-1
esp32-47-mqt-2
esp32-47-mqtt-library
esp32-47-mqtt-wiring
esp32-47-mqt-1
esp32-47-mqt-2
esp32-47-mqtt-library
esp32-47-mqtt-wiring
847-ESP32 Tutorial 46/55- Arduino code for IoT Communication with MQTT