التحكم في الإنترنت Esp8266 عبر بروتوكول MQTT

التحكم في الإنترنت Esp8266 عبر بروتوكول MQTT
أهلاً بكم! ستشرح هذه المقالة بالتفصيل كيفية إعداد جهاز التحكم عن بعد لوحدة esp20 باستخدام تطبيق Android باستخدام بروتوكول MQTT في 8266 دقيقة فقط من وقت الفراغ.

لطالما أثارت فكرة التحكم عن بعد والمراقبة عقول الأشخاص المتحمسين للإلكترونيات والبرمجة. بعد كل شيء ، توفر القدرة على تلقي أو إرسال البيانات الضرورية في أي وقت ، بغض النظر عن موقعك ، فرصًا كبيرة. في مقالاتي السابقة المادة 1 и المادة 2) حاولت التفكير في العديد من الخيارات المعقولة التكلفة والبسيطة نسبيًا لتنفيذ التحكم عن بعد في وحدات التحكم الدقيقة عبر الإنترنت. ومع ذلك ، فإن الوقت والعالم بأسره لا يقفان ساكنين - يستمر التقدم في حركته التي لا هوادة فيها إلى الأمام. خلال هذا الوقت القصير ، اكتسبت وحدة esp8266 شعبية واسعة ، والتي أصبحت ، بفضل سعرها المنخفض وشبكة wi-fi المدمجة ، أحد المكونات الرئيسية للمنزل الذكي.

في الوقت الحالي ، يعد بروتوكول MQTT هو بروتوكول نقل البيانات الأكثر تقدمًا والأكثر شيوعًا بين الأجهزة الفردية داخل أنظمة المنزل الذكي. له مزايا عديدة مقارنة بالبروتوكولات الأخرى:
- انخفاض استهلاك حركة المرور ؛
- الاتصال بين العميل والخادم مفتوح دائمًا ؛
- لا يتم تحميل قناة الإنترنت ؛
- عدم وجود تأخير في نقل البيانات ؛
- نظام مناسب للاشتراكات في الموضوعات ؛
كل هذا يجعل من الممكن المراقبة والتحكم في الوقت الحقيقي. ومع ذلك ، يتطلب MQTT خادمه الخاص ، والذي يعمل كوسيط بين عملاء الشبكة. هناك طريقتان لإنشاء الخادم الخاص بك أو استخدام خدمات الجهات الخارجية.

يتكون نظام التحكم الموصوف من جزأين رئيسيين: خادم MQTT (عادة ما يكون واحدًا) والعملاء ، والتي يمكن أن تكون كثيرة جدًا. في حالتنا ، سيعمل تطبيق Android ووحدة esp8266 نفسها كعملاء.

خوارزمية تشغيل النظام على النحو التالي. يتصل العملاء بالخادم وبعد الاتصال مباشرة يشترك كل منهم في الموضوعات التي تهمه. تنتقل جميع الاتصالات بين العملاء عبر الخادم ، الذي يعيد توجيه البيانات إلى عملاء آخرين بناءً على اشتراكاتهم.

خادم MQTT.

في حالتنا ، سوف نستخدم خدمة مريحة للغاية www.cloudmqtt.com التي لديها خطة تعريفة مجانية (Cute Cat) ستغطي بالكامل احتياجات تنفيذ نظام المنزل الذكي الصغير داخل المنزل.
التحكم في الإنترنت Esp8266 عبر بروتوكول MQTT
دعنا نسجل على الموقع ونحصل على البيانات اللازمة للوصول إلى الخادم. عند تكوين العملاء ، يجب عليك استخدام منفذ عادي (بدون SSL و TLS).
التحكم في الإنترنت Esp8266 عبر بروتوكول MQTT

تطبيق للأندرويد.

سيعمل تطبيقنا كلوحة تحكم لوحدة التحكم الدقيقة ، وسيتلقى أيضًا ويعرض جميع المعلومات الواردة من esp8266.

التطبيق يسمى لوحة معلومات إنترنت الأشياء MQTT وهو عميل mqtt جاهز مع عدد صغير من الأدوات سهلة الاستخدام. يمكنك مشاهدة الفيديو لمزيد من التفاصيل حول كيفية استخدام التطبيق.

Esp8266.

يتم وميض الوحدة في بيئة برمجة Arduino ، ومع ذلك ، أود أن أشير إلى أن الوحدة لديها مشاكل مع البرامج الثابتة في أحدث إصدارات Arduino ، لذلك أوصي باستخدام الإصدار 1.6.4.
على سبيل المثال ، يتم توصيل مصباح LED (8266 دبابيس) ومستشعر درجة الحرارة ds5b18 (20 دبابيس) بـ esp2.
نظرًا لأنه من الضروري تلقي البيانات للتحكم في مؤشر LED ، بعد الاتصال ، يجب على esp الاشتراك في موضوع "الاختبار / بقيادة الولايات المتحدة" المقابل ، وإلا ستمر جميع البيانات المرسلة بواسطة وحدة التحكم الدقيقة الخاصة بنا.
لا تحتاج إلى اشتراك لإرسال بيانات درجة الحرارة ، ولكن عند إرسال قيم درجة الحرارة ، يجب عليك تحديد الموضوع الذي ستنتقل إليه هذه البيانات.

يوجد أدناه رسم تخطيطي مع تعليقات مفصلة.

سكتش Esp8266_mqtt.ino// Светодиод подлкючен к 5 пину
// Датчик температуры ds18b20 к 2 пину

