[Hands-on] Wunderbar, dalla teoria alla pratica

Non è passato molto tempo da quando vi abbiamo parlato della nuova creatura di relayr, la WunderBar, e ne siamo rimasti tutti piuttosto affascinati. L'Internet delle cose è un campo di ricerca che oggi si trova a metà strada tra la grande possibilità rivoluzionaria e l'ennesima occasione sprecata. Serve il giusto supporto, la giusta strumentazione. E, ora che leggerete queste righe, anche voi condividerete la nostra idea: forse, la giusta scheda, è finalmente arrivata.

Quando vi abbiamo spiegato qual è la dotazione della WunderBar è stato subito chiaro a tutti che si tratta di una scheda davvero completa, piena di ogni genere di accessorio, almeno per le prime applicazioni. Dalla comunicazione ad infrarossi fino alla rilevazione della temperatura. E la forza di tutti questi moduli è proprio la comunicazione senza necessità di collegamento diretto.
Ma come funziona davvero? Quali operazioni bisogna compiere per poterci lavorare fin da subito?
In questo articolo lo scopriamo insieme.

Prima di cominciare dobbiamo darvi un'informazione importante: potrete usare questa scheda solo a patto di avere dispositivi (tablet, smartphone o altro) compatibili con Bluetooth Low Energy. Qualsiasi altra periferica di interconnessione Bluetooth che supporti specifiche inferiori non vi consentirà l'utilizzo.

Unboxing

Di seguito vi mostriamo le prime foto di presentazione:

wunderbar_box

wunderbar_coperta

wunderbar_scoperta

temperature module

bridgeBene, ora va spiegato qualcosa rispetto a questo modulo: a che serve, com'è fatto? Vediamola insieme.

Si parte!

Per poter mettere in funzione la scheda bisogna seguire pochi, semplici passi: iniziate collegando la scheda al pc ed inserendo le batterie fino a quando tutti i moduli non saranno alimentati. Vi spiegheremo tra un attimo come controllare il fatto che il collegamento sia effettivamente avvenuto ma fin da subito vi accorgerete ci sono almeno un LED giallo per ogni scheda ed alla sua accensione sarà facile verificare l'avvenuto collegamento. Ma andiamo con ordine.

Una volta effettuato il collegamento della scheda tramite interfaccia USB e l'alimentazione, sarà indispensabile scaricare l'app dedicata. La potete trovare disponibile direttamente sul sito:

play store

NB: tutte le immagini riferite all'utilizzo dell'app sono relative ad Android perché tutti i test sono stati effettuati soltanto con questo sistema operativo.

Una volta installata, è necessario effettuare il login. Potete pensare di farlo sia con un account dedicato sul sito sia sfruttando le vostre credenziali Google+.

Una volta collegati, comincerà la fase di sincronizzazione vera e propria.

Una procedura semplicissima

I moduli di cui la scheda è dotata avranno necessità di essere collegati tramite Bluetooth, come avrete facilmente intuito.
Assicuratevi di aver reso visibile il vostro dispositivo in maniera tale da non avere problemi in termini di riconoscimento per via di un eventuale timeout.

Il processo di sincronizzazione e di collegamento che state andando ad effettuare è fondamentale perché tutti i moduli comunicheranno in maniera centralizzata attraverso la scheda primaria e da questa poi all'app.
Tramite il login vi sarete qualificati come utenti WunderBar ed il cosiddetto Onboarding consentirà la connessione sia degli specifici moduli sensori presenti sia del Master Module, attraverso il quale non sarà soltanto possibile ricevere le informazioni ma anche interagire direttamente con la scheda per un'eventuale programmazione successiva.

Anche se le nostre prove sono state effettuate con Android, vi segnaliamo che è possibile lavorare anche con iOS e, come vedremo più avanti, per quelli che non sono utenti né dell'uno né dell'altro sistema operativo è sempre possibile effettuare lo sviluppo Web.

Cosa succede durante la connessione?
Si tratta di una semplice procedura nella quale vengono interrogate le API relayr. Il processo restituisce una serie di ID che vengono comunicati al modulo principale ed ai 6 sensori. Fatto ciò, tutte le board sono identificati univocamente.

Guida ai moduli

Vediamoli da vicino e nel dettaglio.

Il Master Module

Si tratta del principale ed è in grado di connettersi tramite Wi-Fi per l'invio dei dati provenienti dei moduli. L'interfaccia di connessione è Bluetooth Low Energy e questo perché le trasmissioni sono, specie per alcune grandezze, non continuative ma soprattutto perché i moduli sono alimentati a batteria. Questo vuol dire che c'è una grande attenzione al consumo energetico.

