Android App Inventor

Bei der Entwicklung von MASHR gefiel mir die Idee, den Roboter über das Android Handy fernsteuern zu können. Die Cellbots Applikation ist echt genial. Leider ist es mit meinen Java Programmier Künsten nicht weit her um so ein Programm selbst zu schreiben. Allerdings geht es auch ohne Java und großen Programmierkentnissen, dank Googles App Inventor.
IMG_1545.JPG

Installation

Die Installation von App Inventor ist denkbar einfach. Man braucht nur einen Google Account und eine aktuelle Java 6 Version. Die Installations Anleitung zeigt die notwendigen Schritte für Windows, MacOS und Linux.

Einleitung

Entwickelt wird unter App Inventor direkt im Browser. Die Programme werden auch nicht lokal abgelegt sondern landen direkt in der Google cloud.

Zunächst entwirft man die Oberfläche der Anwendung. Alles grafisch per Drag and drop. Wer mit Visual Studio oder anderen grafischen Programmier Tools arbeitert, wird sich schnell damit zurecht finden.

Die eigentliche Programmierung findet dann im Blocks Editor statt. Programmiert wird auch hier grafisch mit einer Art von Code Puzzle Bausteinen. Man zieht einfach die gewünschte Funktionen oder Variable auf den Bildschirm und editert deren Eigenschaftemn. Ein Main Progamm sucht man vergeblich. Alles ist Event gesteuert, z.B. löst der Druck einer Taste ein Buttonx.Click Event aus.

Es empfiehlt sich zumindest die Basis Tutorials durchzuarbeiten, bevor man sich an eigene Programme wagt.

Cellbot light

Das erste selbgeschriebene App Inventor Programm ist eine Cellbot Light Version. Es wird die bestehende Schnittstelle des Cellbot Codes verwendet um den Roboter über die Bluetooth Schnittstelle steuern. Der Arduino Code bleibt unverändert. Allerdings mußte ich nicht bei 0 anfangen. Eine bestehendes Beispiel, das Bluetooth Client Connect Example von ShivalWolf diente als Vorlage. App Inventor unterstützt nur das Bluetooth SPP Profil, was hier vollkommen ausreicht.

Programm Aufbau

So sieht das Frontend Design im App Inventor aus. Connect Button zum Erstellen einer Bluetooth Verbindung. Ein steuerkreuz dient zur Roboter Steuerung. Die vewendeten Symbole stammen aus der freien Open Icon Library
RobotControl-app1.jpg

Der Initialisierungs Code überprüft, ob Bluetooth eingeschaltet ist und holt sich die letzten Verbindungs Infos aus einer Datenbank.
RobotControl-Initialize.jpg

Die Liste der verfügbaren Bluetooth Devices. Das ausgewählte Device wird in der Datenbank gespeichert.
RobotControl-lstDevice.jpg

Der Code für den Connect Buttton. Hier wird versucht, eine Verbindung zum ausgewählten Bluetooth Device aufzunehmen. Besteht bereits eine Bluetooth Verbindung, kann diese durch den Button wieder geschlossen werden.
RobotControl-BtnConnect.jpg

Die Control Buttons zur Roboter Steuerung senden den entsprechenden Befehl per Bluetooth zum Roboter. Das Protokoll ist recht simpel:

  • ‚f‘ forward läßt den Roboter für 1s vorwärts fahren
  • ‚b‘ backward. Rückwärts fahren
  • ‚l‘ left. Links drehen
  • ‚r‘ right. Rechts drehen
  • ’s‘ stop. Stoppt den Roboter

Jeder Befehl wird durch einen Zeilenvorschub ‚\n‘ abgesschlossen.
RobotControl-Buttons.jpg

Fehlermeldungs Ausgabe. Eventuell auftretende Fehler vom Bluetooth Interface werden hier abgefragt und auf dem User Screen ausgegeben.
RobotControl-ErrorOccured.jpg

Download

Das Programm steht zum Download auf meiner Google Code Page bereit. Zum Import einfach das Zip-File herunterladen und im App Inventor laden.

Wie geht es weiter

Das Senden über Bluetooth ist recht einfach. Als nächstes steht der Bluetooth Empfang und die Darstellung der Sensor Daten an. Da es kein Event zum Bluettoth Empfang gibt, muß hier ein TImer verwendet werden, der zyklisch die Bluetooth Daten einliest.

Weblinks

2 Replies to “Android App Inventor”

  1. Hallo Robert,

    das mit den langen Projektnamen ist mir auch schon aufgefallen. Leider habe ich noch keine Lösung für das Problem gefunden.

    Es gibt nur den Contact Picker. Damit kann man eine KOntakt aus der Liste auswählen.

    Grüße Peter

  2. Wenn die APP mit dem Inventor fertig ist und das apk schließlich installiert ist, wird ja das Icon bei screen1 als app-Icon benutzt und der Projektname als APP-Name. Wenn der aber lang ist, wäre es nett, wenn er auf 2 Zeilen umgebrochen würde. Kann man das einrichten? \n im Projektname geht ja nicht.

    Und gibt es einen Block, mit dem man alle Kontakte auslesen kann?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Ich akzeptiere

vier × 3 =