Nano 33 BLE Sense: la scheda Arduino nata per l’AI

Nano 33 BLE Sense: la scheda Arduino nata per l’AI

Arduino non ha certo bisogno di presentazioni: si tratta della piattaforma di prototipazione rapida maggiormente diffusa e apprezzata dai makers. A distanza di alcuni anni dalla sua prima comparsa, Arduino si rinnova ulteriormente, offrendo con la Nano 33 BLE Sense una scheda compatta ma potente, in grado di supportare applicazioni di Intelligenza Artificiale come il Machine Learning.

Introduzione

Arduino non finisce mai di stupire. Affacciatasi sul mercato alcuni anni fa, la piattaforma di prototipazione rapida per eccellenza ha saputo imporsi, a livello mondiale, in virtù di un approccio orientato all’applicazione finale, semplificando i passi intermedi relativi allo sviluppo del software di basso livello (driver e librerie) ed alla progettazione hardware. Arduino Uno, Arduino Mega 2560 e Arduino Nano sono tra gli esempi più eclatanti di questo progetto open source che ha permesso a una moltitudine di utenti, con differenti background non necessariamente “ingegneristici”, di avvicinarsi all’affascinante mondo dell’elettronica. La disponibilità di un ambiente di sviluppo integrato (Arduino IDE) semplice da utilizzare e costantemente aggiornato nel tempo, l’architettura standard delle applicazioni (sketch) derivata dal linguaggio Processing, nonché la possibilità di utilizzare una vasta gamma di sensori, periferiche e shield hanno completato il quadro. La scheda che presentiamo in questo articolo non è un clone e nemmeno uno spin-off di una board esistente appartenente alla famiglia Arduino: si tratta infatti di una scheda completamente nuova, sviluppata per supportare, a livello embedded, applicazioni di intelligenza artificiale (AI).

La scheda: caratteristiche

La Nano 33 BLE Sense utilizza un fattore di forma collaudato e particolarmente compatto (soltanto 45 x 18 mm), già utilizzato sulla scheda Arduino Nano da cui eredita parte del nome. Le novità introdotte sono tuttavia numerose, in parte evidenziate all'interno del nome stesso: "BLE" indica infatti il supporto per il Bluetooth Low Energy, mentre "Sense" indica la presenza di più sensori integrati nella scheda, utilizzabili per misurare e monitorare grandezze fisiche esterne, con la possibilità di applicare sofisticati algoritmi di intelligenza artificiale. In Figura 1 possiamo osservare la vista dall’alto della scheda: si noti la forma tipica del PCB, avente le stesse dimensioni di Arduino Nano. Sui lati estremi del PCB sono disponibili i due pin header, ciascuno composto da 15 pin, forniti in dotazione con la scheda. Sulla destra è visibile il modulo Bluetooth, dotato di antenna integrata.

Figura 1: vista dall’alto della scheda Nano 33 BLE Sense

Oltre al modulo BLE, la scheda integra una serie di sensori embedded ad elevata integrazione, con dimensioni estremamente compatte e in grado di fornire misure particolarmente accurate. Il set di sensori include:

  • sensore inerziale a 9 assi, particolarmente indicato per applicazioni IoT e per i dispositivi indossabili;
  • sensori di umidità e temperatura, in grado di eseguire misurazioni accurate delle condizioni ambientali;
  • sensore barometrico, utile per la realizzazione di una completa stazione meteorologica;
  • microfono, in grado di captare e analizzare il segnale sonoro in tempo reale;
  • sensore per il riconoscimento dei gesti, sensore di prossimità, sensore per il riconoscimento del colore e dell’intensità luminosa.

Questi sensori permettono non solo di determinare e valutare le condizioni di luminosità ambientale, ma anche di riconoscere i gesti e i movimenti di persone che si trovano nelle immediate vicinanze della scheda, o che interagiscono con essa.

La Nano 33 BLE Sense è sotto certi aspetti un’evoluzione della popolare scheda Arduino Nano, dotata, però, di un processore molto più performante: l’nRF52840 prodotto da Nordic Semiconductors. Basato su un core Cortex-M4 operante alla frequenza di 64 MHz, il processore dispone di 1 MB di memoria flash (32 volte superiore a quella disponibile sulla scheda Arduino Nano) e di 256 kB di memoria SRAM (128 volte superiore a quella di un Arduino Nano), utilizzabile sia per memorizzare il codice (istruzioni prelevate dalla memoria flash) che le strutture dati. La maggiore disponibilità di risorse di memoria consente pertanto di implementare applicazioni e algoritmi di complessità superiore, un requisito fondamentale richiesto dalle applicazioni di intelligenza artificiale. Il core ARM Cortex-M4 include un’unità di elaborazione in virgola mobile a singola precisione (FPU) ed utilizza un set di istruzioni basato sulla tecnologia Thumb-2, particolarmente efficiente nel massimizzare la densità del codice sfruttando, a seconda dei casi, istruzioni a 16 oppure a 32 bit. Sviluppato da un’azienda leader nella realizzazione di moduli radio e Bluetooth, l’nRF52840 è accoppiato a un modulo Bluetooth NINA B306, il quale integra un’interfaccia Bluetooth 5.0 a basso assorbimento (in grado di operare sia nella modalità client che in quella server) e un’interfaccia “contactless” NFC. Il componente è immediatamente riconoscibile per il suo case esterno, di tipo metallico. L'interfaccia NFC può anche essere utilizzata per eseguire il pairing di un dispositivo (smartphone, tablet o tag NFC), semplicemente avvicinandolo all’antenna del modulo Bluetooth. Il processore presenta inoltre diverse caratteristiche volte a migliorare l’efficienza computazionale e gli assorbimenti di potenza, tra cui:

  • istruzioni per l’elaborazione digitale dei segnali (DSP);
  • istruzione MAC (Multiply and Accumulate) in grado di eseguire in un solo ciclo macchina un’operazione di moltiplicazione seguita da un’addizione, una caratteristica particolarmente utile per l’implementazione efficiente di numerosi algoritmi di filtraggio;
  • istruzione di divisione a 8 e 16 bit eseguita a livello hardware;
  • FPU a singola precisione, in grado di gestire le operazioni matematiche sui numeri reali di tipo float.