Il modulo principale è, quindi, diviso in tre parti, ciascuna delegata ad una funzione specifica, dal momento che abbiamo il processore ARM Cortex M4, Kinetis K Series, prodotto da Freescale, il quale immagazzina i dati, comprendendo anche le chiavi di autorizzazione, ed elabora i pacchetti da trasmettere.
L'unità di calcolo, infatti, si occupa delle letture dei dati grezzi che provengono dai sensori e di organizzarli in maniera tale che siano "significativi".
Si occupa anche di "tradurre" il BLE in  JSON/MQTT, il che serve a permettere sia l'utilizzo delle SDK sia della piattaforma cloud.

Le altre due sezioni di cui avevamo anticipato sono relative all'utilizzo del chip Gainspan GS1500m, ovvero l'interfaccia Wi-Fi vera e propria, e del modulo Nordic nRF51822, cioè il BLE.

Adesso diamo uno sguardo più approfondito al funzionamento perché è importante sapere che cosa sta facendo la scheda quando è in funzione. Esistono tre modalità di funzionamento diverse:

  • run mode;
  • onboarding mode;
  • firmware update mode.

Per quanto riguarda la prima modalità, abbiamo a disposizione un LED che indica l'avvenuta connessione con una rete Wi-Fi, attraverso il suo spegnimento. Quando, invece, la connessione è ancora in fase di attivazione, il LED sarà acceso.

Un altro dei tre LED disponibili sulla scheda ci riferisce lo stato di avvenuta connessione con la rete, o meglio con il cloud. Per rendere meglio il concetto, diciamo che quando è acceso, la connessione è in corso, analogamente a quanto succede nel caso precedente. Quando è spento, la connessione è avvenuta. Per questo indicatore si prevede anche uno stato di lampeggiamento che avviene per ciascuna trasmissione quando i dati vengono scaricati o sono in fase di upload.

Il terzo ed ultimo, invece, serve ad indicare lo stato di carica della batteria: acceso indica carica in corso, spento carichi effettuata. Anche per questo esiste lo stato di lampeggiamento che implica un malfunzionamento della batteria oppure il fatto che vada sostituita.

Il modulo principale è dotato di soli 2 pulsanti, dei quali uno svolge la funzione di Reset mentre il secondo consente di cambiare modalità, tra quella di run e quella di onboarding, mediante una semplice pressione.
Una pressione prolungata, invece, consentirà di accedere alla terza modalità di funzionamento, grazie alla quale potrete cominciare da zero a divertirvi.

Tutti gli altri

Similmente a quanto accade per il modulo principale, anche il generico modulo sensore può essere utilizzato nelle tre modalità.
Ciascuno, infatti, è dotato di un pulsante e di un indicatore LED. Anche sui moduli sensori una pressione semplice consente lo switching tra una modalità di funzionamento e l'altra, passando da run ad onboarding, ed anche per i moduli sensori possibile effettuare la programmazione e l'aggiornamento del firmware tramite una pressione prolungata.
Dicevamo, per questi moduli sono presenti indicatori LED che, quando lampeggiano, indicano che il collegamento con la piattaforma è in corso. Una volta terminata la procedura, il lampeggio cesserà.

L'accelerometro/giroscopio è un sensore MEMS triassiale MPU-6500 che propone in uscita dati grezzi da 16 bit che vengono convertiti dall'unità principale. Le sensibilità sono ±2g (default), ±4g, ±8g e ±16g.
Il giroscopio, invece, include intervalli programmabili di ±250 (default), ±500, ±1000 e ±2000 °/sec.

Il sensore di luminosità è il TCS3771 IC di AMS AG ed insieme con quello di prossimità può formare un sistema estremamente completo.
L'utilizzo degli infrarossi, infatti, prevede la misurazione della luce per il monitoraggio della riflessione e questo tramite un controllo in corrente da 12.5 mA, 25 mA, 50 mA oppure 100 mA. Naturalmente, più alto sarà il valore, migliore sarà la rilevazione soprattutto in funzione della distanza.
I valori rilevati, digitalizzati e ricevuti dal sensore, vengono tradotti dalle SDK e dalla Developer Dashboard in un valore percentuale che restituisce l'informazione sulla prossimità.

Stesso discorso va fatto per la rilevazione del colore; i quattro canali del sensore (corrispondenti ai quattro colori rosso, verde, blu e bianco) rileveranno, ciascuno, la quantità di luce riflessa, derivando l'informazione.
Una volta fatto, il set di valori viene gestito dalle SDK in maniera da formare l'informazione "colore" in accordo con il sistema RGB.

Il chip HTU21D  è il sensore di temperatura, digitale. Il modulo ha una risoluzione configurabile che arriva fino a 14 bit, il cui minimo valore relativo è pari al centesimo di °C. L'intervallo di temperature in cui opera è pari a [-40, +125] ºC.

