جدول المحتويات:
- الخطوة 1: مواصفات الأجهزة والبرامج
- الخطوة 2: إنشاء بوابة مقيدة
- الخطوة 3: تقديم بيانات اعتماد WiFi و UbiDots
- الخطوة 4: نشر قراءات أجهزة الاستشعار على UbiDots
- الخطوة 5: تصور البيانات
- الخطوة 6: الكود العام
فيديو: UbiDots - توصيل ESP32 ونشر بيانات أجهزة الاستشعار المتعددة: 6 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:39
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. على الرغم من أن لدينا مكتبة 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
- جدول المهام
موصى به:
كيفية استخدام Sensor21.com لرصد أجهزة الاستشعار: 3 خطوات
كيفية استخدام Sensor21.com لمراقبة المستشعرات: إذا كنت بحاجة إلى نظام أساسي لمراقبة الأجهزة البعيدة وأجهزة الاستشعار والتحكم فيها لمشاريع DIY الخاصة بك ، فقد يكون sensor21.com حلاً جيدًا لك. لديه استعداد لاستخدام واجهة المستخدم الرسومية سهلة الاستخدام. سهولة إضافة أجهزة الاستشعار ومراقبتها بالرسوم البيانية. تعيين منبهات لـ e
أتمتة الدفيئة مع LoRa! (الجزء الأول) -- أجهزة الاستشعار (درجة الحرارة ، الرطوبة ، رطوبة التربة): 5 خطوات
أتمتة الدفيئة مع LoRa! (الجزء الأول) || المستشعرات (درجة الحرارة ، الرطوبة ، رطوبة التربة): في هذا المشروع سوف أريكم كيف أني أتمتة دفيئة. هذا يعني أنني سأريكم كيف بنيت الدفيئة وكيف قمت بتوصيل الكهرباء وإلكترونيات الأتمتة. سأوضح لك أيضًا كيفية برمجة لوحة Arduino تستخدم L
تسجيل أجهزة الاستشعار باستخدام InfluxDB و Grafana و Hassio: 5 خطوات
تسجيل أجهزة الاستشعار باستخدام InfluxDB و Grafana و Hassio: في هذا المنشور ، نتعلم كيفية استخدام InfluxDB لتخزين بيانات المستشعر على المدى الطويل ونستخدم Grafana لتحليل البيانات. هذا جزء من سلسلة أتمتة المنزل حيث نتعلم كيفية إعداد Home Assistant واستخدامه حتى يتم كل هذا باستخدام Hassio
6-محور المعايرة والاختبار وحدة الاستشعار FSP200 وحدة الاستشعار: 6 خطوات
6-محور المعايرة والاختبار وحدة الاستشعار FSP200: FSP200 هو معالج وحدة قياس بالقصور الذاتي من 6 محاور يوفر إخراج الاتجاه والاتجاه. إنه يقوم بدمج مقياس التسارع وأجهزة الاستشعار الجيروسكوبية للحصول على اتجاه واتجاه مستقر ودقيق. يعتبر FSP200 مناسبًا للاستخدام في برامج الروبوت
أصبح إنترنت الأشياء بسيطًا: مراقبة أجهزة الاستشعار المتعددة: 7 خطوات
أصبح إنترنت الأشياء بسيطًا: مراقبة أجهزة الاستشعار المتعددة: منذ بضعة أسابيع ، نشرت هنا برنامجًا تعليميًا حول مراقبة درجة الحرارة باستخدام DS18B20 ، وهو مستشعر رقمي يتصل عبر ناقل أحادي الأسلاك ، ويرسل البيانات عبر الإنترنت باستخدام NodeMCU و Blynk: IoT Made Simple : مراقبة درجة الحرارة في أي مكان