ftDuino Bedienungsanleitung (PDF)
1. Controller- 2. Installation- 3. Erste Schritte- 4. Programmierung- 5. Schule- 6. Experimente- 7. Modelle- 8. Community- 9. Bibliotheken- 10. Aufbau- Anhang

1 Einleitung

Elektronik- und Computermodule für Konstruktionsbaukästen gibt es seit den Anfängen der privat genutzten Heimcomputer der 80er Jahre. Diese Module verfügten über wenig eigene Intelligenz und waren vor allem für die Signalanpassung zwischen dem Heimcomputer und den Motoren und Schaltern der Baukastensysteme zuständig, weshalb diese Module in der Regel als ``Interfaces'' bezeichnet wurden, also als Schnittstelle zwischen Computer und Modell.

Über die Jahre stieg die Leistungsfähigkeit der Heimcomputer und auch die Elektronik-Module lernten dazu. Vor allem wurden aus ``Interfaces'' über die Zeit ``Controller''. Aus den weitgehend passiven Schnittstellen wurden Bausteine mit eigener Intelligenz, die den Heimcomputer bzw. später den PC nur noch zur Programmierung benötigten. Einmal programmiert konnten diese Controller das Modell auch eigenständig bedienen. Dazu wurden die auf dem PC entwickelten Programmdaten auf den Controller geladen und dort gespeichert.

Die heutigen Controller von Lego oder fischertechnik sind selbst leistungsfähige Computer. Um deren Komplexität für den Endanwender benutzbar zu machen verbergen die Hersteller die Details der elektronischen Komponenten sowie der auf den Geräten laufenden Software hinter gefälligen Benutzeroberflächen. Leider verpassen solche Systeme auf diese Weise die Chance, Wissen über Aufbau und Funktion derartiger Controller zu vermitteln. Während sich die Hersteller gegenseitig darin übertreffen, komplexe mechanische Getriebe im Wortsinne begreifbar zu machen stellen sich die dazugehörigen Controller für den Anwender als undurchsichtige Bausteine dar.

Parallel hat sich seit der Jahrtausendwende die sogenannte Maker-Bewegung entwickelt, die den ``Selbstmach''-Gedanken in den Bereich der Elektronikentwicklung trägt. Systeme wie der Raspberry-Pi und der Arduino laden dazu ein, alle technischen Details dieser komplett zugänglichen und dokumentierten Controller zu erforschen und eigene Entwicklungen zu betreiben. Große Communities bieten umfangreiches Know-How und stellen Plattformen zum Wissensaustausch zur Verfügung. Im Gegensatz zu den Controllern von fischertechnik und Lego steht hier das Innere des Controllers im Vordergrund. Allerdings erfordert der Einsatz dieser Controller oft einiges an handwerklichem Geschick beim Aufbau der Elektronik selbst sowie speziell bei Robotik-Projekten bei der Umsetzung von mechanischen Komponenten.

1.1 Das ftDuino-Konzept

Die Idee hinter dem ftDuino ist es, die Brücke zwischen zwei Welten zu schlagen. Auf der einen Seite integriert er sich mechanisch und elektrisch nahtlos in die Robotics-Serie der fischertechnik-Konstruktionsbaukästen. Auf der anderen Seite fügt er sich perfekt in das Arduino-Ökosystem zur Software-Entwicklung von eingebetteten Systemen ein.


Abbildung 1.1: ftDuino

1.1.1 Das fischertechnik-Baukastensystem

Fischertechnik ist ein technikorientiertes Konstruktionsspielzeug. Der Schwerpunkt liegt auf Mechanik, Elektromechanik, Elektronik und zunehmend auch Robotik und der dafür nötigen Integration von informationsverarbeitenden Komponenten.

Fischertechnik selbst entwickelt und vertreibt seit den frühen 80er Jahren Elektronik-Module, die eine Verbindung zwischen Computer und mechanischem Modell ermöglichen bzw. über eigene Intelligenz verfügen. Die dabei zum Einsatz kommenden Steckverbinder sowie die Sensoren (Taster, Schalter, Lichtsensoren, ...) und Aktoren (Lampen, Motoren, Ventile, ...) sind über die Jahre zueinander kompatibel geblieben und lassen sich nach wie vor beliebig miteinander kombinieren.

Die letzten zwei Controller-Generationen (fischertechnik TX- und TXT-Controller) haben eine vergleichbare mechanische Größe und verfügen über eine vergleichbare Anzahl und Art von Anschlüssen zur Verbindung mit dem Modell. Die Modelle aller aktuellen Robotics-Baukästen sind auf diese Anschlüsse ausgelegt und untereinander kombinierbar.

(a) TX-Controller
(b) TXT-Controller

Abbildung 1.2: Original-Controller von fischertechnik