La rilevazione dell'umidità, relativa, avviene con una risoluzione, configurabile, che può variare tra gli 8 ed i 12 bit. Minimo valore risolubile, 0.04% RH.

Per quanto riguarda l'audio, il sensore di rilevazione della rumorosità ambientale è basato su un dispositivo MEMS, l'SPU0410HR5H. Il microfono è associato ad una circuiteria che consente la trasmissione di un segnale digitale con un'amplificazione che garantisce un livello di rumorosità bassa. La profondità è di 10 bit.

Ed ora, parliamo di uno dei moduli più interessanti, ovvero il Bridge Module. Questo piccolo componente è dotato di 8 GPIO subito disponibili per l'utente insieme ad un connettore a quattro pin compatibile con i moduli Grove di SeeedStudios. A che cosa serve? È presto detto: dal momento che c'è la possibilità di alimentare ulteriori componenti sia a 3.3 V sia a 5 V, può essere utilizzato per gestire ingressi e uscite digitali sia UART sia I2C.
Si tratta di un modulo di controllo che permette l'espandibilità della scheda, a partire da tutta la dotazione di cui abbiamo parlato fino a questo momento.
Non c'è davvero limite a quello che potete fare ed ormai questo è abbastanza chiaro.

Consigli

Per poter utilizzare la scheda, al meglio delle sue caratteristiche e peculiarità, vi consigliamo di collegare il modulo principale sia all'alimentazione tramite USB sia alla sua batteria. Questo renderà il sistema funzionalmente stabile ed affidabile.
Vi ricordiamo, inoltre, che qualsiasi dispositivo Bluetooth utilizzerete deve sopportare il BLE.
Prima di poter utilizzare tutti i sensori, assicuratevi che siano funzionando in modalità onboarding (controllate il lampeggio dei LED).
Uno dei consigli fondamentali per l'utilizzo è assicurarvi che la vostra rete Wi-Fi stia lavorando a 2.4 GHz; in caso contrario, non riuscirete ad utilizzare la scheda.
Un'altra accortezza che vi consigliamo di avere, e che anche gli sviluppatori hanno indicato sul sito, è di non utilizzare password per i Wi-Fi che includano più di 18 caratteri, alfanumerici.

Concordemente, vi consigliamo di non utilizzare la scheda in zone particolarmente affollate di segnali Wi-Fi, con molti utilizzatori ed altri dispositivi smartphone o tablet al lavoro.
Per garantire il miglior funzionamento, inoltre, vi consigliamo di non staccare i sensori della scheda prima che siano tutti collegati.
E naturalmente, visto che si tratta di un collegamento preferenziale, vi consigliamo di non provare a collegare più di una WunderBar per volta.

L'SDK

Se siete programmatori o avete voglia di provare e sperimentare, troverete la relayr JavaScript SDK semplice ed intuitiva. Per iniziare ad includere il file relayr-browser-sdk.min.js all'interno del posto progetto, scrivete:

<script src="https://developer.relayr.io/relayr-browser-sdk.min.js"></script>

pre-onboarding

onboarding

searching Vi abbiamo parlato di collegamento e di sincronizzazione. Bene, mentre lavorate, spulciando il codice, date uno sguardo come viene gestita la procedura di riconoscimento:

<!DOCTYPE html>
 <html>
 <head>
 <script src="lib/relayr.js"></script>
 </head>
 <body>
 </body>
 </html>
 <script>
 var relayr = RELAYR.init({
 appId: "YOUR_APP_ID"
 });
 //If you have a token and your device ID, you can start listening to your device without going through the login process
 relayr.devices().getDeviceData({
 token: "YOUR TOKEN",
 deviceId:"YOUR DEVICE_ID",
 incomingData: function(data){
 console.log("data from device", data)
 }
 });
 </script>

Una prova semplicissima: il progetto Cant' touch this

La scorsa volta vi avevamo accennato qualcosa riguardo ad un progetto di esempio disponibile fin da subito per tutti gli utenti che si avvicinano alla scheda. Ecco, ora possiamo entrare nel dettaglio e capire di che cosa si tratta.
Si tratta di un'applicazione molto semplice e veloce che utilizza la scheda col sensore di luminosità ma anche con quello di colore e di prossimità e che comunicano i dati in Cloud allo scopo di avvertire l'utente se il proprio portafoglio, le chiavi, qualche dispositivo portatile o qualunque altro oggetto a cui i sensori sono collegati viene toccato oppure spostato o peggio ancora rubato.
Una sorta di piccolo antifurto tascabile.
Davvero notevole come applicazione, non trovate?

