جدول المحتويات:

Raspberry Pi التحدث إلى ESP8266 باستخدام MQTT: 8 خطوات
Raspberry Pi التحدث إلى ESP8266 باستخدام MQTT: 8 خطوات

فيديو: Raspberry Pi التحدث إلى ESP8266 باستخدام MQTT: 8 خطوات

فيديو: Raspberry Pi التحدث إلى ESP8266 باستخدام MQTT: 8 خطوات
فيديو: ESP32 Lesson 9: create interface for ultrasonic sensor in web 2024, شهر نوفمبر
Anonim
Raspberry Pi التحدث إلى ESP8266 باستخدام MQTT
Raspberry Pi التحدث إلى ESP8266 باستخدام MQTT

في هذا المشروع ، سأشرح ماهية بروتوكول MQTT وكيف يتم استخدامه للتواصل بين الأجهزة ، وبعد ذلك ، كدليل عملي ، سأشرح كيفية إعداد نظام عميل ونظام بروكر ، حيث وحدة ESP8266 بالإضافة إلى RPi talk لبعضهم البعض أو إرسال رسالة عند الضغط على زر.

المواد المطلوبة

1. Raspberry Pi 3

2. NodeMCU

3. الصمام

4. زر

5. المقاومات (10 كيلو ، 475 أوم)

الخطوة 1: ما هو MQTT وكيف يعمل

MQTT

MQTT هو بروتوكول لنقل البيانات من آلة إلى آلة (M2M). تم إنشاء MQTT بهدف جمع البيانات من العديد من الأجهزة ثم نقل تلك البيانات إلى البنية التحتية لتكنولوجيا المعلومات. إنه خفيف الوزن ، وبالتالي فهو مثالي للمراقبة عن بعد ، خاصة في اتصالات M2M التي تتطلب أثر رمز صغير أو حيث يكون عرض النطاق الترددي للشبكة محدودًا.

كيف يعمل MQTT

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

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

المشروع مقسم إلى 3 أجزاء

أولاً ، نقوم بإنشاء خادم MQTT على RPi ونقوم بتثبيت بعض المكتبات.

ثانيًا ، سنقوم بتثبيت مكتبات في Arduino IDE لـ NodeMCU للعمل مع MQTT ، وتحميل الكود والتحقق مما إذا كان الخادم يعمل أم لا.

أخيرًا ، قمنا بإنشاء برنامج نصي في Rpi ، وقمنا بتحميل الكود المطلوب في NodeMCU وقمنا بتشغيل البرنامج النصي Python للتحكم في المصابيح من جانب الخادم والعميل. هنا ، الخادم هو RPi والعميل هو NodeMCU.

الخطوة 2: Raspberry Pi

فطيرة التوت
فطيرة التوت
فطيرة التوت
فطيرة التوت
فطيرة التوت
فطيرة التوت
فطيرة التوت
فطيرة التوت

1. لتثبيت أحدث خادم وعميل MQTT في RPi ، لاستخدام المستودع الجديد ، يجب أولاً استيراد مفتاح توقيع حزمة المستودع.

wget https://repo.mosquitto.org/debian/mosquitto-repo.gpg.keysudo apt-key add mosquitto-repo.gpg.key

2. اجعل المستودع متاحًا للاستخدام المناسب.

cd /etc/apt/sources.list.d/

3. اعتمادًا على إصدار دبيان الذي تستخدمه.

sudo wget https://repo.mosquitto.org/debian/mosquitto-wheezy.listsudo wget

sudo wget

sudo apt-get update

4. قم بتثبيت خادم Mosquitto باستخدام الأمر.

sudo apt-get install mosquitto. تثبيت البعوض sudo apt-get install

إذا كنت تواجه أخطاء في تثبيت Mosquitto مثل هذا.

#################################################################

تحتوي الحزم التالية على تبعيات غير مستوفاة: mosquitto: Depends: libssl1.0.0 (> = 1.0.1) ولكنها غير قابلة للتثبيت تعتمد: libwebsockets3 (> = 1.2) ولكنها غير قابلة للتثبيت E: غير قادر على تصحيح المشكلات ، لقد تم تعطيله الحزم.

#################################################################

ثم استخدم هذا الأمر لإصلاح المشكلات.

sudo apt - تثبيت معطل للإصلاح

