Arduino: come costruire una rete LORA (long range)
Arduino e reti wireless LoRa (long range)
Si riporta in parte il documento redatto da Paolo Bonelli , che spiega veramente bene: come costruirsi una MiniReteLoRa .... e monitorare qualsiasi cosa (o quasi)AGGIORNAMENTO PDF ITA ver.3 del 29 Nov. 2022 disponibile a fondo pagina
AGGIORNAMENTO PDF ENG ver.5 del 29 Ago. 2023 disponibile a fondo pagina
Sommario
- Introduzione
- Cos'è e a cosa serve una MiniReteLoRa
- Perchè scegliere una MiniReteLoRa
- Come si fa?
- Hardware
- La scheda-sensore TX: LILYGO TTGO T-Deer Pro Mini
- La scheda Ricevitore RX: LILYGO TTGO LoRa32 T3_V1.6.1 (LoRa32 V2.1_1.6)
- La scheda Ricevitore RX: LILYGO TTGO LORA32 868/915Mhz (LoRa32 V1.0)
- Software
- La struttura del messaggio inviato
- Programma per un nodo TX: TX_Generic
- Struttura del programma per un nodo RX: RX_Generic_autoconnect
- Il livello del segnale RSSI e le antenne
- Librerie
- Server esterni
- Funzionamento del nodo RX
- Prove di affidabilità di una MiniReteLoRa
- Conclusioni
Introduzione
Oggi si parla tanto di IOT (Internet Of Things), intendendo oggetti sparsi per la casa, la fabbrica o un campo aperto che mandano dati su Internet allo scopo di monitorare parametri critici ed eventualmente attivare segnali di allarme.Sistemi del genere sono già in commercio, ma, oltre al prezzo, l'ostacolo principale per un chi cerca un'applicazione particolare è la loro scarsa duttilità.
Quali tecnologie può usare un privato che vuol fare tutto da sè?
Per un privato con poca dimestichezza con l'elettronica è necessaria una tecnologia di trasmissione dati che usi hardware economico e software open source possibilmente di facile uso; inoltre può essere utile che questi sistemi funzionino anche fuori dalle mura di casa, all'aperto, dove non è presente alimentazione elettrica e rete WiFi.
In questo articolo si impara a costruire una rete di sensori che trasmettono i dati su Internet a basso costo, muovendono i primi passi verso un'esperienza entusiasmante, forse al pari di quella provata da Guglielmo Marconi alla fine del XIX secolo, quando, nel parco della sua villa, vide arrivare, con grande giubilo sul suo ricevitore rudimentale, un segnale trasmesso via radio e partito a qualche chilometro di distanza.
Cos'è e a cosa serve una MiniReteLoRa
Partiamo da alcuni esempi di applicazioni pratiche:
- in un campo coltivato c'è la necessità di misurare la temperatura dell'aria, del suolo, il contenuto di acqua nel terreno e altro, ma siamo lontani da una casa con WiFi;
- sempre in campagna, dobbiamo comandare una pompa per sollevare l'acqua da un pozzo e riempire un serbatoio quando sta per vuotarsi, ma questo si trova parecchio distante; vogliamo inoltre che la pompa si accenda automaticamente e seguire il funzionamento di tutto il sistema su Internet;
- abbiamo una serra dove è importante tenere sotto controllo la temperatura dell'aria in vari punti per comandare gli impianti di riscaldamento o l'apertura delle prese d'aria, però non vogliamo tirare fili in mezzo alle piante;
- vogliamo sapere dove è andato a finire il nostro cane o la mucca che pascola o la capra che si arrampica su un dirupo.
Fin qui si tratta di applicazioni agricole, ma pensiamo anche alla misura delle polveri sottili in aria nei giardinetti dove giocano i nostri figli, a scuola o più in generale all'inquinamento di ecosistemi acquatici come fiumi e laghi.
Tutte queste applicazioni richiedono sensori, elettronica di acquisizione-trasmissione dei dati e un ricevitore concentratore. Quale sistema si può usare per trasmettere i dati? La rete GSM-4G? Una rete WiFi? Nel primo caso dovremmo pagare un canone e dotare ogni scheda-sensore di una SIM con un consumo di energia che non ci permette di far durare la carica della batteria per mesi; nel secondo caso avremmo bisogno di schede-sensore dotate di WiFi, sempre con un consumo di batteria non trascurabile e un router WiFi/GSM come concentratore con una copertura che non potrebbe superare i 100-200 m.
Da alcuni anni una nuova tecnologia di trasmissione si è resa disponibile con il relativo Hw e Sw: si tratta di LoRa (Long Range). La sigla indica una tecnica di modulazione del segnale radio che permette di avere una grande sensibilità nel punto di ricezione, ne consegue una copertura di chilometri, come dice il nome, con potenza di uscita del trasmettitore ridotta al minimo e tempi di trasmissione brevi per ogni scheda-sensore.
LoRa, in Europa, usa la banda libera di 868 MHz a patto di non occuparla per più del 1% del tempo.
Immaginate un sensore che trasmette pochi dati ogni 5 minuti con un tempo di trasmissione di 70 ms (millisecondi), la percentuale di occupazione della banda è di circa 0,02 % che ci permetterebbe di avere fino a 50 schede sensori!! Il consumo tipico di una scheda sensore è di 140 mA in trasmissione e 0,30 mA a riposo, (con la CPU in sleep), quindi il consumo medio, sempre per lo stesso esempio, è di 0,32 mA. In queste valutazioni non ho tenuto conto del consumo dei sensori, che comunque può essere trascurabile se questi sono attivati solo poco prima della trasmissione dei loro dati.
L'uovo di Colombo per le nostre necessità?
Si ma quali difficoltà si incontrano a costruirsi una rete simile? Esiste in commercio qualcosa chiavi in mano?
Bisogna essere super esperti nel Hw/Sw?
Qui ci viene incontro il mondo dell'open source: quell'universo di conoscenze disponibili sulla Rete, gratuite e spesso rese facili da abili divulgatori. In più esiste un mercato dell'hardware a basso costo che si espande sempre di più offrendoci sensori, microcontrollori e soluzioni di facile cablaggio. Se siamo già capaci di collegare un sensore ad un microcontrollore come Arduino, possiamo con poco sforzo entrare nel mondo dell'Internet of Things (IOT) che usa LoRa e costruirci la nostra MiniReteLoRa.
Adesso cercherò di descrivere l'architettura di quella che io chiamo MiniReteLoRa, una rete di sensori trasmettitori e ricevitore concentratore, completamente autonoma, che non ha bisogno cioè di appoggiarsi a particolari server esterni e sottostare a complessi protocolli.
Figura 1 - Differenze tra una MiniReteLoRa e LoRaWAN
Una MiniReteLoRa è una tecnologia che consente l'acquisizione e trasmissione di grandezze rilevate da sensori, posti in località prevalentemente all'aperto, quindi prive di connettività WiFi, richiedendo poca energia e bassi costi. Nulla vieta comunque di usare questa tecnica anche in un ambiente chiuso, come la nostra casa o fabbrica.
Mentre il termine LoRa indica la tecnologia di modulazione di una portante radio, brevetto della ditta Semtech, i termini MiniReteLoRa e LoRaWAN sono usati per definire un tipo di architettura di dispositivi, con i loro software, che sfruttano la tecnologia LoRa per trasmettere e ricevere dati.
La MiniReteLoRa, che descrivo qui, non va confusa con il protocollo LoRaWAN, creato per un'infrastruttura di rete più complessa e più adatta ad un utilizzo commerciale, fatta per moltissimi nodi trasmettitori e alcuni ricevitori (gateway) collegati in Internet ad un network server gestito da chi offre il servizio. LoRaWAN, avendo più gateway in rete offre una copertura spaziale maggiore.
Nella Figura 1 cerco di illustrare in modo semplice la differenza tra questi due approcci, mentre la Figura 2 mostra lo schema dettagliato di una rete LoRaWAN.
Figura 2 - Schema dettagliato di una rete LoRaWAN (tratto da internet4things )
La MiniReteLoRa l'ho concepita per funzionare senza infrastrutture di terze parti, quindi può essere impiegata ovunque e implementata da chiunque.
La MiniReteLoRa ha un'architettura che prevede:
- più nodi rilevatori/trasmettitori (TX) che svolgono la funzione di acquisire i dati dai sensori, confezionarli in un messaggio che riporta anche alcune informazioni sul nodo e trasmettere in modo broadcast questi messaggi con la tecnologia LoRa;
- un nodo ricevitore (RX) in grado di ricevere e selezionare i messaggi inviati dai nodi TX, estrarne i dati e presentarli in vari modi, quali: display, LED, datalogger. Un'altra possibilità del nodo RX è quella di essere capace di collegarsi ad Internet tramite un hotspot WiFi ed accedere ad un server sul quale depositare i dati ricevuti.
I nodi TX e RX sono costituiti da schede hardware dotate di un microcontrollore programmabile con la IDE di Arduino e di un modulo radio LoRa, gestibile con apposite librerie. Queste schede possono svolgere sia la funzione di TX che di RX, cambiando solo il software.
La trasmissione dei dati può avvenire in modo periodico, controllata da ogni nodo TX in modo autonomo, o in seguito ad un evento esterno registrato dai sensori. In ogni caso si tratta di una trasmissione a senso unico, non è previsto che il TX invii dati su richiesta di un RX. Quest'ultima caratteristica è necessaria se si vuole che il nodo TX consumi meno energia possibile, infatti lo stato di ascolto permanente consuma più energia di una trasmissione periodica.
Tipicamente un TX che trasmette ogni 5 minuti un breve messaggio di 30 byte per 70 millisecondi e poi si mette in uno stato di sleep per il resto del tempo, può consumare anche solo 0,3 -0,4 mA, mentre un RX sempre in ascolto consuma anche 100 volte tanto. Per questo motivo i nodi RX devono essere alimentati con una fonte di energia illimitata o batterie di grande capacità, se si vuole che la MiniReteLoRa funzioni per mesi senza interventi di manutenzione. Questa necessità è ancora più evidente se il nodo RX è collegato ad altre schede che svolgono funzioni di datalogger o invio dati su Internet con WiFi.
In certe applicazioni particolari il nodo TX può mettersi in ascolto di un messaggio di avvio mandato da RX, per esempio per comandare la partenza di più TX in tempi diversi, rimane però sempre la necessità che, a regime, il TX svolga esclusivamente la trasmissione dei dati.
Nonostante la possibilità di impostare da software piccole variazioni di frequenza vicino a quella principale di 868,0 MHz, tutti i nodi TX e il nodo RX di una MiniReteLoRa devono funzionare sulla stessa frequenza. Le possibili interferenze sono ridotte al minimo se il tempo tra due trasmissioni dei nodi TX è lungo rispetto al tempo di occupazione della frequenza nel momento della trasmissione. Essendo quest'ultimo tempo dell'ordine di frazioni di secondo, una periodicità di trasmissione di alcune decine di secondi può essere sufficiente a garantire una bassissima probabilità di interferenze tra alcuni nodi TX. Ancora meglio sarebbe impostare una periodicità di trasmissione diversa per ogni nodo, magari pari a una sequenza di numeri primi di secondi. A questo punto della mia spiegazione, qualcuno si porrà una domanda:
è affidabile una rete dove i dati viaggiano a senso unico? Infatti non è previsto alcun feedback tra il ricevitore e il trasmettitore, se un dato viene perso il trasmettitore non lo saprà mai.
Cerco di rispondere con due argomenti:
- Il sistema di trasmissione LoRa, gestito dalla libreria che useremo nelle nostre applicazioni, ha un suo controllo interno di integrità dei dati. Quindi se un messaggio in arrivo al RX è corrotto, non verrà processato.
- L'affidabilità va quindi valutata in base agli eventuali messaggi persi rispetto al totale (messaggi trasmessi ma non ricevuti o non processati per errori interni). Ma la ridondanza di messaggi farà aumentare l'affidabilità della mini rete. Mi spiego meglio: se per conoscere l'andamento nel tempo di una grandezza ambientale basta un dato per esempio ogni 10 minuti, il nodo TX lo trasmetterà tre o quattro volte ogni 10 minuti, in modo da essere sicuri che almeno uno arrivi a destinazione corretto.
Perchè scegliere una MiniReteLoRa
- Hardware poco costoso;
- Bassi consumi;
- Software semplice e di facile comprensione;
- Librerie consolidate;
- Compatibilità con Arduino e il suo ambiente di programmazione;
- Ricezione e archiviazione dei dati in locale senza necessità di server esterni;
- Eventuale ri-trasmissione dei dati su Internet a diversi server.
Come si fa?
Parliamo adesso prima dell'hardware necessario alla costruzione di una MiniReteLoRa e poi del software. Per semplicità presento solo tre schede microcontrollore, da me testate con successo; ma è bene sapere che MiniReteLoRa può costruirsi anche con altre schede apportando solo piccolissime modifiche al software che presenterò più avanti.-CONTINUA-
Per scaricare il documento completo in formato PDF, con i link per tutti gli sketch da provare su Arduino, questo è il link:
https://www.realmeteo.com/lora_v3.pdf ITA
https://www.realmeteo.com/lora_v5.pdf ENG
Se ti è piaciuto questo articolo, clicca su uno o più banner pubblicitari... sappiamo che sono noiosi ed intrusivi, ma ci consentono di pagare le spese del server senza farti spendere nulla. Grazie
Categorie Articoli
Corso-di-elettrotecnica-ed-elettronica-3-volumi
Libro-tutto-sull-audio---inglese
Libro-ELETTRONICA-FONDAMENTALE
Dove-acquistare-abbigliamento-risparmiando
Come-vedere-le-partite-sullo-smartphone
Come-difendersi-dagli-allegati-pericolosi-nelle-email
KEEPASS-un-posto-sicuro-per-le-nostre-PASSWORD
I-3-trend-estivi-del-2020-scopri-i-tagli-che-ti-stanno-meglio
Ultimi articoli
OPTA-FINDER-ARDUINO-COMPATIBLE APRI
whatsapp-alarm-repeater APRI
Arduino_Template_Menu_Eng APRI
Arduino_Template_Menu APRI
Power-Supply-with-Current-Control APRI
Vantaggi_Alimentatori-Controllo_Corrente APRI
Camping-La-Secca-Moneglia APRI
Safety-Relays APRI
Rele-di-sicurezza APRI
Internal-or-External-Watchdog APRI
Watchdog-interno-o-esterno APRI
Ripetitore-di-allarme-su-Whatsapp APRI
Bufala-in-crosta APRI
Home-Automation-ESPeriment APRI
ESPerimento-Domotica APRI
Arduino-measures-liquid-level APRI
Arduino-misura-livello-liquidi APRI
finder APRI
LORA-english-version APRI
Pluviometro-LORA APRI
Pillole_di_Promessi_Sposi APRI
LORA APRI
promessisposi-riscrittura APRI
Arduino_crashes APRI
Arduino_si_blocca APRI
Arduino_e_Trenino APRI
millis_no_overflow APRI
millis APRI
Arduino_millis_no_Overflow APRI
millis APRI