Lo smartphone per il controllo da remoto

CHIP MULTIMEDIALI –

La funzionalità che consente di inviare notifiche push a un dispositivo iOS può essere aggiunta al microcontrollore RX62N di Renesas in modo facile e veloce.

I progettisti devono essere sempre più essere consci dei cambiamenti tecnologici che stanno avvenendo nel mondo che ci circonda poiché sempre di più questi influenzano le direzioni dei nostri sviluppi futuri. Oggi uno dei cambiamenti più significativi del mercato consumer è quello relativo a una crescita estremamente rapida del numero di smartphone disponibili. Questo ha portato alla richiesta che molti dispositivi siano più “connessi” consentendo al proprio utilizzatore di controllare prodotti da remoto con applicazioni semplici da utilizzare dal proprio telefonino intelligente. Questa richiesta sta rapidamente trasformandosi in uno tsunami capace di spazzare via prodotti con minore connettività. Di seguito viene mostrato come può essere facile aggiungere questa funzionalità a molte applicazioni usando un certo numero di componenti software e hardware sviluppati intorno al microcontrollore RX62N di Renesas. Viene documentata la creazione di una applicazione dimostrativa che mostra come inviare una notifica push da una applicazione a microcontrollore a dispositivi iOS come iPhone, iPod touch o iPad.

Il microcontrollore RX62N
Per questa applicazione si è scelto di utilizzare il RX62N di Renesas, un microcontrollore a 32 bit. L’RX62N integra tutte le funzioni necessarie per implementare e provare in modo semplice il sistema. L’RX62N combina una potente Cpu RX600, capace di 165 Dmips RX600, con capacità di flash on chip fino a 512 kbyte, 96 kbyte di Sram, sempre sul chip, e molte altre potenti periferiche. In questa applicazione si fa uso di tre delle periferiche chiave dell’RX62N: il controller Ethernet, il Dma controller relativo, per muovere rapidamente i dati da e per, il controllore Ethernet e timer/comparatore a 16 bit per generare un timing di sistema per l’uso del sistema operativo. Uno dei vantaggi offerti dall’RX62N per questa applicazione è che un certo numero di piattaforme standard di valutazione e di sviluppo sono già disponibili e possono essere utilizzate senza modifiche per la creazione dimostrativa di questa applicazione. In questo caso si è scelto di utilizzare il kit demo di Renesas per l’RX62N, l’RDKRX62N. Questo kit comprende un’ampia varietà di periferiche e di interfacce a bordo che consentono la facile creazione e la valutazione di una vasta serie di applicazioni diverse. Anche l’RSKRX62N, lo starter kit di Renesas per l’RX62N, potrebbe essere facilmente utilizzato. Questa applicazione dimostrativa fa vedere anche come sia facile realizzare una applicazione complessa partendo da un insieme di componenti software già disponibili.
Di seguito viene mostrato come inviare notifiche push per iOS da un RDKRX62N ad un iPhone, iPod touch o iPad su cui giri Prowl, un client Growl per iOS. Questo sistema potrebbe essere utile in molte diverse applicazioni fornendo notifiche o allarmi ad un utente remoto. Per esempio notifiche push potrebbero essere utili nei distributori automatici per informare che le scorte si stanno riducendo o che il contenitore delle monete è pieno, oppure in un sistema di allarme o monitoraggio per fornire allarmi remoti o dati diagnostici.