5. بعد تثبيت خادم MQTT ، قم بتثبيت العميل باستخدام الأمر

sudo apt-get install mosquitto-clients. تثبيت عملاء البعوض sudo apt-get install

يمكنك التحقق من الخدمات باستخدام الأمر.

systemctl status mosquitto.service

كما تم تثبيت الخادم والعميل MQTT لدينا. الآن ، يمكننا التحقق من ذلك باستخدام الاشتراك والنشر. للاشتراك والنشر ، يمكنك التحقق من الأوامر أو زيارة موقع الويب كما هو موضح أدناه.

Mosquitto Sub

حانة Mosquitto

لتثبيت مكتبة paho-mqtt ، استخدم الأمر أدناه.

تثبيت sudo pip paho-mqtt

باهو

الخطوة 3: كيفية إعداد عنوان IP الثابت

كيفية إعداد عنوان IP الثابت
كيفية إعداد عنوان IP الثابت

انتقل إلى الدليل cd / etc وافتح الملف dhcpcd.conf باستخدام أي محرر. في النهاية ، اكتب هذه الأسطر الأربعة.

الواجهة eth0 static ip_address = 192.168.1.100 // ip الذي تريد استخدامه

واجهة wlan0

عنوان ip_address ثابت = 192.168.1.68

الموجهات الثابتة = 192.168.1.1 // البوابة الافتراضية الخاصة بك

ثابت domain_name_servers = 192.168.1.1

بعد ذلك احفظه وأعد تشغيل جهاز pi.

الخطوة 4: NodeMCU

NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU

قم بتثبيت المكتبات المطلوبة في Arduino IDE لـ NodeMCU

1. انتقل إلى Sketch ==> Include library ==> إدارة المكتبات.

2. ابحث عن mqtt وقم بتثبيت المكتبة بواسطة Adafruit أو يمكنك تثبيت أي مكتبة.

3. إنها تعتمد على مكتبة sleepydog لذلك نحن بحاجة إلى هذه المكتبة أيضًا.

البرنامج مذكور أعلاه ، فقط للتحقق مما إذا كان يعمل أم لا. هنا لم أقوم بإنشاء أي برنامج نصي في RPi. نحن فقط نستخدم الأوامر للاشتراك والنشر. سنقوم بإنشاء برنامج نصي للتحكم في وقت لاحق.

mosquitto_pub -h raspberrypi -t "/ المصابيح / pi" -m "ON"

mosquitto_pub -h raspberrypi -t "/ المصابيح / pi" -m "OFF"

mosquitto_pub -h raspberrypi -t "/ المصابيح / pi" -m "TOGGLE"

mosquitto_pub -h raspberrypi -t "/ المصابيح / esp8266" -m "ON"

mosquitto_pub -h raspberrypi -t "/ المصابيح / esp8266" -m "OFF"

mosquitto_pub -h raspberrypi -t "/ المصابيح / esp8266" -m "TOGGLE"

-h ==> اسم المضيف- t ==> الموضوع

-m ==> الرسالة

بعد التحقق من برنامج Mqtt_check قم بتحميل البرنامج الكامل في NodeMCU

الخطوة 5: نص بايثون

نص بايثون
نص بايثون
نص بايثون
نص بايثون

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

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

الخطوة 6: التوصيلات ومخطط الدائرة

التوصيلات ومخطط الدائرة
التوصيلات ومخطط الدائرة
التوصيلات ومخطط الدائرة
التوصيلات ومخطط الدائرة

واجهة زر ، LED مع NodeMCU

NodeMCU ===> ButtonGnd ===> Gnd

3.3 فولت ===> PIN1

GPIO4 (D2) ===> PIN2

NodeMCU ===> LED

Gnd ===> كاثود (-ve)

GPIO5 (D1) ===> الأنود (+ خمسة)

واجهة زر ، LED مع RPi

RPi ===> ButtonGnd ===> PIN1

GPIO 23 ===> PIN2

RPi ===> LED

Gnd ==> كاثود (-ve)

GPIO 24 ===> الأنود (+ خمسة)

الخطوة 7: النتيجة

Image
Image
نتيجة
نتيجة

تأكد من تشغيل البرنامج النصي وإلا فلن يتمكن من التحكم في الإضاءة باستخدام الأزرار.

موصى به: