How to control a Hoverboard with an Arduino

Basiert auf der super Arbeit von: Niklas Fauth und Emanuel Feru

Grund: In einem Hoverboard steckt die Technik um preiswert fahrbare Untersätze zu bauen, die sehr viel Kraft haben und sehr präzise schnell oder langsam fahren können (zwei starke BLDC Motoren, speziell abgestimmte BLDC Steuerplatine, dicker Akku).

Ziel: Die Motoren mit einem Arduino zu steuern, damit die vertraute und einfache Arduino Programmierumgebung verwendet werden kann um z.B. Sensoren oder Wifi anzubinden.

Weg: Die BLDC Motoren können nicht direkt vom Arduino angesprochen werden, es braucht eine Steuerplatine mit einem eigenen Mikrocontroller und 12 dicken Transistoren. Dazu muss auf diese Steuerplatine einmalig eine neue Firmware aufgespielt werden um die Kommunikation mit dem Arduino zu ermöglichen.

Hinweis: Dieses Tutorial ist gefährlich, bei falscher Handhabung kann der Akku explodieren, die Motoren können dich und deinen Computer mühelos durch den Raum ziehen. Langsames und besonnenes Arbeiten ist unabdingbar, da evt. die Sicherheitsvorkehrungen durch die Firmware Veränderung nicht mehr korrekt funktionieren. Es wird nicht die geringste Haftung für irgendwas übernommen.

1. Technik Kaufen

1.1. Hoverboard

Roboter / Innenraum: 6,5 Zoll Räder mit je 300W z.B: „GPX-01“ ab 150€
Personentransport / Spaß: 8,5 Zoll Räder mit je 400W z.B: „GPX-04“ ab 250€

Es gibt hunderte verschiedne Modelle, aber Prinzipiell sind alle gleich aufgebaut, bis auf einen wichtigen Punkt: Es muss eine zentrale Steuerplatine haben, leider ist das schwer möglich vorher herauszufinden, evt. am Preis: die ganz billigen haben keine (beide GPX Modelle haben eine)

1.2. ST-Link V2 Programmer

Das Ding braucht ihr um die neue Firmware auf die Steuerplatine aufzuspielen. Am besten eine Version die Kurzschlussfest ist, ansonsten ist es dahin, wenn ein Kabel falsch angesteckt wurde. z.B: STM32 ST-Link V2 Programmer

1.3. Arduino

Die Steuerplatine hat eine 3,3 Volt Logic, es wird also auch ein Arduino mit 3,3Volt Logik benötigt, z.B: Adafruit Feather M0 Basic Proto (Update: 5 Volt Logic ist auch ok)

1.4. 5-Volt DC-DC-Wandler

Damit der Arduino vom Hoverboard aus mit Strom versorgt werden kann, wandelt die 15 Volt in genießbare 5 Volt um. z.B: LMO78_05-0.5

——————————————————————————————————

2. Hardware aufbereiten

2. 1. Hoverboard

– Akku aufladen, korrekte Funktion testen, aufschrauben, alle Kabel abstecken
– alles ausbauen, außer den Motoren (wir benötigen die Steuerplatine, die Ladebuchse, den Power-Taster und den Akku) alles andere kann entsorgt werden
– den Plan der Steuerplatine runterladen und studieren:Image by Emanuel Feru Thx! (original image by Emanuel Feru)

2. 2. ST-Link Programmer Verbindung herstellen

– je ein Kabel an SWDIO, SWCLK, GND am SWD Programming Anschluss auf der Steuerplatine anlöten (den 3.3 Volt Pin niemals anschließen!)
– und mit den gleichnamigen Pins am ST-Link Programmer verbinden
– Tip: der mittlere Kontakt (GND) lässt sich sehr schwer löten, unbedingt testen ob eine Verbindung zu Masse (schwarzes Akku Kabel) besteht

2. 3. Arduino Verbindung herstellen

– TX vom Right Sideboard Anschluss auf der Steuerplatine an RX am Adafruit Feather löten
– RX vom Right Sideboard Anschluss auf der Steuerplatine an TX am Adafruit Feather löten
– GND vom Right Sideboard Anschluss auf der Steuerplatine an GND am Adafruit Feather löten
– 15V vom Right Sideboard Anschluss auf der Steuerplatine an Pin 1 vom DC-DC Wandler löten

– GND vom Adafruit Feather an Pin 2 vom DC-DC Wandler löten
– USB vom Adafruit Feather an Pin 3 vom DC-DC Wandler löten

——————————————————————————————————

3. Steuerplatine entsperren

3.1. Vorbereitung

– Power-Taster und Akku mit der Steuerplatine verbinden
– ST-Link Programmer per USB an den Rechner anschließen
– Wichtig: immer wenn eine Verbindung erstellt oder etwas hochgeladen werden soll, muss die ganze Zeit der Power-Taster gedrückt gehalten werden

