ربط ESP8266 مع Node-red باستخدام برتوكول MQTT

ربط ESP8266 مع Node-red باستخدام برتوكول MQTT

سنتعرف في هذا المقال إلى كيفية التحكم بمخارج وحدة ESP8266 وعرض قيم الحساسات المرتبطة معها عبر نود-ريد Node-Red .  تعمل برمجية نود ريد على لوحة الراسبيري باي، مستخدمة بروتوكول MQTT للاتصال بين ESP8266 والنود-ريد .يوضح الشكل التالي نظرة عامة عمّا سنفعله في هذا  المشروع.

آلية العمل بين دارة ESP8266 ونود-ريد  باستخدام بروتوكول MQTT – (مصدر الصورة: موقع Random Nerd Tutorials)

شاهد الفيديو التوضيحي أدناه.

 

مقدمة حول نود ريد ولوحة التحكم والمعلومات (Dashboard) :

 يجب أن تثبت برمجية نود ريد ولوحة المعلومات الخاصة بها على الراسبيري باي أولاً ثم اطلع على منشورات المدوّنة التالية لبدء استخدام لوحة المعلومات الخاصة بالنود-ريد: 

  Getting started with Node-RED on Raspberry Pi

 Getting started with Node-RED Dashboard  

بروتوكول MQTT:

سننشئ في هذا المشروع اتصال بين الراسبيري باي الذي  يشغل برمجية نود-ريد  ووحدة ESP8266 باستخدام بروتوكول MQTT.

يشير حرفي الT  في كلمة   MQTT إلى عبارة النقل عن بعد Telemetry Transport، يعد البرتوكول، نظام نشر/ اشتراك  فعال وغير مستهلك للموارد يمكّنك من تلقّي الرسائل ونشرها كعميل، وهو بروتوكول بسيط لنقل الرسائل بين الخادم والعميل، ومصمّم للأجهزة المقيدة بعرض نطاق ترددي منخفض. لذلك فإنها الحل الأمثل لتبادل المعلومات والبيانات بين أجهزة إنترنت الأشياء.

إذا كنت تريد تعلّم المزيد عن بروتوكول MQTT يمكنك مشاهدة الفيديو أدناه.

من أجل الحصول على معلومات أكثر ومصادر إضافية عن بروتوكول MQTT يمكنك قراءة  المقال التالي من هنا.

تثبيت الخادم الوسيط  موسكيتو (Mosquitto Broker):

في بروتوكول MQTT، الخادم الوسيط هو المسؤول في المرتبة الأولى عن تلقّي كل الرسائل، وفرزها، ليقرّر الأجهزة المهتمة بها، ثم ينشرها لجميع العملاء المشتركين بها.

هناك عدة خوادم وسيطة يمكن أن تستخدمها، وسوف نستخدم في هذا  المشروع الخادم الوسيط موسكيتو الذي تحتاج إلى تثبيته على لوحة الراسبيري باي.

الخادم الوسيط  موسكيتو -( مصدر الصورة: موقع Random Nerd Tutorials)

لتثبيت الخادم الوسيط موسكيتو على الراسبيري باي،  اطّلع على المقال التالي من هنا.

التحقق:

لنتحقق فيما  إذا كان موسكيتو ثبت تثبيتا صحيحاً، قم بتنفيذ الأمر التالي:

[email protected]:~ $ mosquitto -v

 

يحّدث هذا الأمر نسخة موسكيتو الذي يعمل حالياً على  لوحتك الراسبيري باي، (يجب أن تكون النسخة 1.4 أو أعلى).

إصدار الخادم الوسيط موسكيتو – مصدر الصورة: موقع Random Nerd Tutorials

 

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

إنشاء اتصال بين بروتوكول MQTT وبرمجية نود-ريد:

في هذا ،القسم سوف  ننشئ اتصال بروتوكول MQTT باستخدام عقد نود-ريد.

تنسيق لوحة المعلومات والتحكم  Dashboard Layout :

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

