El registrador de datos ESP32 es un sistema de adquisición de datos rentable que admite sensores de cable vibrantes y otros sensores con protocolo RS-485, TTL. Para configurar el registrador de datos como usuario final, puede conectarlo a su computadora y configurar el registrador en un sitio web utilizando el navegador. Para configuraciones avanzadas, puede programar su propio código y flashear el registrador en la PC, utilizando Platformio o Arduino IDE.
Use esta guía: https://community.platformio.org/t/redirect-esp32-log-messages-to-sd-card/33734, actualizar esp32-hal-log.h para definir TAG
#ifdef USE_ESP_IDF_LOG
#ifndef TAG
#define TAG "myAPP"
#endif
Actualizar platformio.ini para incluir:
build_flags= -DUSE_ESP_IDF_LOG -DCORE_DEBUG_LEVEL=5
Incluya las siguientes bibliotecas y definiciones:
#include "esp_log.h"
#include "esp32-hal-log.h"
#define LOG_LEVEL ESP_LOG_WARN
#define MY_ESP_LOG_LEVEL ESP_LOG_INFO
Problema del controlador de Mac OS: https://arduino.stackexchange.com/questions/91111/how-to-install-ftdi-serial-drivers-on-mac
Habilitar async weberver en el
#define ELEGANTOTA_USE_ASYNC_WEBSERVER 1
Para alimentar el kit de desarrollo ESP32 a través de USB, se utiliza una batería de 18650. Sin embargo, para fines de producción, se diseñará una PCB personalizada y el módulo debe alimentarse a través del pin 3V3 o VIN para minimizar la pérdida de energía. Para aprovechar la energía solar, se emplea el escudo de 18650, facilitando la fuente de alimentación al ESP32. Este enlace AliExpress proporciona detalles sobre el escudo. El rango de voltaje de entrada se especifica como 5V a 8V, aunque las pruebas preliminares sugieren que un panel solar de 5V es funcional. Se realizará una validación adicional. SD solo parece funcionar con la potencia del pin de vin con un convertidor de dinero en el medio.
La siguiente tabla describe el consumo actual del ESP32 en varios modos de operación:
| Modo | Consumo actual |
|---|---|
| WiFi TX, DSSS 1 Mbps, POUT = +19.5 dBm | 240 Ma |
| WiFi TX, OFDM 54 Mbps, Pout = +16 dBm | 190 Ma |
| Wifi TX, OFDM MCS7, POUT = +14 dbm | 180 Ma |
| Wifi rx (escuchando) | (95 ~ 100) MA |
| BT/BLE TX, POUT = 0 dBm | 130 Ma |
| Bt/ble rx (escuchando) | (95 ~ 100) MA |
Actualmente, la configuración incluye dos paneles solares de 0.3W 5V, capaces de suministrar un máximo de 120 mA al escudo.
El registrador debe sincronizarse con el servidor NTP al encender configTime de la biblioteca time.h Use getLocalTime(&timeinfo) para obtener el tiempo actual. Esta función debe llamarse dentro de la función de registro para obtener el tiempo exacto. Sin embargo, el tiempo no se mantendría si se pierde el poder. Se necesita un módulo RTC para proporcionar tiempo sin WiFi después de Powerloss. Nota: No estoy seguro si la implementación actual (RTCLIB) encuestará periódicamente el servidor NTP. Sin embargo, las implementaciones oficiales de Espressif son votrices periódicamente. https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/system_time.html
Tenga en cuenta que tanto el DS1307 como la pantalla OLED están conectadas al bus I2C, el mismo bus pero una dirección diferente. Las bibliotecas están diseñadas de tal manera que puedan escanear el bus I2C para direcciones comunes. Use esta guía: https://esp32io.com/tutorials/esp32-ds1307-rtc-module Tenga en cuenta que el módulo RTC pequeño no funciona con 3V3, en su lugar, se debe suministrar VIN.
Documentación de espressif en tablas de partición: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/partition-tables.html Si usa plataforma, la partición predeterminada se puede encontrar en este directorio .platformio/packages/framework-arduinoespressif32/tools/partitions
https://components101.com/modules/micro-sd-card-module-pinout-fature-dataStheet-alternates https://www.electronicwings.com/esp32/microsd-card-interfacing-with-esp32
No estoy seguro, los archivos de almacenamiento por fecha pueden ser suficientes.
La función WiFi.onEvent() se usa para registrar una función de devolución de llamada, WiFiEvent , que se invocará cuando ocurran eventos WiFi. En la función wifievent, verificamos el evento SYSTEM_EVENT_STA_DISCONNECTED , lo que indica una desconexión WiFi. Cuando ocurre este evento, llamamos a reconnectToWiFi() para intentar la reconexión. De esta manera, la lógica de reconexión se encapsula en la devolución de llamada wifievent, manteniendo la función Loop () libre de código relacionado con la reconexión.
HACER. Esta función se activa cuando se hace clic en el interruptor de botón Push físico, el ESP32 comenzará como un punto de acceso WiFi para permitir que el usuario se conecte a través de WiFi. Se servirá un sitio web de configuración del dispositivo a través de WiFi. https://dronebotworkshop.com/wifimanager/ Lea este tema para aprender cómo borrar la configuración WiFi de ESP32, enlace. De lo contrario, el ESP32 se iniciará y usará la configuración anterior automáticamente, realmente puede equivocarse.
ESP32 debe solicitar IP estático desde el punto de acceso (por ejemplo, enrutador WiFi, enrutador LTE); Otro enfoque es establecer la IP estática en la página de administrador del enrutador para el ESP32. El enrutador puede tener una dirección IP dinámica que podría expirar cada pocos días, a menos que se compre una IP estática del ISP. TODO: API ESP32 para actualizar IP al servidor de administración.
Para la mayoría de las aplicaciones de infraestructura civil donde el monitoreo de baja latencia no es crítica y las tasas de datos no son excesivamente altas, Lorawan emerge como el estándar de la industria. Sin embargo, en escenarios que exigen tasas de datos más altas, ESP ahora se puede aprovechar para proyectos de distancia más corta. Para proyectos de distancia más larga, un enfoque alternativo podría implicar la integración de módems de células adicionales en cada estación y renunciar a la interconexión entre las estaciones. ESP Now - Comunicaciones de Peer to Peer ESP32
Referencia: Introducción a Lorawan por Andreas Spiess.
| Aspecto | Especialmente | Lorawan |
|---|---|---|
| Rango | Área local de corto alcance, | Área de largo alcance y amplio |
| Consumo de energía | Baja potencia | Potencia ultra baja |
| Tasa de datos | Altas tasas de datos, tiempo real | Bajas tasas de datos, optimizadas para el rango |
| Topología | Peer-to-peer (P2P) | Estrella de las estrellas |
| Escalabilidad | Redes pequeñas a medianas | Redes a gran escala |
| Regulador | Banda ISM de 2.4 GHz | Bandas ISM Sub-Gigahertz |
| Infraestructura | Incluido en el módulo ESP32 desnudo | Dispositivos de puerta de enlace requeridos |
Después de realizar investigaciones, parece que la implementación de Lorawan requiere dispositivos de puerta de enlace. Sin embargo, optar por ESP-Now proporciona una solución alternativa y permite la exploración de las posibilidades de extensión de rango. Lorawan se puede agregar cuando el presupuesto está disponible.
Si una puerta de enlace Lora es innecesaria, el firmware para todos los dispositivos ESP32 puede seguir siendo similar. Solo el "dispositivo de puerta de enlace" o la estación principal necesita ajustes para manejar la comunicación de datos y la combinación de tabla de datos para las solicitudes HTTP de clientes remotos. Las subestaciones aún deben admitir comunicación WiFi local y servir páginas web para usuarios en áreas sin servicio celular.
El dispositivo se configurará a través de la interfaz WiFi Manager, que esencialmente sirve a un sitio web para que los usuarios establezcan modos.
Se recomiendan tableros de desarrollo ESP-32 con conexiones de antena externas disponibles: ESP32-Wroom-U. El modo ESP-Now de largo alcance debe investigarse tanto en las zonas urbanas como en las rurales.
La función de registro de datos debe admitir diferentes modos de registro. Podría generalizarse en función del protocolo utilizado: I2C, SPI, Rs485, etc. Las lecturas deben guardar primero en el dispositivo, antes de enviar a ESP-Now. Se necesita confirmación antes de eliminar el archivo.
Al interactuar con nuevos periféricos, este monitor GPIO PIN puede proporcionar una interfaz de usuario de monitoreo remoto para la creación de prototipos.
No probados pero sensores de alambre vibrantes, sensores analógicos, SaaS. Quiero tener las mismas capacidades: https://www.geo-instruments.com/technology/wireless-logger-networks/
Use ESP32 VIN para la fuente de alimentación, el multímetro muestra un voltaje de aproximadamente 4.5V. Conecte ESP32 VIN a V33 en VM501, GND a GND. Inicialice el puerto UART 1 con GPIO16 como RX y GPIO17 como TX. Ejecutar HardwareSerial VM(1); Para configurar el puerto UART en ESP32. Ejecutar VM.begin(9600, SERIAL_8N1, 16, 17); Para inicializar el puerto UART 1 con GPIO16 como RX y GPIO17 como TX. VM. Las funciones del protocolo UART de la eserial implementadas en este proyecto se basan en el protocolo Modbus:
Actualmente, la versión gratuita de Elegantota se utiliza sin licencias para aplicaciones comerciales. DocumentAion: https://docs.elegantota.pro/ Para aplicaciones comerciales, se puede desarrollar una simple biblioteca Arduino OTA Wrapper para evitar Elegantota. TODO DEVELOPE VERSIÓN DE OTA para evitar restricciones. Es importante destacar que recuerde habilitar la opción de servidor web de Async en ElegantOTA.h en ./pio/libdeps/esp32dev/ElegantOTA .
Se crea una instancia de AsyncWebServer en el puerto 80. Se configura una función de devolución de llamada para manejar las solicitudes de HTTP entrantes en la raíz ("/") respondiendo con el contenido de un archivo almacenado en el sistema de archivos Spiffs. Ajuste la variable del nombre de archivo para que coincida con el archivo deseado. Después de configurar el servidor, se inicia con server.begin() .
Impetlemented usando la biblioteca de preferencia.h.
credentials
{
"WIFI_SSID": "*********",
"WIFI_PASSWORD": "**********",
"gmtOffset_sec": "************"
}
El registrador maestro debe tener una lista maestra de toda la información del sistema de subestación.
[
{
"macAddress": "30:83:98:00:52:8C",
"batteryVoltage": "3.7V"
},
{
"macAddress": "30:83:98:00:52:8C",
"batteryVoltage": "3.7V"
},
]
El registrador debe liten en ruta /api/readings para solicitudes de Timeseries. El cliente puede especificar el sensorId , start y end , y readingsOptions . Una solicitud de muestra debe verse como la siguiente:
/api/readings?sensorId=238&start=2024-02-06T13:40:00&end=2024-02-13T13:40:00&readingsOptions=0
Creado por Qiwei Mao
Tutoriales de Nerd aleatorios: https://randomnerdtutoriales.com/projects-esp32/ Dashboard: https://github.com/ayushsharma82/esp-lash github referencia https://github.com/topics/sensors-data-collection