UDOO Neo: ideale per progetti IIoT dove sensori di I/O estesi e risorse di elaborazione potenti sono fattori chiave

Di Redattori europei

Contributo di Editori europei di DigiKey

Internet delle cose (IoT) sembra essere il responsabile della veloce crescita di schede microcontrollore headless compatte per un'ampia varietà di nodi periferici come sensori e attuatori. Con una modesta quantità di I/O, un microcontrollore e bassissimi consumi di energia, schede e moduli di questo genere saranno potenti armi per i dispositivi di invio dati ai servizi di analisi basati su cloud. Molte applicazioni richiedono più risorse di elaborazione, interfaccia operatore e opzioni di connettività.

Funzioni di gateway o aggregazioni di dati da molti sensori, avvio di controllo locale o un mix di funzioni: tutte queste operazioni richiedono un Single-Board Computer con più funzioni e più risorse. Mentre i produttori di apparecchiature industriali sono fortemente impegnati su come costruire un dispositivo embedded che risponda alle variegate esigenze di ogni componente dell'apparecchiatura, molti si orienteranno verso un approccio di tipo piattaforma che utilizza una scheda embedded principale e periferiche aggiuntive a seconda delle necessità. È una tendenza in accelerazione quella di rivolgersi a uno dei sempre più diffusi e reperibili Single-Board Computer (SBC) open source, tanto per i medi che per i bassi volumi. In questo modo non solo si risparmia enormemente sui costi NRE, sulle certificazioni regolatorie per il wireless e sull'implementazione del software, ma si ottiene anche un avvio estremamente rapido dei team di sviluppo impegnati sugli aspetti applicativi del progetto, non dovendo valutare, progettare e prototipare la miriade di dispositivi che potrebbero dover integrare.

Per molti team di tecnici, uno degli impatti più eclatanti dell'IoT è il cambiamento basilare nell'approccio a nuovi progetti. Un team potrebbe essere perfettamente in grado di realizzare da zero una scheda embedded, ma l'obiettivo finale è quello di consegnare un progetto funzionante con scadenze ravvicinate. Chi magari desidera controllare rapidamente il proprio progetto, prima di creare una scheda in proprio dovrà necessariamente accedere a tutti i file meccanici, ai layout e alla distinta base.

UDOO Neo

Figura 1: UDOO Neo

Un esempio di SBC che potrebbe interessare gli sviluppatori è UDOO Neo. Disponibile in tre versioni - Basic, Extended e Full - rappresenta un sistema completo ed economico, tutto basato sul processore di applicazioni di Freescale i.MX6SoloX per Android e Linux. In questo articolo parleremo della versione Neo Full. Questo dispositivo di Freescale integra su chip singolo un potente processore single-core ARM® Cortex®-A9 a 1 GHz e un co-processore in tempo reale di I/O ARM Cortex-M4 fino a 200 MHz. In grado di condividere e usare numerose funzioni implementate a livello hardware come GPIO, UART, I2C, ecc., sono collegati assieme tramite un bus AXI ad alta velocità. Lo sviluppatore, utilizzando il muxing editabile, può assegnare la configurazione di quali funzioni di periferica sono usate e da quale core.

UDOO Neo Full ha una memoria flash di 1 GB e offre una vasta gamma di funzioni di connettività: GPIO, interfacce seriali, Wi-Fi 802.11 b/g/n e BLE. Dotata di sensori di movimento integrati a 9 assi, un accelerometro a 3 assi, magnetometro e giroscopio, LVDS, HDMI, interfacce per telecamera e audio, questa scheda è in grado di soddisfare numerosi progetti industriali.

Dal punto di vista del sistema operativo, il core Cortex-A9 può eseguire indifferentemente Android Lollipop o UDOObuntu (14.04 LTS). Il Cortex-M4 ha accesso a un ambiente Arduino full-stack, compresi gli shield header, il che migliora ulteriormente la flessibilità della piattaforma.

Caratteristiche e funzioni principali della scheda UDOO Neo Full

Figura 2: Caratteristiche e funzioni principali della scheda UDOO Neo Full

I pin esterni, nella Figura 2 in rosso, sono assegnati in modo predefinito al Cortex-A9 in modalità GPIO. Di conseguenza possono essere direttamente controllati dal file system (Linux, Android). I pin esterni (in verde) sono assegnati e controllati dal Cortex-M4 con le stesse dimensioni di piedinatura di Arduino UNO.

