splash_480x800

ArduBot RC-Control for Android

Von am 27.03.2013

Aufbauend auf den beiden Projektarbeiten ArduBot (http://mt091110.students.fhstp.ac.at/IAI/) und ArduBot RC-Control (http://mt091110.students.fhstp.ac.at/PA2/), habe ich beschlossen, als Semesteraufgabe im Fach Mobile Anwendungen, die Funkfernsteuerung für meinen kleinen Freund nativ für Android zu entwickeln.

Die Grundlagen dafür wurden uns von Jakob Doppler in einem Workshop für Android-Entwicklung beigebracht. Inspiriert dazu wurde ich von einem Vortrag auf der Mobile Developer Conference 2012 in Stuttgart, mit dem Thema “Hardwareerweiterungen für Android”, wo uns der USB-On-The-Go (USB-OTG) Modus neuerer Android-Smartphones vorgestellt wurde, durch den es möglich ist, mittels eines speziellen Kabels (Amazon), das Smartphone in den USB-Host Modus zu bringen, um externe Geräte ansteuern zu können. In meinem Fall wollte ich damit direkt auf den Arduino-basierten JeeLink USB-Funkadapter (http://jeelabs.com/products/jeelink) zugreifen, um die Steuersignale zum ArduBot zu senden.

Das Funkprotokoll und die notwendige Software für den Arduino-Controller waren bereits entwickelt, es ging also nur darum, die USB-Schnittstelle auf dem Android-Phone zu implementieren und das Userinterface entsprechend zu gestalten. Glücklicherweise gibt es bereits eine fertige Library für Android, um über die USB-Schnittstelle mit Arduino-Boards zu kommunizieren (https://code.google.com/p/usb-serial-for-android/). Etwas schwieriger gestaltete sich das Userinterface, das ich ähnlich der iPhone-WebApp (Link siehe PA2), mit einem kleinen Touch-Joystick implementieren wollte. Aber auch hier fand ich einige Inspiration im weltweiten Netz und auf dem Blog von Alex Trost (http://blog.trostalex.com/?p=114) eine einigermaßen brauchbare Vorlage.

Trotz allem waren ca. 20 Stunden an Arbeit notwendig, um die vielen Teile zusammenzustoppeln, einen netten Splash-Screen einzubauen, und die notwendigen Berechnungen durchzuführen, um aus der Joystickposition die Daten zur Übertragung über die Funkschnittstelle zu bekommen.

Das Ergebnis könnt ihr hier beobachten und auch gleich downloaden: ArduBotRC-Control.

Einige Verbesserungen sind sicherlich noch möglich: Zum einen springt der Joystick ab und zu unkontrolliert hin- und her. Die Ursache dafür habe ich noch nicht ermitteln können. Zum anderen werden Touches ab und zu nicht richtig erkannt und keine Daten über die Funkschnittstelle gesendet. Dem könnte man durch einen automatischen Refresh-Timeout von z.B. 1 Sekunde abhelfen, bei dem die Daten automatisch, ohne Änderung gesendet werden. Zu guter letzt ist auch das Userinterface noch verbesserungswürdig. Man könnte auf der großen, weißen Fläche z.B. den ArduBot schemenhaft anzeigen und über einen Rückkanal der Funkschnittstelle den Zustand der Sensoren anzeigen.

The comments are closed.