جدول المحتويات:
- الخطوة 1: مواصفات الأجهزة والبرامج
- الخطوة الثانية: أجهزة استشعار الضغط ودرجة الحرارة اللاسلكية
- الخطوة 3: الاتصال بشبكة WiFi
- الخطوة 4: إعداد UbiDots على ESP32
- الخطوة 5: نشر قراءات أجهزة الاستشعار على UbiDots
- الخطوة 6: تصور البيانات
- الخطوة 7: الكود العام
فيديو: نشر بيانات مستشعر الضغط اللاسلكي باستخدام MQTT: 7 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
ESP32 و ESP 8266 هما SoC مألوفان جدًا في مجال إنترنت الأشياء. هذا نوع من النعمة لمشاريع إنترنت الأشياء. ESP 32 هو جهاز مزود بشبكة WiFi و BLE مدمجين. فقط أعط SSID وكلمة المرور وتكوينات IP ودمج الأشياء في السحابة. هنا في هذا الدليل ، سوف نفكر في بعض المصطلحات الأساسية لإنترنت الأشياء مثل منصة إنترنت الأشياء ، و MQTT ، والبوابات الأسيرة وما إلى ذلك.
- تتكون بنية إنترنت الأشياء بكلمات بسيطة للغاية من جهاز مضمن ومنصة إنترنت الأشياء لوضع الجهاز في السحابة. نحن هنا نستخدم منصة UbiDots IoT لتصور بيانات المستشعر.
- يمكن أن تكون إدارة إعدادات IP وبيانات اعتماد المستخدم مصدر إزعاج للمستخدم. ماذا لو أراد المستخدم تغيير بيانات اعتماد WiFi؟ ماذا لو أراد المستخدم تبديل إعدادات DHCP / IP الثابتة؟ وميض ESP32 في كل مرة لا يمكن الاعتماد عليه ولا حتى الحل لهذه المشاكل. لذلك سنمر عبر البوابة المقيدة لحفظ بيانات اعتماد WiFi والتكوينات الأخرى.
- أصبح مصطلح MQTT الآن مصطلحًا شائعًا جدًا في عالم إنترنت الأشياء. لقد تجاوز الطلبات والاستجابات (HTTP) من خلال النشر والاشتراك بسبب البنية السريعة والقوية والمرنة.
هنا في هذا الدليل ، سوف نوضح.
- إعطاء بيانات اعتماد WiFi و MQTT باستخدام Captive Portal.
- نشر واشتراك بيانات أجهزة الاستشعار المتعددة في UbiDots.
- قراءة بيانات المستشعر من مستشعر الضغط ودرجة الحرارة اللاسلكي
- استضافة نموذج ويب من ESP32.
- القراءة والكتابة من SPIFFS ESP32.
الخطوة 1: مواصفات الأجهزة والبرامج
مواصفات الأجهزة
- ESP32 WiFi / BLE
- جهاز استشعار الضغط ودرجة الحرارة اللاسلكي
مواصفات البرنامج
- اردوينو IDE
- XCTU
- أداة Labview
الخطوة الثانية: أجهزة استشعار الضغط ودرجة الحرارة اللاسلكية
سمات
- مستشعر درجة حرارة لاسلكي طويل المدى مستشعر درجة صناعية
- نطاق التشغيل من 0 إلى 14000 ملي بار -40 درجة إلى + 85 درجة مئوية (-40 درجة إلى 185 درجة فهرنهايت)
- قرار ضغط الحساب الداخلي القابل للتكوين من 0.012 إلى 0.065 ملي بار
- درجة حرارة الحساب الداخلي القابلة للتكوين قرار من 0.002 إلى 0.012 درجة مئوية
- الدقة ± 2.5 ملي بار ، ± 2 درجة مئوية
- الضغط المطلق والضغط النسبي والارتفاع النسبي متغير النواتج
- 2 ميل خط الرؤية مع هوائي على متن الطائرة
- نطاق LOS فائق يصل إلى 28 ميلًا مع هوائيات عالية الكسب
- واجهة لـ Raspberry Pi و Microsoft® Azure® و Arduino والمزيد
- الشبكات المعشقة اللاسلكية باستخدام DigiMesh®
تكوين مستشعر الضغط ودرجة الحرارة اللاسلكي باستخدام Labview Utility و XCTU
يعمل المستشعر في وضعين
- وضع التكوين: قم بتكوين معرف عموم ، والتأخير ، وعدد مرات إعادة المحاولة وما إلى ذلك. المزيد عن هذا خارج نطاق هذا التوجيه وسيتم شرحه في التعليمات التالية.
- وضع التشغيل: نقوم بتشغيل الجهاز في وضع التشغيل. ولتحليل هذه القيمة ، نستخدم Labview Utility
تعرض واجهة مستخدم Labview هذه القيم في الرسوم البيانية الجميلة. يعرض القيم الحالية والسابقة. يمكنك الانتقال إلى هذا الرابط لتنزيل Labview UI. انقر فوق أيقونة التشغيل من قائمة الصفحة المقصودة للانتقال إلى وضع التشغيل.
الخطوة 3: الاتصال بشبكة WiFi
نحن نستخدم البوابة المقيدة لحفظ بيانات اعتماد WiFi وللتحريك عبر إعدادات IP. للحصول على مقدمة مفصلة عن البوابة المقيدة ، يمكنك الاطلاع على التعليمات التالية.
تعطينا البوابة المقيدة خيار الاختيار بين إعدادات Static و DHCP. ما عليك سوى إدخال بيانات الاعتماد مثل Static IP وقناع الشبكة الفرعية والبوابة وسيتم تكوين بوابة المستشعر اللاسلكي على عنوان IP هذا.
تتم استضافة صفحة ويب حيث توجد قائمة تعرض شبكات WiFi المتاحة وهناك RSSI. حدد شبكة WiFi وكلمة المرور وأدخل إرسال. سيتم حفظ بيانات الاعتماد في EEPROM وسيتم حفظ إعداد IP في SPIFFS. يمكن العثور على المزيد حول هذا في هذا الدليل.
الخطوة 4: إعداد UbiDots على ESP32
هنا نستخدم مستشعرات الضغط ودرجة الحرارة اللاسلكية مع جهاز ESP 32 للحصول على بيانات درجة الحرارة والرطوبة. نحن نرسل البيانات إلى UbiDots باستخدام بروتوكول MQTT. تتبع MQTT آلية النشر والاشتراك بدلاً من ذلك الطلب والاستجابة. إنه أسرع وموثوق من HTTP. هذا يعمل على النحو التالي.
- نحن نستخدم برنامج جدولة المهام لجدولة مهمة مثل جلب البيانات من أجهزة الاستشعار ، ونشر قراءات أجهزة الاستشعار ، والاشتراك في موضوع MQTT.
- أولاً ، قم بتضمين ملفات رأس برنامج جدولة المهام ، وهي المثيل وجدولة المهام.
- لقد حددنا موعدًا لمهمتين تشيران إلى عمليتي تحكم مختلفتين.
#define _TASK_TIMEOUT # تتضمن جدولة ts ؛ // --------- المهام ------------ // Task tSensor (4 * TASK_SECOND، TASK_FOREVER، & taskSensorCallback، & ts، false، NULL، & taskSensorDisable)؛ مهمة tWiFi (10 * TASK_SECOND ، TASK_FOREVER ، & TaskWiFiCallback ، & ts ، false ، NULL ، & TaskWiFiDisable) ؛
- المهمة 1 لقراءة قيمة المستشعر تعمل هذه المهمة لمدة ثانية واحدة حتى تصل إلى مهلة 10 ثوانٍ.
- عندما تنتهي مهمة Task1 ، فإننا نتصل بشبكة Wifi و MQTT المحلية.
- الآن تم تمكين المهمة 2 ونقوم بتعطيل المهمة 1
- المهمة 2 لنشر بيانات المستشعر إلى وسيط UbiDots MQTT ، تعمل هذه المهمة لمدة 20 ثانية حتى تصل إلى مهلة 20 ثانية
- عندما تصل Task2 إلى مهلتها ، يتم تمكين المهمة 1 مرة أخرى ويتم تعطيل Task2. هنا مرة أخرى ، نحصل على القيمة المحدثة وتستمر العملية.
قراءة بيانات مستشعر I2C
نحصل على إطار 29 بايت من مستشعرات درجة الحرارة والرطوبة اللاسلكية. يتم التلاعب بهذا الإطار للحصول على بيانات درجة الحرارة والرطوبة الفعلية
إذا (Serial1.available ())
{data [0] = Serial1.read () ، تأخير (ك) ؛ إذا (البيانات [0] == 0x7E) {while (! Serial1.available ()) ؛ لـ (i = 1؛ i <36؛ i ++) {data = Serial1.read () ؛ تأخير (1) ؛ } إذا كانت (البيانات [15] == 0x7F) /////// للتحقق مما إذا كانت البيانات المتتالية صحيحة {if (data [22] == 0x06) //////// تأكد من نوع المستشعر هو الصحيح {int cTemp = ((((data [24]) * 256) + data [25])) ؛ int16_t abs_pressure = ((((uint16_t) (البيانات [26]) << 8) | البيانات [27]) * 0.001) ؛ int rlt_pressure = ((((data [28]) * 256) + data [29]) * 0.001) ؛ int16_t delta_alt = ((((uint16_t) (البيانات [30]) << 8) | البيانات [31]) * 0.01) ؛ بطارية تعويم = ((بيانات [18] * 256) + بيانات [19]) ؛ الجهد العائم = 0.00322 * البطارية ؛ Serial.print ("رقم المستشعر") ؛ Serial.println (بيانات [16]) ؛ Serial.print ("نوع المستشعر") ؛ Serial.println (بيانات [22]) ؛ Serial.print ("إصدار البرنامج الثابت") ؛ Serial.println (بيانات [17]) ؛ Serial.print ("درجة الحرارة بالدرجة المئوية:") ؛ Serial.print (cTemp) ؛ Serial.println ("C") ؛ Serial.print ("الضغط المطلق:") ؛ Serial.println (abs_pressure) ؛ Serial.print ("mbar") ؛ Serial.print ("الضغط النسبي:") ؛ Serial.println (rlt_pressure) ؛ Serial.print ("mbar") ؛ Serial.print ("ارتفاع دلتا:") ؛ Serial.println (delta_alt) ؛ Serial.print ("متر") ؛ Serial.print ("قيمة ADC:") ؛ Serial.println (بطارية) ؛ Serial.print ("جهد البطارية:") ؛ Serial.print (الجهد) ؛ Serial.println ("\ n") ؛ إذا (الجهد <1) {Serial.println ("الوقت لاستبدال البطارية") ؛ }}} else {for (i = 0؛ i <36؛ i ++) {Serial.print (data )؛ Serial.print ("،") ؛ تأخير (1) ؛ }}}}
الاتصال بواجهة برمجة تطبيقات UbiDots MQTT
قم بتضمين ملف الرأس لعملية MQTT
#يشمل
تحديد متغيرات أخرى لـ MQTT مثل اسم العميل وعنوان الوسيط ومعرف الرمز المميز
#define TOKEN "BBFF - ****************************************" // رمز Ubidots الخاص بك # حدد MQTT_CLIENT_NAME "******************************"
char mqttBroker = "things.ubidots.com"؛
حمولة شار [100] ؛ موضوع شار [150] ؛ // إنشاء متغير لتخزين الرمز المميز ID toke
الخطوة 5: نشر قراءات أجهزة الاستشعار على UbiDots
قم بإنشاء متغيرات لتخزين بيانات المستشعر المختلفة وإنشاء متغير char لتخزين الموضوع
#define VARIABLE_LABEL_TEMPF "tempF" // تعيين تسمية المتغير # عرّف VARIABLE_LABEL_TEMPC "tempC" // تعيين تسمية المتغير #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "humid" // Assing the variable label
شار topic1 [100] ؛
char topic2 [100] ؛ char topic3 [100] ؛
نشر البيانات إلى موضوع MQTT المذكور ستبدو الحمولة بالشكل {"tempc": {value: "tempData"}}
sprintf (topic1، "٪ s"، "") ؛ sprintf (topic1، "٪ s٪ s"، "/v1.6/devices/"، DEVICE_LABEL) ؛ sprintf (الحمولة ، "٪ s" ، "") ؛ // ينظف الحمولة sprintf (الحمولة ، "{"٪ s / ":" ، VARIABLE_LABEL_TEMPC) ؛ // يضيف قيمة sprintf (الحمولة ، "٪ s {" value / ":٪ s}" ، الحمولة ، str_cTemp) ؛ // يضيف قيمة sprintf (الحمولة ، "٪ s}" ، الحمولة) ؛ // يغلق أقواس القاموس Serial.println (الحمولة) ؛ Serial.println (client.publish (topic1، payload)؟ "منشور": "notpublished") ؛ // افعل الشيء نفسه بالنسبة لموضوع آخر أيضًا
client.publish () ينشر البيانات إلى UbiDots
الخطوة 6: تصور البيانات
- انتقل إلى Ubidots وقم بتسجيل الدخول إلى حسابك.
- انتقل إلى لوحة المعلومات من علامة التبويب البيانات المدرجة في الأعلى.
- الآن انقر فوق رمز "+" لإضافة الأدوات الجديدة.
- حدد عنصر واجهة مستخدم من القائمة وأضف متغيرًا وأجهزة.
- يمكن تصور بيانات المستشعر على لوحة القيادة باستخدام أدوات مختلفة.
الخطوة 7: الكود العام
يمكن العثور على كود Over لـ HTML و ESP32 في مستودع GitHub هذا.
الاعتمادات
- مجلس الاختراق NCD ESP32.
- أجهزة استشعار الضغط ودرجة الحرارة اللاسلكية ncd
- pubsubclient
- UbiDots
- جدول المهام
موصى به:
بيانات مستشعر الاهتزاز ودرجة الحرارة اللاسلكي إلى MySQL باستخدام Node-RED: 40 خطوة
الاهتزاز اللاسلكي وبيانات مستشعر درجة الحرارة إلى MySQL باستخدام Node-RED: تقديم مستشعر الاهتزاز ودرجة الحرارة اللاسلكي طويل المدى لإنترنت الأشياء من NCD ، والذي يضم نطاقًا يصل إلى ميلين باستخدام بنية الشبكات الشبكية اللاسلكية. يشتمل هذا الجهاز على مستشعر دقيق للاهتزاز ودرجة الحرارة 16 بت ، وهو
إرسال بيانات الاهتزاز اللاسلكي ودرجة الحرارة إلى جداول بيانات Google باستخدام Node-RED: 37 خطوة
إرسال بيانات الاهتزاز اللاسلكي ودرجة الحرارة إلى جداول بيانات Google باستخدام Node-RED: تقديم مستشعر الاهتزاز ودرجة الحرارة اللاسلكي طويل المدى لإنترنت الأشياء من NCD ، والذي يضم نطاقًا يصل إلى ميلين باستخدام بنية شبكة لاسلكية. يشتمل هذا الجهاز على مستشعر دقيق للاهتزاز ودرجة الحرارة 16 بت ، وهو
كيفية نشر بيانات ESP32 مع الطابع الزمني NTP إلى IoT Cloud: 5 خطوات
كيفية نشر بيانات ESP32 باستخدام NTP Timestamp إلى IoT Cloud: في العديد من التطبيقات ، يحتاج المستخدمون إلى إرسال بياناتهم جنبًا إلى جنب مع الطابع الزمني المحلي للقيم التي سيتم إرسالها في الحمولة إلى سحابة AskSensors IoT. تنسيق الطابع الزمني هو UNIX Epoch time: عدد المللي ثانية التي انقضت منذ يناير
متحكم AVR. تبديل LED باستخدام مفتاح زر الضغط. الضغط على زر التصحيح: 4 خطوات
متحكم AVR. تبديل LED باستخدام مفتاح زر الضغط. الضغط على زر Debouncing: في هذا القسم ، سوف نتعلم كيفية عمل كود البرنامج C لـ ATMega328PU لتبديل حالة مصابيح LED الثلاثة وفقًا للإدخال من مفتاح التبديل. أيضًا ، اكتشفنا حلولًا لمشكلة "التبديل الارتداد". كالعادة ، نحن
بدء استخدام AWS IoT مع مستشعر درجة الحرارة اللاسلكي باستخدام MQTT: 8 خطوات
الشروع في العمل مع AWS IoT مع مستشعر درجة الحرارة اللاسلكي باستخدام MQTT: في Instructables السابقة ، مررنا عبر منصات سحابية مختلفة مثل Azure و Ubidots و ThingSpeak و Losant وما إلى ذلك. لقد استخدمنا بروتوكول MQTT لإرسال بيانات المستشعر إلى السحابة تقريبًا كل منصة السحابة. لمزيد من المعلومات