Microsoft Windows Desktop e Arduino: Un sogno diventato realtà?
Contributo di Editori europei di DigiKey
2017-09-26
La comunità dei maker ferve di nuove idee. Molte si basano sull'uso della tecnologia e offrono nuovi modi per fornire ed erogare un servizio. Altre dischiudono nuove opportunità con idee prima ritenute impossibili. Per le menti brillanti con queste idee, la sfida di tradurre il progetto di un prodotto dal concetto alla realtà può essere scoraggiante. Imprenditori in erba si rendono conto che è vitale arrivare per primi sul mercato e questo detta una fase di sviluppo rapida. Computer monoscheda embedded (SBC), come Arduino, Raspberry Pi e BeagleBone Black, sono rapidamente diventati la piattaforma scelta da molti maker. La grande maggioranza degli SBC usa Linux come sistema operativo preferito. Tuttavia, pur incorporando nel proprio progetto molta flessibilità e funzionalità, Linux richiede un discreto grado di familiarità per iniziare e potrebbe scoraggiare quelli con meno dimestichezza nell'uso di un sistema operativo open-source. Arduino è forse un'eccezione in quanto non utilizza un sistema operativo. Tuttavia, questo non ha in alcun modo limitato la credibilità di Arduino nel portare semplicità e facilità di programmazione alla sfida di interfacciare il mondo reale in progetti embedded. Enormemente popolare fra la comunità dei maker, specie fra i neofiti dell'elettronica, ad Arduino è stata attribuita la rinascita dell'interesse per l'elettronica hobbistica e gli si è imputato l'accendersi dell'immaginazione dietro alle idee di molti prodotti nuovi.
Quando si tratta di sviluppare un nuovo prodotto, il problema per molti maker sta nel prototipare un prodotto che combina il meglio di ciò che offre Arduino con la familiarità utente e applicativa di Microsoft® Windows. Grazie a una serie di opzioni di connettività come SPI, I2C e UART, insieme a periferiche GPIO, PWM e ADC, non c'è dubbio che Arduino sia un modo estremamente pratico e capace di connettere un progetto al mondo reale e in grado di percepirlo. Dal punto di vista dello sviluppo di un'applicazione, è molto probabile che si sia più esperti nello sviluppo di applicazioni desktop tramite IDE di Microsoft Visual Studio con linguaggi come C#, Java e Python anziché Linux. Fino a poco tempo fa non esisteva un modo semplice per integrare i vari domini di Windows Desktop e Arduino, ma un SBC chiamato LattePanda di DFRobot promette di fare proprio questo (Figura 1).

Figura 1: LattePanda di DFRobot.
Fondamentalmente, LattePanda è un computer monoscheda Windows estremamente compatto preinstallato con Microsoft Windows 10 Home. È dotato di microprocessore quad core Intel® Cherry Trail Atom Z8350 1,8 GHz oltre a un coprocessore Atmel ATmega32u4 compatibile con Arduino. Tenere presente che questo è un sistema Windows 10 completo, non una versione IoT ridotta. Sono disponibili due modelli: un dispositivo di storage e-MMC da 32 GB e una RAM da 2 GB o, nella versione avanzata, 64 GB e 4 GB rispettivamente. Le schede LattePanda sono disponibili anche senza una chiave Windows 10 attivata. Come opzioni di connettività standard, LattePanda è dotato di USB 2.0 e USB 3.0, porta Ethernet a 100 Mbps, uscita HDMI, presa audio da 3,5 mm, presa microSD, Bluetooth 4.0 e Wi-Fi. La Figura 2 illustra i componenti e le interfacce chiave di LattePanda. La scheda ha una singola alimentazione a 5 Vc.c., 2,5 A tramite una presa micro USB. Assicurarsi che l'adattatore di alimentazione sia in grado di fornire almeno 2,3 A durante il funzionamento per evitare il reset di LattePanda durante l'avvio. Misurando appena 88 x 70 mm, LattePanda è abbastanza piccolo da rientrare in progetti con vincoli di spazio. Per agevolare il posizionamento in un contenitore, dal forum della scheda sono disponibili le specifiche meccaniche di LattePanda e file modello 3D. Quando si installa la scheda in uno spazio ristretto, è consigliabile che il raffreddamento ad aria forzata venga fornito tramite una ventola e che venga impiegata una dissipazione di calore idonea perché la scheda si scalda parecchio durante il normale funzionamento. Con LattePanda è disponibile una serie di dissipatori di calore in rame personalizzati. La scheda è dotata di alimentazione per la ventola a 5 Vc.c.