Beide Original-Controller verfügen über acht analoge Eingänge, acht analoge Ausgänge, vier schnelle Zählereingänge und einen I²C-Erweiterungsanschluss.

Fischertechnik selbst vertreibt die PC-Software RoboPro zur visuellen Softwareentwicklung für die hauseigenen Controller. Der Einstieg in RoboPro ist relativ einfach und spricht bereits Kinder an. Die Grenzen von RoboPro sind aber schnell erreicht, wenn es um praxisnahe und inhaltlich anspruchsvolle Projekte in weiterführenden Schulen, Universitäten und der Berufsausbildung geht. In diesen Bereichen haben sich Systeme wie die Arduino-Plattform etabliert.

1.1.2 Das Arduino-System

Das Arduino-Ökosystem hat sich in den letzten Jahren zum De-Facto-Standard für den Einstieg und die semiprofessionelle Entwicklung und Programmierung von eingebetteten Systemen etabliert. Eingebettete Systeme sind in der Regel mechanisch kleine Computer und informationsverarbeitende Module, die innerhalb einer Maschine Steuer- und Regelaufgaben übernehmen und immer häufiger auch mit der Außenwelt kommunizieren.

(a) Arduino-Entwicklungsumgebung (IDE)
(b) Arduino-Leonardo-Controller

Abbildung 1.3: Die Arduino-Entwicklungsumgebung und -Controller

Die Arduino-IDE ist eine übersichtliche und leicht zu bedienende Programmieroberfläche, die sich auf Windows-, Linux- und Apple-PCs nutzen lässt. Die zu programmierenden Zielgeräte wie zum Beispiel der Arduino-Leonardo sind kleine und kostengünstige Platinen, die per USB mit dem PC verbunden werden. Sie kommen üblicherweise ohne Gehäuse und stellen über Steckverbinder eine Vielzahl von Signalleitungen zum Anschluss von Sensoren und Aktoren zur Verfügung. Typische mit der Arduino-Plattform zu erledigende Aufgaben sind einfache Messwerterfassungen (Temperatur-logging, ...) und Steueraufgaben (Jalousiesteuerungen, ...).

Programme, die mit der Arduino-IDE geschrieben wurden, werden in der Arduino-Welt als sogenannte ``Sketches'' bezeichnet. Mit Hilfe der Arduino-IDE können passende Sketches für den ftDuino geschrieben und über das USB-Kabel direkt auf das Gerät hinuntergeladen werden.

Auch für einfache Robotik-Experimente ist die Arduino-Plattform bestens geeignet. Schwieriger ist oft eine mechanisch befriedigende Umsetzung selbst einfachster Robotik-Projekte. Diese Lücke kann das fischertechnik-System schließen.

1.2 Der ftDuino-Controller

Der ftDuino-Controller wurde bewusst mechanisch und elektrisch an den TX- und den TXT-Controller angelehnt, um ihn ebenfalls direkt mit den aktuellen Robotics-Kästen kombinieren zu können. Gleichzeitig wurde er softwareseitig mit dem Arduino-System kompatibel gehalten.


Abbildung 1.4: Die Anschlüsse des ftDuino

1.2.1 Mikrocontroller

Das Herz des ftDuino ist ein Mikrocontroller des Typs ATmega32u4. Dieser Mikrocontroller wird von Microchip (ehemals Atmel) hergestellt und findet auch im Arduino-Leonardo Verwendung. Sketches, die für den Leonardo übersetzt wurden, sind oft direkt auf dem ftDuino lauffähig.


Abbildung 1.5: Blockdiagramm des ftDuino

Der ATmega32u4-Controller ist ein Mitglied der sogenannten AVR-Familie, auf der die meisten Arduino-Bords basieren. Die AVR-Controller sind klein, günstig und benötigen zum Betrieb nur wenig weitere Bauteile. Ihr Speicher und ihre Rechenleistung reicht für den Betrieb sämtlicher fischertechnik-Modelle der Roboticsreihe deutlich aus.

Der ATmega32u4 verfügt über 32 Kilobytes nicht-flüchtigem Flash-Speicher, der als Sketch-Programmspeicher verwendet wird sowie 2,5 Kilobytes internem RAM-Speicher zur Datenspeicherung. Der Prozessortakt beträgt 16 Megahertz. Jeweils ein Sketch kann im Flash-Speicher permanent gespeichert werden und bleibt auch erhalten wenn der ftDuino von der Spannungsversorgung getrennt wird.

Der ATmega32u4 ist eines der wenigen Mitglieder der AVR-Familie, das direkte USB-Unterstützung bereits auf dem Chip mitbringt. Auf diese Weise ist der ftDuino sehr flexibel als USB-Gerät am PC einsetzbar.

Bootloader

