La libreria ArduinoBLE per Arduino Nano 33 Sense

L'emergenza sanitaria che il mondo intero sta vivendo ha imposto all'attenzione di tutti l'utilizzo di strumenti tecnologici in grado di monitorare i contatti quotidiani. Tali strumenti, come nel caso dell'applicazione Immuni, fanno uso della tecnologia BLE. Tale tecnologia sta assumendo sempre più importanza nell'ambito IoT e non solo. Da questa premessa nasce la volontà di approfondire la conoscenza della libreria ArduinoBLE per la scheda Arduino Nano 33 Sense. In questo articolo andremo a descrivere l'implementazione di uno sketch per inviare i dati raccolti dai sensori della nostra scheda Arduino Nano 33 Sense direttamente sul nostro smartphone tramite protocollo BLE.

Introduzione

Prima di iniziare con la descrizione dello sketch occorre fare conoscenza sugli strumenti che andremo ad utilizzare. Per quanto riguarda la scheda Arduino Nano 33 Sense, rimandiamo al link di un ottimo articolo scritto su questo blog. Mentre in questo ci soffermeremo sul protocollo BLE non da un punto di vista tecnico, ma da uno puramente operativo. Il Bluetooth Low Energy (Bluetooth LE o BLE) è ottimizzato per un utilizzo a bassa potenza e a basse velocità di trasmissione dati ed è stato progettato per funzionare con semplici batterie al litio in formato moneta.

A differenza della comunicazione Bluetooth standard basata fondamentalmente su una connessione seriale asincrona (UART), una radio Bluetooth LE agisce come una bacheca di comunità. I dispositivi che si connettono ad essa sono come i membri della comunità che leggono la bacheca. Ogni radio BLE può fungere o da bacheca o da lettore:

  • se la radio funge da bacheca (chiamata dispositivo periferico nel gergo Bluetooth LE), essa pubblica dati che tutte le altre radio della comunità possono leggere;
  • se la radio funge da lettore (chiamato dispositivo centrale in termini di Bluetooth LE), allora legge da qualsiasi bacheca (dispositivi periferici) che contengono informazioni. Possiamo pensare ai dispositivi periferici come ai server in una transazione client-server, perché contengono le informazioni richieste dalle radio dei lettori. Allo stesso modo, i dispositivi centrali sono i client del mondo Bluetooth LE perché leggono le informazioni disponibili dalle periferiche.

I dispositivi centrali visualizzano i servizi, ottengono i dati e quindi vanno avanti. Ogni transazione è rapida (pochi millisecondi), quindi più dispositivi centrali possono ottenere dati da una periferica. Le informazioni presentate da una periferica sono strutturate come Servizi, ognuno dei quali è suddiviso per Caratteristiche. Possiamo pensare ai servizi come agli avvisi su una bacheca e alle caratteristiche come ai singoli paragrafi di tali avvisi, come rappresentato in Figura 1. Un dispositivo periferico aggiorna ogni caratteristica del servizio quando essa necessita di aggiornamento non preoccupandosi se i dispositivi centrali le leggono o meno. I dispositivi centrali si collegano alla periferica e leggono le caratteristiche che desiderano. Se una determinata caratteristica è leggibile e scrivibile, la periferica e la centrale possono modificarla entrambe.

Figura 1: Rappresentazione grafica dei ruoli dei dispositivi nel protocollo BLE

Notifica

La specifica Bluetooth LE include un meccanismo noto come notifica che consente di sapere quando i dati vengono modificati. Quando la notifica su una caratteristica è abilitata e il mittente vi scrive, il nuovo valore viene automaticamente inviato al destinatario, senza che il destinatario invii esplicitamente un comando di lettura. Questo è comunemente usato per lo streaming di dati come l'accelerometro o altre letture del sensore. C'è una variazione su questa specifica chiamata indica che funziona in modo simile, ma nella quale il lettore invia una conferma dei dati inviati. La struttura client-server di Bluetooth LE, combinata con la caratteristica di notifica, è generalmente chiamata modello di pubblicazione e sottoscrizione.