3. 2. Windows Nutzer

– das Programm ST-Link Utility installieren und dieser Anleitung folgen: https://github.com/EmanuelFeru/hoverboard-firmware-hack-FOC/wiki/How-to-Unlock-MCU-flash

3. 3. Mac / Linux Nutzer

– per Terminal installieren: Homebrew, stlink, OpenOCD und dieser Anleitung folgen: https://github.com/EmanuelFeru/hoverboard-firmware-hack-FOC/wiki/How-to-Unlock-MCU-flash#method-2-using-ubuntulinux

3. 4. Mac Nutzer ohne Erfahrungen im Terminal

– suche dir einen Windows Rechner, den du dafür nutzen kannst, denn dieser Punkt ist nur ein einziges Mal notwendig

——————————————————————————————————

4. neue Firmware aufspielen

4. 1. Software

– das Programm VisualStudioCode downloaden und installieren: https://code.visualstudio.com
– VisualStudioCode öffnen und am linken Rand den Button „Extensions“ klicken, nach „PlattformIO IDE“ suchen und installieren (das kann einige Zeit dauern.. Status rechts unten beobachten)

– den kompletten NiklasFauth/hoverboard-firmware-hack Ordner von Github runterladen und entpacken: https://github.com/EmanuelFeru/hoverboard-firmware-hack-FOC
– diesen ganzen Ordner in VisualStudioCode öffnen (File -> Open und den Ordner anwählen, keine einzelne Datei)

4. 2. Arduino Kommunikation (UART) aktivieren

– in VisualStudioCode die Datei „platformio.ini“ anklicken und die Auskommentierung (das Semikolon am Anfang) der Zeile 13 entfernen:

default_envs = VARIANT_USART

– optional im Ordner „Inc“ in der Datei „config.h“ in der Zeile 170 das Piepen beim Rückwärtsfahren abschalten:

#define BEEPS_BACKWARD 0

– Speichern und „PlatformIO:Build“ drücken (der kleine Haken links unten im Program) das kann beim ersten Mal einige Zeit dauern.. Status rechts unten beobachten

4.3. Hochladen zur Steuerplatine

– ST-Link Programmer per USB an den Rechner anschließen
– den Hoverboard Power-Taster drücken und halten
-„PlatformIO:UPLOAD“ drücken (der kleine Pfeil links unten im Program) das kann beim ersten Mal einige Zeit dauern..

4.4. Success!

– wenn das erfolgreich war, den Taster wieder loslassen
– eventuell fängt das Hoverboard an zu piepen (da es noch keine Befehle vom Arduino empfängt) einfach den Taster kurz drücken zum Ausschalten
– den ST-Link-Programmer vom Rechner und der Steuerplatine trennen
– die Steuerplatine und den Akku wieder in das Hoverboard einbauen
– die Motoren wieder anstecken (die dicken und die dünnen Kabel)

Gratulation, das war der schwere, unbekannte Teil der nur einmal nötig ist. (außer du möchtest die Einstellungen im Hoverboard ändern, die Datei config.h ist voll von Möglichkeiten..)

——————————————————————————————————

5. Arduino Software:

5.1. hoverSerial1.ino

– das Beispiel runterladen: http://bauhausinteraction.org/opl/wp-content/uploads/2020/06/00_hoverSerial1.zip
– das ist optimiert für den Adafruit Feather M0, basierend auf dem Sketch von Emanuel Feru für den Arduino Nano
– speichern und zum Arduino hochladen, das USB Kabel abstecken

5.2. Erster Test

– das Hoverboard auf einen Stuhl legen, sodass die Räder frei drehen
– das Hoverboard mit dem Taster anschalten
– die Räder sollten sich ruhig und gleichmäßig drehen
– das Hoverboard ausschalten

5.3. Arduino Code modifizieren

– der Befehl Send(0, 100); im Loop Teil kontrolliert die Motoren
– der erste Wert steht für „Steer“ also ob nach links oder rechts gefahren werden soll
– der zweite Wert steht für „Speed“ also wie schnell gefahren werden soll
– z.B. ersetzen durch Send(50, 100); (leichte Kurve, langsam Vorwärts)
– beide Werte können von -1000 bis 1000 gehen

Yeah! Geschafft, von nun an kannst du die beiden Motoren mit dem Arduino steuern.

——————————————————————————————————

Tip: es gibt u.a. verschiedene Modi wie die Motoren angesteuert werden, wähle einen der am besten zu deiner Anwendung passt (in der Datei config.h in Zeile 143) https://github.com/EmanuelFeru/hoverboard-firmware-hack-FOC#foc-firmware

Fragen? Auf den Github Seiten von: Niklas Fauth und Emanuel Feru gibt es mehr Informationen.