Der ftDuino wird mit einem im ATmega32u4 vorinstallierten sogenannten Caterina-Bootloader ausgeliefert. Dieses Programm belegt permanent vier der 32 Kilobytes Flash-Speicher des ATmega32u4 und kann nicht ohne weiteres gelöscht oder verändert werden.

Der Bootloader ermöglicht die Kommunikation mit dem PC und erlaubt es, dass der PC Programmdaten in den verliebenden 28 Kilobytes Flash-Speicher ablegen bzw. austauschen kann. Der Bootloader ermöglicht auf diese Weise das Hinunterladen von Sketches in den ftDuino.

Dass der Bootloader aktiv ist und nicht etwa gerade ein Sketch ausgeführt wird, ist am Zustand der internen LEDs erkennbar (siehe 1.2.4).

1.2.2 USB-Anschluss

Die Verbindung zum PC zur Programmierung und Datenübertragung wird über USB hergestellt. Der ftDuino verfügt über eine sogenannte Mini-USB-Buchse und wird über ein handelsübliches Mini-USB-Kabel mit dem PC verbunden.


Abbildung 1.6: Strom- und USB-Anschluss des ftDuino

1.2.3 Reset-Taster

Normalerweise kann die Arduino-IDE durch entsprechende Kommandos über den USB-Anschluss den Bootloader des ftDuino aktivieren, um einen neuen Sketch hinunterzuladen. Enthält ein hinuntergeladener Sketch aber Fehler, die eine normale Programmausführung verhindern, dann kann es passieren, dass die USB-Kommunikation während der normalen Programmausführung nicht funktioniert und die Arduino-IDE den ftDuino von sich aus nicht mehr ansprechen kann.

Für diesen Fall verfügt der ftDuino über einen Reset-Taster. Wird dieser gedrückt, dann wird der Bootloader zwangsweise aktiviert und die LEDs zeigen entsprechend den Start des Bootloaders an.

Ein mit einem fehlerhaften Sketch versehener ftDuino kann daher problemlos mit einem korrigierten Sketch versehen werden, indem kurz vor dem Hinunterladen der Reset-Taster kurz gedrückt wird. Mehr Details dazu finden sich im Abschnitt 1.3.

1.2.4 Interne LEDs

Der ftDuino verfügt über je eine grüne und rote interne Leuchtdiode (LED). Die grüne Spannungsversorungs-LED zeigt an, dass der interne 5-Volt-Zweig mit Spannung versorgt ist und der Mikrocontroller des ftDuino versorgt wird.

Die rote LED steht für eigene Verwendung zur Verfügung und kann vom Anwender aus eigenen Sketches heraus unter der Bezeichnung LED_BUILTIN angesprochen werden (siehe Abschnitt 3.1).

Die rote LED wird auch vom Caterina-Bootloader des ftDuino verwendet. Ist der Bootloader aktiv, so leuchtet die LED im Sekundentakt sanft heller und dunkler (``fading'').

1.2.5 Spannungsversorgung

Der ftDuino kann auf vier Arten mit Spannung versorgt werden:


Abbildung 1.7: Für den ftDuino empfohlene Original-fischertechnik-Stromversorgungen

USB
Über USB wird der ftDuino immer dann versorgt, wenn keine weitere Stromversorgung angeschlossen ist. Die USB-Versorgung reicht allerdings nicht zum Betrieb der Analogausgänge. Lediglich die Eingänge können bei USB-Versorgung verwendet werden. Zusätzlich ist die Genauigkeit einer Widerstandsmessung an den Analogeingängen deutlich herab gesetzt (siehe 1.2.6).
Hohlstecker
Wird der ftDuino per Hohlstecker z.B. durch das fischertechnik Power Netzgerät 5052871 oder dem Netzteil aus dem fischertechnik Power-Set 5052832 mit 9 Volt versorgt, so wird der gesamte ftDuino daraus versorgt und der USB-Anschluss wird nicht belastet. Die Analogausgänge sind in diesem Fall benutzbar und die Widerstandsmessung an den Analogeingängen erfolgt mit voller Genauigkeit. Für den Einsatz von Fremdnetzgeräten bietet fischertechnik unter der Artikelnummer 1348633 einen Adapter von üblichen 5mm-Hohlsteckern auf den von fischertechnik verwendeten 3,45mm-Stecker an.
9V=-Eingang
Eine Versorgung des ftDuino z.B. per Batterie-Set oder mit dem Akku aus dem Akku-Set 349694 entspricht der Versorgung per Hohlstecker. Wird der ftDuino sowohl über den 9V=-Eingang als auch per Hohlstecker versorgt, dann erfolgt die Versorgung aus der Quelle, die die höhere Spannung liefert. Eine Rückspeisung in den Akku oder eine Ladung des Akkus findet nicht statt.
I²C
Über den I²C-Anschluss versorgt der ftDuino in erster Linie andere angeschlossene Geräte wie kleine Displays oder Sensoren. Es ist aber auch möglich, ihn selbst über diesen Anschluss zu versorgen. Es bestehen dabei die gleichen Beschränkungen wie bei der Versorgung über USB. Auf diese Weise ist zum Beispiel die Versorgung zweier gekoppelter ftDuinos aus einer einzigen Quelle möglich (siehe Abschnitt 6.13.5).