Il processore nRF52840 [1] supporta l’esecuzione in tempo reale di applicazioni complesse composte da più thread con condivisione di periferiche e gestione di più sorgenti di interrupt. Le principali caratteristiche tecniche della scheda sono riassunte in Tabella 1:

Microcontrollore Nordic Semiconductors nRF52840
Tensione operativa 3.3 V
Tensione di ingresso (massima) 21 V
Corrente sui pin di I/O (massima) 15 mA
Frequenza di clock 64 MHz
Dimensione memoria flash 1 MB
Dimensione memoria SRAM 256 kB
Memoria Eeprom Non presente
Pin di I/O digitali 14
Pin PWM Tutti i pin digitali
UART 1
SPI 1
I2C 1
Pin di ingresso analogici 8
Pin di uscita analogici Gli stessi utilizzabili per il PWM
Interrupt esterni Associabili a tutti i pin digitali
Pin led utente 13
USB Integrata nel processore nRF52840
IMU LSM9DS1 [3]
Microfono MP34DT05 [4]
Sensore riconoscimento gestuale, luce e prossimità APDS9960 [5]
Sensore barometrico LPS22HB [6]
Sensore di temperatura e umidità HTS221 [7]
Lunghezza 45 mm
Larghezza 18 mm
Peso 5 grammi, inclusi i pin header

Tabella 1: principali caratteristiche tecniche della scheda

Una panoramica dei componenti che equipaggiano la scheda Arduino Nano 33 BLE Sense è visibile in Figura 2. Non a caso, la maggior parte dei sensori che equipaggiano la scheda è di provenienza ST Microelectronics, selezionati soprattutto per il loro assorbimento estremamente ridotto.

Figura 2: disposizione dei sensori e del modulo BLE sulla scheda Nano 33 BLE Sense

La scheda Nano 33 BLE Sense supporta, inoltre, l’ambiente ARM Mbed OS e, dato l’elevato numero di sensori incorporati, è in grado di supportare numerose applicazioni di IoT e AI senza richiedere la presenza di sensori esterni. Le possibili applicazioni della scheda includono: dispositivi indossabili, fitness tracker, glucometri, contapassi, smartwatch, stazioni meteo, sistemi di videosorveglianza e altro ancora. Anche se non è previsto un connettore dedicato per la batteria, esiste comunque il pin VIN attraverso il quale è possibile fornire un’alimentazione continua alla scheda. Si noti come l’alimentazione esterna, se applicata, escluda automaticamente l’eventuale alimentazione fornita attraverso il connettore micro-USB. Il pin 5 V fornisce una tensione continua di 5 V quando la scheda è alimentata dall’esterno tramite il pin VIN, oppure tramite il connettore micro-USB. Per attivare questa funzionalità occorre cortocircuitare il jumper VBUS posto sul retro del PCB. Il pin 3.3 V fornisce invece l’alimentazione a 3.3 V prodotta dal regolatore di tensione integrato nella scheda. Nel caso si volesse utilizzare la scheda in applicazioni IoT alimentate a batteria, si consiglia di rimuovere il jumper 3V3 posto sul retro della scheda e utilizzare una batteria con tensione di 3.3 V. I pin A4 e A5, a differenza della scheda Arduino Nano, sono dotati di resistenze di pull-up interne e sono pertanto immediatamente disponibili per realizzare un’interfaccia di comunicazione I2C. Poiché il processore sviluppato da Nordic Semiconductors supporta tale funzionalità, esiste la possibilità di collegare tra i pin D7 e D8 un’antenna NFC esterna, attivando il pairing Bluetooth attraverso l’interfaccia NFC.

Configurare la nuova scheda nell’IDE

Come avviene normalmente per tutte le schede della famiglia Arduino, anche la Nano 33 BLE Sense può essere interamente programmata utilizzando l’IDE Arduino e le apposite librerie in grado di supportare le nuove tipologie di sensori. Come già anticipato in precedenza, la scheda supporta l’ambiente ARM -Mbed OS, il che significa che sono automaticamente disponibili le caratteristiche e funzionalità di un sistema operativo in tempo reale (RTOS). A titolo di esempio, si consideri la possibilità di lanciare ed eseguire parallelamente più thread o processi, oltre all’efficienza derivante dall’implementazione di alcune funzioni di basso livello largamente utilizzate nell’ambiente Arduino. Un esempio è rappresentato dalla funzione delay, la cui implementazione sulla scheda Nano 33 BLE comporta l’entrata in uno stato di basso assorbimento fino allo scadere del timeout, senza richiedere l’esecuzione di inutili (e dispendiosi dal punto di vista energetico) cicli macchina. Il primo passo per configurare l’ambiente Arduino IDE in modo tale che esso supporti la nuova scheda consiste nell’eseguire il tool Board Manager, selezionando la scheda desiderata. I dettagli a questa operazione sono visibili in Figura 3. [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2864 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