In occasione della conferenza Google I/O 2011, tenutasi il 10 e 11 maggio 2011 al Moscone Center di San Francisco, Google ha presentato una nuova piattaforma di sviluppo per Android basata su Arduino.
Google, Android ed Arduino
Google I/O è un evento capace di attirare migliaia di sviluppatori dal tutto il mondo, che si riuniscono con lo scopo di apprendere le nuove tecnologie sviluppate dalla casa di Mountain View relative alle applicazioni nei settori web, mobile, ed enterprise, tecnologie che includono, tra le altre: Android, Google Chrome, Google API, Google Web Toolkit, e App Engine.
La nuova versione di piattaforma Android, la 3.1, introduce tra le nuove feature un'inedita ed importante funzionalità, chiamata Android Open Accessory, resa disponibile attraverso l'Android Open Accessory Development Kit (ADK). Qual'è la principale innovazione introdotta da ADK? Diciamo che con le versioni precedenti era sì possibile collegare un dispositivo Android ad un computer, ma non esisteva alcun modo attraverso il quale le applicazioni sviluppate in Android potessero interagire con un hardware esterno tramite connessione USB. Attraverso l'upgrade di Android, che ha prodotto la versione denominata "Honeycomb" (la 3.1, appunto), a cui farà seguito a breve la versione "Ice Cream Sandwich", i dispositivi equipaggiati con Android potranno gestire l'interfaccia USB come se fossero un normale computer desktop o portatile; sarà pertanto possibile gestire, ad esempio, tastiere, mouse, webcam, joystick, o altri dispositivi dotati di connessione USB. Va sottolineato che questa funzionalità apre potenziali utilizzi di Android anche nel campo del gaming e delle consolle per videogiochi. Android, nato per essere soprattutto un sistema operativo per cellulari (notizia di questi giorni: HTC, da sola, ha venduto oltre 10 milioni di smartphone equipaggiati con Android!), amplierà con queste nuove versioni i suoi campi di utilizzo, divenendo capace di controllare una moltitudine di dispositivi esterni.
Google vuole l'hardware basato su Arduino
L'hardware proposto da Google per supportare la funzionalità ADK, mostrato nell'immagine seguente, presenta l'importante caratteristica di essere configurabile in modalità USB Host. Ciò è molto importante per dispositivi come cellulari e tablet, che di per se stessi non possono funzionare in questa modalità, ma solo come device. Google ha rilasciato nella versione 3.1 tutto il software, il firmware, e le API necessarie per gestire il nuovo sistema di sviluppo per Android basato sulla piattaforma Arduino; successivamente dovrebbe anche essere reso disponibile il backporting sulla precedente versione 2.3 (Gingerbread).
Il sistema di sviluppo di Google per Android è basato su Arduino Mega 2560, un dispositivo completo e potente, ed è commercializzato da una società giapponese ad un prezzo pari a 400 dollari.
Android Open Accessory Development Kit (ADK)
La versione 3.1 di Android introduce il supporto Android Open Accessory che consente ad un hardware esterno dotato di interfaccia USB di interagire con un dispositivo Android in una modalità speciale "accessoria". In questa modalità, l'hardware esterno (detto accessorio) funziona come USB host (alimenta quindi il bus ed enumera i dispositivi), mentre il dispositivo Android funziona in modalità device. Il dispositivo accessorio, dovendo funzionare in modalità host, deve essere in grado di fornire almeno una corrente di 500mA a 5V. L'Android Open Accessory Development Kit (ADK) fornisce un'implementazione della modalità USB accessoria basata sulla piattaforma elettronica open-source Arduino, rendendo disponibili sia gli schemi elettrici dell'hardware relativo, che il codice che implementa il firmware accessorio e l'applicazione Android che interagisce con l'hardware accessorio. Gli schemi elettrici ed il codice sorgente sono contenuti all'interno del pacchetto ADK liberamente scaricabile a questo indirizzo). I componenti hardware e software dell'ADK includono:
- una scheda con microcontrollore USB basata sui progetti Arduino Mega2560 e Circuits@Home USB Host Shield, che implementa la funzionalità di Android USB accessorio. La scheda è equipaggiata con un apposito firmware, scritto in C++, in grado di gestire le funzionalità della board stessa e l'interazione con i dispositivi Android
- un Android Demo Shield (ADK shield) che si connette sopra la board ADK ed implementa i segnali (shield) di ingresso e uscita per la board. Queste implementazioni includono joystick, uscite con LED, sensori di temperatura e di luce. Altri shield possono essere acquistati o realizzati da sè
- una libreria basata su Arduino USB Host Shield, che permette alla scheda microcontrollore USB di funzionare in modalità USB host, e di iniziare quindi le transazioni con i device USB
- un programmino Arduino, scritto in C++, che gira sulla scheda ADK. Il programmino chiama la libreria Android accessory protocol per interagire con il dispositivo Android connesso al bus USB. Trasmette inoltre dei dati dalla scheda ADK e dall'I/O verso l'applicazione Android, riceve dati da quest'ultima e visualizza l'output
- la libreria Android accessory protocol che definisce come enumerare il bus, come trovare un dispositivo Android connesso che supporta la modalità accessoria, e come instaurare la comunicazione con il dispositivo
- altre librerie fornite da terze parti per supportare la funzionalità della scheda ADK:
- libreria CapSense
- libreria I2C/TWI (Two-Wire Interface)
- libreria Servo
- libreria SPI
- libreria Wire
- un'applicazione Android, DemoKit, che comunica con la scheda ADK e con l'I/O
Il kit di sviluppo per accessori Android permette uno sviluppo rapido e semplice di accessori per i vari dispositivi Android come smartphone e tablet, con applicazioni che spaziano in svariati campi come automotive (kit per auto, navigatori, sistemi audio), domotica (telecomandi, sistemi di controllo), fitness e healthcare (misuratori di glucosio, misuratori della frequenza cardiaca), business ed e-commerce (POS, terminali).
Al Google I/O è stata fatta una dimostrazione pratica di Android Open Accessory, mostrata nel video seguente. Un impiegato di Google si è infatti prestato per la demo dell'applicazione cardioQuest, un dispositivo con un accessorio USB in grado di monitorare il battito cardiaco durante l'attività fisica (in questo caso si tratta di una cyclette).
Sempre alla conference 2011 di Google I/O è stata proiettata la diapositiva seguente, carica di quell'ironia che ha da sempre contraddistinto i fondatori di Google: un simpatico robottino (simbolo di Android) si appresta ad addentare una gustosa mela (simbolo della xxxxx...).
Attendevo questo articolo da quandp Emanuele l’altro giorno ne diede l’anticipazione. Sono un convinto sostenitore sia di Android che i Arduino…me lo voglio godere davvero questo articolo…me lo leggo con calma e vi saprò dire…di certo deve essere una bella figta mettere insieme i due sistemi
Mi fa molto piacere leggere queste cose. Già in passato ho avuto modo di vedere progetti basati su arduino (quello blu) e Android, specialmente sul blog Hack a day, che per questo tipo di progetti un pò esotici è imbattibile. Da lì sono arrivato a trovare le librerie openPicus, che più genericamente fornivano supporto un pò per tutte le reti wireless: Bluetooth e WiFi.
Il movimento intorno a questo nuovo metodo di procetto non è stato pochissimo, infatti hanno cominciato a spuntare vari sistemi che sfruttando o meno le librerie openpicus permettevano ad arduino di comunicare con telefoni android tramite uno shield bluetooth. Di recente ho già fornito qualche link in un altro post
http://it.emcelettronica.com/forum/costruire-ricevitore-bluetooth-rs232-o-trasformane-usb-rs232#comment-15461
Tutto questo fermento intorno alla comunicazione tra arduino e android, dovrebbe aver lasciato presagire già tempo fa che per google sarebbe stata un’ottima mossa fornire supporto alla connettività tra le piattaforme. E se ora che decide di fornirlo per via ufficiale non mi meraviglio, visto che Arduino è la board più usata al mondo, e Android è attualmente il sistema operativo per terminali mobili più venduto al mondo. Questa mossa è giustificabile anche dal comportamento di Google in generale. Se lo confrontiamo col diretto rivale, Apple, Google da quel che ho capito evita di imporre limiti tanto stupidi quanto inutili ai propri terminali, cercando appunto di sfruttarli al meglio. Ad esempio qualche anno fa mi ero ritrovato a dover inviare un file tramite bluetooth a un amico munito di iPhone, ed è uscito fuori che gli iPhone possono scambiare dati solo tra di loro, e non con terminali di altri produttori. Roba da matti!
Tornando alla questione originale, la decisione di google di supportare Arduino in maniera più o meno nativa, è sfociato purtroppo nella scelta di una scheda simile ad arduino mega, ma che costa 400 maledetti dollari! Non so fino a che punto possa avere senso un’applicazione su scala industriale di questa board. Sono sicuro che qualunque azienda grossa, non baserebbe il proprio lavoro su una scheda generica che paga a caro prezzo, ma sceglierebbe dei componenti ad hoc per ottimizzare costi e prestazioni.
Probabilmente il supporto che viene fornito sarebbe da intendere come una mano tesa alla comunità di appassionati di elettronica, più che come una strategia “tecnica”.
Visto inoltre che le schede che Google sta realizzando non sono proprio l’Arduino blu che tutti conosciamo, questo potrebbe essere appunto visto come un qualche tipo di ottimizzazione in corso d’opera. Le schede sembrano anche molto semplici dal punto di vista del Layout. Certo non so esattamente come sono realizzati i circuiti, ma non sembra niente di disumano. Non me lo spiego un prezzo tanto esagerato. Nella presentazione che si è tenuta google ha parlato anche di domotica. anche questo aspetto può essere visto sotto un’ottica più ampia: Big G sta cercando di diffondere il proprio OS a macchia d’olio per entrare nella vita di tutti i giorni, e non mi sembrerebbe nemmeno azzardato a questo punto pensare che la scheda simil-Arduino vista sia solo un esempio di progetto, una demoboard, per iniziare a realizzare progetti di entità maggiore.
Articolo molto interessante ed il commento di Giovanni è stato più che esauriente