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

UbiDots - توصيل ESP32 ونشر بيانات أجهزة الاستشعار المتعددة: 6 خطوات
UbiDots - توصيل ESP32 ونشر بيانات أجهزة الاستشعار المتعددة: 6 خطوات

فيديو: UbiDots - توصيل ESP32 ونشر بيانات أجهزة الاستشعار المتعددة: 6 خطوات

فيديو: UbiDots - توصيل ESP32 ونشر بيانات أجهزة الاستشعار المتعددة: 6 خطوات
فيديو: Storing ESP8266 data into Amazon DynamoDB using AWS IoT Core(MQTT) & Arduino 2024, يوليو
Anonim
UbiDots - توصيل ESP32 ونشر بيانات أجهزة استشعار متعددة
UbiDots - توصيل ESP32 ونشر بيانات أجهزة استشعار متعددة

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

الخطوة 2: إنشاء بوابة مقيدة

إنشاء بوابة مقيدة
إنشاء بوابة مقيدة
إنشاء بوابة مقيدة
إنشاء بوابة مقيدة
إنشاء بوابة مقيدة
إنشاء بوابة مقيدة

البوابة المقيدة هي صفحة ويب يتم عرضها للمستخدمين المتصلين حديثًا قبل منحهم وصولاً أوسع إلى موارد الشبكة. نحن هنا نقدم ثلاث صفحات ويب للاختيار بين إعدادات DHCP و IP الثابتة. يمكننا تحديد عنوان IP لـ ESP بطريقتين.

  • عنوان IP لـ DHCP- هو وسيلة لتعيين عنوان IP ديناميكيًا للجهاز. عنوان IP الافتراضي الخاص بـ ESP هو 192.168.4.1
  • عنوان IP الثابت - تعيين عنوان IP دائم لجهاز الشبكة الخاص بنا. لتوفير عنوان IP الثابت للجهاز ، نحتاج إلى تحديد عنوان IP وعنوان البوابة وقناع الشبكة الفرعية.

يتم استضافة صفحة الويب الأولى على 192.168.1.77. هنا يتم تزويد المستخدم بأزرار الاختيار للاختيار بين إعدادات DHCP و IP الثابتة. في صفحة الويب التالية ، يتعين علينا تقديم المعلومات المتعلقة بـ IP للمضي قدمًا.

كود HTML

يمكن العثور على كود HTML لصفحات الويب في مستودع Github هذا. يمكنك استخدام أي IDE أو محرر نصوص مثل Sublime أو notepad ++ لإنشاء صفحات ويب بتنسيق HTML.

  • قم أولاً بإنشاء صفحة ويب بتنسيق HTML تحتوي على زري اختيار للاختيار بين إعدادات DHCP و IP الثابتة.
  • الآن قم بإنشاء الزر لإرسال إجابتك
  • أعط اسما لأزرار الاختيار.
  • ستأخذ فئة خادم الويب ESP هذه الأسماء كوسائط وستحصل على استجابة أزرار الاختيار باستخدام هذه الوسائط
  • أدخل الآن زر "إرسال" لإرسال الرد إلى الجهاز ، وفي صفحات الويب الأخرى لدينا مربعات نصية.
  • أعط قيمة الاسم ونوع الإدخال في مربع النص وأضف زر إرسال إلى "إرسال" أرسل الرد.
  • قم بإنشاء زر "إعادة تعيين" لإعادة تعيين محتوى حقل النص.

الخطوة 3: تقديم بيانات اعتماد WiFi و UbiDots

توفير بيانات اعتماد WiFi و UbiDots
توفير بيانات اعتماد WiFi و UbiDots

تحدث المشكلة الرئيسية أثناء إدارة بيانات اعتماد WiFi. على الرغم من أن لدينا مكتبة WiFiMulti لذلك يمكننا إعطاء العديد من معرفات SSID وكلمات المرور للجهاز وسيقوم الجهاز بالاتصال بالشبكة المتاحة. ولكن ، ماذا لو كانت الشبكة المتاحة ليست في قائمة WiFiMulti. لا يعد وميض جهاز ESP32 طوال الوقت حلاً موثوقًا به.