La scheda è alimentata da un'alimentazione singola a 6 – 15 Vc.c. e tutti i GPIO sono a 3,3 Vc.c.. In Figura 3, uno schema a blocchi illustra i componenti principali e le interfacce attorno al processore di applicazioni i.MX.

Neo è idoneo come piattaforma di elaborazione headless o, aggiungendo un touch panel LVDS o HDMI, come piattaforma adatta ad essere controllata dall'utente. Se l'applicazione prevista non richiede i sensori di movimento o non ha bisogno di tutta quella memoria, si può optare per le versioni Basic o Extended di Neo, risparmiando anche sui costi della scheda. Per molte applicazioni remote è preferibile una configurazione headless, lasciando le comunicazioni a un terminale remoto SSH o a dispositivi simili.

Diagramma a blocchi i.MX6 per UDOO Neo

Figura 3: Diagramma a blocchi i.MX6 per UDOO Neo

Iniziare a lavorare con UDOO Neo non potrebbe essere più semplice. Tutte le informazioni necessarie per mettere in funzione la scheda, assieme a una configurazione più completa, codici di esempio ecc., sono reperibili nel sito Wiki-style. Questo sito contiene anche file del layout fisico e distinta base.

Di serie, la scheda non contiene un sistema operativo installato. Sia per Linux che per Android occorre avere accesso a una microSD con una capacità di 8 GB o più. Scaricate nel PC o nel portatile il sistema operativo preferito dal sito della documentazione di Neo, quindi decomprimetelo. Sara necessario inserire la scheda microSD in un socket idoneo o in un adattatore USB. Accedere alla riga di comando del computer, qui tutti i dettagli, quindi seguire le istruzioni per smontare la scheda e tutte le partizioni, prima di trasferire l'immagine del sistema operativo. Al termine, non dimenticare di sincronizzare o espellere la scheda per chiudere la scrittura dell'immagine in modo idoneo.

Ora inserire la scheda microSD in Neo, collegare un mouse e una tastiera (in genere USB), un monitor HDMI (si raccomanda di controllare inizialmente che tutto funzioni correttamente) quindi accendere. Si vedrà ben presto l'attività segnalata dai LED giallo e verde sulla scheda e, supponendo che si sia optato per Linux, il pinguino Tux, mascotte di Linux, apparirà sullo schermo prima del desktop UDOO Ubuntu. Questo desktop familiare vi darà accesso a tutte le normali funzioni e utility Linux. Nella distribuzione Linux è anche precaricato l'ambiente di sviluppo integrato (IDE) Arduino configurato per Neo; è pronto all'uso dal desktop. La fase successiva è la connessione al pannello di controllo basato su Web di Neo. Ci sono diversi modi per farlo, o aprendo il browser Neo sul suo server Web udooneo.local o, se lo si conosce, puntandolo sull'indirizzo IP della scheda stessa. Vedere la Figura 4.

Pannello di controllo Web UDOO Neo

Figura 4: Pannello di controllo Web UDOO Neo

Questo pannello di controllo consente di avere una buona panoramica su ciò che avviene all'interno di Neo. Oltre a presentare informazioni sullo stato delle connessioni, sia cablate che wireless, sui sensori e un riepilogo sulla scheda, offre anche opzioni di configurazione per impostare e collegarsi a punti di accesso wireless, per le impostazioni regionali e per cambiare l'uscita del display. Sono forniti inoltre i dati degli assi e del modulo provenienti dall'accelerometro, dal giroscopio e dal magnetometro; è possibile verificare il loro funzionamento muovendo delicatamente la scheda.

Dal pannello di controllo Web viene offerta anche la possibilità di testare esempi di sketch Arduino e di scriverne alcuni semplici (vedere Figura 5). Chi ha familiarità con schede tipo Arduino UNO riconoscerà il facile esempio "Blink" nell'applicazione esemplificativa illustrata in Figura 5 per commutare il pin 13. Il LED rosso di Neo è collegato a questo pin, quindi il caricamento di questo sketch ne causerà il lampeggio. Notare che tra le applicazioni di programmazione viene fornita Ardublocky che permette di creare sketch Arduino in modo grafico a blocchi logici interconnessi.

IDE Web Arduino ed esempi di sketch

Figura 5: IDE Web Arduino ed esempi di sketch

Come detto prima, Neo è dotata di due set di GPIO. Quelli accessibili da uno sketch Arduino, detti interni, ovvero il set di header più interno, e quelli dall'interno di Linux, detti esterni. Sono tutti impostati di default in una configurazione di input, sono configurabili sia come input che output e, se necessario, possono produrre interrupt del core. Il muxing dei pin consente alla MPU di assegnare compiti più specializzati a questi pin esterni.