Abbildung 1.8: 3,45mm fischertechnik-Hohlstecker

Vorsicht ist bei der Verwendung unbekannter oder sehr alter Spannungsquellen geboten. Oftmals weichen die aufgedruckten Nennspannungen weit von der Realität ab. Das in Abbildung 1.9 abgebildete Netzteil liefert am 6,8-Volt-Ausgang eine Leerlaufspannung von über 27 Volt. Ein einfaches Multimeter zeigt noch moderate 9,4 Volt an und könnte den Eindruck erwecken, dass sich dieses Netzteil zum Betrieb des ftDuino eignet. Erst das Oszilloskop bringt den genauen Spannungsverlauf zu Tage und zeigt, dass die Spannung kurzfristig sogar 27,2 Volt erreicht. Während Ein- und Ausschaltvorgängen können noch wesentlich höhere Spannungen auftreten und den ftDuino beschädigen.

(a) Das Multimeter zeigt gute 9 Volt an
(b) Das Oszilloskop zeigt Spitzen von über 27 Volt

Abbildung 1.9: Vorsicht: Ein alter fischertechnik-Trafo liefert über 27V am 6,8-Volt-Ausgang und ist für den ftDuino ungeeignet

Aus diesem Grund sollte man bei Einsatz solcher alten oder unbekannten Spannungsquellen sehr vorsichtig sein und im Zweifelsfall auf den Einsatz verzichten.


Abbildung 1.10: Alte und für den ftDuino ungeeignete Stromversorgungen

Im Zweifel sollte unbedingt eine aktuelle Spannungsversorung von fischertechnik eingesetzt werden. Das aktuelle Fischertechnik Power Netzgerät 9V 5052875 ist bestens geeignet, ebenso wie der Akku aus dem Akku-Set 349696 oder ein 9-Volt-Block im Batteriehalter.


Abbildung 1.11: Für den ftDuino geeignetes Universalnetzteil aus dem Onlineversand

Soll es unbedingt ein Fremdgerät sein, so ist auf eine stabilisierte 9Volt-Spannung zu achten. Die Stromstärke sollte 1,5 Ampere nicht unterschreiten, um auch kräftige Motoren betreiben zu können. Ein Beispiel das in Abbildung 1.11 dargestellte Universal-Schaltnetzteil aus dem Reichelt-Onlineversand7 .

1.2.6 Anschlüsse

Die Anschlüsse des ftDuino teilen sich in die fischertechnik-kompatiblen Ein- und Ausgänge auf, die für die üblichen 2,6mm-Einzelstecker geeignet sind, sowie die üblichen Steckverbinder aus dem Computerbereich. Die fischertechnik-kompatiblen Ein- und Ausgänge sind identisch zum fischertechnik-TXT-Controller angeordnet. Verdrahtungsschemata für den TXT können daher in der Regel direkt übernommen werden.

Analoge Eingänge

Der ftDuino verfügt über acht analoge Eingänge I1 bis I8, über die Spannungen von 0 bis 10 Volt sowie Widerstände von 0 bis über 10 Kiloohm erfasst werden können.

Die Eingänge sind über hochohmige Serienwiderstände gegen Kurzschlüsse sowie Über- und Unterspannung abgesichert.

Jeder Eingang ist mit einem eigenen Analogeingang des ATmega32u4-Mikrocontrollers verbunden. Die Analogwerterfassung kann mit bis zu 10 Bit Auflösung erfolgen (entsprechend einem Wertebereich 0 bis 1023) und wird direkt in der Hardware des Mikrocontrollers durchgeführt.

Ein Spannungsteiler erweitert den Eingangsspannungsbereich des Mikrocontrollers von 0 bis 5 Volt auf den bei fischertechnik genutzten Bereich von 0 bis 10 Volt. Alle an fischertechnik-Modellen auftretenden Spannungen können damit erfasst werden.

Zur Widerstandsmessung kann kann jeder Eingang ftDuino-intern mit einem Widerstand gegen 5 Volt verschaltet werden. Dieser Widerstand wirkt mit einem externen Widerstand als Spannungsteiler und aus der am Mikrocontroller gemessenen Spannung kann der Wert des extern angeschlossenen Widerstands gemessen werden. Alle von fischertechnik-Modellen üblicherweise verwendeten Widerstände können so erfasst werden.

Die analogen Eingänge sind nicht auf eine externe 9-Volt-Versorgung angewiesen, sondern funktionieren auch bei der Stromversorgung über den USB-Anschluss des PC. Allerdings sinkt in diesem Fall die Genauigkeit der Widerstandsmessung signifikant.

Analoge Ausgänge

Der ftDuino verfügt über acht analoge Ausgänge O1 bis O8. Diese Ausgänge werden über zwei spezielle Treiberbausteine im ftDuino angesteuert. Die Treiberbausteine können jeden der acht Ausgänge unabhängig steuern. Sie sind identisch zu denen, die fischertechnik in den TX- und TXT-Controllern einsetzt. Die Ausgänge sind daher kompatibel zu allen fischertechnik-Motoren und -Aktoren, die auch am TX- und TXT-Controller betrieben werden können. Der maximal pro Ausgang verfügbare Strom beträgt 600mA bis 1,2A.

Die Ausgänge sind bei einer reinen USB-Stromversorgung des ftDuino nicht verfügbar.

Der verwendete Treiberbaustein MC33879 ist kurzschlussfest und robust gegen Über- und Unterspannung an den Ausgängen.

Alle acht Ausgänge können unabhängig voneinander gegen Masse oder Eingangsspannung sowie hochohmig geschaltet werden. Je zwei Einzelausgänge können zu einem Motorausgang kombiniert werden. Die Einzelausgänge O1 und O2 bilden dabei den Motorausgang M1, O3 und O4 bilden M2 und so weiter.

Die Analogwerte an den Ausgängen werden durch eine sogenannte Pulsweitenmodulation (PWM) erzeugt. Dabei werden die Ausgänge kontinuierlich schnell ein- und ausgeschaltet, so dass Motoren, Lampen und andere träge Verbraucher dem Signal nicht folgen können, sondern sich entsprechend des Mittelwerts verhalten. Dieses Verfahren wird in gleicher Weise auch im TX- und TXT-Controller angewendet.

Beide MC33879 werden vom Mikrocontroller des ftDuino intern über dessen sogenannte SPI-Schnittstelle angeschlossen. Da dadurch die speziellen PWM-Ausgänge des Mikrocontrollers nicht zur Erzeugung der der Pulsweitenmodulation herangezogen werden können muss das PWM-Signal durch den Sketch bzw. die verwendeten Software-Bibliotheken (siehe Kapitel 9) selbst erzeugt werden. Die sogenannte PWM-Frequenz wird dabei durch den verwendeten Sketch bestimmt und kann beliebig variiert werden.

Mehr Informationen zum Thema PWM finden sich in Abschnitt 6.3.

Zählereingänge

Der ftDuino verfügt über vier spezielle Zählereingänge C1 bis C4. Diese Eingänge können rein digitale Signale erfassen und mit hoher Geschwindigkeit Ereignisse auswerten. Die maximal erfassbare Signalrate liegt je nach Sketch bei mehreren 10.000 Ereignissen pro Sekunde.

Die Zählereingänge sind kompatibel zu den Encodern der fischertechnik-Encoder-Motoren und können unter anderem zur Drehwinkelauswertung sowie zur Drehzahlbestimmung herangezogen werden.

Zählereingang C1 verfügt zusätzlich über die Möglichkeit, einen fischertechnik ROBO TX Ultraschall-Distanzsensor 1330098 auszuwerten.

Hinweis: Es gibt zusätzlich zum dem hier beschriebenen Ultraschallsensor mit dreiaddrigem Anschliusskabel einen sehr alten Sensor mit vierpoligem Kabel. Dieser sehr alte Sensor seit langem nicht mehr erhältliche Sensor ist zum ftDuino nicht kompatibel (und auch zu keinem der aktuellen Original-fischertechnik-Controller).


Abbildung 1.12: Anschluss des Ultraschallsensors 133009

I²C-Anschluss

Der I²C-Anschluss ist elektrisch und mechanisch zu dem des fischertechnik-TX-Controllers kompatibel. Der dort aus dem Gerät herausgeführte sogenannte I²C-Bus findet auch im Arduino-Umfeld häufige Verwendung und erlaubt den Anschluss passender Elektronikkomponenten wie Sensoren, Analog-Digital-Wandler, Displays und ähnlich. Außerdem ist über den I²C-Bus eine Kopplung mehrerer ftDuinos möglich sowie die Kopplung des ftDuino mit dem TX-Controller und dem TXT-Controller wie in Abschnitt 6.13 beschrieben.


Abbildung 1.13: Buchsen- und Kabelbelegung des I²C-Bus am ftDuino

Die Signale auf dem I²C-Anschluss nutzen wie am TX-Controller einen 5-Volt-Pegel. Zusätzlich werden aus der Spannungsversorgung des ftDuino 5 Volt zur Versorgung angeschlossener Komponenten bereitgestellt. Aus dem 5 Volt-Ausgang dürfen maximal 100mA entnommen werden, um die ftDuino-interne Spannungsversorgung nicht zu überlasten