لحل هذه المشكلة ، نستضيف صفحة ويب حيث يمكن للمستخدم إرسال SSID وكلمة المرور للشبكة المتاحة. يعمل على النحو التالي.

  • يتم استضافة صفحة الويب على IP ثابت أو DHCP IP كما تم اختياره من قبل المستخدم من البوابة المقيدة
  • تحتوي صفحة الويب هذه على حقول نصية لإدخال SSID وكلمة المرور ومعرف رمز UBIDOTS لتوصيل الجهاز بـ UbiDots.
  • أدخل SSID وكلمة المرور لشبكة WiFi المحلية في حقول الإدخال ، وأدخل معرف الرمز المميز لـ UbiDot وأدخل SUBMIT
  • يتم حفظ بيانات الاعتماد هذه في EEPROM الخاص بـ ESP32
  • بعد 60 ثانية ، سيتم قطع اتصال الجهاز تلقائيًا بنقطة الوصول
  • في المرة القادمة عند تشغيل الجهاز ، لا يتعين على المستخدم اتباع هذا الإجراء ، فسيقوم الجهاز تلقائيًا بجلب بيانات اعتماد المستخدم من EEPROM ومتابعة نشر قراءات المستشعر على UbiDots.

الخطوة 4: نشر قراءات أجهزة الاستشعار على UbiDots

هنا نستخدم مستشعرات درجة الحرارة والرطوبة اللاسلكية مع جهاز 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 بايت من مستشعرات درجة الحرارة والرطوبة اللاسلكية. يتم التلاعب بهذا الإطار للحصول على بيانات درجة الحرارة والرطوبة الفعلية

uint8_t data [29] ؛

البيانات [0] = Serial1.read () ، تأخير (ك) ؛ // chck لبداية البايت إذا (البيانات [0] == 0x7E) {while (! Serial1.available ()) ؛ لـ (i = 1؛ i <29؛ i ++) {data = Serial1.read () ؛ تأخير (1) ؛ } إذا كانت (البيانات [15] == 0x7F) /////// للتحقق مما إذا كانت البيانات المتتالية صحيحة {if (data [22] == 1) //////// تأكد من نوع المستشعر صحيح {

الرطوبة = ((((data [24]) * 256) + data [25]) /100.0) ؛ الرطوبة / = 10.0 ؛ cTempint = (((uint16_t) (البيانات [26]) << 8) | البيانات [27]) ؛ cTemp = (تعويم) cTempint /100.0 ؛ cTemp / = 10.0 ؛ fTemp = cTemp * 1.8 + 32 ؛ fTemp / = 10.0 ؛ البطارية = عشوائي (100 ، 327) ؛ الجهد = البطارية / 100 ؛ nodeId = البيانات [16] ؛}

الاتصال بواجهة برمجة تطبيقات UbiDots MQTT

قم بتضمين ملف الرأس لعملية MQTT

#يشمل

تحديد متغيرات أخرى لـ MQTT مثل اسم العميل وعنوان الوسيط ومعرف الرمز المميز (نقوم بإحضار معرف الرمز المميز من EEPROM)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com"؛

حمولة شار [100] ؛ موضوع شار [150] ؛

// إنشاء متغير لتخزين معرف الرمز المميز

سلسلة tokenId ؛

قم بإنشاء متغيرات لتخزين بيانات المستشعر المختلفة وإنشاء متغير 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

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

تصور البيانات
تصور البيانات
تصور البيانات
تصور البيانات
تصور البيانات
تصور البيانات
  • انتقل إلى Ubidots وقم بتسجيل الدخول إلى حسابك.
  • انتقل إلى لوحة المعلومات من علامة التبويب البيانات المدرجة في الأعلى.
  • الآن انقر فوق رمز "+" لإضافة الأدوات الجديدة.
  • حدد عنصر واجهة مستخدم من القائمة وأضف متغيرًا وأجهزة.
  • يمكن تصور بيانات المستشعر على لوحة القيادة باستخدام أدوات مختلفة.

الخطوة 6: الكود العام

يمكن العثور على كود Over لـ HTML و ESP32 في مستودع GitHub هذا.

الاعتمادات

  • مجلس الاختراق NCD ESP32.
  • أجهزة استشعار درجة الحرارة والرطوبة اللاسلكية ncd.
  • pubsubclient
  • UbiDots
  • جدول المهام

موصى به: