سجل بيانات ESP32 هو نظام الحصول على بيانات فعال من حيث التكلفة يدعم مستشعرات الأسلاك الاهتزازية وأجهزة استشعار أخرى مع بروتوكول RS-485 ، TTL. لإعداد مسجل البيانات كمستخدم نهائي ، يمكنك توصيله بجهاز الكمبيوتر الخاص بك ، وتكوين المسجل في موقع ويب باستخدام المتصفح. للتكوينات المتقدمة ، يمكنك برمجة الكود الخاص بك وفلاش المسجل على الكمبيوتر الشخصي ، باستخدام Platformio أو Arduino IDE.
استخدم هذا الدليل: https://community.platformio.org/t/redirect-esp32-log-messages-to-sd-card/33734 ، تحديث esp32-hal-log.h لتحديد TAG
#ifdef USE_ESP_IDF_LOG
#ifndef TAG
#define TAG "myAPP"
#endif
update platformio.ini لتضمين:
build_flags= -DUSE_ESP_IDF_LOG -DCORE_DEBUG_LEVEL=5
قم بتضمين المكتبات والتعاريف التالية:
#include "esp_log.h"
#include "esp32-hal-log.h"
#define LOG_LEVEL ESP_LOG_WARN
#define MY_ESP_LOG_LEVEL ESP_LOG_INFO
Mac OS Driver إصدار: https://arduino.stackexchange.com/questions/91111/how-tinstall-ftdi-serial-on-mac
تمكين خادم الويب ASYNC في
#define ELEGANTOTA_USE_ASYNC_WEBSERVER 1
لتشغيل مجموعة تطوير ESP32 عبر USB ، يتم استخدام بطارية 18650. ومع ذلك ، لأغراض الإنتاج ، سيتم تصميم ثنائي الفينيل متعدد الكلور مخصص ، ويجب تشغيل الوحدة النمطية عبر دبوس 3V3 أو VIN لتقليل فقدان الطاقة. لتسخير الطاقة الشمسية ، يتم توظيف درع 18650 ، مما يسهل إمدادات الطاقة إلى ESP32. يوفر رابط Aliexpress تفاصيل على الدرع. يتم تحديد نطاق جهد الإدخال على أنه من 5V إلى 8V ، على الرغم من أن الاختبارات الأولية تشير إلى أن لوحة شمسية 5V وظيفية. سيتم إجراء مزيد من التحقق من الصحة. يبدو أن SD يعمل مع Power من Vin Pin مع محول Buck بينهما.
يحدد الجدول التالي الاستهلاك الحالي لـ ESP32 تحت أوضاع التشغيل المختلفة:
| وضع | الاستهلاك الحالي |
|---|---|
| wifi TX ، DSSS 1 mbps ، pout = +19.5 dbm | 240 مللي أمبير |
| wifi tx ، ofdm 54 mbps ، pout = +16 dbm | 190 م |
| wifi tx ، ofdm mcs7 ، pout = +14 dbm | 180 م |
| wifi rx (الاستماع) | (95 ~ 100) م |
| BT/BLE TX ، POUT = 0 DBM | 130 مللي أمبير |
| BT/BLE RX (الاستماع) | (95 ~ 100) م |
في الوقت الحالي ، يتضمن الإعداد لوحين شمسيين 0.3W 5V ، قادرين على توفير 120 مللي أمبير كحد أقصى للدرع.
يجب أن يتزامن المسجل مع خادم NTP عند الطاقة باستخدام configTime من time.h Library. استخدم getLocalTime(&timeinfo) للحصول على الوقت الحالي. يجب استدعاء هذه الوظيفة ضمن وظيفة التسجيل للحصول على الوقت المحدد. ومع ذلك ، لن يتم الاحتفاظ بالوقت إذا فقدت الطاقة. هناك حاجة إلى وحدة RTC لتوفير الوقت بدون WiFi بعد PowerLoss. ملاحظة: لست متأكدًا مما إذا كان التنفيذ الحالي (RTCLIB) سيقوم باستطلاع خادم NTP بشكل دوري. ومع ذلك ، فإن التطبيقات غير المرغوب فيها من قِبل إسبيف لا تتطلع بشكل دوري. https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/system_time.html
لاحظ أن كل من DS1307 وشاشة OLED متصلة بحافلة I2C ، نفس الحافلة ولكن العنوان مختلف. تم تصميم المكتبات بحيث يمكنها مسح ناقل I2C للعناوين المشتركة. استخدم هذا الدليل: https://esp32io.com/tutorials/esp32-ds1307-rtc-module لاحظ أن وحدة RTC الصغيرة لا تعمل مع 3v3 ، بدلاً من ذلك يجب توفير Vin.
وثائق Espressif على جداول التقسيم: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api- .platformio/packages/framework-arduinoespressif32/tools/partitions إذا كنت تستخدم platfor
https://components101.com/modules/micro-sd-card-module-pinout-fatures-datashet-alternatives https://www.electronicwings.com/esp32/microsd-cardfacing-bacing-sp32
لست متأكداً ، قد يكون تخزين الملفات حسب التاريخ كافيًا.
يتم استخدام وظيفة WiFi.onEvent() لتسجيل وظيفة رد الاتصال ، WiFiEvent ، والتي سيتم استدعاؤها عند حدوث أحداث WiFi. في وظيفة wifevent ، نتحقق من الحدث SYSTEM_EVENT_STA_DISCONNECTED ، مما يشير إلى انقطاع مع WiFi. عند حدوث هذا الحدث ، نسمي reconnectToWiFi() لمحاولة إعادة الاتصال. وبهذه الطريقة ، يتم تغليف منطق إعادة الاتصال في رد الاتصال wifevent ، مع الحفاظ على وظيفة الحلقة () خالية من التعليمات البرمجية المتعلقة بإعادة الاتصال.
تودو. يتم تشغيل هذه الوظيفة عند النقر فوق مفتاح زر الضغط الفعلي ، وسيبدأ ESP32 كنقطة وصول WiFi للسماح للمستخدم بالاتصال به عبر WiFi. سيتم تقديم موقع تكوين الجهاز عبر WiFi. https://dronebotworkshop.com/wifimanager/ اقرأ هذه المشكلة لمعرفة كيفية محو إعدادات WiFi من ESP32 ، الرابط. وإلا فإن ESP32 سيقوم بتمهيد واستخدام الإعدادات السابقة تلقائيًا ، فيمكنه الفوضى حقًا.
يجب أن يطلب ESP32 IP ثابت من نقطة الوصول (مثل جهاز توجيه WiFi ، LTE Router) ؛ هناك طريقة أخرى تتمثل في تعيين IP ثابت في صفحة مسؤول جهاز التوجيه لـ ESP32. قد يحتوي جهاز التوجيه على عنوان IP ديناميكي قد ينتهي صلاحيته كل بضعة أيام ، ما لم يتم شراء IP ثابت من ISP. TODO: ESP32 API لتحديث IP إلى خادم الإدارة.
بالنسبة لمعظم تطبيقات البنية التحتية المدنية حيث لا تكون المراقبة المنخفضة للانتشار الحرجة ومعدلات البيانات ليست مرتفعة بشكل مفرط ، تظهر لوروان كمعيار الصناعة. ومع ذلك ، في السيناريوهات التي تتطلب ارتفاع معدلات البيانات ، يمكن الآن الاستفادة من ESP لمشاريع عن بعد أقصر. بالنسبة للمشاريع المسافة الطويلة ، يمكن أن يتضمن النهج البديل دمج أجهزة مودم الخلايا الإضافية في كل محطة وتخلي عن الترابط بين المحطات. ESP الآن - PEER to PEER ESP32 Communications
المرجع: مقدمة إلى لوروان من قبل أندرياس سبايس.
| وجه | esp-now | لوروان |
|---|---|---|
| يتراوح | المدى القصير ، المنطقة المحلية | مساحة طويلة المدى ، واسعة |
| استهلاك الطاقة | قوة منخفضة | قوة منخفضة للغاية |
| معدل البيانات | ارتفاع معدلات البيانات ، في الوقت الفعلي | معدلات بيانات منخفضة ، محسّنة للنطاق |
| طوبولوجيا | نظير إلى نظير (P2P) | نجمة النجوم |
| قابلية التوسع | شبكات صغيرة إلى متوسطة | شبكات واسعة النطاق |
| تنظيمي | 2.4 جيجاهرتز فرقة ISM | فرقة Sub-Gigahertz ISM |
| بنية تحتية | المدرجة في وحدة ESP32 العارية | أجهزة البوابة المطلوبة |
بعد إجراء البحوث ، يبدو أن تنفيذ لوراوان يتطلب أجهزة بوابة. ومع ذلك ، فإن اختيار ESP-NOW يوفر حلاً بديلاً ويسمح باستكشاف إمكانيات تمديد النطاق. يمكن إضافة لوروان عند توفر الميزانية.
إذا كانت بوابة لورا غير ضرورية ، فقد تظل البرامج الثابتة لجميع أجهزة ESP32 متشابهة. يحتاج فقط "Gateway Device" أو المحطة الرئيسية إلى تعديلات للتعامل مع توصيل البيانات وجدول البيانات لطلبات HTTP من العملاء عن بُعد. لا يزال يتعين على المحطات الفرعية أن تدعم اتصالات WiFi المحلية وتقديم صفحات الويب للمستخدمين في المناطق التي لا توجد بها خدمة خلية.
سيتم تكوين الجهاز عبر واجهة WiFi Manager ، والتي تقدم بشكل أساسي موقع ويب للمستخدمين لتعيين أوضاع.
ينصح لوحات ESP-32 DEV مع اتصالات هوائي خارجية متوفرة: ESP32-WORDY-U. يجب التحقيق في وضع ESP-NOW طويل المدى في كل من المناطق الحضرية والريفية.
يجب أن تدعم وظيفة تسجيل البيانات أوضاع تسجيل مختلفة. يمكن تعميمها استنادًا إلى البروتوكول المستخدم: I2C ، SPI ، RS485 ، إلخ. يجب حفظ القراءات أولاً على الجهاز ، قبل إرسال ESP-NOW. هناك حاجة إلى التأكيد قبل حذف الملف.
عند التواصل مع الأجهزة الطرفية الجديدة ، يمكن أن يوفر شاشة PIN GPIO مستخدم مراقبة عن بُعد للنماذج الأولية.
لم يتم اختبار TODO بعد مستشعرات الأسلاك تهتز ، أجهزة الاستشعار التناظرية ، SaaS. أريد أن أحصل على نفس القدرات: https://www.geo-instruments.com/technology/wireless-logger-networks/
استخدم ESP32 VIN OUT لإمدادات الطاقة ، ويظهر مقياس متعدد الجهد حوالي 4.5 فولت. قم بتوصيل ESP32 VIN بـ V33 على VM501 ، GND إلى GND. تهيئة منفذ UART 1 مع GPIO16 كـ RX و GPIO17 كـ TX. تشغيل HardwareSerial VM(1); لتكوين منفذ UART على ESP32. Run VM.begin(9600, SERIAL_8N1, 16, 17); لتهيئة منفذ UART 1 مع GPIO16 مثل RX و GPIO17 كـ TX. تعتمد وظائف بروتوكول UART VM.Serial التي تم تنفيذها في هذا المشروع على بروتوكول Modbus:
يتم استخدام إصدار Elegantota المجاني حاليًا دون ترخيص للتطبيقات التجارية. DocumentAion: https://docs.elegantota.pro/ للتطبيقات التجارية ، يمكن تطوير مكتبة Arduino OTA البسيطة لتجنب Elegantota. TODO DEVELOPE OWN من OTA لتجنب القيود. الأهم من ذلك ، تذكر تمكين خادم الويب Async في ElegantOTA.h في ./pio/libdeps/esp32dev/ElegantOTA .
يتم إنشاء مثيل لـ AsyncWebserver على المنفذ 80. يتم إعداد وظيفة رد الاتصال للتعامل مع طلبات HTTP الواردة في الجذر ("/") من خلال الاستجابة بمحتوى ملف مخزن في نظام ملفات spiffs. اضبط متغير اسم الملف لمطابقة الملف المطلوب. بعد تكوين الخادم ، تم تشغيله باستخدام server.begin() .
مضغوطة باستخدام مكتبة التفضيل.
credentials
{
"WIFI_SSID": "*********",
"WIFI_PASSWORD": "**********",
"gmtOffset_sec": "************"
}
يجب أن يحتوي المسجل الرئيسي على قائمة رئيسية لجميع معلومات نظام المحطات الفرعية.
[
{
"macAddress": "30:83:98:00:52:8C",
"batteryVoltage": "3.7V"
},
{
"macAddress": "30:83:98:00:52:8C",
"batteryVoltage": "3.7V"
},
]
يجب أن يتلاءم المسجل على الطريق /api/readings طلبات الزمن. يمكن للعميل تحديد sensorId start end readingsOptions . يجب أن يبدو طلب العينة كما يلي:
/api/readings?sensorId=238&start=2024-02-06T13:40:00&end=2024-02-13T13:40:00&readingsOptions=0
تم إنشاؤه بواسطة Qiwei Mao
دروس عشوائية الطالب الذي يذاكر كثيرا: