Cocktail Mixer
Ein Selbstbauprojekt

Fahrender Sessel


Nach einem Besuch der Gulaschprogrammiernacht 2018 in Karlsruhe stand für mich das nächste große Projekt fest. Ein Fahrender Sessel, inspiriert von einem Workshop des Hacker- und Makerkongresses.


Abbildung 1: Ergebnis Fahrender Sessel
 
Die Abbildung 1 zeigt dabei bereits das Ergebnis meines Projektes. Der folgende Artikel dient lediglich der Erläuterung der Umsetzung des Projektes. Der gesamte Quellcode ist auf GitHub verfügbar: GitHub/flo199213/Hoverboard-Firmware-Hack-Gen2

Du denkst dir jetzt "Ist doch ein ganz nomaler Sessel?" - Richtig! Genau das war das Ziel. Ein fahrbarer Sessel, dem seine geheime Funktion nicht angesehen werden kann! Um trotzdem zu zeigen was der Sessel kann folgt hier direkt ein Video:


Video 1: Fahrvideo des Sessels

 
Zur Umsetzung lässt sich folgendes sagen: Der Sessel verwendet ein gehacktes "Hoverboard" zur Fortbewegung. Diese mittlerweile sehr günstig erhältlichen Hoverboards enthalten alles was benötigt wird, um ein Objekt wie diesen Sessel zu bewegen. Dabei lässt sich eine Spitzengeschwindigkeit von ca. 35 km/h erreichen. Aus Sicherheitsgründen ist der gezeigte Sessel aktuell auf 20 km/h gedrosselt. Da das Hoverboard eine proprietäre Firmware enthält, die allein dem chinesichen Hersteller bekannt ist, wird für dieses Projekt lediglich die Hardware des Hoverboards benutzt und eine von Grund auf komplett eigens geschriebene Firmware verwendet.


Abbildung 2: Innenleben Hoverboard
 
Das Hoverboard enthält zunächst den blauen Lipo-Akkumulator der 4,4Ah bei 38V Nennspannung aufweist (Vgl. Abbildung 2). Die Motoren sind in den beiden Rädern enthalten. Es handelt sich dabei um zwei 350W Brushless DC Motoren in einer Außenläufer-Ausführung. Die Rückführung der Drehzahl erfolgt über drei HALL-Sensoren, die in die Wicklung eingegossen sind. Neben einigen LED-Boards, die zur Anzeige des Batterieladezustands und der Fahrmodi genutzt werden, enthält das Hoverboard zwei Mainboards, die jeweils zur Regelung einer Motorseite zuständig sind.



Abbildung 3: Aufbau Leiterplatten und Verbinder
 
In der original Firmware regelt jedes Mainboard den jeweiligen Motor seiner Seite auf ein auf der Leiterplatte verlötetes Accelerometer aus, sodass sich das Hoverboard von sebst ausbalanciert. Diese Funktion wird für den Sessel nicht benötigt. Die neue Firmware wird die Vorgabe von einem Geschwindigkeits- und einem Lenksollwert zulassen und die beiden Motoren abhängig davon antreiben. Die beiden Mainboards bestehen aus derselben Leiterplatte, die wechselseitig bestückt ist. Beide enthalten einen ARM Cortex M3 Prozessor der Firma GigaDevice (GF32F130C8). Dieser lässt sich zum Beispiel mit der Keil-IDE programmieren, auf der Keil-Homepage lässt sich der entsprechende HAL finden. Das Mainboard enthält jeweils eine dreiphasige Vollbrücke, an der der Motor angeschlossen wird. Zugleich verfügt es über einen Anschluss für den HALL-Sensor, der über eine Flankenauswertung binär ausgelesen wird. Über das Master-Mainboard lässt sich die angeschlossene Batterie laden. Dabei erkennt das Mainboard, ob gerade ein Ladegerät angeschlossen ist und misst die Batteriespannung. Beide Boards messen zusätzlich über einen Shunt-Widerstand den eigenen Ausgangsstrom. Die Kommunikation zwischen den beiden Boards erfolgt über eine USART Schnittstelle. Als Anschlussmöglichkeit bleibt neben den LED-Anschlüssen X1-X3 noch ein Pinhead in der Mitte des Boards, auf dem wahlweise über I2C oder USART kommuniziert werden kann.



Abbildung 4: Reverse-Engeneering der Hardware
 
