Piattaforma di Electric Imp per lo sviluppo accelerato di prodotti IoT
Contributo di Editori nordamericani di DigiKey
2017-05-09
La progettazione di prodotti connessi a Internet richiede varie competenze. Gli sviluppatori devono sapere come scrivere software embedded, costruire una scheda a circuiti stampati, capire come tenere in sicurezza i propri dispositivi e come connetterli in rete per l'aggiornamento e la gestione in remoto.
Acquisire l'esperienza e realizzare l'infrastruttura per un singolo prodotto IoT può essere una grossa sfida, richiedere tempo e denaro. I team di sviluppo hanno bisogno di un sistema per dare impulso ai loro progetti e ridurre al minimo le attività necessarie in un tipico ciclo di progettazione allo scopo di contenere i costi e ridurre il time-to-market.
Stanno emergendo molte piattaforme IoT per rispondere a queste necessità, ma una particolarmente interessante la offre Electric Imp che ha riunito hardware e software pensati per supportare lo sviluppatore nell'avvio e nell'esecuzione dei progetti.
In questo articolo viene descritta la piattaforma IoT di Electric Imp e come utilizzarla.
Descrizione della piattaforma IoT di Electric Imp
La piattaforma di Electric Imp è dedicata ai prodotti IoT per offrire agli sviluppatori una soluzione completa per connettere e gestire dispositivi IoT. La piattaforma contiene tutti i componenti necessari a un team di sviluppo per realizzare e mettere in funzione i propri prodotti. I componenti includono:
- Hardware totalmente integrato
- Sistema operativo embedded
- Driver
- API
- Servizi cloud
- Librerie di codice
- Soluzioni di sicurezza
Per iniziare, gli sviluppatori collegano i sensori e l'hardware proprietario a un modulo radio di Electric Imp che contiene non solo il loro software personalizzato, ma anche l'ImpOS che gestisce una connessione sicura al cloud Imp (Figura 1). Sia gli utenti finali che gli sviluppatori possono fornire le proprie impostazioni Wi-Fi ai loro prodotti o alla piattaforma di sviluppo tramite un dispositivo mobile utilizzando un'applicazione denominata BlinkUp. Quando l'hardware Imp ha le informazioni sul Wi-Fi, può comunicare direttamente e in modo sicuro con il cloud Imp e da qui con Internet allargata.

Figura 1: La piattaforma di Electric Imp è dotata di elementi totalmente integrati e collaudati: hardware, software, SO, API, servizi cloud e sicurezza studiati per una rapida connessione dei dispositivi IoT al cloud. (Immagine per gentile concessione di Electric Imp)
L'uso di una piattaforma come quella di Electric Imp offre agli sviluppatori numerosi vantaggi, tra cui:
- Ridurre in modo significativo il time-to-market
- Concentrarsi sulle competenze peculiari dell'azienda piuttosto che sui problemi di connettività Internet
- Valore del prodotto e differenziazione superiori
- Eliminare la necessità di costruire un'infrastruttura di connettività e relativa esperienza
Hardware di Electric Imp
L'hardware di Electric Imp offre agli sviluppatori un set di componenti standard tra cui:
- Transceiver Wi-Fi 802.11 b/g/n o a/b/g/n
- Processore ARM® Cortex® a 32 bit
- Sistema operativo embedded robusto con aggiornamenti firmware a sicurezza intrinseca
- I/O selezionabili dall'utente come GPIO, PWM e ingresso analogico
- Comunicazioni tramite SPI, UART e I2C
I moduli sono realizzati da Murata Electronics. La maggiore differenziazione per i progettisti sarà data da processore interno, opzioni di connettività Wi-Fi e packaging. Ad esempio, imp005 (LBWA1UZ1GC-901) è basato su un ARM Cortex-R4 a 320 MHz e funziona in entrambe la bande a 2,45 e 5 GHz. imp003 (LBWA1ZV1CD-716), dal suo canto, è basato su ARM Cortex-M4F a 144 MHz e funziona solo nella banda a 2,45 GHz. Entrambi sono inseriti in contenitore a montaggio superficiale (Figura 2).

Figura 2: I moduli imp005 (a sinistra) e imp003 (a destra) integrano un modulo Wi-Fi e un microcontroller ARM Cortex per ridurre al minimo l'ingombro del dispositivo. (Immagine per gentile concessione di Murata Electronics)
Senza una scheda di breakout non sarebbe accedere a disposizioni a montaggio superficiale. Imp003 è dotato del suo IMP003-BREAKOUT, una scheda breakout che include un'interfaccia USB che consente agli sviluppatori di alimentare il dispositivo, il fototransistor necessario per programmare il modulo con le impostazioni Wi-Fi usando l'esclusivo metodo BlinkUp di Electric Imp e alcuni componenti di supporto (Figura 3).