Aggiornamento caratteristica

La periferica dovrebbe aggiornare le caratteristiche quando vengono apportate modifiche significative. Ad esempio, quando un interruttore passa da spento ad acceso o quando un sensore analogico cambia di una quantità significativa. Proprio come con la scrittura di una caratteristica, l'aggiornamento delle caratteristiche potrebbe avvenire ad intervalli regolari, ma questo sprecherebbe energia e potenza di elaborazione nel caso la caratteristica non fosse cambiata.

Dispositivi centrali e periferici

I dispositivi centrali sono client, e quindi leggono e scrivono dati da dispositivi periferici. I dispositivi periferici sono server, e quindi forniscono i dati dai sensori come caratteristiche leggibili. Inoltre, i server forniscono caratteristiche che possono essere sia leggibili che scrivibili per controllare gli attuatori come motori, luci e così via.

Servizi, caratteristiche e UUID

Una periferica BLE fornisce servizi, che a loro volta forniscono caratteristiche. È possibile definire i propri servizi o utilizzare i servizi standard. Nel nostro esempio useremo un servizio standard denominato: Environmental Sensing Service (ESS). I servizi sono identificati da numeri univoci noti come UUID. I servizi standard hanno un UUID a 16 bit e i servizi personalizzati hanno un UUID a 128 bit. La capacità di definire servizi e caratteristiche dipende dalla radio che si utilizza e dal suo firmware.

Modelli di progettazione del servizio

Un valore di caratteristica può essere lungo fino a 512 byte. Questo è un vincolo chiave nella progettazione dei servizi. Dato questo limite, occorre considerare il modo migliore per archiviare i dati nel modo più efficace per la propria applicazione. Il modello di progettazione più semplice consiste nel memorizzare un valore di sensore o attuatore per ogni caratteristica, in valori codificati ASCII. Questo è anche il più costoso in termini di memoria e richiede più tempo per la lettura. Ma è il più semplice per lo sviluppo e il debug. È anche possibile combinare le letture in un'unica caratteristica, quando un dato sensore o attuatore ha più valori associati. Questo è più efficiente, ma è necessario fare attenzione a non superare il limite di 512 byte.

Leggi/scrivi/notifica

Ci sono 4 cose che un dispositivo centrale può fare con una caratteristica:

  • Leggi: chiede alla periferica di restituire il valore corrente della caratteristica. Spesso utilizzato per caratteristiche che non cambiano molto spesso, ad esempio caratteristiche utilizzate per la configurazione, i numeri di versione, etc.
  • Scrivi: modifica il valore della caratteristica. Spesso utilizzato per i comandi, ad esempio per dire alla periferica di accendere o spegnere un motore.
  • Indica e Notifica: chiede alla periferica di inviare continuamente valori aggiornati della caratteristica, senza che la centrale debba richiederlo costantemente.

Advertising e GAP

I dispositivi BLE consentono ad altri dispositivi di sapere della loro esistenza tramite advertising (pubblicità) utilizzando il General Advertising Profile (GAP). I pacchetti pubblicitari possono contenere il nome di un dispositivo, alcune altre informazioni e anche un elenco dei servizi forniti. I pacchetti pubblicitari hanno una dimensione limitata, consentendo di adattare un solo UUID di servizio a 128 bit nel pacchetto. Ciò limita anche il nome del dispositivo, che non deve essere troppo lungo per poterlo adattare. Si possono fornire servizi aggiuntivi non pubblicizzati. I dispositivi centrali apprenderanno queste cose attraverso il processo di Connessione/Legame (Connect/Bond).

Esempio

Come anticipato precedentemente, ora andremo a realizzare uno sketch che fa uso della libreria ArduinoBLE. Utilizzeremo la scheda Arduino Nano 33 Sense, poiché dotata sia di modulo BLE che di sensoristica. Infatti, l'idea che ci proponiamo di realizzare è quella di acquisire i dati dai sensori di umidità e temperatura presenti sulla scheda ed inviarli sul proprio smartphone tramite protocollo BLE. [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2062 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend