Software
Für den ArduSmartPilot sind zwei getrennte Softwareentwicklungen nötig: Erstens wird eine Android App und zweitens ein Arduino-Programm erstellt.
Die Arduino-Plattform ist nicht nur eine Hardwareplattform sondern beinhaltet auch eine Open Source IDE (Entwicklungsumgebung), die sowohl auf Mac, Linux und Windows läuft. Die Software des Mikrocontrollers wird hier über eine einfache C-artige Sprache geschrieben, für die es eine große Anzahl von Tutorials im Internet und entsprechende Lehrbücher gibt.
Die „Sketches“ genannten Arduino-Programme sind unverändert auf jede Arduino-Platine übertragbar, auch wenn sich darauf unterschiedliche Mikrocontroller befinden. Die Sketches werden daher zuerst auf einem handlichen Arduino Uno entwickelt und nach erfolgreichen Tests auf einen Arduino Pro Mini übertragen.
Die Möglichkeiten der Programmierung sind durch die C-ähnliche Sprache der Arduino IDE beschränkt. Dies lässt sich aber sehr leicht umgehen, da man innerhalb eines normalen Quelltextes auch Maschinencodebefehle und C++ Befehle verwenden kann. Dadurch erreichen die Schüler/Studenten einen fließenden Übergang in das professionelle Programmieren von Mikrocontrollern.
Das Erstellen einer Android App ist generell ein sehr komplexer Prozess, der gute Java-Kenntnisse und einen Umgang mit professionellen IDEs wie Eclipse voraussetzt. Die Programmierung wird wegen der hohen Diversität der Android-Endgeräte zusätzlich komplexer. Schließlich ist der Zugriff auf das Bluetooth-Modul im Android-Endgerät keine triviale Programmieraufgabe.
Die bis hierhin genannten Tatsachen machen die Android-Programmierung innerhalb eines Schülerprojekts eigentlich zu einem unmöglichen Unterfangen.
Doch glücklicherweise gibt es hierfür auch eine Open Source IDE, die nicht nur aus dem selben Ursprung wie die Arduino IDE stammt, sondern mit Hilfe entsprechender Bibliotheken eine ebenso einfache Programmierung erlaubt.
Diese plattformunabhängige IDE heißt „Processing“ und verwendet eine vereinfachte dem Java ähnliche Programmiersprache. Es ist also kein Wunder, dass die Benutzeroberfläche von Processing fast identisch mit der der Arduino IDE ist.
Processing besitzt mehrere Modi, von denen in diesem Projekt der Java- und der Android-Modus verwendet werden: Im Java-Modus erstellt man Java-Programme, die sich auf einem PC/Mac ausführen lassen. Dabei handelt es sich um interaktive Grafikanimationen, d.h. der Programmablauf wird vom Benutzer über dessen Mausklicks gesteuert.
In diesem Sinne wird die App zur Steuerung des ArduSmartPilot zuerst als Java-Programm auf einem PC entwickelt, wobei der PC via USB (statt über Bluetooth) mit dem Arduino kommuniziert.
Damit lernen die Schüler die Programmierkonzepte wie Schleifen oder if-Verzweigungen nicht textbasiert sondern anhand von Grafikanimationen, was die Motivation und den Lernerfolg wesentlich erhöht. Auch kommen hier künstlerisch kreative Ansprüche an das Programmierergebnis weitaus mehr zur Geltung.
Ist das Java-Programm zur Steuerung des Flugzeugs erfolgreich am PC getestet, dann kann es im Android-Modus fast 1:1 auf das Androidgerät übertragen werden. Den Mausklicks entsprechen dann ein Tippen auf den Touchbildschirm. Das Foto zeigt die Benutzeroberfläche einer solchen App.
Mit Hilfe der „Ketai“-Bibliothek wird bei der Android App die Bluetooth-Verbindung realisiert sowie interne Sensoren des Smartphones ausgelesen. Damit wird es möglich, das Flugzeug z.B. mit Hilfe des Lagesensors über ein Kippen des Smartphones zu steuern.
Bevor direkt mit dem Arduino Pro Mini im Flugzeug kommuniziert wird, testen die Schüler ihre App an einem Arduino Uno, der mit einem Bluetooth-Shield ausgestattet ist (= aufsteckbares funktionsfertiges Bluetooth-Modul). Die hier geschilderte Vorgehensweise ermöglicht nicht nur den Schülern einen schrittweisen und damit frustrationsarmen Einstieg in die Programmierung, sondern lehrt sie auch ein professionelles systematische Vorgehen beim Erstellen und Testen von Software für eingebettete Systeme.