Rete di monitoraggio ambientale
Dal firmware 1.3.16 (dati UBX dalla 1.3.18) · Radio: Radio ESP-Now
Più reference station MS2net possono sorvegliare un sito che rischia di muoversi: il fianco di una frana, un muro di sostegno, un ponte, gli edifici accanto a un cantiere. Su ogni punto da sorvegliare si fissa una stazione che lavora da rover: misura in continuo la propria posizione in RTK, giorno e notte, e la registra sulla sua microSD. Confrontando le posizioni nelle ore, nei giorni e nelle settimane si vede se un punto si è spostato, di quanto e quando.
Per misurare in RTK ogni rover ha bisogno delle correzioni di una sorgente: una base ferma su terreno stabile, oppure una porta Internet che le prende da un caster NTRIP. Le correzioni arrivano a tutti via radio ESP-Now, senza router, senza cavi fra i punti e senza una scheda SIM per stazione. Dove la radio non arriva, un rover fa anche da ripetitore.
Questa pagina spiega che cosa succede dentro la rete: come viaggiano i dati, come le stazioni si tengono d'occhio a vicenda, che cosa fa la rete quando una stazione si spegne e come i dati di ogni stazione arrivano a un raccoglitore. I campi della pagina di configurazione sono descritti in Radio ESP-Now.
Come viaggiano i dati
Figura 1 — Le correzioni dalla sorgente ai rover
Nella prima metà dell'animazione la sorgente è la base, nella seconda è una porta Internet; in una rete vera trasmette una sola sorgente alla volta.
- La sorgente prepara le correzioni. La base le calcola dal suo modulo GNSS, sulle sue coordinate fisse; la porta Internet le riceve dal caster attraverso il suo WiFi.
- Le spezza in pacchetti numerati. Ogni pacchetto, lungo al massimo 250 byte, porta le correzioni, un numero di sequenza che cresce di uno a ogni pacchetto e un controllo calcolato sul contenuto. Con le frequenze di fabbrica parte un gruppo di pacchetti al secondo.
- Manda ogni pacchetto due volte, a pochi millesimi di secondo di distanza, a tutte le stazioni a portata. La radio non conferma la ricezione: la seconda copia copre un pacchetto perso per un disturbo.
- Ogni rover tiene la prima copia e scarta la seconda, riconoscendola dal numero. Un pacchetto con il controllo sbagliato viene scartato. Le correzioni buone passano così come sono al modulo GNSS del rover, che le usa per arrivare in RTK fix.
- Ogni rover registra la propria posizione sulla sua microSD. Le misure restano lì: la radio porta le correzioni verso i rover e le righe di stato descritte più sotto; i dati GNSS di una stazione vanno verso un centro solo se lo si chiede, con un raccoglitore. I file si prendono da ogni stazione con la Gestione file.
Tutte le stazioni devono stare sullo stesso canale radio. La sorgente trasmette sul canale della sua rete WiFi, se ne ha una; i rover tengono il WiFi spento e cercano il canale da soli, ascoltando a turno i canali da 1 a 13 per 2 secondi ciascuno (circa 26 s in tutto). Con una chiave di rete ogni pacchetto è firmato, e una stazione accetta solo i pacchetti firmati con la sua stessa chiave: due reti vicine non si mescolano. I pacchetti non sono cifrati. I dettagli sono in Radio ESP-Now › Pacchetti e chiave di rete.
Le stazioni si dicono chi sono
Figura 2 — Telemetria: ogni stazione ogni 2 s
Ogni 2 secondi ogni stazione, base o rover, manda a tutte le altre una breve riga di stato:
- il suo ID, le ultime quattro cifre del suo indirizzo radio (per esempio
173E), lo stesso del nome Bluetooth e del display; - il suo ruolo: base, porta Internet, ripetitore o rover. Una stazione si annuncia base, porta Internet o ripetitore solo se ha correzioni da dare: una base ancora in auto-posizionamento, o un ripetitore che non riceve niente, si annuncia rover e non attira nessuno;
- da quanto è accesa, la memoria libera e la versione del firmware;
- su un rover, il ripetitore a cui chiede le correzioni, oppure nessuno;
- dal firmware 1.3.18, la sua posizione (latitudine, longitudine, quota) e la soluzione: 3D, RTK float o RTK fix.
Ogni stazione tiene in una tabella le righe che sente, con il segnale di ciascuna e i secondi
dall'ultima. È questa tabella che permette alla rete di riorganizzarsi da sola, ed è la stessa
che si legge per controllarla: dal vivo nel menu seriale r, oppure nella pagina di
configurazione, che mostra le stazioni sentite nel minuto prima di entrare in configurazione
(in configurazione ESP-Now è spento). Le colonne sono descritte in
Radio ESP-Now › Stazioni sentite.
Come si riorganizza da sola
Nessuna stazione comanda le altre, e non c'è niente da impostare stazione per stazione: ognuna decide da sola guardando la propria tabella e il flusso delle correzioni. Ecco che cosa succede nei tre casi che contano.
Un rover non sente la sorgente
Figura 3 — Un rover chiede il ripetitore
- Ogni 5 secondi il rover fa i conti con la sorgente: quanti pacchetti ha sentito e quanti numeri mancano. Se non l'ha sentita affatto, o ne ha perso più di uno su cinque, ha bisogno di aiuto.
- Nella sua riga di stato chiede il ripetitore che sente meglio fra quelli che hanno correzioni da dare (chiede 9C04 nell'animazione).
- Il ripetitore legge la richiesta e comincia a ripetere: ogni pacchetto nuovo che riceve lo ritrasmette identico, con lo stesso numero, due volte. Ogni richiesta vale 15 secondi, e il rover la rinnova a ogni riga, cioè ogni 2 s: la barra sotto il ripetitore si riempie a ogni richiesta.
- Quando il rover torna a sentire bene la sorgente, smette di chiedere; 15 s dopo l'ultima richiesta il ripetitore smette di ripetere, e la radio resta libera.
Un ripetitore che non sente bene la sorgente chiede a sua volta a un altro ripetitore, così le correzioni fanno più salti quando serve. I pacchetti non girano mai in tondo: ogni stazione riconosce dal numero un pacchetto già ricevuto, da chiunque arrivi, e lo scarta. Un ripetitore che non sente nessun rover con firmware 1.3.16 o successivo ripete sempre, per servire i rover più vecchi che non sanno chiedere.
Cade un ripetitore
Figura 4 — Cade un ripetitore: si passa all'altro
L'orologio in alto a destra segna il tempo della rete: le attese lunghe passano veloci.
- Il ripetitore in uso si spegne (batteria scarica, guasto, un colpo): le correzioni smettono di arrivare al rover, e le sue righe di stato smettono di arrivare a tutti.
- Dopo 3 secondi senza correzioni il rover torna a cercare il canale, da 1 a 13, per circa 26 secondi: non sa se il problema è il ripetitore o il canale.
- Finita la ricerca si ferma sul canale dove ha sentito la sorgente o un ripetitore con correzioni, e chiede il ripetitore che sente meglio. Quello spento non è più fra i candidati: una stazione che tace da 15 s non viene più scelta.
- Il nuovo ripetitore comincia a ripetere e il rover torna in RTK fix, in circa mezzo minuto dallo spegnimento.
Se non c'è nessun altro ripetitore a portata, il rover continua a cercare il canale finché non sente di nuovo la sorgente o un ripetitore. Intanto resta senza correzioni: continua a registrare, ma le posizioni non sono in RTK fix. Quando il ripetitore si riaccende, il rover lo ritrova da solo.
Cade la porta Internet
Figura 5 — Cade la porta Internet: subentra la riserva
Si possono mettere due o più porte Internet, una che trasmette e le altre di riserva.
- Con più porte Internet trasmette solo quella con l'ID più basso. Le altre ricevono comunque il caster e lo usano per sé (anche loro sono rover e misurano il proprio punto), ma finché sentono trasmettere quella con l'ID più basso tacciono.
- La porta Internet che trasmette si spegne, o perde Internet o il caster: le sue correzioni smettono di arrivare.
- La riserva conta il silenzio. Dopo 15 secondi senza sentirla, la porta con l'ID più basso fra quelle rimaste comincia a trasmettere le correzioni del suo caster.
- Intanto i rover, dopo 3 s senza correzioni, cercano il canale; trovano la nuova sorgente e tornano in RTK fix fra mezzo minuto e un minuto dalla caduta, a seconda del canale.
Una porta Internet tace anche quando sente le correzioni di una base: con una base e una porta Internet, la porta Internet resta di riserva alla base e subentra 15 s dopo che la base si ferma. Una base ancora in auto-posizionamento non manda correzioni e non fa tacere nessuno. Perché tutto questo funzioni, le porte Internet devono sentirsi fra loro: stessa rete WiFi (quindi stesso canale) e a portata radio l'una dell'altra.
Se cade un'altra stazione
| Che cosa succede | Che cosa fa la rete |
|---|---|
| si spegne un rover | Alle altre stazioni non cambia niente. Esce dalle tabelle dopo un minuto di silenzio; la sua microSD conserva quello che ha registrato fino a quel momento. |
| si spegne la base | I rover restano senza correzioni e cercano il canale. Con una porta Internet di riserva, questa comincia a trasmettere 15 s dopo; senza, i rover aspettano che la base torni e poi riprendono da soli. |
| la porta Internet perde Internet | Senza dati dal caster non manda più correzioni: per i rover è come se fosse spenta, e una porta Internet di riserva con una connessione propria subentra dopo 15 s. |
| torna la corrente | Ogni stazione riparte nel suo Modo all'accensione e rientra nella rete da sola: i rover ritrovano il canale, i ripetitori riprendono a rispondere alle richieste. |
| una stazione nel menu seriale | Mentre il menu seriale è aperto la stazione non manda righe di stato. Un ripetitore lasciato nel menu per più di 15 s non viene più scelto: leggere quello che serve e uscire. |
| una stazione in configurazione | In configurazione ESP-Now è spento: un ripetitore in configurazione non ripete, e i rover che dipendono da lui restano senza correzioni finché non torna in rover. |
Dati di ogni stazione verso un raccoglitore
Dal firmware 1.3.18
Figura 6 — I dati UBX dei rover verso il raccoglitore
Ogni stazione registra già la propria posizione sulla sua microSD. Dal firmware 1.3.18 può anche mandare i suoi dati GNSS, via ESP-Now, a una stazione che fa da raccoglitore e li salva tutti sulla sua microSD: per avere i dati di tutto il sito basta passare da una stazione sola.
- Ogni stazione che manda ha Invia UBX su ESP-Now acceso. Mette in pacchetti i messaggi NAV-PVT (posizione), RXM-RAWX (misure grezze) e RXM-SFRBX (dati di navigazione dei satelliti) che il suo modulo GNSS produce: solo quelli accesi in Frequenze dei messaggi, con la loro frequenza.
- Ogni pacchetto porta l'ID della stazione e un numero, e parte due volte a 10 ms di distanza, come le correzioni. I firmware precedenti alla 1.3.18 non lo riconoscono e lo scartano.
- I ripetitori li ripetono sempre, anche senza richieste: i dati di un punto lontano arrivano al raccoglitore passando da un ripetitore (D45C nell'animazione). Ogni stazione scarta le copie, riconoscendole dalla stazione d'origine e dal numero.
- Il raccoglitore, con Raccogli UBX da ESP-Now
acceso, scrive una volta al secondo i dati di ogni stazione in un file suo, uno per stazione
e per giorno:
ESPNOW_<ID>_<aammgg>.ubx, per esempioESPNOW_5A21_261008.ubx(ESPNOW_5A21.ubxfinché l'orologio non è impostato). I dati del raccoglitore stesso non finiscono lì: li registra già come ogni stazione. - I file si scaricano dal raccoglitore con la Gestione file e si elaborano come i file registrati da ogni stazione.
Le righe di stato portano anche la posizione di ogni stazione, con la soluzione (3D, RTK float, RTK fix): la tabella delle stazioni sentite del raccoglitore mostra dove si trova ogni punto anche senza i messaggi UBX.
Ogni casella di Frequenze dei messaggi dice ogni quante misure esce il messaggio: con la
misura a 4 Hz di fabbrica, 4 vuol dire una volta al secondo. Nel menu seriale i tre
messaggi stanno in 2 → 4 (NAV, voce 16 PVT) e 2 → 3 (RXM, voce 3 RAWX e voce 6
SFRBX).
| Al banco | Che cosa arriva |
|---|---|
| a regime | Arriva il 99 % dei byte mandati. |
| messaggi interi | Nel file il 95 % dei byte sono messaggi interi. Un pacchetto perso rovina tutto il messaggio di cui portava un pezzo, e un RXM-RAWX occupa circa cinque pacchetti; i programmi di calcolo saltano i messaggi rotti e usano gli altri. |
| all'avvio | Se la sorgente riparte, i rover cercano il canale e nel frattempo si perde di più. |
Il file del raccoglitore non è una copia esatta: la copia completa resta il file registrato sulla microSD di ogni stazione. Quante stazioni possono mandare insieme è in Limiti.
I ruoli in breve
| Stazione | Dove | Come si imposta | Dettagli |
|---|---|---|---|
| Base | Su terreno stabile, fuori dall'area che può muoversi, in vista dei punti | Modo Base in Fissa, Radio su ESP-Now | Correzioni RTK › Base e rover su ESP-Now |
| Porta Internet | Al posto della base, o come sua riserva: dove c'è il WiFi con Internet | Rover con il client NTRIP e Porta Internet ESP-Now accesi, Radio su ESP-Now | Radio ESP-Now › Porta Internet |
| Rover | Su ogni punto da sorvegliare, fissato a un pilastrino o a una staffa | Rover, Radio su ESP-Now, Porta Internet ESP-Now spenta, registrazione accesa | Registrazione su microSD |
| Ripetitore | Dove il segnale della sorgente non arriva: fra la sorgente e i punti più lontani | Rover con Ripetitore ESP-Now spuntato; è anche lui un punto misurato | Radio ESP-Now › Ripetitore |
| Raccoglitore | Dove arrivano i dati di tutte le stazioni, direttamente o da un ripetitore | Base o rover con Raccogli UBX da ESP-Now e una microSD; facoltativo | Dati di ogni stazione verso un raccoglitore |
Basta una sola sorgente di correzioni: una base o una porta Internet. Base, porta Internet e ripetitore sono anche loro reference station MS2net, con lo stesso firmware: il ruolo lo decidono le impostazioni.
Come si mette in opera
- Aggiornare ogni stazione al firmware 1.3.16 o successivo (1.3.18 per i dati UBX), tutte insieme (Aggiornamento del firmware). Che cosa vedi: la versione in Quale versione è installata.
- Scegliere una chiave di rete per il sito e scriverla in
Configurazione radio su ogni stazione, poi Salva. Che cosa vedi: il menu seriale
rmostra(set). - Preparare la sorgente: la base su terreno stabile, in Fissa e con Radio su ESP-Now, oppure una porta Internet (Radio ESP-Now › Porta Internet). Che cosa vedi: sulla base il LED NET lampeggia azzurro mentre partono le correzioni.
- Su ogni stazione di un punto, mettere Radio su ESP-Now e lasciare spenta Porta Internet ESP-Now. In Registrazione su microSD lasciare acceso Registra sulla microSD e portare Tempo massimo di registrazione (min) alla durata della campagna: di fabbrica la registrazione si ferma dopo 24 ore. Mettere Modo all'accensione su Rover, poi Salva ed Esci. Che cosa vedi: il display mostra Rover.
- Fissare ogni stazione sul suo punto, con l'antenna GNSS a cielo aperto, e accenderla. Che cosa vedi: entro qualche decina di secondi l'icona ESP-Now si alterna con la freccia verso il basso, poi il LED RTK si accende fisso (RTK fix).
- Dove una stazione non riceve correzioni, mettere un ripetitore fra lei e la sorgente (Radio ESP-Now › Ripetitore). Che cosa vedi: nelle stazioni sentite quel rover mostra l'ID del ripetitore nella colonna Ripetitore, e il rover arriva in RTK fix.
- Se si vuole un raccoglitore: su ogni stazione che deve mandare i
suoi dati accendere NAV-PVT, RXM-RAWX e RXM-SFRBX in
Frequenze dei messaggi, con la frequenza voluta, e
Invia UBX su ESP-Now in Configurazione radio (
r→8), poi Salva. Che cosa vedi: nel menu serialerla rigaUBX since startcon i byte inviati che crescono. - Sulla stazione che raccoglie, con una microSD inserita, accendere Raccogli UBX da ESP-Now
(
r→9), poi Salva ed Esci. Che cosa vedi: nel suo menurcresconoheard from othersesaved, e nella Gestione file compare un fileESPNOW_<ID>_<aammgg>.ubxper ogni stazione che manda. - Controllare tutta la rete dal menu seriale
rdi una stazione, come in Come si controlla, poi uscire dal menu. Che cosa vedi: tutte le stazioni elencate, età da 0 a 2 s, stesso firmware.
Come si controlla
Ogni stazione tiene la tabella delle stazioni sentite:
ID della stazione, ruolo, segnale, secondi dall'ultima riga, il ripetitore che ogni rover sta
chiedendo, firmware, tempo di accensione, memoria libera e, dal firmware 1.3.18, la posizione
con la soluzione. Aprire il menu seriale r su una
stazione qualsiasi della rete e leggerla; poi uscire dal menu, perché una stazione nel menu non
manda righe.
| Che cosa si vede | Che cosa vuol dire |
|---|---|
| ci sono tutte | Compare ogni stazione della rete, con età da 0 a 2 s e lo stesso firmware: la rete è completa. |
| ne manca una | Quella stazione è spenta, fuori portata, ha una chiave di rete diversa o un firmware precedente alla 1.3.16. |
| segnale debole | Sotto -80 dBm il collegamento è al limite: alzare le antenne o mettere un ripetitore. |
| ripetitore chiesto | Un rover con un ID nella colonna Ripetitore non sente la sorgente e dipende da quel ripetitore: tenere acceso il ripetitore. |
| due porte Internet | Due stazioni con il ruolo Porta Internet per più di 15 s non si sentono fra loro, e i rover in mezzo sentono due sorgenti: tenere una sola porta Internet, oppure portarle a portata l'una dell'altra. |
| dati UBX | Sul raccoglitore la riga UBX since start conta i byte sentiti dalle altre stazioni (heard from others) e quelli salvati (saved). Se cresce il numero fra parentesi dopo saved, i dati non trovano posto sulla microSD: assente, piena o lenta. |
Se ogni rover è in RTK fix lo dice la stazione stessa, con il LED RTK
e il display. Sul ripetitore e sulla porta Internet il menu seriale r dice anche se stanno
ripetendo o trasmettendo, e i contatori dei pacchetti sono in
Radio ESP-Now › Contatori.
Limiti
| Limite | Che cosa vuol dire |
|---|---|
| portata | ESP-Now arriva al massimo a qualche centinaio di metri in vista, molto meno con ostacoli (Portata e collegamento). Ogni ripetitore allunga di un passo, e ogni salto è una stazione in più che deve restare accesa. |
| potenza | Potenza WiFi massima (di fabbrica 11 dBm) limita anche ESP-Now: tiene la potenza irradiata entro le regole, e con meno potenza la portata è minore. |
| dati | Ogni rover registra sulla sua microSD; via ESP-Now arrivano a un raccoglitore solo NAV-PVT, RXM-RAWX e RXM-SFRBX, e non tutti interi. I file completi si prendono da ogni stazione (Gestione file); per elaborarli dopo, scegliere Frequenze di registrazione (Registrazione su microSD). |
| riferimento | Le posizioni si riferiscono alle coordinate della sorgente. Tenere la base in Fissa per tutta la campagna (Auto-posizionamento o Fissa); le posizioni misurate con le correzioni di una porta Internet possono differire da quelle misurate con la base: annotare quando la sorgente cambia. |
| buchi | Quando cade un ripetitore o la sorgente, i rover che ne dipendono restano senza correzioni da mezzo minuto a un minuto, il tempo di ritrovare il canale: nei dati quel tratto non è in RTK fix. |
| banda | RXM-RAWX, RXM-SFRBX e NAV-PVT una volta al secondo fanno circa 1,6 KB al secondo per stazione, sullo stesso canale delle correzioni, e ogni ripetitore li manda di nuovo: non più di una decina di stazioni che mandano le misure grezze una volta al secondo. |
| memoria | Invia UBX su ESP-Now prende 4 KB di memoria, Raccogli UBX da ESP-Now 8 KB, solo quando sono accesi. |
| otto stazioni | Ogni stazione ricorda otto altre stazioni: dove una stazione ne sente più di otto, la sua tabella mostra solo le otto sentite più di recente, e sceglie il ripetitore fra quelle. Anche le copie dei dati UBX si riconoscono per otto stazioni d'origine alla volta: con più stazioni che mandano, una copia arrivata in ritardo da un ripetitore può finire due volte nel file. |
| firmware | Ogni stazione deve avere il firmware 1.3.16 o successivo: un rover più vecchio non chiede il ripetitore, e un ripetitore lo serve solo finché non c'è a portata nessun rover 1.3.16 o successivo. Per mandare, ripetere e raccogliere i dati UBX serve la 1.3.18: i firmware precedenti scartano quei pacchetti. |