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

نشر بيانات مستشعر الضغط اللاسلكي باستخدام MQTT: 7 خطوات
نشر بيانات مستشعر الضغط اللاسلكي باستخدام MQTT: 7 خطوات

فيديو: نشر بيانات مستشعر الضغط اللاسلكي باستخدام MQTT: 7 خطوات

فيديو: نشر بيانات مستشعر الضغط اللاسلكي باستخدام MQTT: 7 خطوات
فيديو: SONOFF SNZB-01P - أزرار زيجبي 3.0 النموذجية الجديدة والمراجعة والاختبار 2024, يوليو
Anonim
نشر بيانات مستشعر الضغط اللاسلكي باستخدام MQTT
نشر بيانات مستشعر الضغط اللاسلكي باستخدام MQTT

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
الاتصال بشبكة WiFi
الاتصال بشبكة WiFi
الاتصال بشبكة WiFi

نحن نستخدم البوابة المقيدة لحفظ بيانات اعتماد WiFi وللتحريك عبر إعدادات IP. للحصول على مقدمة مفصلة عن البوابة المقيدة ، يمكنك الاطلاع على التعليمات التالية.

تعطينا البوابة المقيدة خيار الاختيار بين إعدادات Static و DHCP. ما عليك سوى إدخال بيانات الاعتماد مثل Static IP وقناع الشبكة الفرعية والبوابة وسيتم تكوين بوابة المستشعر اللاسلكي على عنوان IP هذا.

تتم استضافة صفحة ويب حيث توجد قائمة تعرض شبكات WiFi المتاحة وهناك RSSI. حدد شبكة WiFi وكلمة المرور وأدخل إرسال. سيتم حفظ بيانات الاعتماد في EEPROM وسيتم حفظ إعداد IP في SPIFFS. يمكن العثور على المزيد حول هذا في هذا الدليل.

الخطوة 4: إعداد UbiDots على ESP32

إعداد UbiDots على ESP32
إعداد 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

نشر قراءات أجهزة الاستشعار على UbiDots
نشر قراءات أجهزة الاستشعار على 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
  • جدول المهام

موصى به: