جدول المحتويات:
فيديو: NodeMCU MQTT Iot Project - زر التبديل: 4 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:39
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 ، فيرجى زيارة مقالتنا الأخيرة:
إعدادات المواضيع: موضوع للنشر: OsoyooCommand
موضوع الاشتراك: OsoyooData
نتيجة التشغيل
بمجرد الانتهاء من التحميل ، إذا كان اسم نقطة اتصال wifi وإعداد كلمة المرور على ما يرام وكان وسيط MQTT متصلاً ، افتح Serial Monitor ، سترى النتيجة التالية: استمر في الضغط على هذا الزر ، سيخرج Serial Monitor "حالة الزر: الضغط عليه" كل ثانيتين ؛ بمجرد تحرير هذا الزر ، ستخرج الشاشة التسلسلية "حالة الزر: غير مضغوط" كل ثانيتين.
موصى به:
ألعاب تتكيف مع التبديل: لعبة قطار بخاري أصبحت في المتناول: 7 خطوات (مع صور)
ألعاب تتكيف مع التبديل: لعبة قطار بخاري أصبحت سهلة الوصول!: تكيّف اللعبة يفتح طرقًا جديدة وحلولًا مخصصة للسماح للأطفال ذوي القدرات الحركية المحدودة أو الإعاقات التنموية بالتفاعل مع الألعاب بشكل مستقل. في كثير من الحالات ، لا يتمكن الأطفال الذين يحتاجون إلى الألعاب المكيفة من
ألعاب تتكيف مع التبديل: تنين يمشي يتنفس الماء أصبح متاحًا!: 7 خطوات (بالصور)
ألعاب تتكيف مع التبديل: تنين مشي يتنفس الماء يسهل الوصول إليه!: تكيّف اللعبة يفتح طرقًا جديدة وحلولًا مخصصة للسماح للأطفال ذوي القدرات الحركية المحدودة أو الإعاقات التنموية بالتفاعل مع الألعاب بشكل مستقل. في كثير من الحالات ، لا يتمكن الأطفال الذين يحتاجون إلى الألعاب المكيفة من
ألعاب تتكيف مع التبديل: لعبة مسار تسلق السلالم: 7 خطوات
الألعاب المتوافقة مع التبديل: لعبة مسار تسلق السلالم: تفتح لعبة التكيف طرقًا جديدة وحلولًا مخصصة للسماح للأطفال ذوي القدرات الحركية المحدودة أو الإعاقات التنموية بالتفاعل مع الألعاب بشكل مستقل. في كثير من الحالات ، لا يتمكن الأطفال الذين يحتاجون إلى الألعاب المكيفة من
الألعاب المتوافقة مع التبديل: مصباح الحفلة Luditek LED: 7 خطوات
ألعاب تبديل التكيف: مصباح الحفلة Luditek LED: يفتح التكيف مع اللعبة طرقًا جديدة وحلولًا مخصصة للسماح للأطفال ذوي القدرات الحركية المحدودة أو الإعاقات التنموية بالتفاعل مع الألعاب بشكل مستقل. في كثير من الحالات ، لا يتمكن الأطفال الذين يحتاجون إلى الألعاب المكيفة من
عملة في صندوق التبديل: 9 خطوات
عملة في صندوق التبديل: سأوضح لك كيفية إعادة تعيين صندوق ساعة قديم لديك إلى شيء مربي الحيوانات من خلال مفتاح بسيط وسهل للغاية للعملة. ملاحظة: هذا مجرد مفتاح أساسي للغاية يمكنك تعديله أو إضافة المزيد أشياء تجعل شيئًا فريدًا من