Herauszufinden, welcher Pin mit welcher Funktion belegt ist gestaltet sich nicht selten sehr mühsam. Vor allem dann, wenn man unbedingt vermeiden möchte, dass während der Analyse ein Bauteil oder die ganze Platine kaputt geht. Das Ergebnis stundenlanger Detektivarbeit sieht man in folgendem Schaltplan:
 

Schaltplan 2: Pseudoschaltplan Hoverboardplatine
 
Anhand dieser Informationen lässt sich nun der ARM Prozessor so initialisieren, dass eine Programmierung auf die gewünschte Funktion möglich ist.


Abbildung 5: Geschweißter Grundrahmen für den Sessel
 
Abbildung 5 zeigt den geschweißten Grundrahmen, an dem später die Räder befestigt werden sollen. Auf diesem Rahmen soll dann der Sessel sitzen.



Abbildung 6: Lackierter Rahmen und vordere Rollen
 
Die vorderen Räder sind einfache Baumarktrollen, die sich um sich selbst drehen können. Damit der Ramen später nicht mehr so arg auffällt, wird dieser schwarz lackiert.



Abbildung 7: Ergebnis Grundrahmen
 
Am Rahmen wird hinten das zersägte Hoverboard festgeschraubt, um als Halter für die beiden Motoren zu dienen.



Abbildung 8: Vorbereitung Elektronik
 
Aufputzdosen dienen als sichere Lösung, um die Elektronik unterzubringen. Diese schützen vor Staub und sorgen dafür, dass zwischen der Leiterplatte und anderen metallischen Bauelementen kein Kurzschluss entsteht.



Abbildung 9: Montierter Grundramen am Sessel
 
Der Grundramen ist mit dicken M8 Gewindeschrauben stabil mit dem Sessel verschraubt. Eine umlaufende nachträglich montierte Lederschürze verhindert, dass man die Räder unter dem Sessel erkennen kann.



Abbildung 10: Aussparung Bedienfeld
 
Um den Sessel bequem an- und ausschalten, sowie den Batteriezustand ablesen zu können, wird ein Bedienfeld montiert. Dieses Bedienfeld ist ein Kompromiss zwischen der Nicht-Sichtbarkeit der Fahrfunktion und dem Komfort, den Sessel zu bedienen. Um keinerlei sichtbare Kabel zu erzeugen wird eine Aussparung vorgenommen, in die das Bedienfeld eingelassen wird. Die Kabel führen im Inneren der Armlehne nach unten zur Elektronik.



Abbildung 11: Anschlussseite Bedienfeld
 
Das Bedienfeld enthält eine Batteriezustandsanzeige, eine Anzeige, ob das Ladegerät angeschlossen ist, ein Ladestecker, ein Anschalter, ein Not-Aus und eine Buchse um einen kabelgebundenen Controller anschließen zu können.



Abbildung 12: Ergebnis Bedienfeld
 
Das fertige Bedienfeld fällt glücklicherweise in echt nicht so sehr auf, als das Bild vermuten lässt (Vgl. Abbildung 12).



Abbildung 13: Bestückte Elektronik
 
Abbildung 13 zeigt die beiden Mainboards, wie sie in den Elektronikgehäusen verbaut sind. Jede Seite betreibt den jeweiligen Motor ihrer Seite. Die Steuerung des Sessels wird von einer Funkfernsteuerung übernommen. Deren Empfänger wird von einem Arduino ausgewertet, der im rechten Elektronikgehäuse ebenfalls verbaut ist. Dieser sendet dem Masterboard die entsprechenden Sollwerte. Im linken Gehäuse wird die selbe Schnittstelle des Boards verwendet, um ein Bluetoothmodul anzusprechen. Über dieses Modul lassen sich die aktuellen Betriebswerte wie die Geschwindigkeit, der fließende Strom und die Batteriespannung abfragen. Außerdem kann eingestellt werden, ob eine verbaute Bluetooth-Box angeschaltet oder die Hupe aktiviert wird, ob der Sessel beim Rückwärtsfahren piepsen soll (wie Baustellenfahrzeuge das tun), oder ob eine Farbe für die Unterbodenbeleuchtung ausgewählt werden soll.



Abbildung 14: RGB-Unterbodenbeleuchtung
 
Natürlich benötigt ein standesgemäßes Fortbewegungsmittel, wie es ein solcher Sessel darstellt, eine Unterbodenbeleuchtung. Was für eine Frage... :-)