Abbildung 1.14: Entfernen der Schutzkappe vom I²C-Anschluss des ftDuino

Achtung! Der fischertechnik-TXT-Controller sowie für den Betrieb am TXT vorgesehene Komponenten sind aufgrund dessen 3,3 Volt-Signal-Pegel nicht direkt mit dem ftDuino kompatibel. Eine direkte Verbindung zwischen TXT und ftDuino kann den TXT beschädigen. Sollen der TXT oder für den Betrieb am TXT vorgesehene Komponenten am ftDuino verwendet werden, so sind unbedingt passende I²C-Pegelanpassung zwischenzuschalten wie in Abschnitt 6.13.5 beschrieben.

Achtung! Die auf dem I²C-Anschluss liegenden Signale sind direkt und ungeschützt mit dem Mikrocontroller des ftDuino bzw. mit dessen Spannungsversorgung verbunden. Werden an diesem Anschluss Kurzschlüsse verursacht oder Spannungen über 5V angelegt, dann kann der ftDuino zerstört werden. Der I²C-Anschluss sollte daher nur von erfahrenen Anwendern verwendet werden. Aus diesem Grund wird der ftDuino mit einer Schutzkappe auf dem I²C-Anschluss vertrieben. Diese Kappe ist bei Bedarf vorsichtig mit einem flachen Schraubendreher zu entfernen.

1.2.7 Variante mit internem OLED-Display

Es gibt Varianten des ftDuino, die bereits über ein eingebautes OLED-Display verfügen. Das Display hat eine Auflösung von 128 * 32 Pixel und ist intern am I²C-Bus angeschlossen.


Abbildung 1.15: Raumschiffanimation auf dem intenen OLED des ftDuino

Der OLED-ftDuino verfügt über einen angepassten Bootloader, der direkt nach dem Einschalten das Display initialisiert und einen ftDuino-Schriftzug einblendet. Da der Bootloader das Display aktiv anspricht bildet der OLED-ftDuino immer einen I²C-Busmaster. Ein ftDuino mit eingebautem Display eignet sich daher nur sehr eingeschränkt dafür, selbst als I²C-Client zu arbeiten und selbst von einem anderen I²C-Master angesprochen zu werden. Er kann jedoch selbst uneigeschränkt als Master arbeiten und z.B. einen weiteren Display-losen ftDuino am I²C ansprechen. Zusätzliche externe I²C-Geräte lassen sich wie gehabt anschließen.


Abbildung 1.16: Die Adafruit-GPX-Bibliothek im Bibliotheksmanager der Arduino-IDE

Die ftDuino-Installation bringt unter DateiBeispieleFtduinoInternalOLED mehrere Beispiele mit, die jeweils über eigene Varianten der FtduinoDisplay.cpp-Bibliothek verfügen. Alle Beispiele benötigen zusätzlich die über den Bibliotheks-Manager der Arduino-IDE mit wenigen Klicks zu installierende ``Adafruit GFX Library''.

Das Beispiel DateiBeispieleFtduinoInternalOLEDShip3D bringt eine einfache und schnelle Variante dieser Bibliothek mit. Sie sollte immer dann verwendet werden, wenn keine weiteren I²C-Geräte am ftDuino betrieben werden und es auf einen schnellen Bildaufbau ankommt.

Das Beispiel DateiBeispieleFtduinoInternalOLEDShip3DWire dagegen basiert auf der Arduino-Wire-Bibliothek und der Bildaufbau ist hier deutlich langsamer. Dafür wird zum Zugriff auf den I²C-Bus die Wire-Bibliothek verwendet und ein Betrieb zusammen mit anderen ebenfalls durch die Wire-Bibliothek angesteuerten I²C-Sensoren ist möglich. Diese Variante der FtduinoDisplay.cpp-Bibliothek kommt auch dann zum Einsatz, wenn am OLED-ftDuino weitere ftDuinos über I²C zur Bereitstellung zusätzlicher Ein- und Ausgänge angeschlossen sind.

Das interne OLED-Display belegt die Adresse 0x3C (dezimal 60) und kann daher nicht ohne weiteres parallel mit anderen OLED-Displays unter dieser Adresse betrieben werden.

1.2.8 Hinweise für Arduino-erfahrene Nutzer