Le funzioni dei componenti software
Prima di descrivere come funziona l’intero sistema è utile spiegare le funzioni dei suoi principali componenti software. Probabilmente i due componenti più importanti sono Growl e Prowl. Growl è un sistema di notifica per i sistemi operativi Mac OS X e Microsoft Windows ed è utilizzato per visualizzare notifiche pre-configurate di eventi in un sistema utente. Per esempio quando si riceve una nuova mail o quando un download è completato. Growl ha anche la capacità di visualizzare eventi da un computer su di un altro attraverso la rete. Prowl è semplicemente un client per Growl per dispositivi iOS – iPhone, iPod touch e iPad. Con Prowl installato è possibile, per un computer connesso ad internet, inviare messaggi di notifica che appaiono come notifiche push ai dispositivi iOS. Quindi l’utente non deve più stare seduto di fronte al suo computer al fine di ricevere una notifica Growl. Per una implementazione totalmente gratuita si potrebbe utilizzare la app Boxcar ma ad oggi questa app non è stata ancora provata in questa applicazione. Oltre a consentire di inviare notifiche Prowl da una applicazione dedicata Growl per Windows o Mac OS X come “Growl for Windows” è possibile realizzare qualsiasi applicazione abilitata Prowl connessa ad Internet usando l’interfaccia Api di Prowl. Il sistema descritto in questo articolo usa l’interfaccia Api di Prowl per inviare messaggi ricevuti dal microcontrollore RX62N montato sull’ RDK alla app Prowl che gira su un dispositivo iOS. L’interfaccia Api di Prowl necessita di una connessione criptata SSL (Secure Socket Layer) tra il client Prowl ed il server Prowl. Realizzare il supporto SSL nel microcontrollore sarebbe sia complesso che un carico eccessivo per il processore e questa funzione è scaricata ad un intermediario nella forma di un PC Microsoft Windows ma questo potrebbe essere facilmente anche un sistema Mac OS X o basato su Linux. Questo computer host gira una applicazione server che ascolta un messaggio UDP su Ethernet dal protocollo TCP/IP dell’ RX62N e quindi lo passa alla Api del server Prowl per inviarlo al dispositivo iOS. Nell’articolo originale della rivista Make Magazine la applicazione server era implementata usando un server proxy PHP. In questa versione RX62N si è preso un approccio diverso utilizzando Node.js.
Node.js è un JavaScript lato-server per I/O pilotati da eventi usando il motore V8 JavaScript. Node.js consente di scrivere applicazioni server Internet complesse e scalabili in poche linee di JavaScript. Ulteriori informazioni su Node.js si possono trovare su http://nodejs.org. Nella applicazione descritta Node.js viene usato per creare un server di ascolto per UDP che passa i messaggi ricevuti al server Prowl. Il listato completo del codice necessario per fare questo è disponibile nella forma di nota applicativa che può essere scaricata dal sito web di Renesas a www.renesas.eu. Questo codice è alquanto semplice e usa il modulo Node.js definito “node-prowl” per svolgere il compito di interfacciarsi con il server Prowl attraverso la Api di Prowl. Nel sistema demo Node.js è stato fatto girare in ambiente Cygwin. Cygwin è un ambiente simil-Linux per Windows.
Nella nostra applicazione demo il microcontrollore RX62N di Renesas comunica con il server basato su Node.js in TCP/IP attraverso l’interfaccia Ethernet. L’applicazione RX62N fa uso del Rtos di Micrium mC/OS-III e dello stack di comunicazione mC/TCP-IP. L’applicazione è stata creata modificando uno dei progetti demo forniti con la versione per RX62N del libro Micrium’s mC/OS-III. L’applicazione RX62N contiene un task chiamato AppProwlTask() che è responsabile della gestione degli eventi “pressione dei pulsanti” sulla scheda e di inviare un appropriato messaggio via UDP al server Node.js. Quando SW1 (IRQ8) viene premuto la corrispondente routine di interrupt introduce il valore 8 nella coda da cui legge AppProwlTask(). Al ricevimento di questo particolare messaggio dalla coda, viene letta la temperatura dal sensore sulla scheda ed un messaggio contenente la temperatura viene formattato e inviato via UDP al server Node.js. L’indirizzo IP del server è stato determinato precedentemente e codificato in modo fisso nella applicazione. Naturalmente è anche possibile migliorare questo schema impiegando una gestione dinamica dell’indirizzo IP se quello fisso non è accettabile. La pressione si SW2 (IRQ9) fa sì che venga inviato il tempo totale di operatività del Rtos mentre SW3 (IRQ10) causa il messaggio che IRQ10 è stato triggerato.