Figura 3: Il modulo di breakout imp003 è una scheda di sviluppo a bassa piedinatura che consente agli sviluppatori di prendere facilmente familiarità con l'hardware di Electric Imp da impiegare nei prodotti finali. (Immagine per gentile concessione di Murata Electronics)
La scheda di breakout imp005 è leggermente più complessa dato che il modulo imp005 non solo ha un numero di pin superiore, ma è anche dotato di un processore ARM Cortex-R4 più potente (Figura 4). La scheda di breakout imp005 include anche Ethernet, un'interfaccia USB standard per alimentare il dispositivo e connettersi all'host, oltre a un fototransistor.
Figura 4: Il modulo di breakout imp005 offre agli sviluppatori accesso al più potente imp005, che contiene un microcontroller ARM Cortex-R4 oltre a opzioni avanzate di connettività come USB ed Ethernet. (Immagine per gentile concessione di Murata Electronics)
Impostazione di un modulo Electric Imp usando BlinkUp
Un problema che si presenta in qualsiasi dispositivo IoT è come programmarlo con le informazioni del router Wi-Fi locale. Electric Imp ha risolto questo problema con un approccio esclusivo che si avvale di un fototransistor per programmare le informazioni SSID e la password nel dispositivo.
Gli utenti della piattaforma e del prodotto finale scaricano l'applicazione BlinkUp di Electric Imp sul proprio apparecchio mobile, quindi immettono le informazioni di rete nell'applicazione. Quando viene richiesto, l'utente preme il dispositivo mobile fino al fototransistor. Lo schermo del dispositivo mobile lampeggia con una sequenza di comando che programma l'hardware di Electric Imp (Figura 5). Al termine della programmazione si può iniziare lo sviluppo.
ATTENZIONE! Non guardare lo schermo del dispositivo mobile mentre vengono programmate le informazioni di rete. In caso contrario potreste accusare un forte mal di testa e, se predisposti, anche un attacco epilettico.

Figura 5: L'applicazione BlinkUp consente a uno sviluppatore o utente di immettere l'SSID Wi-Fi e la password e trasmettere facilmente tali informazioni al modulo Electric Imp tramite una serie di lampeggi dal dispositivo mobile al fototransistor. In tal modo si elimina la necessità di ulteriori sistemi di connettività, come Bluetooth o USB. (Immagine per gentile concessione di Electric Imp)
Una volta che lo sviluppatore ha collegato il modulo Electric Imp a Internet, il modulo stesso registrerà un ID univoco presso il cloud Imp. Tale ID è anche reperibile nell'applicazione BlinkUp. L'ID univoco è utilizzato per identificare il modulo e connetterlo all'ambiente di sviluppo online. L'ID viene inoltre usato per portare gli aggiornamenti del firmware nel prodotto e per gestire il dispositivo. Un modulo può essere connesso al cloud effettuando l'accesso all'ambiente di sviluppo e creando quindi una nuova applicazione software, conosciuta anche come modello, quindi associando l'ID dei moduli al modello (Figura 6).

Figura 6: La connessione di un modulo attraverso il cloud al modello software viene eseguita semplicemente esaminando l'elenco dei moduli Imp disponibili e assegnando al dispositivo un modello software esistente o uno nuovo. (Immagine per gentile concessione di Electric Imp)
Una volta creato il modello, lo sviluppatore ha accesso all'ambiente di sviluppo online. Ciò consente la scrittura del software per il modulo di Electric Imp e anche il codice che è eseguito nel cloud per comunicare con tale modulo. Il codice applicativo per server e modulo viene scritto in un linguaggio di scripting denominato Squirrel. Squirrel ha la notazione simile a quella della programmazione in C, di conseguenza la transizione per la maggior parte degli sviluppatori embedded è naturale.
L'ambiente di sviluppo è suddiviso in tre pezzi principali. Il primo è il codice lato server, noto anche come codice agente. Il secondo è il codice del dispositivo che può essere implementato in un modulo dopo aver compilato lo script e viene gestito dal cloud Imp. Il terzo è un registro che può essere usato per monitorare i comportamenti dell'agente e del dispositivo, oltre che per effettuare il debug.

