ESP32 + LoRa IoT System
Sistema multi-nó para monitoramento agrícola e de segurança com topologia híbrida LoRa-to-HTTP e gestão autônoma de energia via Deep Sleep NTP.
Specifications
MCU
ESP32 (Heltec WiFi LoRa 32 V2)
Protocolo RF
LoRa 915 MHz · 14 dBm
Alcance
~3 km (campo aberto)
Display
OLED SSD1306 128×64
Energia
~10 µA deep sleep
Filesystem
LittleFS (HTML async)
Tech Stack
Overview
Arquitetura de rede multi-nó com negociação dinâmica Mestre/Escravo via protocolo PING_CENTRAL / ACK_CENTRAL. Transmissão binária de structs C++ diferenciadas em runtime por contagem de bytes (sizeof). Gateway HTTP assíncrono com API REST servindo dados JSON. Gestão de energia com Deep Sleep sincronizado via NTP — o nó acorda, verifica o horário, e dorme de 18h a 08h. Fallback inteligente de 5 minutos de sono curto em caso de falha WiFi.
Key Features
- Negociação dinâmica Mestre/Escravo (PING_CENTRAL / ACK_CENTRAL)
- Discriminação de pacotes LoRa por contagem de bytes: sizeof(JardimData) vs sizeof(GasData)
- File System embarcado (LittleFS) servindo HTML assincronamente na porta 80
- Deep Sleep NTP com agendamento noturno (18h-08h) e fallback de 5 min
- Nó Jardim: sensores umidade solo (ADC GPIO36/37), motor DC (GPIO34/35) — 648 linhas
- Nó Fogo: sensor gás MQ-2 (analógico GPIO36), sensor chama KY-026 (digital PULLUP GPIO2)
Discriminação de Pacotes LoRa por Tamanho
// Identificação do tipo de dados pela contagem de bytes
int packetSize = LoRa.parsePacket();
if (packetSize == sizeof(JardimData)) {
JardimData dados;
LoRa.readBytes((uint8_t*)&dados, sizeof(dados));
// Processa dados de irrigação...
} else if (packetSize == sizeof(GasData)) {
GasData dados;
LoRa.readBytes((uint8_t*)&dados, sizeof(dados));
// Processa alarme de gás/fogo...
}