O Logger de dados ESP32 é um sistema de aquisição de dados de custo eficiente que suporta sensores de fio vibratórios e outros sensores com o protocolo RS-485, TTL. Para configurar o Data Logger como usuário final, você pode conectá -lo ao seu computador e configurar o madeireiro em um site usando o navegador. Para configurações avançadas, você pode programar seu próprio código e exibir o logger no PC, usando o Platformio ou o Arduino IDE.
Use este guia: https://community.platformio.org/t/redirect-esp32-log-messages-to-sd-card/33734, atualize esp32-hal-log.h para definir TAG
#ifdef USE_ESP_IDF_LOG
#ifndef TAG
#define TAG "myAPP"
#endif
Atualize platformio.ini para incluir:
build_flags= -DUSE_ESP_IDF_LOG -DCORE_DEBUG_LEVEL=5
Inclua as seguintes bibliotecas e definições:
#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 Issue: https://arduino.stackexchange.com/questions/91111/how-to-install-ftdi-serial-drivers-on-mac
Ativar servidor da web assíncrona no
#define ELEGANTOTA_USE_ASYNC_WEBSERVER 1
Para alimentar o kit de desenvolvimento ESP32 via USB, uma bateria de 18650 é utilizada. No entanto, para fins de produção, uma PCB personalizada será projetada e o módulo deve ser alimentado através do pino 3V3 ou VIN para minimizar a perda de energia. Para aproveitar a energia solar, o escudo de 18650 é empregado, facilitando a fonte de alimentação ao ESP32. Este link Aliexpress fornece detalhes sobre o escudo. A faixa de tensão de entrada é especificada como 5V a 8V, embora os testes preliminares sugerem que um painel solar de 5V é funcional. Validação adicional será realizada. SD parece funcionar apenas com energia do Pin Vin com um conversor de buck no meio.
A tabela a seguir descreve o consumo atual do ESP32 sob vários modos operacionais:
| Modo | Consumo atual |
|---|---|
| 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 (escuta) | (95 ~ 100) MA |
| BT/BLE TX, POUT = 0 dBm | 130 MA |
| Bt/ble rx (escuta) | (95 ~ 100) MA |
Atualmente, a configuração inclui dois painéis solares de 0,3W de 5V, capazes de fornecer um máximo de 120mA para o escudo.
O madeireiro deve sincronizar com o servidor NTP após o power-up usando configTime da biblioteca time.h Use getLocalTime(&timeinfo) para obter o horário atual. Esta função deve ser chamada dentro da função de registro para obter o tempo exato. No entanto, o tempo não seria mantido se a energia for perdida. É necessário um módulo RTC para fornecer tempo sem WiFi após o PowerLoss. Nota: Não tenho certeza se a implementação atual (RTCLIB) pesquisará o servidor NTP periodicamente. No entanto, as implementações oficiais do Espressif pesquisam periodicamente. https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/system_time.html
Observe que tanto o DS1307 quanto a tela OLED estão conectados ao barramento i2C, o mesmo barramento, mas o endereço diferente. As bibliotecas são projetadas para que possam digitalizar o barramento i2C em busca de endereços comuns. Use este guia: https://esp32io.com/tutorials/esp32-ds1307-rtc-module Observe que o minúsculo módulo RTC não funciona com 3v3; em vez disso, o VIN deve ser fornecido.
Documentação do Espressif Nas tabelas de partição: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/partition-tables.html Se usando plataformio, a partição padrão pode ser encontrada neste diretório: .platformio/packages/framework-arduinoespressif32/tools/partitions
https://components101.com/modules/micro-sd-card-module-pinout-feature-datashet-alternatives https://www.electronicwings.com/esp32/microsd-card-interfacing-with-esp32
Não tenho certeza, armazenar arquivos por data pode ser suficiente.
A função WiFi.onEvent() é usada para registrar uma função de retorno de chamada, WiFiEvent , que será invocada quando ocorrerem eventos WiFi. Na função WIFEVENT, verificamos o evento SYSTEM_EVENT_STA_DISCONNECTED , indicando uma desconexão WiFi. Quando este evento ocorre, chamamos reconnectToWiFi() para tentar a reconexão. Dessa forma, a lógica de reconexão é encapsulada no retorno de chamada wiferent, mantendo a função Loop () livre de código relacionado à reconexão.
PENDÊNCIA. Esta função é acionada quando a chave de botão física é clicada, o ESP32 será iniciado como um ponto de acesso WiFi para permitir que o usuário se conecte a ela via WiFi. Um site de configuração de dispositivo será servido pelo WiFi. https://dronebotworkshop.com/wifimanager/ Leia esse problema para aprender como apagar as configurações Wi -Fi do ESP32, link. Caso contrário, o ESP32 inicializará e usará as configurações anteriores automaticamente, poderá realmente bagunçar.
O ESP32 deve solicitar IP estático do ponto de acesso (por exemplo, WiFi Router, roteador LTE); Outra abordagem é definir IP estático na página de administração do roteador para o ESP32. O roteador pode ter um endereço IP dinâmico que pode expirar a cada poucos dias, a menos que um IP estático seja comprado do ISP. TODO: API ESP32 para atualizar o IP para o servidor de gerenciamento.
Para a maioria dos aplicativos de infraestrutura civil em que o monitoramento de baixa latência não é crítico e as taxas de dados não são excessivamente altas, Lorawan surge como padrão da indústria. No entanto, em cenários que exigem taxas de dados mais altas, a ESP agora pode ser aproveitada para projetos de distância mais curta. Para projetos de distância mais longa, uma abordagem alternativa pode envolver a integração de modems celulares adicionais em cada estação e renunciando à interconexão entre as estações. EsP agora - Comunicações de ponto para ponto EsP32
Referência: Introdução a Lorawan por Andreas Spiess.
| Aspecto | Esp-Now | Lorawan |
|---|---|---|
| Faixa | Curto alcance, área local | Longo alcance, área ampla |
| Consumo de energia | Baixa potência | Poder ultra-baixo |
| Taxa de dados | Altas taxas de dados, em tempo real | Baixas taxas de dados, otimizadas para intervalo |
| Topologia | Ponto a ponto (P2P) | Star-of-Stars |
| Escalabilidade | Redes pequenas a médias | Redes em larga escala |
| Regulatório | 2,4 GHz ISM Band | Sub-gigahertz ISM Bands |
| Infraestrutura | Incluído no módulo Bare Esp32 | Dispositivos de gateway necessários |
Após a realização de pesquisas, parece que a implementação de Lorawan requer dispositivos de gateway. No entanto, a opção por ESP-now fornece uma solução alternativa e permite a exploração das possibilidades de extensão de alcance. Lorawan pode ser adicionado quando o orçamento estiver disponível.
Se um gateway Lora for desnecessário, o firmware para todos os dispositivos ESP32 poderá permanecer semelhante. Somente o "dispositivo de gateway" ou a estação principal precisa de ajustes para lidar com a combinação de comunicação e tabela de dados para solicitações HTTP de clientes remotos. As subestações ainda devem suportar a comunicação Wi -Fi local e servir páginas da Web para usuários em áreas sem serviço de célula.
O dispositivo será configurado através da interface do WiFi Manager, que está essencialmente servindo um site para os usuários definirem os modos.
As placas de dev ESP-32 com conexões de antena externas disponíveis são recomendadas: ESP32-WOROL-U. O modo ESP-Now de longo alcance deve ser investigado em áreas urbanas e rurais.
A função de log de dados deve suportar diferentes modos de log. Pode ser generalizado com base no protocolo usado: i2c, spi, rs485, etc. As leituras devem ser salvas pela primeira vez no dispositivo, antes de enviar o ESP-Now. É necessária confirmação antes de excluir o arquivo.
Ao interface com os novos periféricos, este monitor de pinos GPIO pode fornecer o UserI -SFEINTENTIFORA DE MONITORO REMOTO PARA PROTOTYPING.
TODO ainda não testou sensores de fio vibratórios, sensores analógicos, SaaS. Eu quero ter os mesmos recursos: https://www.geo-instruments.com/technology/wireless-logger-networks/
Use o ESP32 VIN para fonte de alimentação, o multímetro mostra uma tensão de aproximadamente 4,5V. Conecte o ESP32 VIN ao V33 no VM501, GND ao GND. Inicialize a porta UART 1 com GPIO16 como RX e GPIO17 como TX. Execute HardwareSerial VM(1); Para configurar a porta UART no ESP32. Run VM.begin(9600, SERIAL_8N1, 16, 17); Para inicializar a porta 1 UART com GPIO16 como RX e GPIO17 como TX. VM. As funções do protocolo UART SERIAL implementadas neste projeto são baseadas no protocolo Modbus:
Atualmente, a versão gratuita da eleganta é usada sem licenciamento para aplicações comerciais. Documentação: https://docs.elegantota.pro/ Para aplicações comerciais, uma biblioteca de wrapper Arduino OTA simples pode ser desenvolvida para evitar elegantata. TODO Develope a própria versão do OTA para evitar restrições. É importante ressaltar que lembre -se de ativar a operação assíncrona da web em ElegantOTA.h em ./pio/libdeps/esp32dev/ElegantOTA .
Uma instância do AsyncwebServer é criada na porta 80. Uma função de retorno de chamada é configurada para lidar com solicitações GET HTTP recebidas na raiz ("/") respondendo com o conteúdo de um arquivo armazenado no sistema de arquivos SPIFFs. Ajuste a variável de nome do arquivo para corresponder ao arquivo desejado. Depois de configurar o servidor, ele é iniciado com server.begin() .
Implementado usando a biblioteca preference.h.
credentials
{
"WIFI_SSID": "*********",
"WIFI_PASSWORD": "**********",
"gmtOffset_sec": "************"
}
O Mestre Logger deve ter uma lista mestre de todas as informações do sistema de subestação.
[
{
"macAddress": "30:83:98:00:52:8C",
"batteryVoltage": "3.7V"
},
{
"macAddress": "30:83:98:00:52:8C",
"batteryVoltage": "3.7V"
},
]
O madeireiro deve litenar na rota /api/readings para solicitações de tempo de tempo. O cliente pode especificar o sensorId , start e end e as readingsOptions . Uma solicitação de amostra deve parecer o seguinte:
/api/readings?sensorId=238&start=2024-02-06T13:40:00&end=2024-02-13T13:40:00&readingsOptions=0
Criado por Qiwei Mao
Tutoriais do Nerd Random: https://randomnerdtutorials.com/projects-esp32/ painel: https://github.com/ayusharma82/esp-sash github referência https://github.com/topics/sensors-data-collection https://github.com/topics/sensors-data-collection