Installare Cygwin, Node.js e il supporto Prowl
Queste istruzioni di installazione presuppongono che l’utilizzatore stia facendo l’installazione in ambiente Microsoft Windows 7.
•    Come administrator installate sia Cygwin che Node.js seguendo la guida a: https://github.com/joyent/node/wiki/Building-node.js-on-Cygwin-%28Windows%29
•    Installate il Npm (Node Package Manager) con il seguente comando della shell Cygwin curl http://npmjs.org/install.sh | sh
•    Scaricate il pacchetto Node Prowl da:
https://github.com/mape/node-prowl
•    Estraete il contenuto nel cartella di Cygwin (normalmente C:\cygwin)
•    All’interno della shell Bash di Cygwin navigate nel folder mape-node-prowl-xxxxxxx dove si trova package.json
•    Dalla shell Bash lanciate il commando
npm install
A questo punto Cygwin e il supporto a Node.js dovrebbero essere installati.

Configurare e far girare lo Script Node.js
Una nota applicativa che contiene il listato del codice completo per il Node.js può essere scaricato dal sito web di Renesas. Questo codice fornisce la funzionalità di server inviando la richiesta dal dispositivo RX62N al server Prowl su internet per mezzo della Api Prowl. Lo script chiamato “UDP_Server.js” è contenuto anche nel materiale scaricato che accompagna la nota applicativa. In Internet sono disponibili molti tutorial che spiegano come usare Node.js. Al fine di utilizzare lo script sono necessarie due personalizzazioni:
•    la linea 5 contiene la definizione di una variabile per “prowlApiKey”. Questa linea deve essere modificata così che la Prowl Api key dell’utente venga inserita tra le virgolette singole. Una Prowl Api key è disponibile dal sito web Prowl dopo registrazione a: http://www.prowlapp.com/api.php
•    la linea 74 dello script contiene l’indirizzo IP della macchina che lo fa girare. Questo indirizzo IP dovrebbe essere modificato per riflettere quello del sistema dell’utilizzatore.
Lo script può essere lanciato dalla shell BASH di Cygwn usando la linea di comando: node UDP_Server.js

Configurare, costruire e lanciare l’applicazione RX62N
Lo strumento di sviluppo per realizzare e far girare l’applicazione RX62N sulla scheda di valutazione YRDKRX62N può essere scaricato dal link seguente:
http://am.renesas.com/products/tools/introductory_evaluation_tools/renesas_demo_kits/yrdkrx62n/child_folder/peer/install_child.jsp. Dopo aver installato questo pacchetto, scaricate e installate il compilatore GNURX v11.02 MP1 dal link seguente:
http://www.kpitgnutools.com/latestToolchain.php
Lo spazio di lavoro dello spazio di lavoro HEW (High-Performance Embedded Workshop) fornito con la nota applicatica in un file formato zip può essere aperto sia con un doppio click che navigando in HEW nel file .hws nel percorso mostrato di seguito:
 ..\Software\EvalBoards\Renesas\YRDKRX62N\GNURX\GNURX.hws
APP.C contiene il codice per AppProwlTask(). Questo task aspetta fino a che lo stack TCP/IP e l’interfaccia sono pronte e quindi aspetta che un messaggio venga inviato nella coda. Il messaggio in coda indica quale pulsante è stato premuto così che si possa formare una stringa di testo da inviare via UDP all’indirizzo IP del server Node.js. Questo indirizzo IP è una codifica fissata all’interno del task ma, se richiesto, potrebbe essere configurato dinamicamente. Nel codice d’esempio è utilizzata la porta 40000. Quindi il task ritorna ad aspettare che un altro messaggio venga postato nella coda. Sarà necessario per l’utilizzatore cambiare l’indirizzo IP usato per indirizzare il server Node.js per riflettere il suo sistema.

Pubblica i tuoi commenti