Es gibt ein paar fundamentale Unterschiede zwischen dem klassischen Arduino und dem ftDuino. In erster Linie sind dies die Schutz- und Treiberschaltungen, die beim ftDuino für die fischertechnik-Kompatibilität der Anschlüsse sorgt. Diese Schaltungen sind der Grund, warum man die Ein- und Ausgänge des ftDuino nicht mit den Arduino-üblichen pinMode() und digitalWrite()-Funktionen ansprechend kann. Diese Funktionen sind darauf ausgelegt, direkt Anschlüsse des ATmega32u4-Mikrocontrollers zu steuern und berücksichtigen nicht, dass der ftDuino zusätzliche Schaltungen beinhaltet.

Aus diesem Grund werden die fischertechnik-kompatiblen Ein- und Ausgänge des ftDuino über eigene Bibliotheken angesteuert, wie in Kapitel 9 beschrieben.

Erfahrene Nutzer können unter Umgehung dieser Bibliotheken nach wie vor auch direkt mit der Hardware des ftDuino kommunizieren. Die Schaltpläne im Anhang A liefern alle dafür nötige Information.

1.3 Problemlösungen

1.3.1 Die grüne Leuchtdiode im ftDuino leuchtet nicht

Zunächst sollte der ftDuino von allen Verbindungen getrennt und ausschließlich über den USB-Anschluss mit dem PC verbunden werden. Die grüne Leuchtdiode im ftDuino muss sofort aufleuchten. Tut sie das nicht, dann sollte ein anderer PC bzw. ein anderer USB-Anschluss probiert werden.

Hilft das nicht, dann ist zunächst das USB-Kabel zu prüfen. Funktionieren andere Geräte an diesem Kabel? Gegebenenfalls muss das Kabel ausgetauscht werden.

1.3.2 Der ftDuino taucht am PC nicht als COM:-Port auf

Der ftDuino wird nicht mehr vom PC erkannt und es wird kein COM:-Port angelegt.

Leuchtet die grüne Leuchtdiode am ftDuino? Falls nicht sollte wie unter 1.3.1 verfahren werden.

Leuchtet die grüne Leuchtdiode, dann sollte ein kurzer Druck auf den Reset-Taster (siehe 1.2.3) den Bootloader des ftDuino für einige Sekunden aktivieren. Erkennbar ist dies am langsamen Ein- und Ausblenden der roten Leuchtdiode wie in Abschnitt 1.2.4 beschrieben. In dieser Zeit sollte der ftDuino vom PC erkannt werden. Dies wird u.a. unter Windows im Gerätemanager wie im Abschnitt 2.1.3 beschrieben angezeigt.

Wird der ftDuino nach einem Reset erkannt, aber verschwindet nach ein paar Sekunden aus der Ansicht des Gerätemanagers oder wird als unbekanntes Gerät angezeigt, dann wurde wahrscheinlich ein fehlerhafter Sketch auf den ftDuino geladen und die Arduino-IDE ist nicht in der Lage, sich eigenständig mit dem ftDuino zu verbinden. In diesem Fall sollte man das Blink-Beispiel (siehe Abschnitt 3.1) in der Arduino-IDE öffnen, den ftDuino per kurzem Druck auf den Reset-Taster in den Bootloader-Modus versetzen und direkt danach die Download-Schaltfläche in der Arduino-IDE drücken. Sobald der funktionierende Sketch geladen wurde wird der ftDuino auch ohne manuelle Druck auf den Reset-Taster wieder von PC erkannt und der entsprechende COM:-Port taucht wieder auf.

Der ftDuino bleibt nur wenige Sekunden im Bootloader und kehrt danach in den normalen Sketch-Betrieb zurück. Zwischen dem Druck auf den Reset-Knopf und dem Start des Downloads aus der Arduino-IDE sollte daher möglichst wenig Zeit vergehen.

1.3.3 Der ftDuino funktioniert, aber die Ausgänge nicht

Um die Ausgänge zu benutzen muss der ftDuino mit einer 9-Volt-Spannungsquelle entweder über den Hohlstecker-Anschluss oder über die üblichen fischertechnik-Stecker verbunden sein. Verfügt der ftDuino über keine ausreichende 9-Volt-Versorgung, so können die Ausgänge nicht betrieben werden. Da der ftDuino selbst schon mit geringerer Spannung läuft ist dessen Funktion kein sicheres Indiz dafür, dass eine ausreichende 9-Volt-Versorgung vorhanden ist.

Ist der ftDuino über USB mit dem PC verbunden, dann versorgt er sich bei mangelhafter oder fehlender 9-Volt-Versorgung von dort. Geht der ftDuino ganz aus, sobald man die USB-Verbindung trennt, dann ist keine 9-Volt-Versorgung gegeben und es muss sichergestellt werden, dass Polarität und Spannung korrekt bzw. ausreichend sind. Gegebenenfalls muss die Batterie ausgetauscht oder der verwendete Akku geladen werden.

1.3.4 Der ftDuino lässt sich nicht flashen