GPIO accessibile dall'interno di Linux

Figura 6: GPIO accessibile dall'interno di Linux. Fare clic qui per vedere l'immagine a dimensione intera.

Il pin GPIO può essere controllato dalla riga di comando usando semplici comandi come

echo out > /gpio/pin19/direction – per impostare il pin come pin di output o

echo in > /gpio/pin19/direction – per impostare il pin come pin di input

Un pin definito come output può essere impostato basso, zero volt con echo 0 > /gpio/pin19/value

o alto, +3,3 Vc.c. con echo 1 > /gpio/pin19/value

Il valore del pin di input può essere letto usando cat /gpio/pin19/value

Il pacchetto udoo-gpio-export, preinstallato in Linux UDOObuntu, si occupa di esportare tutti i GPIO come input oltre a creare i collegamenti dalla directory /sys/class/gpio. Ulteriori informazioni su requisiti avanzati come questo sono reperibili nella documentazione UDOO.

Le comunicazioni tra i core Cortex-A9 e Cortex-M4 sono assicurate da un pin seriale virtualizzato bidirezionale che usa la memoria condivisa per scambiare dati. È possibile leggerli dall'interno di Linux tramite /dev/ttyMMC, ad esempio, minicom –D /ttyMCC o all'interno di uno sketch Arduino usando un oggetto Serial0.

UDOO Neo Full è dotato di sensori di movimento a 3 assi integrati. Un accelerometro a 14 bit e un magnetometro a 16 bit sono integrati in un singolo dispositivo Freescale FXOS8700CQ. L'accelerometro offre tre intervalli full-scale selezionabili dinamicamente di +/-2 g, +/-4 g o +/-8 g.

Il giroscopio a 3 assi è un Freescale FXAS21002C.

Sono collegati al bus I2C, Figura 7, e sono accessibili da entrambi i core.

Bus I2C con le configurazioni del sensore e del dispositivo

Figura 7: Bus I2C con le configurazioni del sensore e del dispositivo

Dalla riga di comando possono essere abilitati con

echo 1 > /sensors/accelerometer/enable o echo 1 > /sensors/gyroscope/enable e i valori one-off possono essere letti con un comando tipo cat /sensors/magnetometer/data.

Le applicazioni embedded sono ovviamente in grado di leggerli direttamente tramite gli appropriati registri I2C. L'accelerometro e il magnetometro usano l'indirizzo 0x1E e il giroscopio 0x20.

L'accesso ai sensori è anche possibile tramite un linguaggio di livello superiore, ad esempio Python. Non appena si inizia a lavorare con una nuova scheda, si apprezzerà la natura open-source e community del progetto della scheda. Ne è un buon esempio la libreria Neo.GPIO Python su GitHub che offre codice di interfaccia dei sensori dall'interno di un'applicazione Python in esecuzione su Cortex-A9. Python è già incluso nella distribuzione UDOObuntu, di conseguenza è una facile scelta per effettuare sviluppo su Neo. Prima dell'uso occorre scaricare il file .ZIP da GitHub e quindi estrarlo nella directory in cui si creerà l'applicazione Python. Nel file .ZIP sono compresi anche diversi esempi di codice, di cui una versione semplificata è illustrata in Figura 8.

Programma Python che legge e visualizza i dati provenienti dal giroscopio

Figura 8: Programma Python che legge e visualizza i dati provenienti dal giroscopio

Per eseguire il codice Python mostrato in Figura 8 dalla riga di comando, occorre eseguire come root. Se si utilizza UDOO Neo come indicato sopra, l'account utente è udooer, quindi occorre ricorrere al programma GyroExample.py nel modo seguente. Vedere la Figura 9.

echo udooer | sudo –S su –c ‘python GyroExample.py’

Screenshot del codice GyroExample.py in esecuzione

Figura 9: Screenshot del codice GyroExample.py in esecuzione

UDOO Neo è un SBC completo e potente che si rivela una piattaforma di sviluppo ideale per un'applicazione industriale IoT. Con Neo è possibile mettere in funzione l'applicazione iniziale in tempi brevissimi e immettere sul mercato il prodotto nel modo migliore possibile, sia dal punto di vista dei tempi che dei costi.

DigiKey logo

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

Informazioni su questo autore

Redattori europei

Informazioni su questo editore

Editori europei di DigiKey