ft-Explore - Mein fischertechnik-Interface mit RaspberryPi

  Development

fischertechnik-Modelle mit dem RaspberryPi über grafische Benutzeroberfläche und Python-Skripte steuern

Motivation

In den 90er Jahren des vorigen Jahrhunderts hatte ich ein Fischertechnik-Interface für den Atari ST, das über den Parallelport angeschlossen wurde. Die Möglichkeit, meine selbstgebauten Modell über den Computer zu steuern, hat mich begeistert und vielleicht sogar meinen Werdegang beeinflusst. Heute möchte ich mit einem RaspberryPi Fischertechnik-Modelle steuern können und auch meinen Kindern einen leichten Einstieg ermöglichen.

Beschreibung

Der RaspberryPi soll in die Lage versetzt werden, vier Motoren oder Lampen anzusteuern und acht Digitaleingänge einzulesen. Weitere Anschlussmöglichkeiten wie etwa Analogeingänge sind weniger wichtig, da für die meisten Modelle nicht erforderlich. Allzu viele Hardwarebasteileien sollen dazu nicht erforderlich sein und außerdem der RaspberryPi vor fehlerhaft angeschlossenen Modellen oder Störungen durch die Motoren geschützt sein. Die notwendigen Teile sollen leicht zu beschaffen sein und ein gutes Preis-Leistungsverhältnis haben.

Folgende Anforderungen stelle ich softwareseitig an eine Lösung:

Meine Internetrecherche hat nichts auch nur ansatzweise Passendes hervorgebracht, sodass ich selbst etwas entwickelt habe.

Implementierung

Da die Skriptausführung in Python erfolgen soll, ist es naheliegend, auch die Benutzeroberfläche in Python zu implementieren. Dies passt auch gut zur Anforderung eine plattformunabhängigen Lösung. Da Tk in Form von Tkinter mit Python ausgeliefert wird und die Benutzeroberfläche nicht besonders aufwändig sein muss, habe ich mich entschieden, Tk zu nutzen. Alternativen auf der Höhe der Zeit, wie Kivy oder Qt, hätten zu deutlich mehr Abhängigkeiten und einer aufwändigeren Installation geführt. Auf der Grundlage von Tkinter habe ich folgendermaßen aussehende Oberfläche entwickelt:

ft-Explore application screenshot

Die Benutzeroberfläche ist in der Größe anpassbar. Eine Verkleinerung ist möglich, bis nur noch die Steuerungsmöglichkeiten und Anzeigen sichtbar sein, d.h. die Steuerungs- und Ausgabemöglichkeiten für die Benutzerskripte sind komplett ausblendbar. Eine Vergrößerung verlängert die Regler und steigert insbesondere den Platz für die Ausgabe der Benutzerskripte.

Im unteren Teil des Fensters kann der Benutzer ein Python-Skript laden, dieses Starten und jederzeit wieder abbrechen. Die Skriptausgabe erscheint im unteren Ausgabebereich, der einen beschränkten Teil der Ausgabe über Scrollbalken jederzeit zugreifbar behält und aus dem die Ausgabe auch markiert und über ein gewohntes Strg-C herauskopiert werden kann. Ein Anzeigen und Editieren des Benutzerskriptes in der Bedienoberfläche ist nicht vorgesehen, damit jeder seinen Lieblingseditor, unter Windows etwas Notepad++, verwenden kann. Bei jedem Starten des Skriptes wird die aktuelle Codeversion verwendet, ein umständliches erneutes Laden der Datei ist nicht erforderlich.

Für die Hardware habe ich folgende Teile verwendet:

input wiring

Damit ist so gut wie nichts zu löten und die Teile müssen nur noch gemäß des Schaltplans miteinander verbunden werden. Und dann kann es losgehen!

Referenzen