DHT11) هو حساس حرارة ورطوبة يحتوي على شريحة تقوم بتحويل القيم التّشابهيّة إلى رقميّة، وتعطي على خَرْجها إشارة رقميّة توافِق درجة الحرارة والرّطوبة. اقرأ المقال التالي عنه من هنا.

في الزاوية العليا اليمنى من نافذة برمجية نود-ريد، حدد خيار تنسيق Layout تحت خيار لوحة التحكم Dashboard ضمن نفس التبويب. أنشئ تبويب باسم الغرفة Room وداخل علامة تبويب الغرفة قم بإنشاء مجموعتين: المصباح والحساس، كما هو موضّح في الشكل أدناه.

تنسيق لوحة القيادة والتحكم – مصدر الصورة: موقع Random Nerd Tutorials

إنشاء سلسلة التعليمات البرمجي:

اسحب العقد التالية الى المخطط التدفقي، انظر الشكل أدناه:

المخطط الصندوقي  لنود-ريد – مصدر الصورة: موقع Random Nerd Tutorials
  • Switch (مفتاح كهربائي on\off) زر التحكم بخرج وحدة ESP8266.
  • mqtt output node (عقدة خرج mqtt)  تنشر الرسائل إلى الـ ESP8266 حسب حالة زر Switch.
  • mqtt input nodes (عقدتي دخل mqtt) تسجل هذه العقد بيانات الحرارة والرطوبة لتلقّي بيانات الحساس من الـ ESP.
  • Chart الرسم البياني، يعرض قراءات حساس درجة الحرارة.
  • Gauge المقياس، يعرض قراءات حساس الرطوبة. 

يجب توصيل نود-ريد وخادم بروتوكول MQTT، ولتنفيذ ذلك اضغط مرتين متتاليتين على عقدة خرج MQTT، لتنبثق نافذة جديدة كما هو موضح في الشكل أدناه.

نافذة عقدة الخرج لبروتوكول MQTT – مصدر الصورة: موقع Random Nerd Tutorials
  1. اضغط على خيار إضافة خادم  MQTT جديد
  2. اكتب “localhost” في خانة مزوّد الشبكة server.

    تحديد خانة مزوّد الشبكة – مصدر الصورة: موقع Random Nerd Tutorials
  3. تضبط بقية الإعدادات ضبطاً تلقائياً.
  4. اضغط إضافة “Add” فتتصل عقدة خرج بروتوكول MQTT بخادم جهازك تلقائياً.

قم بتعديل جميع خصائص العقد الأخرى كما هو موضح في الأشكال التالية:

  • مفتاح التبديل Switch – يرسل مفتاح التبديل  كلمة “on” عندما يكون قيد التشغيل، ويرسل  “off” عندما يكون بحالة إيقاف. تنشر هذه العقدة في الموضوع “room/lamp”، من أجل تلقّي رسائله.

 

نافذة تعديل عقدة مفتاح التبديل – مصدر الصورة: Random Nerd Tutorials
  • عقدة خرج بروتوكول MQTT: تتصل هذه العقدة بالخادم الوسيط موسكيتو و تنشر في الموضوع “room/lamp”.
نافذة تعديل عقدة مفتاح التبديل – مصدر الصورة: Random Nerd Tutorials

 

  • عقدة دخل بروتوكول MQTT: هذه العقدة مشتركة في الموضوع “room/temperature” من أجل تلقّي بيانات حساس الحرارة من الـ ESP8266 حيث تنشر الـ ESP8266 قراءات درجة الحرارة في هذا الموضوع.
نافذة عقدة دخل بروتوكول MQTT الخاصة بحساس درجة الحرارة – مصدر الصورة: موقع Random Nerd Tutorials
  • الشكل البياني Chart: يعرض الشكل البياني القراءات المستقبلة حول موضوع “room/temperature” 