Figura 7: Quello di Electric Imp è un ambiente di sviluppo totalmente integrato che consente agli sviluppatori di lavorare contemporaneamente sul firmware del loro dispositivo e sul software nel cloud da una singola vista. (Immagine per gentile concessione di Electric Imp)
Primi passi: un programma per far lampeggiare un LED
È semplice e veloce realizzare e mettere in funzione un'applicazione in un modulo di Electric Imp. Gli oggetti possono essere assegnati alle funzioni hardware da un alto livello di astrazione. Con ciò si trasforma un modulo Imp e il microcontroller sottostante in una scatola nera.
Il primo passo di qualsiasi sviluppatore è quello di scrivere "Hello World" tramite un terminale o far lampeggiare un LED. Diamo un'occhiata al codice necessario per far lampeggiare un LED.
Anzitutto uno sviluppatore deve accedere all'ambiente di sviluppo e creare un modello "Hello World" o "Blinky" e assegnarlo al proprio modulo di destinazione. Come in qualsiasi applicazione, lo sviluppatore assegna e configura i pin e le variabili. In questo caso, se un LED è stato collegato al pin 5, lo sviluppatore potrebbe scrivere il codice per configurare il LED e creare una variabile di stato (Listato 1).
// Creare una variabile globale chiamata 'led' e assegnare ad essa l'oggetto 'pin'
led <- hardware.pin5;
// Configurare 'led' per essere un'uscita digitale con un valore iniziale di 0 digitale (basso, 0V)
led.configure(DIGITAL_OUT, 0);
// Creare una variabile globale per memorizzare lo stato corrente di 'led‘
state <- 0;
Listato 1: La scrittura del software per il modulo di Electric Imp è semplice utilizzando le librerie pre-esistenti e il linguaggio di scrittura Squirrel. Questo script configura il LED e crea una variabile di stato. (Sorgente codice per gentile concessione di Electric Imp)
Si potrebbe poi scrivere una semplice funzione applicativa per far lampeggiare il LED (Listato 2).
function blink()
{
// Invertire il valore di stato:
// quando stato = 1, 1-1 = 0
// quando stato = 0, 1-0 = 1
state = 1 - state;
// Scrivere lo stato corrente in 'led' (corrisponde a pin9)
led.write(state);
// Programmare imp per svegliarsi dopo 0,5 sec e richiamare di nuovo blink()
imp.wakeup(0.5, blink);
}
Listato 2: Il lampeggio di un LED o il controllo dell'hardware sono possibili tramite una serie di librerie che semplificano lo sviluppo e che possono diminuire i tempi di sviluppo in modo drastico. In questo esempio, viene usata una semplice funzione per accedere a una risorsa LED e ritardare l'esecuzione della funzione di 500 millisecondi tramite ImpOS (Sorgente del codice per gentile concessione di Electric Imp)
Detto fatto! Tutto il codice Squirrel necessario per configurare un LED e farlo lampeggiare nell'hardware. Il programma LED può essere scritto in meno di una decina di righe di codice e lo sviluppatore non ha bisogno di conoscere neppure un singolo registro del core ARM. Un semplice accesso all'API di alto livello e lo sviluppo è completato e funzionante.
Integrare sensori esterni in un modello Electric Imp
Anche l'integrazione di sensori e componenti esterni in una piattaforma Electric Imp è piuttosto semplice. La piattaforma consente allo sviluppatore di includere una libreria che è già stata sviluppata usando la direttiva #require che è simile alla direttiva #include del linguaggio di programmazione C. Vi sono molti tipi di librerie già sviluppate e pronte per essere utilizzate direttamente dagli sviluppatori. Queste librerie comprendono:
- Servizi Web
- Utility
- Driver hardware
Gli sviluppatori di prodotti possono interfacciare dispositivi come relè, accelerometri e magnetometri al modulo di Electric Imp quindi usare le librerie già scritte per tali componenti per sveltire la progettazione. Le librerie sono disponibili nel sito Web di Electric Imp, nella sezione centro di sviluppo.

Figura 8: Electric Imp mette a disposizione un'ampia varietà di librerie pronte all'uso fin dall'inizio dello sviluppo. Tali librerie accelerano la fase di sviluppo e offrono accesso ai dispositivi hardware e ai servizi software più diffusi. (Immagine per gentile concessione di Electric Imp)
Trucchi e suggerimenti per l'utilizzo della piattaforma IoT di Electric Imp
Sono parecchie le cose da prendere in considerazione quando un team di sviluppatori intende usare una piattaforma come quella di Electric Imp. Innanzitutto, il modulo Electric Imp integra due componenti principali in un singolo contenitore: la radio Wi-Fi e il microcontroller. Tale integrazione può far risparmiare denaro e spazio sulla scheda. Inoltre, gli sviluppatori dovrebbero esaminare l'hardware e le librerie di driver esistenti, quando scelgono i componenti per i propri prodotti. Utilizzare le librerie esistenti significa accelerare il ciclo di sviluppo.
Infine, gli sviluppatori devono ricordare che la piattaforma di Electric Imp non si connette direttamente a Internet. Tutte le comunicazioni vengono prima eseguite attraverso una connessione sicura con il cloud Imp. Questo usa poi un agente per indirizzare i messaggi al Web allargato. Sono presenti anche librerie per i servizi di terze parti, come lo storage di dati e le analisi che gli sviluppatori possono usare sul lato cloud. Sfruttare quanto più possibile il codice esistente tramite le librerie.
Conclusione
Lo sviluppo di un dispositivo IoT può essere fatto molto velocemente usando tecnologie esistenti e avvalendosi di una piattaforma IoT. L'uso di una delle molte piattaforme oggi esistenti sul mercato può aiutare gli sviluppatori a concentrarsi sulle loro capacità e lasciare che altri si occupino dell'infrastruttura. Come abbiamo visto, la piattaforma IoT di Electric Imp è una soluzione interessante e con caratteristiche distintive, sicuramente da approfondire.
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.