Per poterlo utilizzare è necessaria l'SDK JavaScript. Una delle possibilità del progetto è, però, la conversione alla piattaforma Cordova. Apache Cordova è un set di API che permettono allo sviluppatore di app per dispositivi mobile di avere accesso a funzioni native per la gestione di dispositivi quali telecamere oppure accelerometri.
Viene spesso utilizzato insieme a diversi framework che permettono di sviluppare utilizzando HTML, CSS e JavaScript. Il vantaggio è la realizzazione di progetti multi piattaforma, e che garantisce una portabilità pressoché totale a fronte di piccoli cambiamenti, solo se necessari.
È interessante e viene utilizzato perché ci sono una serie di librerie che possono essere utilizzate ed è disponibile per lo sviluppo su una serie di piattaforme tra cui non soltanto iOS e Android ma anche Blackberry, Windows Phone, Palm WebOS, Bada, e Symbian.

Per darvi un'idea di come funziona, vi proponiamo qui di seguito il codice relativo alle notifiche push:

var PushNotification = function() {
 };
 // Call this to register for push notifications. Content of [options] depends on whether we are working with APNS (iOS) or GCM (Android)
 PushNotification.prototype.register = function(successCallback, errorCallback, options) {
 if (errorCallback == null) { errorCallback = function() {}}
 if (typeof errorCallback != "function") {
 console.log("PushNotification.register failure: failure parameter not a function");
 return
 }
 if (typeof successCallback != "function") {
 console.log("PushNotification.register failure: success callback parameter must be a function");
 return
 }
 cordova.exec(successCallback, errorCallback, "PushPlugin", "register", [options]);
 };
 // Call this to unregister for push notifications
 PushNotification.prototype.unregister = function(successCallback, errorCallback, options) {
 if (errorCallback == null) { errorCallback = function() {}}
 if (typeof errorCallback != "function") {
 console.log("PushNotification.unregister failure: failure parameter not a function");
 return
 }
 if (typeof successCallback != "function") {
 console.log("PushNotification.unregister failure: success callback parameter must be a function");
 return
 }
 cordova.exec(successCallback, errorCallback, "PushPlugin", "unregister", [options]);
 };
 // Call this if you want to show toast notification on WP8
 PushNotification.prototype.showToastNotification = function (successCallback, errorCallback, options) {
 if (errorCallback == null) { errorCallback = function () { } }
 if (typeof errorCallback != "function") {
 console.log("PushNotification.register failure: failure parameter not a function");
 return
 }
 cordova.exec(successCallback, errorCallback, "PushPlugin", "showToastNotification", [options]);
 }
 // Call this to set the application icon badge
 PushNotification.prototype.setApplicationIconBadgeNumber = function(successCallback, errorCallback, badge) {
 if (errorCallback == null) { errorCallback = function() {}}
 if (typeof errorCallback != "function") {
 console.log("PushNotification.setApplicationIconBadgeNumber failure: failure parameter not a function");
 return
 }
 if (typeof successCallback != "function") {
 console.log("PushNotification.setApplicationIconBadgeNumber failure: success callback parameter must be a function");
 return
 }
 cordova.exec(successCallback, errorCallback, "PushPlugin", "setApplicationIconBadgeNumber", [{badge: badge}]);
 };
 //-------------------------------------------------------------------
 if(!window.plugins) {
 window.plugins = {};
 }
 if (!window.plugins.pushNotification) {
 window.plugins.pushNotification = new PushNotification();
 }
 if (module.exports) {
 module.exports = PushNotification;
 }

cant touch this

can't touch this

portafogli

Che ne pensate?

L'articolo di oggi si propone come una guida completa al primo utilizzo della WunderBar. Abbiamo visto la scheda, ne abbiamo ammirato le caratteristiche, ne abbiamo studiato le specifiche tecniche ed ora l'abbiamo anche visto in funzione, apprezzando l'interazione che esiste tra tutti i sensori di cui è dotata ed il mondo circostante.
Restano ancora, però, tutte da esplorare, le applicazioni. Le prime che ci vengono in mente, naturalmente non possono che essere in ambito domestico dal momento che i sensori sembrano tutti pensati proprio per queste applicazioni. Non c'è da dubitare, però, che a voi lettori e ad altri nel mondo verranno presto nuove idee su come utilizzarla.
A proposito, a cosa avete pensato leggendo queste righe?

8 Commenti

  1. Giorgio B. Giorgio B. 19 dicembre 2014
  2. Gladenko Gladenko 19 dicembre 2014
    • turista_diy turista_diy 20 dicembre 2014
      • Piero Boccadoro 20 dicembre 2014
        • Gladenko Gladenko 20 dicembre 2014
          • Piero Boccadoro 20 dicembre 2014
          • Piero Boccadoro 20 dicembre 2014
  3. sergio_arduino48 sergio_arduino48 20 gennaio 2015

Scrivi un commento

EOS-Academy