نافذة عقدة الشكل البياني – مصدر الصورة: موقع Random Nerd Tutorials

 

  • عقدة دخل بروتوكول MQTT: هذه العقدة مشتركة في موضوع “room/Humidity” من أجل تلقّي بيانات حساس الرطوبة من الـ ESP8266 حيث  تنشر قراءات الرطوبة في هذا الموضوع.
نافذة عقدة دخل بروتوكول MQTT الخاصة بحساس الرطوبة – مصدر الصورة: موقع Random Nerd Tutorials

 

  • المقياس gauge:  يعرض المقياس القراءات المستقبلة حول موضوع “room/Humidity” .
نافذة إعدادات المقياس – مصدر الصورة: موقع Random Nerd Tutorials

 

صِل العقد كما هو موضح في الشكل أدناه.

توصيل العقد – مصدر الصورة: موقع Random Nerd Tutorials

 

هكذا يكون نود-ريد جاهز فانقر فوق زر تطبيق “Deploy” في الزاوية العليا اليمنى.

زر النشر – مصدر الصورة: موقع Random Nerd Tutorials0

 

تطبيق نود-ريد جاهز، لمعرفة كيف تبدو لوحة المعلومات (لوحة القيادة) اضغط هنا.

الآن، اتبع واقرأ القسم التالي لتهيئة وإعداد وحدة ESP8266.

تهيئة بيئة عمل الأردوينو (IDE: Integrated Development Environment)

سنبرمج وحدة ESP8266 باستخدام بيئة العمل الخاصة بالأردوينو IDE. من أجل تحميل الكود إلى الـ ESP8266 ستحتاج إلى تثبيت ميزة الإضافية الخاصة بالـ ESP8266 للحصول عليها اضغط هنا.

وتحتاج أيضاً لتثبيت مكتبتين إضافيتين هما PubSubClient Library والـ DHT Sensor Library 

تثبيت مكتبة PubSubClient:

توفّر هذه المكتبة للعميل القيام بمراسلات نشر/ اشتراك بسيطة مع خادم يدعم بروتوكول MQTT (تسمح للـ ESP8266 بالاتصال مع نود-ريد )

اضغط هنا لتنزيل مكتبة PubSubClient، سيظهر لك مجلد بصيغة ZIP ضمن ملفات التنزيلات:

  1. قم بفكّ ضغط مجلد ZIP وستحصل على ملف pubsubclient-master
  2. أعد تسمية مجلدك من pubsubclient-master إلى pubsubclient
  3. انقل مجلد pubsubclient إلى المجلد الخاص بتثبيت مكتبات الأردوينو 
  4. أعد فتح بيئة الأردوينو IDE

يتم تنزيل المكتبة مع عدد من الأمثلة على الأكواد، انقر على ملف ثم أمثلة ثم ضمن الـ IDE الخاص بالأردوينو

تثبيت مكتبة حساس الحرارة والرطوبة  DHT Sensor Library:

تسهل هذه المكتبة للعميل استخدام أي حساس حرارة /رطوبة لقراءة درجة الحرارة ومستوى الرطوبة باستخدام الـ ESP8266 أو الأردوينو.

  1. اضغط هنا لتنزيل مكتبة حساس الحرارة والرطوبة، ليظهر عندك مجلد بصيغة ZIP ضمن ملفات التنزيلات.
  2. قم بفكّ ضغط مجلد ZIP وستحصل على ملف DHT-sensor-library-master
  3. أعد تسمية مجلدك من DHT-sensor-library-master إلى DHT
  4. انقل مجلد DHT إلى المجلد الخاص  بتثبيت مكتبات الأردوينو 
  5. أعد فتح الـ IDE 

 

لمزيد من المعلومات عن حساس الحرارة والرطوبة DHT11 ودارة ESP8266 ،اضغط هنا.

اختيار اللوحة المناسبة في بيئة العمل الخاصة بالأردوينو Arduino IDE:

