Rilevare un transito tra due punti distanti centinaia di metri, con vegetazione di mezzo, e segnalarlo in tempo reale: sembra semplice finché non si toglie di mezzo Wi-Fi e Bluetooth, che a quella distanza non arrivano. Per un impianto di segnalazione transito abbiamo progettato un collegamento radio LoRa punto-punto a lungo raggio, poi diagnosticato e risolto un bug sottile che faceva riaccendere la segnalazione da sola senza alcun transito reale. Il racconto tecnico di come ci siamo arrivati.
Progetto sviluppato per un cliente privato · Dominio: rilevamento wireless outdoor / IoT a lungo raggio · Dettagli riservati anonimizzati.
A centinaia di metri, con vegetazione e ostacoli naturali di mezzo, i protocolli radio a corto raggio non bastano. Serve una banda e una potenza pensate per attraversare ostacoli, non per la banda larga.
Impianto non presidiato: nessuno controlla log o dashboard di diagnostica dopo la posa. Ogni scelta di progetto deve reggersi da sola, senza manutenzione né telemetria che nessuno leggerà mai.
Su radio a lungo raggio la perdita occasionale di un pacchetto è fisiologica. Il sistema deve tollerarla senza generare falsi stati — nel nostro caso, una segnalazione che si attiva da sola senza motivo.
I due punti dell'impianto hanno cablaggio e logica diversi: caricare il firmware sbagliato sul nodo sbagliato blocca la comunicazione. In campo, l'errore deve essere reso impossibile o comunque evidente.
Il sistema usa due nodi radio LoRa punto-punto in banda 868 MHz, classe 1 W: la combinazione di banda bassa e potenza elevata attraversa vegetazione e ostacoli su distanze dove Wi-Fi e Bluetooth non hanno alcuna chance. Ogni nodo mantiene un contatore di stato che rappresenta il transito registrato; alla ricezione di un evento il contatore viene aggiornato e ritrasmesso periodicamente, non una tantum.
Questa ritrasmissione ogni 15 secondi è la vera difesa contro la perdita di pacchetti: se un messaggio si perde, il nodo lo ripete al giro successivo finché l'altro capo non si riallinea da solo. Nessun protocollo di acknowledgement con handshake — più complesso da implementare bene e più fragile se anche l'ack si perde.
In collaudo sul campo è emerso un bug sottile: un meccanismo di anti-saturazione azzerava localmente il contatore non appena la somma tornava a zero. Sembrava una protezione innocua, ma disattivava silenziosamente l'auto-riallineamento — se il pacchetto di decremento si perdeva, il nodo si azzerava comunque e smetteva di ritrasmetterlo, mentre l'altro nodo continuava a ribroadcastare il suo stato "vecchio" ogni 15 secondi. Risultato: la segnalazione si riattivava da sola dopo 30-60 secondi, senza alcun transito reale. La diagnosi ha richiesto di ricostruire la sequenza esatta di perdita pacchetto + auto-zero; la soluzione è stata rimuovere l'auto-zero locale e lasciare che fosse solo la ritrasmissione periodica a riallineare lo stato, con un timeout di sicurezza come backstop finale contro derive residue.
Modulo LoRa 868 MHz, potenza 1 W, portata pensata per attraversare vegetazione e ostacoli su centinaia di metri.
Contatori che rappresentano un valore assoluto reale, ritrasmessi periodicamente invece di affidarsi a un acknowledgement punto-punto.
Firmware e cablaggio distinti per ruolo, per rendere evidente e difficile un errore di installazione in campo.
Dopo la rimozione dell'auto-zero, il sistema si riallinea da solo dopo ogni perdita di pacchetto occasionale, senza falsi stati e senza bisogno di intervento remoto. Nessuna telemetria di diagnostica installata: per un impianto non presidiato, un log che nessuno legge non aggiunge affidabilità, aggiunge solo un altro punto di guasto silenzioso.
LoRa lavora su bande basse (868 MHz in Europa) con una modulazione a spettro esteso pensata per la portata e l'efficienza energetica, non per la banda larga. A parità di potenza, attraversa ostacoli e copre distanze che il Wi-Fi (2,4 GHz, alta attenuazione) e il Bluetooth (pensato per pochi metri) non raggiungono nemmeno lontanamente.
Un acknowledgement richiede che ogni messaggio venga confermato dal ricevente: se anche l'ack si perde, serve una logica di ritentativo che aggiunge complessità e nuovi modi di fallire. Ritrasmettere periodicamente lo stato assoluto, invece, fa sì che ogni perdita occasionale si autocorregga al giro successivo, senza bisogno di conferme. È più semplice e, se progettato bene, più robusto.
Evitando diagnostica che nessuno leggerà mai: ogni stato deve auto-correggersi da solo. Si aggiungono backstop temporali (timeout) come ultima rete di sicurezza contro derive residue, e si valida tutto con un test di soak a lungo termine, alla distanza reale, prima della consegna.
Copriamo tutta la catena: dimensionamento del collegamento radio (banda, potenza, air rate), scelta del modulo, firmware embedded e collaudo sul campo. È lo stesso approccio end-to-end che applichiamo a ogni progetto di elettronica e firmware.
Collegamenti radio LoRa, sistemi outdoor senza manutenzione, firmware che si auto-riallinea dopo un errore di comunicazione: se hai un impianto wireless da rendere affidabile, parliamone. La discovery iniziale è gratuita.
Raccontaci il tuo progettoProgettazione e sviluppo firmware embedded per collegamenti wireless.
Sviluppo firmware →