Es kommt vor, dass der ftDuino zwar vom PC (zeitweise) erkannt wird, sich aber einfach nicht flashen lässt. Die Ursachen dafür können vielfältig sein, in der Regel ist es aber eine der folgenden zwei Ursachen:

Mechanisch oder elektrisch instabile Verbindungen werden in der Regel von lose sitzenden USB-Kabeln verursacht. Meistens reicht es in diesem Fall, leicht am USB-Kabel zu wacheln, um den ftDuino kurz die Spannung verlieren und neu starten zu lassen. Passiert das während des Sketch-Uploads, so ist der Sketch nicht lauffähig und der ftDuino wird wie in Abschnitt 1.3.2 beschrieben nur noch nach Druck auf den Reset-Taster vom PC erkannt.

In der Regel flackert dabei auch die Power-LED etwas. In Abbildung 1.17 wurde der entsprechende Fehler provoziert, indem während des Flashens der USB-Stecker abgezogen wurde. Die Verwendung eines anderen USB-Kabels schafft dann in der Regel Abhilfe.


Abbildung 1.17: Fehler beim Hochladen

Liegt kein Wackelkontakt am USB-Port vor, dann geben die ``ausführlichen Ausgaben'' beim Upload ggf. zusätzliche Informationen. Diese Ausgaben werden in den Voreinstellungen aktiviert.


Abbildung 1.18: Ausführliche Debug-Ausgaben während des Hochladens aktivieren

Eine mögliche Ausgabe sieht danach so aus:

     Writing | #####################avrdude: error: programmer did not respond to command: set addr
     avrdude: error: programmer did not respond to command: write block
     ## ***failed;  
      ***failed;  
      ***failed;  
      ***failed;  
      ***failed;  
      ***failed;  
      ***failed;  
      ***failed;  
      ***failed;  
      ***failed;  
     avrdude: Error: butterfly programmer uses avr_write_page() but does not
     provide a cmd() method.
      *** page 127 (addresses 0x0000 - 0x007f) failed to write
      ***failed;  
      ***failed;  
      ***failed;  
      ***failed;
Hier treten mitten in der Datenübertragung Fehler auf. Am häufigsten tritt dies auf Linux-PCs auf. Ursache ist in der Regel der sogenannte Modem-Manager, eine Software, die zur Verwaltung von Modems verwendet wird und sich mit dem ftDuino verbindet, um festzustellen, ob es sich bei ihm um ein Modem handelt. Einige Tipps dazu finden sich bereits in Abschnitt 2.1.4.

Neben der dort beschriebenen Installation der Datei /etc/udev/rules.d/99-ftduino.rules hilft es oft, den Modem-Manager-Dienst per systemctrl-Kommando zunächst testweise zu stoppen:

       sudo systemctl stop ModemManager.service
bzw. bei Erfolg dauerhaft:
       sudo systemctl disable ModemManager.service
Dieses Problem ist nicht ftDuino-spezifisch, sondern betrifft z.B. auch den Arduino-Leonardo. Entsprechende Lösungen im Internet bei Leonardo-Problemen lassen sich daher oft auch auf den ftDuino übertragen.

1.3.5 Der ftDuino wird als Leonardo erkannt

Es ist möglich, dass der ftDuino sich seiner Identität nicht so ganz sicher zu sein scheint und in der IDE statt als ftDuino als Leonardo angeszeigt wird wie in Abbildung 1.19 beispielhaft auf einem Linux-System zu sehen.


Abbildung 1.19: Die IDE erkennt den ftDuino als Leonardo

Das passiert, wenn man vor dem Upload eines Sketches in der IDE nicht den ftDuino als Board ausgewählt hatte sondern den Arduino Leonardo.

Dieser Zustand ist völlig unkritisch. Sobald man das Board wie unter anderem in Abschnitt 2.2.1 beschrieben auf ftDuino einstellt wird dieser nach dem nächsten erfolgreichen Sketch-Upload wieder als ftDuino erkannt.


1) fischertechnik-Datenbank: https://ft-datenbank.de/tickets?fulltext=505287
2) fischertechnik-Datenbank: https://ft-datenbank.de/tickets?fulltext=505283
3) fischertechnik-Datenbank: https://ft-datenbank.de/tickets?fulltext=134863
4) fischertechnik-Datenbank: https://ft-datenbank.de/tickets?fulltext=34969
5) fischertechnik-Datenbank: https://ft-datenbank.de/tickets?fulltext=505287
6) fischertechnik-Datenbank: https://ft-datenbank.de/tickets?fulltext=34969
7) Reichelt MW 3R15GS https://www.reichelt.de/universal-schaltnetzteil-18-w-3-12-v-1500-ma-mw-3r15gs-p87340.html
8) fischertechnik-Datenbank: https://ft-datenbank.de/tickets?fulltext=133009

ftDuino manual - controller(c) 2017-2019 Till Harbaum