Auf der Google I/O 2011 Konferenz wurde das neue Android Open Accessory Development Kit (ADK) vorgestellt. Da die vorgestellten Entwickler Boards zu teuer bzw. nicht verfügbar sind, möchte ich hier zeigen wie man sich sein eigenes ADK Demo Board mit einem normalen Arduino Uno Board baut.
Das ADK dient dazu, intelligentes Zubehör an sein Android Handy anzuschliessen. Das kann z.B. eine Ladestation sein, die das Handy auflädt und zudem beim Anschliessen ein besonderes Programm auf dem Handy startet.
Damit das ganze funktioniert tauschen App und Zubehör eine eindeutige Kennung aus damit die richtige App zum entsprechenden Zubehör geöffnet wird. Die Kommunikation läuft über USB ab, wobei das Handy als USB client läuft und das Zubehörteil als USB host.
Das ADK wird nur von der neuesten Android Firmware unterstützt, dies ist die v2..3.4 für Handys und die v3.1 für Tabletts. Deshalb läuft das ganze auch nur auf wenigen Android Handys wie das Nexus One und das Nexus S.
Ich zähle zu den glücklichen Nexus One Besitzern, allerdings mit einer Vodafone Firmware der Version v2.1. So beschloss ich kurzerhand das Handy zu rooten um von der Vodafone Firmware wegzukommen zu einer aktuellen Google Firmware. Das ging recht problemlos und innerhalb einer Stunde war die aktuelle Firmware auf meinem N1. Die Vorgehensweise zum Updaten kann man unter Android-Hilfe.de nachlesen.
Die ADK Seite beschreibt, was alles benötigt wird um mit dem Accessory mode zu beginnen. Aus dem ADK package wurde die Android DemoKit App ohne Änderungen übernommen. Anstelle des DemoKits wird ein selbstgebasteltes DemoKit verwendet, bestehend aus einem Arduino Uno, einem, Sparkfun USB Host shield und ein selbstgebautes IO shield.
Achtung: Das Sparkfun Host shieldarbeitet nicht mit einem Ardunio Mega oder Mega2560 wegen der verschiedenen SPI pins. Man kann aber das USB host shield v2.0 von Circuits@home für alle Arduino boards verwenden.Das Board ist allerdings etwas teuerer (40$) als das Sparkfun Shield (25$).
Die Arduino Firmware wurde auf den Arduino Uno bzw. Mega durch Romfont alias Inopia vorgenommen, dem Entwickler der MicroBridge (Android zu Arduino Bridge via ADB). Weil Romfont kein Handy mit v2.3.4 zur Verfügung hatte, bat er auf seinem Blog um Unterstützung um die Firmware zu testen. Die Firmware funktionierte bei mir nach einigen kleineren Modifikationen.
Stapelbare Headers has been used on the USB Host shield, so the IO shield can be attached above. At twurden verwendet um das USB Host shield und das IO Shield auf dem Arduino zu stapeln. Im Moment steckt daran ein micro Servo, eine RGB LED, eine rote LED (anstelle eines Relais) und a Sharp GP2D12 Distanzsensor. Zudem wird noch eine externe Stromquelle benötigt.
Videos
Das Video zeigt einen ersten Test des DIY DemoKit. Alles funktioniert ganz prima. Nach dem Einschalten des DemoKits geht das Handy in den Lade Modus. Schaltet man die Tastensperre aus, kommt die Abfrage ob man die App für das erkannte Zubehör starten will (das kann man auch durch Setzen des Hakens automatisieren). Dann startet die App. Zwischen den beiden Fenstern (Input und Output) kann man wechseln 7und sich die Werte der Eingänge anschauen oder die Ausgänge bedienen.
httpv://www.youtube.com/watch?v=BqD5-chWdDY
Total cool.
Ich warte jetzt noch auf die Lieferung des USB Host Shields. Kanns kaum erwarten…
Ich frage mich nur, warum Du 2 USB-Kabel angeschlossen hast. Eins ist am USB Host Shield und das andere am Uno. Warum das? Bzw. wo gehen die denn beide hin?
Hallo Knox,
das USB Kabel am UNO ist nur zur Ausgabe von Debugmeldungen bzw. zum Laden der Sketche notwendig.
Viele Grüße
Peter
Hi. I totally messed up with the ADB stuff, I accidentally uploaded the wrong Android app to google code. Can you have a go at running the correct app? You can get it from the download section (ServoControl.zip).
Also, wurst!
Hi Inopia,
great work! I’ve just downloaded and installed the servo app. It works like a charm :-). Thank you so much. Now I can use ADB and ADK.
Greatings Peter