Blog
ESP32 + LoRa: Nó de Sensor de Longo Alcance (até 8km)
O Problema
WiFi funciona muito bem — até você precisar colocar um sensor no jardim a 200 metros. Ou numa fazenda do outro lado do vale. Ou dentro de um galpão metálico. O WiFi morre a 50 metros. O Bluetooth, a 10.
O LoRa muda tudo. Usando o módulo LoRa E32 (915MHz, 1W), você consegue enviar dados de sensor por até 8 quilômetros — sem torre de celular, sem WiFi, sem mensalidade.
O Que Você Vai Construir
Um nó de sensor LoRa alimentado por bateria que:
- Lê temperatura e umidade
- Transmite os dados via LoRa para um receptor
- Entra em deep sleep por 10 minutos entre leituras (bateria dura meses)
Dificuldade: Iniciante | Tempo: 45 minutos | Custo: ~US$ 40 em peças
Hardware Necessário (Lista de Materiais)
| Peça | Modelo | Qtd | Preço | Comprar |
|---|---|---|---|---|
| Microcontrolador (Transmissor) | ESP32 DevKitC V4 | 1 | $13.49 | Ver Produto |
| Microcontrolador (Receptor) | ESP32-C3 SuperMini | 1 | $7.49 | Ver Produto |
| Módulo LoRa | E32-915T30D (915MHz) | 2 | $11.99 cada | Ver Produto |
| Sensor de Temp./Umidade | DHT22 | 1 | $5.24 | Ver Produto |
| Alimentação por Bateria | 18650 Battery Shield | 1 | $11.99 | Ver Produto |
| Protoboard | 830 pontos | 1 | $4.49 | Ver Produto |
| Cabos Jumper | M-M 40pcs | 1 | $2.99 | Ver Produto |
Aviso de Frequência: Os módulos E32 existem nas versões 433MHz, 868MHz e 915MHz. Eles NÃO conversam entre si. Garanta que os dois módulos sejam da MESMA frequência. Nos EUA, usa-se 915MHz.
Passo 1: Fiação (Nó Transmissor)
O módulo LoRa E32 usa serial UART — muito mais simples que módulos LoRa baseados em SPI. Sem bibliotecas complicadas!
| Pino E32 LoRa | Pino ESP32 | Nota |
|---|---|---|
| VCC | 5V | Alimentação (confira as especificações do seu módulo) |
| GND | GND | Terra |
| RXD | GPIO 17 (TX2) | E32 RX ← ESP32 TX |
| TXD | GPIO 16 (RX2) | E32 TX → ESP32 RX |
| M0 | GND | Define o modo de transmissão |
| M1 | GND | Define o modo de transmissão |
| DHT22 DATA | GPIO 13 | Dados do sensor |
Cruzamento TX↔RX: UART é como uma ligação telefônica — sua boca (TX) conecta no ouvido deles (RX). Sempre cruze as conexões: TXD do módulo → RX2 do ESP32, RXD do módulo → TX2 do ESP32.
Passo 2: Código do Transmissor
Envie isto para o ESP32 transmissor (o que tem o sensor DHT22):
#include <HardwareSerial.h>
#include "DHT.h"
HardwareSerial LoRaSerial(2); // ESP32 Serial2 (GPIO 16, 17)
#define DHTPIN 13
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Deep sleep: 10 minutes between readings
#define uS_TO_S_FACTOR 1000000ULL
#define TIME_TO_SLEEP 600
void setup() {
Serial.begin(115200);
Serial.println("sensbench LoRa Sensor Node");
LoRaSerial.begin(9600);
dht.begin();
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Sensor read failed!");
} else {
String data = "T:" + String(t, 1) + "C H:" + String(h, 1) + "%";
Serial.println("Sending: " + data);
LoRaSerial.println(data);
}
Serial.println("Deep sleeping for 10 minutes...");
Serial.flush();
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
esp_deep_sleep_start();
}
void loop() {
// Not reached after deep sleep
}
Passo 3: Código do Receptor
Envie isto para o ESP32 receptor (conectado no seu computador):
#include <HardwareSerial.h>
HardwareSerial LoRaSerial(2);
void setup() {
Serial.begin(115200);
Serial.println("sensbench LoRa Receiver");
LoRaSerial.begin(9600);
}
void loop() {
if (LoRaSerial.available()) {
String data = LoRaSerial.readString();
Serial.print("Received: ");
Serial.println(data);
}
}
Passo 4: Teste
- Alimente o nó transmissor com o 18650 battery shield
- Conecte o receptor ao seu computador e abra o Serial Monitor (115200 baud)
- A cada 10 minutos, você verá temperatura e umidade chegarem de até 8km de distância
Por Que Isso Funciona Tão Bem
- Deep Sleep: O ESP32 consome só 10µA em deep sleep. Com uma bateria 18650 de 2000mAh, o nó de sensor pode rodar por 3+ meses com uma única carga.
- LoRa via UART: Diferente do LoRa baseado em SPI (SX1276), o módulo E32 usa comunicação serial simples. Sem biblioteca complexa, sem bagunça de fiação SPI, sem registradores de configuração.
- Potência de 1W (30dBm): O E32-915T30D é a versão de alta potência. Módulos padrão emitem 20dBm (100mW). Este emite 30dBm (1000mW) — 10x a potência, 3x o alcance.
Indo Além
- Adicione mais nós de sensor: Cada nó envia dados num cronograma diferente para evitar colisões
- Encaminhe para a nuvem: Conecte o ESP32 receptor ao WiFi e repasse os dados LoRa para o MQTT
- Energia solar: Adicione uma pequena placa solar ao 18650 battery shield para implantação permanente
- Monte uma malha: Vários nós receptores podem retransmitir dados por distâncias ainda maiores