Sperimentazione LoRa: qualche piccolo ripasso…
Come spiegato nel mio precedente articolo sul tema della sperimentazione LoRa, durante gli ultimi mesi stiamo riuscendo a concretizzare un primo nucleo di nodi in grado di portare avanti un poco di sperimentazione sull’uso di LoRa per applicazioni radioamatoriali, che andasse oltre la semplice attivazione di un nodo per far comparire i propri spots su aprs.fi.
Durante questa fase mi è capitato di interagire con parecchi di voi direttamente e questo mi ha consentito di avere degli ottimi feedbacks che ho cercato di mettere rapidamente a frutto per migliorare la comprensione del che cosa intendiamo per “sperimentazione LoRa” e apprezzare la possibilità ed il piacere di andare oltre gli attuali evidenti limiti dell’uso tradizionale di LoRa…
Quello che vorrei provare a fare con questo articolo, ed altri che mi propongo di scrivere, è cercare di condividere qualche considerazione che purtroppo molti non conoscono, a proposito di LoRa e dei dispositivi pensati per sfruttare questo protocollo.
In questo articolo vorrei innanzitutto parlare di cosa distingue LoRa da altri sistemi di comunicazione e del perchè ha senso fare sperimentazione con LoRa… il confronto più immediato che mi viene è ovviamente con la classica applicazione APRS basata sul modo di trasmissione AFSK che molti conoscono.
Mi propongo nel seguito di NON usare assolutamente un gergo da tecnici iniziati in quanto mi interessa soprattutto farmi capire dai non tecnici 🙂 quindi mi scuso anticipatamente con i “tecnici” per tutte le imprecisioni che eventualmente ci saranno ….
Come credo tutti sapete LoRa è un sistema di trasmissione a “spettro disperso”… questo significa che l’energia impiegata per la trasmissione radio non viene affidata ad una precisa frequenza di trasmissione che funge da “portante” per la componente informativa della trasmissione (modulante), ma viene affidata ad “una modalità” di “spostamento della frequenza di trasmissione” di una portante radio tradizionale… questo comporta che per “scoprire” la presenza di un segnale LoRa non è sufficiente sintonizzarsi su di una precisa frequenza ed osservare l’andamento nel tempo dell’intensità di segnale radio ricevuto…..
Se si vuole “scoprire” la presenza di un segnale LoRa bisogna conoscere il modo in cui la portante del segnale viene “spostata nel tempo” ed “agganciarsi” a questo spostamento seguendo gli spostamenti nel tempo… e notando gli eventuali “salti” che si evidenziano … il contenuto informativo in effetti è rappresentato proprio dai “salti” che si osservano durante questo inseguimento…
Come si può vedere è una metodica completamente diversa dalle classiche modulazioni di ampiezza, frequenza e/o altre similari…
Indubbiamente questa modalità di lavoro è sconvolgente in quanto impone di utilizzare una metodica di trasmissione e ricezione abbastanza complessa che richiede un ampio uso di tecniche “digitali” per implementare praticamente un trasmettiotre ed un ricevitore… oggi tutto questo non è un grosso problema alla luce della possibilità di usare metodiche di implementazione basate sull’uso di tecniche di integrazioni a larga scala in grado di generare dispositivi che possono essere resi disponibili a costi estremamente bassi nonostante la enorme complessità interna dei dispositivi stessi…
Il fatto che in questo sistema la “portante” tradizionale viene sostituita con “una regola di spostamento della frequenza di una portante radio” ha una enorme ricaduta in termini di funzionalità possibili e di modi diversi con cui può essere impiegato un certo “canale radio”….
In effetti se si osserva un segnale lora con un classico ricevitore SDR in grado di mostrare un “waterfall” dei segnali presenti nella banda osservata, si noterà un segnale che occupa una banda di , per esempio, 125 KHz con un profilo del segnale di tipo praticamente “rettangolare” come nelle figure seguenti….
In effetti si vede che l’energia del segnale LoRa è “spalmata” su un “canale” radio che mostra una certa “larghezza di banda” (BW) … se si aumenta la velocità del “waterfall” in modo da rendere evidente come questa energia si posiziona nel tempo si scopre ( figura a seguire) che in realtà ci sta un segnale la cui frequenza “pendola” tra i due valori che delimitano il “canale” radio occupato… con dei “salti” … è esattamente quello che ho cercato di descrivere prima…
E’ evidente che quindi quello che può essere “cambiato” in questa modalità è rappresentato dai seguenti aspetti:
- la “larghezza” del canale radio impiegato: questo parametro viene chiamato “Bandwidth BW”: valori tipici sono da 7,8KHz a 500 KHz, con un valore classico di 125 KHz.
- la inclinazione del “pattern” di spostamento della frequenza: viene chiamato “Spreading Factor” SF e rappresenta,se ci pensiamo un momento, una indicazione del modo in cui “viene sparpagliata” l’energia del segnale nel tempo e sul campo di frequenza occupato dal canale radio.
E’ quindi abbastanza facile immaginare che se fissiamo un certo valore di BW, modificando il valore di SF sia possibile realizzare diverse “regole” di sparpaggliamento dell’energia del segnale…. ovviamente quindi affinchè un trasmettitore ed un ricevitore possano decifrare un certo contenuto informativo, si devono mettere daccordo su un certo numero di cose:
- la larghezza ed il posizionamento del canale radio da occupare: quindi un valore di frequenza centrale del canale ed un valore di BW
- un valore di SF ovvero di modo di sparpagliamento dell’energia da usare.
- una metodica per “agganciare” il “pendolamento” della frequenza di trasmissione in modo che il ricevitore possa “misurare” l’intensità del segnale ricevuto via via che si sposta per capire se ci sta o meno una trasmissione in atto ed essere in grado di decidere se ci stia o meno “attività” su quel canale radio, ed in caso affermativo scoprire i famosi “salti” di cui si parlava prima e che come dicevamo rappresentano il reale contenuto informativo che si intende trasmettere/ricevere.
- Se le condizioni dei punti precedenti sono presenti il ricevitore sarà in grado di produrre un flusso di dati di tipo pacchettizzato … in pratica quando il ricevitore si sarà “agganciato” al trasmettitore e se l’intensità del segnale radio che riesce a misurare in condizioni di “aggancio” è sufficientemente forte, il ricevitore sarà in grado di recuperare degli “0” o degli “1” a seconda dei famosi “salti” di cui si parlava prima…. ovviamente il trasmettiotore dovrà fare in modo che questo flusso di 0 ed 1 sia “decifrabile” e “individuabile” come inizio e fine di un pacchetto… quindi esisteranno delle regole per scoprire e recuperare dei “pacchetti” di 0 ed 1 che rappresentano il contenuto informativo trasmesso e ricevuto…
- Purtroppo è verosimile che durante la trasmissione ci possano essere “dei buchi” o “degli errori” nel recupero di un pacchetto di bits… e qui interviene la matematica!!!!! Fortunatamente grazie ai lavori di tanti esperti di “teoria dell’informazione” è possibile “codificare” un certo insiemi di bits introducendo ad arte una certa “ridondanza” ovvero aggiungendo ad arte degli altri bits in trasmisisone in modo tale che in ricezione, con delle opportune operazioni matematiche sia possibile scoprire o addirittura correggere il flusso di 0 ed 1 e recuperare il pacchetto trasmesso in maniera integra!!!! Questa metodica si traduce nel definere ed utilizzare un certo “Coding Rate CR” ovvero un numero che indica quanti bit di ridondanza sono aggiunti al flusso dati utile; è evidente che usare un coding rate alto aumenta il numero di bit aggiunti e quindi aumenta il tempo impiegato per trasmettere un certo pacchetto.
- La metodica del punto 5. è certamente molto potente, ma non è sufficiente per capire se un pacchetto di bits sia stato o meno affetto da qualche errore… ecco allora che sempre la matematica ci viene in soccorso con una altra tecnica che è l’uso di un CRC ( Cyclic Redudancy Check) ovvero controllo di ridondanza con codici ciclici… questa metodica calcola per ogni “pacchetto” di bits un nuovo “pacchettino” di bit ( chiamato appunto CRC) che viene aggiunto in coda al pacchetto originario e trasmesso … il ricevitore effettua una operazione complementare sull’insieme dei bits rucevuti e può riuscire a capire se il pacchetto ricevuto sia integro o se ci siano degli errori, e addirittura essere in grado di correggere degli eventuali errori… “tutte meraviglie” rese possibili dalla “teoria dei codici ciclici”…
- A valle quindi di una serie di operazioni matematiche il ricevitore sarà in grado periodicamente di segnalare se ci sta qualche nuovo pacchetto ricevuto e se questo pacchetto è integro o errorato!!!!!
- A questo punto sembrerebbe che oramai sia tutto chiaro… ma purtroppo ci sta ancora qualche piccolo dettaglio da considerare… dei vari dettagli ne voglio solo citare due che possono essere settati tipicamente in fase di inizializzazione di una coppia RX/TX…
- Un primo dettaglio è relativo al meccanismo di “delineamento” di un pacchetto…. è un classico problema che si pone ogni qualvolta si tratta di estrarre da un flusso di bit seriale una “struttura” di pacchetto…. innanzitutto si deve consentire al ricevitore di “sincronizzarsi ed allinearsi” al trasmettitore… questo avviene trasmettendo una sequenza di pendolamenti nota e terminata con una qualche “eccezione” che marca l’inizio del pacchetto di dati utili… la lunghezza di questa fase iniziale si misura in “numero di pendolamenti” ed è chiamata “Preamble Length” ovvera lunghezza del preambolo… più è lunga più è sicuro l’allineamento tra RX e TX… ma più lungo è il tempo di impegno del canale…. i valori tipici sono da 4 a 12
- Un secondo parametro un poco più intrigante è il cosiddetto “LoRa Sync” … si tratta di un minipacchetto di bits che svolge un ruolo chiave nel processo di allineamento e delineamento dei pacchetti e che può essere usato per discriminare diversi modi di “riempimento” dei pacchetti dati… nella definizione del protocollo LoRa questo parametro ha solo due valori possibili allo stato, di cui uno pensato per consentire di definire un certo tipo di flusso dati come “pubblico” ed un altro come “privato”… in pratica questo parametro resta abbastanza criptico per cui in genere non viene mai modificato rispetto ai valori di default.
Tutti questi parametri definiti sopra sono elementi che vanno impostati quando si vuole usare un chip LoRa… a seguire mostro una tipica schermata di setup di questi parametri…
Come si può notare è possibile impostare indipendentemente le caratteristiche ri ricezione e di trasmissione come pure tutti i parametri indicati in precedenza; a seconda del chip LoRa installato sarnno ovviamente disponibili diversi insiemi di valori per i diversi parametri presenti.
Per chi ha una voglia irrefrenabile di complicazioni e dettagli riporto a seguire anche un esempio di “struttura di un pacchetto LoRa” in cui sono riportati i vari campi che compongono un pacchetto LoRa ( nel formato “explicit Header” che è quello generalmente utilizzato oggi) : come si può notare ogni pacchetto contiene oltre al “payload” ovvero il pacchetto di dati “utili” una serie di altri campi che consentono di delineare il pacchetto e di capire se siano presenti elementi quali il CR (Coding Rate) o il CRC e come siano valorizzati ( in particolare il CR).
Prima di concludere questa chiacchierata vorrei però accennare ad altre due o tre cose che credo siano estremamente importanti e che evidenziano le potenzialità e semmai i limiti del protocollo LoRa.
La prima considerazione riguarda il “come” sia possibile capire se su un certo canale sia presente una trasmissione LoRa: su questo tema in giro sono circolate svariate dissertazioni che hanno proposto di trattare un segnale LoRa con le metodiche usate in altri contesti per scoprire se su un canale sia presente una trasmissione e per evitare di “collidere” con una trasmissione in atto… francamente molte i queste presunte metodiche in realtà non sono utilizzabili per il banale motivo che si basano sulla “misura” di un segnale presente in antenna… purtroppo con il protocollo LoRa possono essere presenti e correttamente decifrabili anche segnali radio COMPLETAMENTE sommersi nel rumore!!!! e quindi osservando l’andamento temporare del segnale radio non è possibile assolutamente avere la certezza che un segnale LoRa sia o meno presente su un certo canale…. l’unica metodica che può fornire questa certezza è… il tentativo di verificare sfruttando gli algoritmi di decodifica completi di un chip LoRa se si riesce a notare qualche “pendolamento”… attivo… i chips LoRa sia di prima che di seconda generazione includono quindi una funzionalità che viene definita CAD “Channel Activity Detection” il cui scopo è proprio quello di scoprire se è in atto su un certo canale una trasmissione LoRa anche se sepolta nel rumore!!!
I chips LoRa di prima generazione tipo SX1278 e similari (omminipresenti in quasi tutti gli schedini cinesi presenti sul mercato) implementavano però una metodica CAD estremamente primitiva che era in grado di scoprire esclusivamente i “preamboli” dei pacchetti LoRa, mentre era cieca sul resto del corpo di un pacchetto LoRa… di conseguenza la metodica era estremamente “carente” nei suoi obiettivi. Con i chips LoRa di seconda generazione tipo gli SX126x (che usiamo sempre nei nostri HW Sarimesh) invece questa funzionalità è stata potenziata ed estesa all’intero corpo di un pacchetto LoRa con il che il CAD è diventato concretamente utilizzabile allo scopo di limitare le collisioni nel tentativo di inviare da parte di un TX un pacchetto su un certo canale…
La funzione del CAD come si può capire è estremamente importante per evitare e soprattutto limitare la congestione su un canale radio in quanto se un TX impegna un canale già in uso verosimilmente il pacchetto in fase di trasmissione da parte del vecchio dispositivo che impegnava il canale verrà errorata e quindi inutilizzabile agli effetti della comunicazione… se quindi si usa la metodica CAD un TX prima di iniziare a trasmettere potrà accertarsi che il canale sia almeno al momento libero e quindi potrà avere una maggiore probabilità di mandare a buon fine l’invio e la ricezione del suo pacchetto.
Nella descrizione del CAD avrete notato che ho osservato che un pacchetto LoRa può essere “scoperto” e ricevuto correttamente anche se SEPOLTO letteralmente nel rumore radio….
Il motivo di questa mia affermazione è semplicemente legato al fatto che il rumore che si vede su un canale senza particolari “occhiali” è qualcosa che per una trasmissione LoRa non è particolarmente significativo..
Infatti la ricezione di un segnale LoRa richiede di inforcare degli “occhiali ” particolari che consentono di vedere solo quello che appare “seguendo” gli spostamenti della portante radio istantanea… è come dire che siamo su due auto che sfrecciano sull’autostrada ad alta velocità con due amici che si guardano … se vannno alla stessa velocità si vedranno tranquillamente anche se tutto l’ambiente circostante apparirà completamente sfocato e non disturberà la visione reciproca dei due amici…. in altri termini l’aggancio dei pendolamenti fa si che il segnale LoRa si “correli fortemente” mentre il rumore di fondo si “scorreli fortemente”…. questo fenomeno viene chiamato “guadagno di processo” e si traduce nel realizzare in pratica un aumento equivalente della intensità di un segnale LoRa che può arrivare a seconda dei parametri di pendolamento (SF) usati anche a 20 db ovvero cento volte…. questo significa in pratica che il rumore viene “attenuato” di altrettanto… in termini pratici si riesce a detezionare segnali radio il cui rapporto Segnale/Rumore può essere anche di -20 db ecco il motivo per cui parlavo di “segnale letteralmente sepolto nel rumore”.
Il guadagno di processo è il parametro più significativo del protocollo LoRa e spiega il perchè LoRa oggi sia tanto utile nel campo dell’IOT (Internet Of Things)… a partità di altri fattori consente equivalementente di usare potenza fino a 100 volte inferiorri rispetto ad altri sistemi e quindi a consumi di energia estremamente più bassi o durata delle batterie estremamente più alti.
Una altra osservazione su cui vi volevo far riflettere è la cosiddetta “ortogonalità” dei modi di trasmissione LoRa….
E’ questa una proprietà completamente non considerata da molti cultori del APRS LoRa, ma che è una delle principali caratteristiche positive del potocollo LoRa che lo rende così versatile ed interessante per le applicazioni IoT… ma che in ambito radioamatoriale ci si ostina a non considerare assolutamente….
Avrete compreso certamente che la caratteristica base di lora è che il contenuto informativo con è legato al valore di una frequenza ma alle modalità di “pendolamento” della frequenza della portante… orbene questo attributo fa si che sia possibile tramite delle opportune scelte di parametri, e sfruttando le proprietà matematiche del segnale LoRa far si che si possano “accecare” completamente dei segnali LoRa diversi da quelli che sposano una certa modalità di pendolamento… questo significa che su uno stesso esatto canale radio possono essere presenti più trasmettiotri che pur impiegando esattamente lo stesso canale per il solo fatto di trasmettere con parametri “ortogonali” possano tranquillamente essere in grado di essere ricevuti dagli altri ricevitori sintonizzati sugli stessi parametri, senza che questo comporti interferenza o errori di trasmissione….
Se ci pensate questa proprietà è fantastica in quanto consente di usare un canale per realizzare trasmissioni rimultanee da parte di fino a 8 diversi coppie TX/RX… questa proprietà viene pesantemente sfruttata nell’impiego IoT del protocollo LoRa per ottimizzare l’utilizzo del canale radio…
Ovviamente tutto questo ha però dei costi: infatti come dicevamo prima per poter ricevere un segnale LoRa è necessario “eseguire” una enormità di operazioni matematiche e solo alla fine delle operazioni scoprire se ci sta o meno un segnale… in altri temini per ricevere 8 modi diversi su un certo canale bisogna implementare 8 ricevitori che lavorano in parallelo sul segnale ricevuto…
Questo è quello che fanno per es. i chips pensati per essere utilizzati nei cosiddetti “concentratori” LoRa per l’uso come IoT…. sono chips in genere specializzati per l’uso come IoT e che non si prestano purtroppo per l’uso in ambito radiomatoriale.
Volendo usare più modi di trasmissione rimultanei su uno stesso canali, come radioamatori, siamo quindi costretti ad usare degli HW in cui ci siano più chips LoRa montati e che ricevono lo stesso segnale radio… ogni chip potrà operare indipendentemente secondo il modo in cui è impostato e produrrà una uscita relativa esclusivamente a quel modo di trasmissione.
E’ questo che viene implementato per es. sulla scheda Maxi Sarimesh.
Una ultima considerazione che vorrei presentare è una tabella che riporta per i vari valori di BW e SF i valori di “sensibilità” e di “velocita di trasmissione” possibili utilizzando il protocollo LoRa”: dalla tabella è facile evidenziare come usando valori più alti di SF si ottiene una sensibilità maggiore ma a discapito di una velocità di trasmissione minore, e viceversa…
A questo punto penso di aver esplorato le caratteristiche più importanti del protocollo LoRo e spero anche di aver evidenziato l’ampiezza della sperimentazione che oggi è possibile fare con questo protocollo… ovviamente la trattazione non è esaustiva ma spero almeno di aver provato a dissipare un pcoo della nebbia che avvolge questa tecnologia ed aver cercato di evidenziare come si possa agire per ottenere risultati migliori di quanto ad oggi noi radioamatori stiamo facendo con questo protocollo.
Commenti
Sperimentazione LoRa: qualche piccolo ripasso… — Nessun commento