LoRa e libohiboard... finalmente insieme

FIRMWARE  DIY  da warcomeb il 22 Marzo 2022

Fino al 2018 avevo sentito parlare di LoRa (Long Range) solo su riviste o nelle fiere di settore, ma non avevo mai avuto il piacere di sperimentare questa tecnologia. Poi in quell'anno sono approdato in un'azienda che, nella sua business unit dedicata all'IoT, faceva di LoRa e del protocollo di comunicazione che avevano costruito sopra a questa modulazione la parte fondante dei prodotti che venivano progettati. È stata indubbiamente una piacevolissima scoperta (non facile da digerire immediatamente per chi veniva dall'automazione industriale come me) che mi ha portato nel tempo a voler integrare all'interno della libohiboard anche il middleware necessario a poter utilizzare LoRa.

Ma partiamo dall'inizio: che cosa è di preciso LoRa?
Con l'acronimo LoRa si intende una tecnologia di telecomunicazione wireless a lungo raggio (long range appunto) e basso consumo, principalmente destinata a dispositivi Internet of Things (IoT) e reti M2M. Si tratta a tutti gli effetti di una rete wireless a radiofrequenza che è stata inizialmente sviluppata dalla società francese Cycleo, ma che nel 2012 è stata acquisita dalla società californiana Semtech.
LoRa è una tecnica di modulazione derivata dal Chirp Spread Spectrum, in pratica impacchetta i dati in pacchetti radio usando gli impulsi chirp. LoRa è una modulazione molto robusta contro i rumori e soprattutto può viaggiare su lunghissime distanze (15 km), ideale per inviare piccole quantità di dati ad un basso data rate. Queste caratteristiche rendono questa tecnologia preferibile per sensori a batteria rispetto ad esempio al Wi-Fi o al Bluetooth.
LoRa lavora principalmente nelle frequenze libere del mondo sub-gigahertz, come ad esempio la 868 MHz per l'Europa o la 915 MHz per gli Stati Uniti, oppure anche la 433 MHz (per intenderci quella usata per i telecomandi dei nostri cancelli di casa!). Volendo può anche essere usata la 2.4GHz, ovviamente a grande discapito della distanza raggiungibile!

Per testare l'utilizzo di LoRa insieme alla libohiboard ho scelto di usare il modulo CMWX1ZZABZ-091, sviluppato da Murata con il supporto di ST Microelectronics e Semtech. Il modulo contiene al suo interno un microcontrollore STM32L072 della serie STM32L0 e il chip radio SX1276, già collegati tra di loro e pronti per l'utilizzo. In alternativa al CMWX1ZZABZ-091 si può utilizzare un qualsiasi microcontrollore, ma la soluzione module-based è di sicuro più veloce e indolore, soprattutto per il progettista hardware che può stare relativamente più tranquillo durante lo sbroglio del PCB.
Come si diceva sopra, l'obiettivo è utilizzare LoRa in un progetto che utilizza la libohiboard come Hardware Abstraction Layer (HAL). Per far ciò sono necessarie tre fasi:

  • La prima fase prevede l'aggiunta del modulo CMWX1ZZABZ-091 tra i microcontrollori supportati dalla libohiboard. In particolare bisognava aggiungere il completo supporto a tutte le periferiche per i microcontrollori della famiglia STM32L072.
  • La seconda fase invece prevede l'aggiunta della gestione del modulo radio come middleware all'interno della libohiboard. Questa fase è leggermente più difficile, visto che è necessario adattare il codice scritto da Semtech utilizzando le API messe a disposizione da ST (che potete trovare qui), con le funzioni messe a disposizione dalla libohiboard.
  • L'ultima fase invece prevede un test di comunicazione tra due dispositivi. Utilizzando l'applicazione di esempio PING-PONG messa a disposizione da Semtech, ovviamente con le relative modifiche per funzionare con la libohiboard, è possibile verificare il corretto funzionamento del porting!

Tutte e tre le fasi elencate sopra sono state svolte con successo, soprattutto grazie a Niccolò Paolinelli che, durante un'esame del Prof. Massimo Conti dell'Università Politecnica delle Marche, ha fatto il grosso del lavoro. Ad entrambi va un grande grazie!
Quindi, finalmente, possiamo dire che è possibile usare LoRa e libohiboard insieme! Il codice è già presente nel ramo develop del repository della libohiboard.

I prossimi esperimenti con il LoRa? Di sicuro un test sulla distanza massima raggiungibile e ovviamente uno sui consumi energetici, i due grandi punti di forza di questa tecnologia!
A presto!