Figura 2: Componenti e interfacce principali di LattePanda.
Oltre al sistema operativo Windows, la scheda è precaricata con Visual Studio di Microsoft e IDE di Arduino. La scheda può funzionare senza GUI (headless) utilizzando un'applicazione terminale VNC (Virtual Network Computing) idonea come TightVNC, o collegando il display LCD da 1074 x 600 7" di LattePanda con il pannello tattile corrispondente. Sia il display che il pannello tattile capacitivo si collegano a LattePanda tramite cavi FFC e zoccoli ZIF.
Per quanto riguarda l'uso dei vari IO periferici, la combinazione di Windows con Arduino è stata ben congegnata. La Figura 3 illustra la piedinatura disponibile. Sono disponibili segnali sia da Atom che da ATmega32u4, la maggior parte dei quali proviene da Arduino tramite una presa in doppia fila a 24 pin. L'IO Atom lo si può trovare nell'area U1 della Figura 3. Tutti i 20 pin GPIO (A0 – A5 analogici e D0 – D13 digitali) usano logica a 5 V e possono essere usati come ingresso o uscita; 12 di essi sono impostabili individualmente per l'uso come ingresso analogico. Vedere l'area U2 della Figura 3. Quando si collegano sensori o dispositivi all'IO, assicurarsi che usino anch'essi la logica a 5 V. Se venisse impiegato un dispositivo a 3,3 Vc.c., sarebbero necessari convertitori di livello logici. Ogni pin analogico ha una risoluzione di 10 bit che offre 1024 valori da un intervallo della tensione di ingresso tra 0 e 5 Vc.c. I pin D3, D5, D6, D9, D10 e D13 possono essere usati come uscite PWM a 8 bit. Inoltre, D7, D3, D2, D1 e D0 possono essere usati per attivare un interrupt esterno in diverse condizioni. In linea con la tradizione Arduino, un LED è collegato a D13 e può essere utilizzato con lo sketch LED lampeggiante standard.

Figura 3: LattePanda – piedinatura periferica.
Tenere presente che alcuni pin Arduino, D9, D10, D11, A0, A1 e A2, sono presenti sul connettore Arduino centrale e possono essere usati anche con i sensori DFRobot Gravity.
È possibile accedere ai pin da entrambe le applicazioni in esecuzione sul core ATmega32u4 e Atom. Oltre all'IO standard basato su GPIO, dalle basette pin sono disponibili anche comunicazioni tramite I2C e SPI. Viene fornito anche un connettore ICSP a 6 bit. Le applicazioni Windows possono usare facilmente i pin GPIO Arduino grazie alla libreria Firmata open-source fornita da LattePanda per l'uso con Visual Studio. Ciò consente a qualsiasi applicazione l'accesso e il controllo di qualsiasi pin attraverso l'uso delle funzioni di classe. Qui è possibile trovare una spiegazione dettagliata delle funzioni libreria disponibili, oltre a singoli file di esempio Visual Studio C# scaricabili.
Figura 4: Schermata del codice Visual Studio per il lampeggio del LED su scheda.
Per controllare che tutto funzioni correttamente, nella Figura 4 è illustrato il codice Visual Studio C# che richiama la libreria di classi Firmata. Quando viene eseguito, fa lampeggiare il LED su scheda. I lettori che hanno familiarità con la struttura e le funzioni del codice basato su C di Arduino noteranno la somiglianza delle funzioni di classe con quelle utilizzate in uno sketch Arduino.
La creazione di applicazioni con LattePanda è resa ancora più semplice grazie alla disponibilità di un set di sensori progettati appositamente per la scheda. Composto da un totale di 14 sensori e relativi cavi di collegamento, lo starter kit Gravity Sensor include sensori di temperatura, luce, gas e fiamma, un sensore rotazionale analogico, pulsanti digitali, LED di vari colori e un modulo relè. Questi si inseriscono nella fila di sei connettori Gravity a 3 pin sulla scheda, la cui piedinatura è indicata nella Figura 3.
Il bus I2C della scheda è un altro modo comodo per collegare sensori, attuatori e display. La libreria Firmata fornisce le funzioni di classe necessarie per inviare e ricevere i dati direttamente in un'applicazione Visual Studio utilizzando le funzioni wireBegin, wireRequest e didI2Cdatareceive. L'esempio sotto mostra l'uso di una scheda di valutazione di un accelerometro a 3 assi I2C di Adafruit. Questa scheda usa il sensore MEMS a 3 assi ad alta risoluzione e bassissimo consumo ADXL345 di Analog Devices. Il sensore MEMS è collegato a LattePanda come illustrato nella Figura 5.

