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

NodeMCU MQTT Iot Project - زر التبديل: 4 خطوات
NodeMCU MQTT Iot Project - زر التبديل: 4 خطوات

فيديو: NodeMCU MQTT Iot Project - زر التبديل: 4 خطوات

فيديو: NodeMCU MQTT Iot Project - زر التبديل: 4 خطوات
فيديو: MQTT on ESP32 | Controlling Appliances and Monitoring Sensor on Ubidots | ESP32 Projects 2024, شهر نوفمبر
Anonim
Image
Image

OSOYOO NodeMCU IOT Starter kit

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

يوتيوب:

في هذا الدرس ، سنقوم بتوصيل زر التبديل بـ NodeMCU ، وإرسال حالة التبديل إلى وسيط MQTT. عند الضغط على الزر ، ستقوم NodeMCU بنشر حالة الزر "مضغوط" إلى وسيط MQTT وسيقوم عميل MQTT بالاشتراك في هذه الرسائل. عندما يتم تحرير زر الضغط ، سيتم إرسال "غير مضغوط".

الخطوة الأولى: التحضير

الرسم البياني للاتصال
الرسم البياني للاتصال

المعدات:

لوحة NodeMCU × 1

زر التبديل × 1

1 كيلو المقاوم × 1

اللوح × 1

أسلاك العبور

برمجة:

Arduino IDE (الإصدار 1.6.4+)

حزمة اللوحة ESP8266 وبرنامج تشغيل المنفذ التسلسلي

عميل MQTT (MQTTBox هنا)

مكتبة اردوينو: PubSubClient

الخطوة 2: الرسم البياني للاتصال

في هذا الدرس ، نستخدم D2 (GPIO4) للتحكم في المفتاح ، يرجى إعداد الجهاز وفقًا للرسم البياني للاتصال.

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

الخطوة 3: الكود

الشفرة
الشفرة
الشفرة
الشفرة

