Blog
ESP32 + LoRa: Nodo Sensore a Lunga Portata (8 km)
Il Problema
Il WiFi funziona benissimo — finché non devi mettere un sensore in giardino a 200 metri. O in una fattoria dall’altra parte della valle. O dentro un magazzino di metallo. Il WiFi muore a 50 metri. Il Bluetooth a 10.
LoRa cambia tutto. Con il modulo E32 LoRa (915MHz, 1W), puoi inviare dati dei sensori fino a 8 chilometri — senza torri cellulari, senza WiFi, senza canoni mensili.
Cosa Costruirai
Un nodo sensore LoRa a batteria che:
- Legge temperatura e umidità
- Trasmette i dati via LoRa a un ricevitore
- Entra in deep sleep per 10 minuti tra una lettura e l’altra (la batteria dura mesi)
Difficoltà: Principiante | Tempo: 45 minuti | Costo: ~$40 di componenti
Hardware Necessario (Bill of Materials)
| Componente | Modello | Qtà | Prezzo | Acquista |
|---|---|---|---|---|
| Microcontrollore (Trasmettitore) | ESP32 DevKitC V4 | 1 | $13.49 | Vedi Prodotto |
| Microcontrollore (Ricevitore) | ESP32-C3 SuperMini | 1 | $7.49 | Vedi Prodotto |
| Modulo LoRa | E32-915T30D (915MHz) | 2 | $11.99 cad | Vedi Prodotto |
| Sensore Temp/Umidità | DHT22 | 1 | $5.24 | Vedi Prodotto |
| Alimentazione a Batteria | Shield Batteria 18650 | 1 | $11.99 | Vedi Prodotto |
| Breadboard | 830 punti | 1 | $4.49 | Vedi Prodotto |
| Cavi Jumper | M-M 40 pz | 1 | $2.99 | Vedi Prodotto |
Avviso sulla frequenza: I moduli E32 esistono nelle versioni 433MHz, 868MHz e 915MHz. NON possono comunicare tra loro. Assicurati che entrambi i moduli siano sulla STESSA frequenza. Negli USA si usa 915MHz.
Passo 1: Cablaggio (Nodo Trasmettitore)
Il modulo E32 LoRa usa UART seriale — molto più semplice dei moduli LoRa basati su SPI. Niente librerie complesse!
| Pin E32 LoRa | Pin ESP32 | Nota |
|---|---|---|
| VCC | 5V | Alimentazione (controlla le specifiche del tuo modulo) |
| GND | GND | Terra |
| RXD | GPIO 17 (TX2) | RX E32 ← TX ESP32 |
| TXD | GPIO 16 (RX2) | TX E32 → RX ESP32 |
| M0 | GND | Imposta la modalità di trasmissione |
| M1 | GND | Imposta la modalità di trasmissione |
| DATA DHT22 | GPIO 13 | Dati del sensore |
Incrocio TX↔RX: L’UART è come una telefonata — la tua bocca (TX) si collega all’orecchio dell’altro (RX). Incrocia sempre: TXD del modulo → RX2 dell’ESP32, RXD del modulo → TX2 dell’ESP32.
Passo 2: Codice del Trasmettitore
Caricalo sul trasmettitore ESP32 (quello con il sensore 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: Codice del Ricevitore
Caricalo sul ricevitore ESP32 (collegato al computer):
#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: Provalo
- Alimenta il nodo trasmettitore con lo shield batteria 18650
- Collega il ricevitore al computer e apri il Serial Monitor (115200 baud)
- Ogni 10 minuti vedrai arrivare temperatura e umidità da distanze fino a 8 km
Perché Funziona Così Bene
- Deep Sleep: L’ESP32 assorbe solo 10µA in deep sleep. Con una batteria 18650 da 2000mAh, il nodo sensore può funzionare per 3+ mesi con una singola carica.
- LoRa UART: A differenza del LoRa basato su SPI (SX1276), il modulo E32 usa una semplice comunicazione seriale. Niente libreria complessa, niente pasticcio di cablaggi SPI, niente registri di configurazione.
- Potenza 1W (30dBm): L’E32-915T30D è la versione ad alta potenza. I moduli standard emettono 20dBm (100mW). Questo emette 30dBm (1000mW) — 10 volte la potenza, 3 volte la portata.
Andare Oltre
- Aggiungi altri nodi sensore: Ogni nodo invia i dati con una pianificazione diversa per evitare collisioni
- Inoltra al cloud: Collega il ricevitore ESP32 al WiFi e inoltra i dati LoRa a MQTT
- Energia solare: Aggiungi un piccolo pannello solare allo shield batteria 18650 per un deploy permanente
- Costruisci una mesh: Più nodi ricevitori possono inoltrare i dati su distanze ancora maggiori