Der ftDuino ist ein echtes Community-Projekt. Er basiert auf Ideen aus der fischertechnik-Community und integriert sich entsprechend gut in bestehende Community-Projekte. Während kommerzielle Produkte oft in Konkurrenz mit ihren eigenen Vorgängern stehen und dem Kunden vor allem Neues geboten werden soll können es sich Community-Projekte leichter erlauben, auch ältere und technisch in Konkurrenz stehende Systeme einzubinden.
Der ftDuino lässt sich wie in Abschnitt 6.13.5 beschrieben mit dem fischertechnik-TXT-Controller per I²C koppeln. Auf dem TXT kommt dabei die sogenannte Community-Firmware1 zum Einsatz. Entsprechende Programme zur Anbindung des ftDuino per I²C finden sich ebenfalls dort2 .
Einfacher und robuster ist die Anbindung per USB an PCs, den TXT oder auch den Raspberry-Pi. Die Community stellt dazu einen Sketch sowie eine passende Python-Bibliothek zur Verfügung3 .
Mit Hilfe des Sketches stellt der ftDuino seine Anschlüsse einem per USB angeschlossenen übergeordneten Gerät zur Verfügung. Die Python-Bibliothek kann auf dem übergeordneten Gerät genutzt werden, um aus einem Python-Programm auf die Ein- und Ausgänge des ftDuino zuzugreifen.
Mit Hilfe dieser Bibliothek lassen sich bestehende Python-Programme für die Community-Firmware leicht auf die Nutzung eines ftDuino erweitern. Besonders interessant ist dies auf Geräten wie dem Raspberry-Pi, da diese von Haus aus keine Schnittstelle zu fischertechnik-Sensoren und -Aktoren mitbringen.
Programme wie startIDE4 und Brickly5 können mit Hilfe von ftduino_direct auf den ftDuino zugreifen und so auf dem Raspberry-Pi die fischertechnik-kompatiblen Anschlüsse des ftDuino nutzen.
Die Installation des ftduino_direct-Sketches auf dem ftDuino kann wie gewohnt per Arduino-IDE erfolgen, benötigt aber einen klassischen PC. Um vom PC komplett unabhängig zu sein wurde die ftDuinIO-App für die Community-Firmware entwickelt.
Die App kann auf dem fischertechnik-TXT ebenso betrieben werden wie auf dem zum TX-Pi konfigurierten Raspberry-Pi und erlaubt es, Sketches auf den ftDuino zu laden sowie die ftduino_direct-Funktionen zu testen.
Brickly6 ist eine auf Googles Blockly7 basierende grafische Programmierumgebung.
Brickly wurde für den fischertechnik-TXT-Controller geschrieben und bringt alles mit, um dessen Ein- und Ausgänge nutzen zu können. Brickly selbst benötigt einen leistungsfähigen Controller, um darauf zu laufen. Dies kann ein fischertechnik-TXT-Controller oder auch ein Raspberry-Pi sein. Die Bedienung und Programmierung erfolgt dann im Web-Browser mit Hilfe eines per WLAN verbundenen Smartphones oder PCs.
Der ftDuino selbst ist nicht leistungsfähig genug, um Brickly auszuführen. Auch die nötige WLAN-Verbindung bringt der ftDuino nicht mit.
Stattdessen kann Brickly einen an den fischertechnik-TXT-Controller oder einen Raspberry-Pi (TX-Pi) angeschlossenen ftDuino ansteuern. Brickly nutzt dazu die in Abschnitt 8.1 beschriebene ftduino_direct-Anbindung.
Das ftDuino-Plugin für Brickly8 kann in eine bestehende Brickly-Installation direkt in der Browser-Oberfläche installiert werden.
Danach können die ftDuino-Ein- und -Ausgänge direkt in Brickly-Programmen verwendet werden. Einem Raspberry-Pi erschließt sich so die fischertechnik-Welt, ein TXT-Controller kann so um 20 zusätzliche Ein- und 8 Ausgänge erweitert werden.
Brickly existiert auch in der in Abschnitt 6.18.4 beschriebenen lite-Variante. Diese erlaubt den direkten Zurgiff aus dem Browser auf einen per USB angeschlossenen ftDuino und benötigt keinen zusätzlichen TXT-Controller oder Raspberry-Pi.
Die üblichen Programmierumgebung RoboPro für den fischertechnik-TXT- und -TX-Controller benötigt einen Windows-PC zur Programmierung. Selbst das deutlich modernere Brickly (siehe Abschnitt 8.3) ist auf ein externes Gerät zur Programmentwicklung angewiesen.
StartIDE9 wurde dagegen so konzipiert, dass schon der kleine Touchbildschirm des fischertechnik-TXT-Controllers oder eines Raspberry-Pi ausreicht, um direkt am Gerät Programme erstellen zu können.
Die startIDE unterstützt neben den eigenen Anschlüssen des TXT auch die Anschlüsse einer ganzen Reihe per USB extern anzuschließender Interfaces und damit u.a. auch die des ftDuino. Dazu bedient sich startIDE der bereits in Abschnitt 8.1 vorgestellten ftduino_direct-Anbindung. Da die startIDE auch auf dem TX-Pi bzw. dem Raspberry-Pi läuft verleiht sie diesem die für den Einsatz im fischertechnik-Modellen nötigen Anschlüsse.
Das Gespann TX-Pi (bzw. Raspberry-Pi), ftDuino und startIDE erlaubt damit, fischertechnik-Modelle ganz ohne PC oder Smartphone zu programmieren.
Die ausführliche Bedienungsanleitung10 der startIDE enthält weitere Details zur Nutzung des ftDuino.
Der ft-Extender ist wie der I²C-Expander aus Abschnitt
6.13.6 ein Gerät, das es erlaubt den I²C-Bus
des ftDuino zu erweitern und so unterschiedlichste Geräte
gleichzeitig anzuschließen und zu koppeln.
Über die Funktionen des I²C-Expander hinaus bietet der ft-Extender eine zusätzliche Spannungsversorgung für angeschlossene Geräte. Mit Hilfe des ft-Extender an den ftDuino angeschlossene Sensoren werden also anders als beim I²C-Expander nicht vom ftDuino versorgt, sondern vom ft-Extender selbst. Dadurch steht einerseits ein etwas höherer Strom zur Verfügung. Vor allem steht aber neben den 5 Volt, die auch der ftDuino liefert, zusätzlich eine 3,3-Volt-Versorgung zur Verfügung. Der ft-Extender ist damit flexibler einsetzbar als der I²C-Expander.
Mehr Informationen zum ft-Extender finden sich unter https://github.com/elektrofuzzis/ftExtender, speziell das Handbuch unter https://github.com/elektrofuzzis/ftExtender/blob/master/Handbuch_ft-Extender.pdf.
Scratch11 ist eine grafische
Programmierumgebung vergleichbar mit Blockly und Brickly (siehe Abschnitt
6.18.4).
Scratch wurde als reine Simulationsumgebung entwickelt. Die Interaktion mit echter Hardware war nicht vorgesehen. Scratch for Arduino12 erweitert Scratch im die Möglichkeit, Arduinos anzusprechen. Dazu wird auf dem Arduino ein spezieller Sketch installiert. Der so präparierte Arduino wird von S4A automatisch erkannt und eingebunden.
Da der ftDuino über spezielle Ein- und Ausgänge verfügt lässt er
sich nicht direkt mit dem S4A-Sketch ansteuern. Stattdessen findet
sich in der ftDuino-Installation ein kompatibler Sketch unter
Datei ► Beispiele ► Ftduino ► S4AFirmware16. Ein mit diesem Sketch ausgestatteter
ftDuino wird von S4A automatisch erkannt und eingebunden.
Da S4A sich mit den Bezeichnern der Ein- und Ausgänge nah an die üblichen Arduino-Bezeichnungen anlehnt kann nicht mit den ftDuino-üblichen Bezeichnungen gearbeitet werden. Abbildung 8.10 zeigt, welchen Anschlüsse am ftDuino in S4A unter welcher Bezeichnung auftauchen.
S4A auf dem ftDuino setzt eine normale Installation von S4A voraus. Die Installation ist auf der S4A-Homepage unter http://s4a.cat/ beschrieben.
Es muss lediglich statt des dort angebenen Original-Sketches der
Datei ► Beispiele ► Ftduino ► S4AFirmware16-Sketch auf den ftDuino geladen
werden.
In Abbildung 8.11 ist ein Beispielprogramm nebst entsprechender Verkabelung abgebildet. Bei den Analogeingängen ist zu beachten, dass der ftDuino einen Wertebereich von 0 bis 65,535kΩ messen kann während Scratch mit Werten von 0 bis 1023 arbeitet. Ein Wert von 1023 in S4A entspricht dabei 65,535kΩ bzw. einem offenen Eingang am ftDuino. Ein Wert von 0 in S4A entspricht 0Ω bzw. einem geschlossenen Eingang.
Da S4A für die Benutzung mit eine Arduino entworfen wurde zeigt das Programm zunächst im oberen rechten Bereich die Belegung eines Arduino an. Es erleichtert die Arbeit mit dem ftDuino unter S4A sehr, wenn dort die abweichende Belegung des ftDuino angezeigt wird.
Eine entsprechende sogegannte Sprite-Datei ist unter
https://harbaum.github.io/ftduino/www/images/s4a_sprite.png
erhältlich. Sirekt unter der Anzeige des Arduino-Bildes befindet sich
ein Icon zur Auswahl eines neuen Sprites.
Klickt man auf dieses Icon, so kann man im folgenden ``Paint''-Dialog
ein neues Sprite zeichnen. Um die o.g. Datei zu verwenden muss man
diese zunächst auf den eigenen PC laden. Im ``Paint''-Dialog kann sie
dann über den Import-Knopf in S3A importiert werden. Das neue
Sprite-Bild muss abschließend mit ``Ok'' bestätigt werden.
Die Anschluss-Belegung des ftDuino wird nun für das aktuelle Projekt dauerhaft oben rechts in S4A angezeigt.
Neben den grafischen Programm-Baukästen wie Scratch, die ihre Ursprünge im didaktischen Bereich haben, gibt es auch grafische Programmiersysteme, die auf den ersten Blick aus einer unerwarteten Richtung kommen.
Ein populäres Beispiel dafür ist Minecraft. Dieses Spiel bietet mit
dem ``Redstone'' und den entsprechenden Komponenten eine Möglichkeit,
Kabel in der virtuellen Minecraft-Welt zu verlegen und damit
Spiel-interne Aktoren und Sensoren sowie Logikelemente zu verbinden.
Die Minecraft-Mod für den ftDuino erweitert Minecraft um Blöcke, die die Minecraft-interne Welt mit den Anschlüssen eines am PC angeschlossenen ftDuino verbindet.
Die sogenannte ftDuino-Mod für Minecraft basiert auf Forge 1.12.2 13 und setzt eine Installation dieser Minecraft- und Forge-Versionen voraus. Die Installation der ftDuino-Mod unterscheidet sich in keiner Weise von anderen Mods.
Die ftDuino-Mod selbst kann unter https://harbaum.github.io/ftduino/minecraft/ftduino-0.0.3.jar heruntergeladen werden. Sie eignet sich für Windows-, Linux- und MacOS-PCs. Sie wird den üblichen Anleitungen folgend in das entsprechende Mod-Verzeichnis von Minecraft kopiert und beim nächsten Start von Minecraft automatisch geladen.
Der ftDuino muss mit dem IoServer-Sketch versehen werden. Dieser ist in der Arduino-IDE unter Datei ► Beispiele ► WebUSB ► IoServer zu finden. In diesem Fall muss als Board der normale ftDuino ausgewählt werden und nicht ftDuino (WebUSB), da es sich bei Minecraft im keine Web-Anwendung handelt.
Da der IoServer-Sketch bei entsprechend ausgerüsteten ftDuinos auch das interne OLED-Display nutzt muss die Adafruit-GFX-Bibliothek installiert sein. Dies kann bei Bedarf über das Bibliotheken-Menü der Arduino-IDE mit wenigen Klicks nachgeholt werden. Ein internes Display ist nicht zwingend nötig, der Sketch funktioniert auch auf jedem ftDuino ohne Display.
Wurde die ftDuino-Mod erfolgreich eingebunden, dann stehen im Creative-Modus von Minecraft im Redstone-Bereich die in Abbildung 8.15 dargestellten zusätzlichen Blöcke zur Verfügung.
Zur Zeit stehen reine digital-Blöcke für die Eingänge I1 bis
I8, die Ausgänge O1 bis O8 und die interne
Leuchtdiode des ftDuino zur Verfügung.
Der Input-Block (IN) stellt eine Verbindung von Redstone zu einem der Eingänge I1 bis I8 des ftDuino zur Verfügung. Durch Rechtsklick auf die Vorderseite des Blocks kann der Eingang ausgewählt werden. Er wird durch einen grünen Stecker symbolisiert, der in einer von acht Buchsen steckt. Ein gelber Blitz rechts daneben zeigt an, wenn der angewählte Eingang aktiv ist weil z.B. ein am ftDuino angeschlossener Schalter geschlossen ist. Der in der Abbildung dargestellte Eingang I1 ist zur Zeit nicht aktiv. Es können mehrere Input-Blöcke mit dem gleichen Eingang des ftDuino assoziiert werden, alle Blöcke empfangen dann geichzeitig das Signal des entsprechenden Eingangs am ftDuino.
Der Output-Block (OUT) stellt eine Verbindung von Redstone zu einem der Ausgänge O1 bis O8 des ftDuino her. In diesem Fall erfolgt die Kennzeichnung durch einen roten Stecker. Der in der Abbildung dargestellte Block wird durch aktives Redstone angesteuert. Er ist also aktiv und steuert in diesem Fall den Ausgang O2 an und schaltet ihn in den Zustand HI und eine zwischen dem Ausgang O2 und Masse (-) angeschlossene Lampe würde leuchten. Dies wird durch das Blitz-Symbol angezeigt. Es kann immer nur ein Block einem der ftDuino-Ausgänge zugeordnet werden, da andernfalls widersprüchliche Signale an den gleichen Ausgang gesendet werden können.
Der LED-Block steuert die interne Leuchtdiode des ftDuino an. Dieser Block kann nur einmal in der Minecraft-Welt existieren, um wiederum widersprüchlicher Ansteuerung vorzubeugen.
In der Beispielwelt in Abbildung 8.14 ist rechts hinten z.B. ein einfacher Wechselblinker zu sehen. Die Redstone-Fackel an dem mit Ausgang O2 assoziierten ftDuino-Output-Block bildet einen Inverter, der das vorne an diesem Block anliegende Signal negiert. Das Signal wird auf den davor liegenden Redstone-Repeater geführt, der das Signal leicht verzögert und zurück auf den mit Ausgang O2 assoziierten ftDuino-Output-Block leitet. Das kontinuierliche Verzögern und Negieren des Signals führt zu einem Blinken ungefähr im Sekundentakt. Ein weiterer Output-Block, diesmal mit O1 assoziiert, ist mit dem invertierten Signal verbunden. An die Ausgänge O1 und O2 angeschlossene Lampen blinken daher im Wechsel. Weiter links im Bild sind Eingänge über ftDuino-Input-Blöcke realisiert, die unter anderem eine Redstone-Lampe über Eingang I7 des ftDuino ansteuern.