[gl-como] packet radio su Linux

Luca Lesinigo luca@lesinigo.it
Ven 9 Apr 2021 10:24:19 CEST


Il giorno 8 apr 2021, alle ore 23:18, Elena ``of Valhalla'' <valhalla-l@trueelena.org> ha scritto:
> oltre ai link, abbiamo anche parlato di LoRa e LoRaWan, con una
> dimostrazione in tempo reale di un device che lo usa
> 
> https://en.wikipedia.org/wiki/LoRa

Aggiungo qualche info.

La scheda che vi ho mostrato è prodotta da Adafruit, mi veniva comoda perché era a formato Raspberry Pi Zero (il mio device) ed integrava un minimo di strumenti di I/O, in effetti su tale scheda ci sono tre cose totalmente indipendenti le une dalle altre: la radio (connessa su SPI più qualche GPIO di servizio), un display OLED 128x32 (è su I2C), tre pulsanti (su GPIO). Nelle mie ricerche iniziali avevo visto che ci sono un sacco di progetti di schede simili, diversi anche open source se volete farvi stampare i vostri circuiti in autonomia.

Il mio interesse nasce più che altro dal mondo packet radio in generale (non ho mai giocato col “packet radio” propriamente detto, nonostante sia in possesso di patente di radioamatore ed abbia alcuni amici in tale ambiente), si tratta solitamente di radio che possono trasmettere e ricevere pacchetti di byte, non ci sono reti a cui collegarsi o autenticazioni o protocolli o altro, si sparano byte nell’aria e chiunque sia in ascolto sulla stessa frequenza e con la stessa modulazione li riceve, fine. Da qui la mia analogia del “walkie talkie”.

Di packet radio pronte all’uso con microcontrollori o con normali computer ce ne sono diverse in varie forme e varie tecnologie radio (soprattutto in varie modulazioni). Quella che vi ho mostrato io è in tecnologia LoRa ed “impacchettata” su una scheda di AdaFruit, dallo stesso produttore trovate ad esempio anche la variante RFM69HCW che è una scheda identica ma con sopra una radio non-LoRa ( https://www.adafruit.com/product/4072 ).

La tecnologia radio LoRa è proprietaria di Semtech che la da anche in licenza ad altri soggetti, per cui si trovano sul mercato i sistemi radio-on-a-chip da diversi produttori. La specifica (AFAIK, non verificato) dovrebbe essere liberamente consultabile ma a quanto pare poi le reali implementazioni differiscono in qualche dettaglio subdolo.

Il mondo packet radio su frequenze libere, rispetto a quello più noto di WiFi e reti cellulari, è principalmente adatto a casi con basso budget di potenza (device a batteria che devono durare mesi o anni) o che necessitano di lavorare su grandi distanze (impossibile sia con wifi che con cellulari) o dove il fattore economico è importante (le SIM e le radio cellulari costano tanto, così come costa tanto coprire adeguatamente in WiFi spazi molto ampi). Il rovescio della medaglia è solitamente dato da ampiezze di banda ridotte e duty cycle altrettanto ridotti, per cui si parla di applicazioni dove si trasmette “poche volte al giorno” (un pacchetto ogni 0.25 ~ 24 ore) ed ogni trasmissione è composta di < 255 byte.

Tutto il resto dello stack è, per quel che mi pare di capire, open. In particolare LoRaWAN è pubblicato dalla LoRa Alliance e, per quanto non sia “open source” nel senso che ci si può contribuire, è comunque una specifica pubblica, consultabile e se vi garba “forkabile”. Non ho fatto un’esame dettagliato ma la situazione mi pare abbastanza simile a quella della vostra tipica connessione internet senza fili: il TCP/IP è “open”, il WiFi/cellulare/Eolo che c’è sotto non lo è.

Tale specifica nasce e viene usata soprattutto su LoRa ma non esclusivamente, alcuni esempi:
- le reti LoRaWAN come TheThingsNetwok hanno anche un canale radio specifico per LoRaWAN over FSK (maggiore ampiezza di banda, minore portata)
- Inmarsat vende un servizio di LoRaWAN satellitare (non so che modulazione usino ma dubito fortemente sia LoRa)
- chiunque può usare le specifiche LoRaWAN su qualsiasi tipo di packet radio, anche sviluppata “in casa”, per trasformare una generica accozzaglia di dispositivi packet radio in una rete organizzata e funzionante
Esistono anche alternative a LoRaWAN, ma non ho avuto occasione di approfondirle.

Le librerie software che sto utilizzando sono state realizzate per CircuitPython (una variante di MicroPython, sempre dedicata a girare su microcontroller) ma funzionano altrettanto bene su sistemi Linux; in particolare sto usando “blinka” che è un framework di Adafruit per poter far girare codice CircuitPython senza modifiche su veri dispositivi CircuitPython come su normali interpreti CPython su Linux.

La rete “open” che ho citato è TheThingsNetwork ( https://www.thethingsnetwork.org ) a cui è possibile partecipare come volontari (mettendo un vostro hotspot, gestito con software open source) oppure come utilizzatori (l’esempio che facevo io ieri, anche se non sono ancora riuscito a testarlo in quanto fuori copertura).

La mappa la trovate qui ( https://www.thethingsnetwork.org/map ), dalle “nostre parti” - in senso molto vago - ci dovrebbero essere hotspot a Samarate, Marnate, Como, Albavilla, Seregno, etc… ed ovviamente diversi a Milano. Purtroppo è difficile definire l’area di copertura di un hotspot, un Raspberry Pi con sopra uno shield ed un micro antennino piazzato sulla scrivania in casa copre probabilmente solo una piccola parte del vicinato, mentre un’antenna più seria piazzata in esterna e ben in alto senza ostacoli intorno può coprire chilometri e chilometri.

Compatibilmente col (poco) tempo a disposizione, se volete approfondire qualcosa fate un fischio.

—
Luca Lesinigo



Maggiori informazioni sulla lista gl-como