#تضمن
#يشمل
#يشمل
#يشمل

#تعريف ONE_WIRE_BUS 2
OneWire oneWire (ONE_WIRE_BUS) ،
مستشعرات دالاس درجة الحرارة (وسلك واحد) ؛

ثابت char *ssid = "المطار"؛ // اسم نقطة وصول WiFi
ثابت char *pass = "كلمة المرور"؛ // كلمة المرور من نقطة الوصول

ثابت char *mqtt_server = "الخادم"؛ // اسم خادم MQTT
ثابت int mqtt_port = 11140؛ // منفذ للاتصال بخادم MQTT
const char *mqtt_user = "تسجيل الدخول"; // سجلات من الخادم
const char *mqtt_pass = "تمرير"؛ // كلمة مرور الخادم

#تعريف حجم المخزن المؤقت 100

bool LedState = false؛
int tm=300؛
تعويم درجة الحرارة = 0؛

// وظيفة لاستقبال البيانات من الخادم

استدعاء void (ثابت MQTT::Publish& pub)
{
Serial.print(pub.topic()); // إخراج اسم الموضوع إلى المنفذ التسلسلي
تسلسل.print(" => ");
التسلسل.print(pub.payload_string()); // إخراج قيمة البيانات المستلمة إلى المنفذ التسلسلي

سلسلة الحمولة = pub.payload_string();

if(String(pub.topic()) == "test/led") // تحقق مما إذا كانت البيانات جاءت من الموضوع الذي نحتاجه
{
int stled = payload.toInt(); // تحويل البيانات المستلمة إلى نوع عدد صحيح
الكتابة الرقمية(5،stled)؛ // تشغيل أو إيقاف تشغيل LED اعتمادًا على قيم البيانات المستلمة
}
}

عميل WiFiwclient؛
عميل PubSubClient(wclient، mqtt_server، mqtt_port)؛

إعداد باطل () {

أجهزة الاستشعار. beegin () ؛
Serial.begin (115200) ؛
تأخير (10) ؛
Serial.println () ،
Serial.println () ،
pinMode (5 ، الإخراج) ؛
}

حلقة باطلة () {
//الاتصال بشبكة واي فاي
إذا (WiFi.status() != WL_CONNECTED) {
Serial.print("جارٍ الاتصال بـ");
Serial.print(ssid);
Serial.println("...");
WiFi.begin(ssid، تمرير)؛

إذا (WiFi.waitForConnectResult() != WL_CONNECTED)
العودة؛
Serial.println("تم الاتصال بشبكة WiFi");
}

//الاتصال بخادم MQTT
إذا (WiFi.status() == WL_CONNECTED) {
إذا لم يكن العميل متصلاً () {
Serial.println("جارٍ الاتصال بخادم MQTT");
إذا (client.connect(MQTT::Connect("arduinoClient2")
.set_auth(mqtt_user، mqtt_pass))) {
Serial.println("متصل بخادم MQTT");
العميل.set_callback(callback);
العميل.اشترك("اختبار/قيادة"); // اشترك في الموضوع بالبيانات الخاصة بالصمام الثنائي الباعث للضوء
{} آخر
Serial.println("تعذر الاتصال بخادم MQTT");
}
}

إذا (تم توصيل العميل ()){
العميل.loop();
إرسال مؤقت();
}

}
} // نهاية الحلقة الرئيسية

// وظيفة لإرسال قراءات من مستشعر درجة الحرارة
void TempSend(){
إذا (tm==0)
{
أجهزة الاستشعار.طلب درجات الحرارة(); // نحصل على قيمة درجة الحرارة من المستشعر
تعويم درجة الحرارة = sensors.getTempCByIndex(0);
العميل.نشر("اختبار/درجة الحرارة"،سلسلة(درجة الحرارة)); //أرسل قيمة درجة الحرارة إلى الموضوع الخاص بمستشعر درجة الحرارة
Serial.println (درجة الحرارة) ؛
tm = 300؛ // توقف مؤقت بين إرسال قيم درجة الحرارة لمدة 3 ثوانٍ تقريبًا
}
تم--؛
تأخير (10) ؛
}

نتيجة لذلك ، نحصل على أداة ملائمة للتحكم عن بعد ومراقبة البيانات ، وهو أمر سهل التعلم ويمكن حتى للمبتدئين القيام به.

فيديو يوضح عمل نظام التحكم

لعب الفيديو

تعليمات فيديو مفصلة لإعداد النظام

لعب الفيديو

أحد خيارات استخدام عنصر التحكم esp8266 عبر بروتوكول MQTT

لعب الفيديو

التحكم في الإنترنت لشريط LED

لعب الفيديو

إذا كان لديك أي أسئلة حول هذه المادة ، فأنا أوصي بمشاهدة الجزء الثاني من الفيديو ، حيث يتم تقديم المادة بشكل أكثر وضوحًا.

يحتوي الأرشيف على الرسم التخطيطي وجميع المكتبات اللازمة لوميض وحدة التحكم الدقيقة بالرسم من المثال.
يرجى ملاحظة أن مكتبة ESP8266WiFi.h غير مدرجة في هذا الأرشيف ، ويتم تثبيتها عبر مدير اللوحات في بيئة Arduino.

ARCHIVE

خادم MQTT - www.cloudmqtt.com

رابط لتطبيق IoT MQTT Dashboard - play.google.com/store/apps/details؟id=com.thn.iotmqttdashboard&hl=ru

شكرا لكم جميعا على اهتمامكم.

المصدر: www.habr.com

إضافة تعليق