Figura 5: Cablaggio del sensore MEMS a 3 assi ADXL345 di Adafruit a LattePanda.
L'alimentazione viene fornita dai pin 22 (5 V) e 21 (GND) e da I2C collegato al pin 6 – SDA filo giallo e pin 8 – SCL filo blu.
Il codice sorgente nella Figura 6 mostra la scheda sensore in cui si scrive che utilizza un indirizzo del sensore predefinito di 0x53 e un intervallo di misurazione predefinito di 0x2D (2 G). I dati vengono quindi riletti dal sensore in modo continuo e analizzati nelle letture degli assi X, Y e Z per la visualizzazione sullo schermo della console.
Figura 6: Codice C# che mostra la configurazione e la lettura di MEMS a 3 assi ADXL345 tramite interfaccia I2C.
I due esempi sopra riportati servono a illustrare non solo la velocità con cui si può creare un'applicazione con LattePanda, ma anche il fatto che questa scheda fornisce una piattaforma pre-certificata su cui è possibile sviluppare e introdurre rapidamente le applicazioni sul mercato. Anziché dover sviluppare da zero un design embedded idoneo con i relativi costi NRE, rischi e tempi di commercializzazione, un progetto che utilizza un SBC può essere implementato nel giro di poche settimane. Una volta essersi assicurati i vantaggi di essere i primi a introdurre un progetto sul mercato e dopo le installazioni presso i clienti, se i volumi di produzione supportano la commercializzazione, il team di sviluppo può preparare una distinta base per un progetto personalizzato usando i modelli meccanici forniti attraverso il forum di LattePanda.
Fra le possibili applicazioni per LattePanda, una scelta ideale è quella di utilizzarlo per una soluzione Internet delle cose (IoT). Dispone di risorse di calcolo e connettività sufficienti per leggere in tempo reale i dati da una serie di sensori connessi cablati e wireless, aggregare i risultati e quindi inoltrarli a una piattaforma di analisi cloud tramite comunicazioni Wi-Fi o Ethernet. Questo approccio gateway sta sicuramente guadagnando popolarità nelle applicazioni Internet delle cose industriale (IIoT). Definito calcolo "nebbia", questo metodo dipende meno dalla connettività continua del cloud, dato che alcune funzioni di controllo possono essere eseguite localmente senza dover attendere la risposta di un'applicazione cloud. Un esempio è quello di accendere un impianto di condizionamento dell'aria una volta raggiunta una determinata temperatura. Avendo il sensore della temperatura e l'attuatore dell'impianto nel gateway, la richiesta di aria più fredda può essere soddisfatta senza incorrere in costi di comunicazione, controllando la latenza e richiedendo risorse di calcolo del cloud.
Hub IoT di Microsoft Azure è una piattaforma di cloud computing molto diffusa che supporta pienamente l'SBC LattePanda. Un repository GitHub documenta il processo per far comunicare la scheda con la piattaforma Azure. Si tratta di un'aggiunta alle informazioni fornite da LattePanda. Per agevolare il processo di sviluppo e test, Microsoft mette a disposizione file di esempio Node.js che testano la connettività con l'hub IoT. Prima di scaricare questi esempi, occorre utilizzare il portale di Azure per configurare un account Azure e creare un nuovo dispositivo IoT (Figura 7).

Figura 7: Creazione di una nuova voce hub IoT di Azure.
La Figura 8 illustra l'impostazione dei dettagli della voce hub e la denominazione dell'host. Questo processo fornisce le credenziali (stringhe di connessione e chiavi di accesso) utilizzate per identificare e collegare un sensore su LattePanda all'hub IoT di Azure. Una volta completato questo processo, si può modificare il file "simple_sample_device.js" che viene fornito e immettere la stringa di connessione prima di creare ed eseguire il codice. Nell'hub IoT di Azure, la funzione dell'utility DeviceExplorer permette di osservare i messaggi che l'hub riceve da LattePanda.

Figura 8: Hub IoT di Azure – registrazione di un nuovo dispositivo.
Una volta accertato che la comunicazione è stata stabilita, si è pronti per elaborare il progetto della propria applicazione utilizzando i servizi di Azure. Ad esempio, si può utilizzare il servizio Azure Storage per costruire una tabella di letture dei sensori. Azure Stream Analytics e Azure Power BI sono altri due esempi di app Azure in grado di interpretare, analizzare e visualizzare valori e tendenze dai dati dei sensori.

Figura 9: Esempio del sensore di luce Node.js che mostra le funzioni di Azure Storage.
La Figura 9 illustra l'esempio di codice Node.js che legge i valori da un sensore di luce Gravity collegato al pin "A0" e li memorizza in una tabella Azure Storage. Le funzioni che comunicano con Azure Storage sono evidenziate in rosso.
Sviluppare su LattePanda è molto facile. Si tratta di una piattaforma ben supportata con ampia documentazione del fornitore, un forum online e un proprio repository GitHub contenente modelli meccanici, librerie ed esempi di codice. Inoltre, il sistema operativo centrale, Microsoft Windows 10, è supportato benissimo con molti ambienti di sviluppo commerciale e applicazioni disponibili. In più, il coprocessore Arduino ha una vasta comunità di pubblicazioni, sviluppatori e risorse di programmazione. L'IDE Arduino è probabilmente l'IDE più onnipresente che troverete. Microsoft Visual Studio è il compagno IDE ideale, sostenendo sviluppi in numerosi linguaggi di programmazione molto diffusi come C#, Python e F#/.Net.
Conclusione
LattePanda presenta un nuovo concetto alla comunità dei maker. La possibilità di combinare la facilità di interfacciamento del mondo reale di Arduino con la vasta comunità di sviluppatori Windows e le loro applicazioni estende ancora di più la portata dei progetti embedded, dischiudendo un numero infinito di opportunità di nuovi prodotti.
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.






