Cocktailroboter Gonzo: bunte Nase und bunte Getränke

Seite 3: Benutzerinterface erstellen

Inhaltsverzeichnis

Zunächst stellte sich die Frage, wie das Front-End, die Schnittstelle mit dem Benutzer, letztlich aussehen soll. Der WH-Spring 006 hatte Hardwareregler für die einzelnen Zutaten, aber wir wollen verschiedene Rezepte abspeichern und aufrufen. Am sinnvollsten schien uns eine Steuerung wie bei einem Tablet zu sein. Dafür benötigen wir einen Touchscreen und einen entsprechenden Rechner. Wir entschieden uns für den Raspberry Pi und den offiziellen 7″ Touchscreen, bei dem wir wenig Probleme erwarteten und weil er einen relativ breiten Rand hat, was den Einbau in ein Gehäuse vereinfachen dürfte.

Schematischer Aufbau

Android-Tablets fielen für uns raus, da wir die UART-Schnittstelle nutzen wollen. Eine weitere Alternative wäre die Steuerung über eine App oder einen Webserver, wenn man einen ESP8266 statt des Arduino nutzt. Wir wollen bei der Cocktailparty aber nicht vom WLAN abhängig sein.

Für das Benutzerinterface benötigten wir eine grafische Oberfläche (GUI) bzw. ein Framework zum Programmieren der GUI. Beim Raspberry drängt sich die Nutzung von Python auf. Fast alle Frameworks sind aber für eine Steuerung mit Maus und Tastatur ausgelegt und von 35 möglichen Kandidaten blieb nur PyQt übrig. Mit PyQt lassen sich die touchscreen-optimierten Quick Controls von Qt nutzen – aber nicht die Quick Controls2, mit denen man sogar SwipeScreens, also das Wischen über den Screen, umsetzen kann. Brauchen wir aber!

Daher schwenkten wir auf C++ mit Qt um und nutzen QtCreator. Damit lässt sich unter Linux ein Programm schreiben und übersetzen, das auf dem Raspi installiert werden kann. Dazu benötigen wir einen Cross-Compiler. Zum nötigen Workflow gibt es im Internet viele Anleitungen (wie diese) und mit einer Virtualisierungssoftware wie z.B. „VirtualBox" wird aus einem Windowsrechner auch schnell ein virtueller Linuxrechner. Prinzipiell lässt sich QtCreator direkt auf Raspbian installieren, die so programmierten Anwendungen laufen allerdings nur sehr träge.

Screenshot QtCreator

Für die Programmierung der GUI ist nur sehr wenig C++ Code notwendig. Die Ansichten und Steuerelemente werden in der deklarativen Programmiersprache QML beschrieben. Das geschieht hauptsächlich durch Drag and Drop im Designermodus des QtCreators. Da sich auch eigene Steuerelemente zusammen bauen lassen, scheinen die Möglichkeit schier endlos. Einen guten Einblick in die Möglichkeiten von QML gibt das online verfügbare Buch „Qt5 Cadaques“ von Ryannel und Thelin. Die Anbindung der in QML definierten GUI zum restlichen Code erfolgt über den für Qt typischen Signals & Slots Mechanismus, der bei Eintreten eines Ereignisses – wie dem Drücken eines Buttons – Signale auslöst, die damit verknüpfte Funktionen, die Slots, aufrufen.