تحتاج أيضاً لتحديد اللوحة المناسبة في IDE الخاص بالأردوينو:

  1. انتقل إلى قائمة أدوات واختر “ “NodeMCU 1.0 (ESP-12E Module)
  2. حدّد رقم المنفذ لوحدة الـ ESP ضمن قائمة أداوت ثم منفذ ثم اختر COM4 (يختلف في كل حالة)

تحميل الكود:

يمكنك الآن تحميل الكود التالي إلى الـ ESP8266. ينشر هذا الكود رسائل حول درجة الحرارة والرطوبة من حساس الحرارة والرطوبة DHT11 في مواضيع room/temperature وroom/humidity من خلال بروتوكول MQTT.

تشترك الـ ESP في موضوع room/lamp لتلقّي الرسائل المنشورة حول هذا الموضوع بوساطة نود-ريد ، وبناء عليه يتم تشغيل المصباح أو إطفائه.

أضفنا تعليقاً في المكان الذي تحتاج إلى إجراء تغييرات فيه ضمن الكود. عليك تعديل الكود لتغيير اسم شبكة واي فاي Wi-Fi (SSID) وكلمة المرور وعنوان الـ IP  للوحة الراسبيري باي.

 

لتحميل الكود البرمجي، اضغط هنا.

افتح شاشة العرض التسلسلية لبيئة الأردوينو بمعدل 115200 باود لمتابعة ماذا يحدث خلال الوقت الفعلي وذلك بعد تحميل الكود وتشغيل الراسبيري باي  لـ نود-ريد والخادم الوسيط موسكيتو.

هذه الطريقة مفيدة من أجل التحقق فيما إذا كانت وحدة الـ ESP قد أنشأت اتصالاً بالموجه وبخادم  موسكيتو.

يمكنك أيضا رؤية الرسائل التي يتلقّاها ESP وينشرها.

الشاشة التسلسلية IDE الاردوينو – مصدر الصورة: موقع Random Nerd Tutorials

تصميم الدارة:

توضّح الأقسام التالية الأجزاء والمخططات التي تحتاجها من أجل تنفيذ دارة هذا المشروع.

العناصر المطلوبة:

  • راسبيري باي
  • وحدة ESP8266
  • حساس الحرارة والرطوبة DHT11
  • لوحة التوصيلات
  • مقاومة 330 Ω
  • مؤشر ضوئي LED
  • مقاومة Ω4700 

 

المخططات:

فيما يأتي المخططات الخاصة بدارة هذا المشروع

توصيل الدارة – مصدر الصورة: موقع Random Nerd Tutorials

توضيح:

انتقل إلى الرابط: http://your-pi-ip-address/ui (حيث your-pi-ip-addres تشير لعنوان IP الراسبيري باي) للتحكم  بوحدة ESP من خلال برمجية  نود-ريد. يمكنك الوصول إلى التطبيق الخاص بك من أي متصفح إذا كان على نفس الشبكة التي تستخدمها الراسبيري باي. 

شاهد الفيديو التوضيحي أدناه 

يجب أن يبدو التطبيق مشابه لمحتوى الصور أدناه.

مخطط درجات الحرارة – مصدر الصورة: موقع Random Nerd Tutorials

 

مخطط مقياس الرطوبة – مصدر الصورة: موقع Random Nerd Tutorials

الملخص:

أوضحنا لك في هذا المشروع  المفاهيم الأساسية التي ستسمح لك بتشغيل الإضاءة ومراقبة الحساسات من وحدة الـ ESP باستخدام برمجية نود-ريد وبروتوكول الاتصال MQTT. يمكنك اتباع هذه الخطوات الأساسية لبناء مشاريع أكثر تقدّماً.

نأمل أن تكون قد وجدت هذا  المشروع مفيداً.


المصدر: هنا

ترجمة:رؤى عثمان، مراجعة: يارا قاضون، تصميم: علي العلي، تدقيق لغوي: حنين غاليه، تحرير: حسين اسعد

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني.