Tra i contenuti del fascicolo 239 (ottobre 2019) attualmente in edicola, iniziamo a testare le opportunità offerte dalla rete Sigfox per implementare applicazioni IoT.
SigFox è una rete di telecomunicazioni dedicata ai dispositivi IoT e prende il nome dall’azienda che l’ha sviluppata; nata in Francia, si è sviluppata anche in altre nazioni grazie ad accordi con fornitori di connettività (in Italia è Nettrotter, www.nettrotter.io) che permettono l’accesso alla rete globale SigFox attraverso stazioni ricetrasmittenti (Base Station) conformi allo standard SigFox. È possibile verificare la copertura SigFox alla pagina web www.sigfox.com/en/coverage. In queste pagine scoprirete come sfruttare la rete SigFox per implementare applicazioni IoT, ma prima è utile un richiamo sulla teoria di funzionamento della rete.
SigFox permette una comunicazione bidirezionale e la comunicazione deve sempre essere avviata dal dispositivo. È stata concepita per l’invio di messaggi di ridotte dimensioni e non è quindi adatta per usi a banda larga (multimediali, trasmissione permanente, ecc.).
L’attenzione posta all’efficienza energetica consente di realizzare dispositivi collegati alla rete in grado di funzionare per anni con una batteria standard.
La rete SigFox opera su frequenze sub-GHz, sulle bande ISM: 868MHz in Europa/ETSI e 902MHz in USA/FCC. SigFoX utilizza una modulazione Ultra-Narrow Band (UNB) e consente una copertura maggiore rispetto alla rete GSM.
Non vi è alcuna negoziazione dei parametri della connessione tra il dispositivo e una base station ricevente: il dispositivo, semplicemente emette nella banda di frequenza disponibile. Il segnale viene rilevato dalle base station più vicine, decodificato e trasmesso al back-end della rete.
La de-duplicazione dei messaggi ed altre operazioni relative alla trasmissione sono gestiti dalla rete stessa. I messaggi vengono poi (eventualmente) inoltrati all’applicazione dell’utente e resi accessibili tramite le API di SigFox. Ogni messaggio viene autenticato utilizzando un meccanismo hash, e una chiave privata specifica del dispositivo; tale caratteristica offre elevata protezione dagli attacchi “replay”. Il protocollo radio SIGFOX offre anche un’elevata resistenza alle interferenze (Jammer).
SigFox è una soluzione per lunghe distanze (30÷50 km in ambienti favorevoli, fino a 15 km in aree semi-rurali o urbane non densamente popolate) e basse velocità di trasmissione dati (10÷100 bps e fino a 12 byte per messaggio, max 140 al giorno).
SCHEDA MKRFOX1200
SigFox ha delegato la produzione dei dispositivi da interconnettere alla propria infrastruttura di rete a una serie di produttori di chip; uno di questi è Atmel (ora Microchip), che con il dispositivo ATA8520 sta primeggiando. Arduino da parte sua ha colto la palla al balzo ed ha realizzato un dispositivo della famiglia MKR il modulo MKRFOX1200 che tra l’altro, prevede una sottoscrizione gratuita alla rete SigFox per un periodo di due anni.
La board è basata sul microcontrollore SAMD21 e sul modulo di connettività SigFox ATA8520; il modulo SigFox comunica con il microcontrollore tramite l’interfaccia SPI.
La scheda può funzionare per oltre sei mesi con 2 batterie AA da 1,5 V; è anche possibile alimentare la scheda tramite un alimentatore a 5 V. Il passaggio da una fonte di alimentazione all’altra viene eseguito automaticamente.
Una buona potenza di calcolo a 32 bit simile alla scheda Zero, il solito ricco set di interfacce I/O, comunicazione SigFox a bassa potenza e la facilità d’uso del software Arduino (IDE) per lo sviluppo e la programmazione del codice, sono elementi che rendono questa scheda la scelta d’elezione per i progetti alimentati a batteria in cu è richiesto un fattore di forma compatto.
LA MKRFOX1200 E L’IDE ARDUINO
Il modulo MKRFOX1200 può essere programmato tramite L’IDE Arduino, a patto che sia almeno la versione 1.8.9. Per utilizzare il modulo MKRFOX1200 sarà necessario installare la board nell’IDE, quindi bisogna andare al menu Tool/Board/Board Manager e, nella schermata di Fig. 3, digitare “samd” nel box di ricerca: dopo un po’ dovrebbe apparire la Voce “Arduino SAMD Boards (32 bits ARM Cortex M0 +). Selezioniamo nella combo box a sinistra l’ultima versione ed installiamola.
Ora che SAMD Core è installato, è possibile collegare la scheda al computer utilizzando un cavo USB standard. La prima volta potrebbe essere necessario installare i driver USB.
In virtù della aggiunta precedente vedremo comparire una lista di nuove Board (Fig. 4) relative al processore SAMD Cortex M0. Affinché la nostra scheda SigFox venga riconosciuta e possa lavorare in modo corretto, è necessario selezionare come tipo di scheda la “Arduino MKR FOX 1200” (Fig. 5).
PRIMO SETUP DELLA SCHEDA
Per poter utilizzare la scheda MKRFOX1200 con la rete SigFox è necessario effettuare una prima registrazione sul Backend SigFox.
Per fare questo, bisogna caricare un primo sketch che serve a ricavare due parametri essenziali per la registrazione e poi una volta effettuata la registrazione a verificare la corretta comunicazione tra la scheda Arduino e il Backend SigFox.
Abbiamo quindi necessità di utilizzare due librerie: SigFox.h e ArduinoLowPower.h
Includiamo sempre le librerie nel progetto perché le stesse sono oggetto di continua evoluzione e non è detto che versioni diverse funzionino senza modifiche sul codice degli esempi che includiamo nel nostro articolo. E un malfunzionamento del primo schetch è molto frustrante per un lettore. L’inclusione delle librerie ci permette di distribuire del codice che dovrebbe funzionare senza alcuna modifica. Naturalmente se avete già alcune librerie presenti nella vostra installazione di Arduino, non la sovrascrivete con quella che abbiamo allegato all’articolo, ma provate in prima istanza ad usare quella già presenti. Quando avrete testato il funzionamento del codice da noi rilasciato sarete liberi di aggiornare le eventuali librerie.
Nel Listato 1 abbiamo riportato solo la parte essenziale; in pratica, dopo l’inizializzazione del dispositivo tramite la libreria Sigfox, vengono letti alcuni parametri: quelli che ci interessano ora sono ID e PAC (questi due parametri sono personali e non vanno divulgati). Ottenuti i due parametri dalla finestra di log di Arduino (Fig. 6) dobbiamo recarci su questo url: https://backend.sigfox.com/activate nella quale ci verrà richiesto di selezionare il nostro Paese.
Selezionando quindi Italia, ci verrà indicato che il nostro fornitore di connettività sarà Nettrotter e atterreremo sulla pagina di Fig. 7 in cui siamo invitati a selezionare il tipo di scheda. Qui clicchiamo sul logo di Arduino. Ci verrà nuovamente richiesto di specificare la nazione, selezioniamo Italia e clicchiamo nuovamente su il logo di Nettrotter. Dopo la selezione si presenta la maschera di Fig. 8 in cui dovremo inserire ID e PAC ricavati precedentemente. Successivamente ci verrà richiesto di registrare un account per accedere al Backend SigFox (Fig. 9): inseriamo quindi i dati richiesti e completiamo la registrazione cliccando sul link presente nella email che ci verrà inviata.
Al termine avremo a disposizione un account Sigfox che ci permetterà di accedere alla relativa Dashboard del Backend. È anche possibile registrare il dispositivo dal link https://buy.sigfox.com/ activate/devkit/FR.
L’articolo completo è pubblicato sul numero 239 (Ottobre 2019), acquistabile in tutte le edicole.