انسخ الكود أدناه إلى Arduino IDE:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / * | | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _ / (_ / / _ / / _ | / _ / / _ (_) _) _ / | _ | _ | _ | * (_ / * استخدم ترسل NodeMCU حالة زر التبديل إلى عميل MQTT عبر WiFi * عنوان URL الخاص بالبرنامج التعليمي: * CopyRight www.osoyoo.com * / #include #include

كثافة العمليات BUTTON_PIN = D2 ؛ // متصل بـ GPIO pin D1

// قم بتحديثها بقيم مناسبة لشبكتك. const char * ssid = "********" ؛ // ضع wifi ssid الخاص بك هنا const char * password = "********" ؛ // ضع كلمة مرور wifi الخاصة بك هنا. const char * mqtt_server = "broker.mqttdashboard.com" ؛ // const char * mqtt_server = "iot.eclipse.org" ؛

WiFiClient espClient ؛

عميل PubSubClient (espClient) ؛ طويل الأمد Msg = 0 ؛ char msg [50]؛

setup_wifi باطل () {

تأخير (100) ؛ // نبدأ بالاتصال بشبكة WiFi Serial.print ("الاتصال بـ") ؛ Serial.println (ssid) ؛ WiFi.begin (SSID ، كلمة المرور) ؛ while (WiFi.status ()! = WL_CONNECTED) {delay (500) ؛ Serial.print (".") ؛ } randomSeed (micros ()) ؛ Serial.println ("") ؛ Serial.println ("متصل بشبكة WiFi") ؛ Serial.println ("عنوان IP:") ؛ Serial.println (WiFi.localIP ()) ؛ }

رد اتصال باطل (حرف * موضوع ، بايت * حمولة ، طول int غير موقع)

{} // إنهاء رد الاتصال

إعادة الاتصال باطل () {

// Loop حتى نعيد الاتصال أثناء (! client.connected ()) {Serial.print ("Attempting MQTT connection…") ؛ // إنشاء معرف عميل عشوائي String clientId = "ESP8266Client-" ؛ معرف العميل + = سلسلة (عشوائية (0xffff) ، HEX) ؛ // محاولة الاتصال // إذا كان وسيط MQTT لديه معرف العميل واسم المستخدم وكلمة المرور // يرجى تغيير السطر التالي إلى if (client.connect (clientId، userName، passWord)) if (client.connect (clientId.c_str ())) {Serial.println ("متصل") ؛ // بمجرد الاتصال بـ MQTT broker ، أمر الاشتراك إذا كان أي client.subscribe ("OsoyooCommand") ؛ } else {Serial.print ("failure، rc =")؛ Serial.print (client.state ()) ؛ Serial.println ("حاول مرة أخرى خلال 5 ثوانٍ") ؛ // انتظر 5 ثوانٍ قبل إعادة محاولة التأخير (5000) ؛ }}} // إنهاء إعادة الاتصال ()

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

Serial.begin (115200) ؛ setup_wifi () ، client.setServer (mqtt_server ، 1883) ؛ client.setCallback (رد الاتصال) ؛ pinMode (BUTTON_PIN ، INPUT) ، }

حلقة فارغة() {

إذا (! client.connected ()) {إعادة الاتصال () ؛ } client.loop () ؛ طويل الآن = ميلي () ؛ حالة int // أرسل رسالة كل ثانيتين إذا (الآن - lastMsg> 2000) {lastMsg = الآن ؛ الحالة = digitalRead (BUTTON_PIN) ؛ String msg = "حالة الزر:" ؛ إذا (الحالة == عالية) {msg = msg + "مضغوط" ؛ رسالة شار [58] ؛ msg.toCharArray (رسالة ، 58) ؛ Serial.println (رسالة) ؛ // نشر بيانات المستشعر إلى MQTT broker client.publish ("OsoyooData" ، رسالة) ؛ } else {msg = msg + "Not Press"؛ رسالة شار [58] ؛ msg.toCharArray (رسالة ، 58) ؛ Serial.println (رسالة) ؛ // نشر بيانات المستشعر إلى MQTT broker client.publish ("OsoyooData" ، رسالة) ؛ }}}

قم بتحرير الكود ليناسب إعدادات WiFi و MQTT الخاصة بك على النحو التالي: 1) Hotspot Configration: ابحث عن سطر الكود أدناه ، ضع ssid وكلمة المرور الخاصة بك هناك.

const char * ssid = "your_hotspot_ssid" ؛ const char * password = "your_hotspot_password" ؛

2) إعداد عنوان خادم MQTT: يمكنك استخدام عنوان URL الخاص بوسيط MQTT أو عنوان IP الخاص بك لتعيين قيمة mqtt_server أعلاه. يمكنك أيضًا استخدام بعض خوادم MQTT المجانية الشهيرة لاختبار المشروع مثل "broker.mqtt-dashboard.com" و "iot.eclipse.org" وما إلى ذلك.

const char * mqtt_server = “broker.mqtt-dashboard.com” ؛

3) إعدادات عميل MQTT إذا كان وسيط MQTT يتطلب مصادقة معرّف العميل واسم المستخدم وكلمة المرور ، فأنت بحاجة إلى التغيير

إذا (client.connect (clientId.c_str ()))

إلى

if (client.connect (clientId، userName، passWord)) // ضع clientId / userName / passWord هنا

إذا لم يكن الأمر كذلك ، فقط احتفظ بها كإعداد افتراضي ، بعد القيام بذلك ، اختر نوع اللوحة المقابلة ونوع المنفذ على النحو التالي ، ثم قم بتحميل المخطط إلى NodeMCU.

  • اللوحة: "NodeMCU 0.9 (وحدة ESP-12)"
  • تردد وحدة المعالجة المركزية: "80 ميجا هرتز" حجم الفلاش:"
  • 4 ملايين (3 ملايين SPIFFS)"
  • سرعة الرفع: 115200
  • المنفذ: اختر المنفذ التسلسلي الخاص بك لـ NodeMCU

الخطوة 4: إعدادات عميل MQTT

إعدادات عميل MQTT
إعدادات عميل MQTT
إعدادات عميل MQTT
إعدادات عميل MQTT

إذا كنت لا تعرف كيفية تكوين عميل MQTT ، فيرجى زيارة مقالتنا الأخيرة:

إعدادات المواضيع: موضوع للنشر: OsoyooCommand

موضوع الاشتراك: OsoyooData

نتيجة التشغيل

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

موصى به: