Uncategorized

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

  1. Alimenta il nodo trasmettitore con lo shield batteria 18650
  2. Collega il ricevitore al computer e apri il Serial Monitor (115200 baud)
  3. 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

Leave a Reply

Your email address will not be published. Required fields are marked *