SP-2:.### Z01### Hacking hoverboard
Dossiers > Divers hors cyclisme

Hacking hoverboard

hoverboard Voici un tutoriel pour reprogrammer le contrôleur original des cartes mères d’hoverboard, pour les adapter à son projet.
Les hoverboards, ou gyroboards sont des gyropodes, auto-stabilisés, sortes de planches à 2 roues équipées d'une batterie Lipo 36V et de moteurs électriques brushless.

Pourquoi reprogrammer une carte d’hoverboard ?
Pour fabriquer, en récupérant les composants, par exemple de petit robots télécommandés, ou une petite voiture d'enfant, ou autre en fonction de votre imagination.
Parce que c’est bon marché et facile à trouver. Avec un peu de chance on peut même en trouver gratos à la déchetterie, pour peu que la carte mère et les roues fonctionnent, c’est tout bon.
On n’utilisera que la carte électronique principale et les roues, le bouton M/A, et éventuellement le connecteur de charge et la batterie d’origine.

Tout d’abord, je dois dire que je n’y connais rien en programmation et que je me suis contenté de récupérer des infos un peu partout sur Internet, et de poser des questions aux concepteurs du firmware.
Ce tuto est pour les cartes mères d’hoverboard les plus anciennes et les plus répandues, équipées avec un processeur STM32F103 (voir photo ci-dessous). Les hoverboards récents utilisent 2 cartes différentes, et parfois un processeur différent. Quelqu’un a aussi fait un tuto pour ces cartes génération 2 ici :

github.com

Tous ces programmes sont dérivés du programme mis a disposition par NiklasFauth à cette adresse :

github.com

Voici une photo de la carte et ses différentes connexions :

Carte électronique de gypropode Hoverboard et le repérage des connexions.

Le schéma électronique de la carte est ici : vocke.tv
Au niveau du matériel pour pouvoir flasher le firmware dans la carte il va falloir vous procurer un adaptateur ST-LinkV2 comme ci-dessous qu’on trouve un peux partout sut Internet, par exemple ici : www.amazon.fr

Adaptateur USB ST-LinkV2 pour flasher la carte.

Pour l’utiliser il faut aussi télécharger et installer le programme de flashage de ST, à télécharger ici : www.st.com
Pour ce tuto je vais utiliser le programme de Benjaf qu’on trouve ici : github.com
L’avantage du programme de Benjaf est qu’on peut utiliser une télécommande et un récepteur classique PWM contrairement a celui de NiklasFauth avec lequel on doit utiliser un récepteur PPM, mode spécifique avec lequel toutes les voies sont codées sur une seule sortie.
L’inconvénient de ce programme c’est que pour le moment il ne gère pas la direction, uniquement marche avant/marche arrière. Mais en utilisant 2 cartes et 4 roues ça doit être possible avec un mixage sur la télécommande style tank.
Pour le flashage il faudra souder un connecteur 4 broches sur la carte mère, un emplacement est prévu sur la carte à côté du STM32F103.

Emplacement du connecteur à souder sur la carte et correspondance des broches.

C’est sur ces broches qu’il faut brancher l’adaptateur USB ST-LinkV2 et aux broches correspondantes du ST-Link (le brochage est imprimé sur le ST-Link). Il est déconseillé d’alimenter la carte avec le 3.3V de l’adaptateur, alors on ne connectera que les 3 fils SWCLK, GND et SWDIO.

Adaptateur ST-LinkV2 branché sur la carte.

Le récepteur de télécommande se branchera sur le connecteur de gauche SENSOR BOARD qui est le câble le plus long. Signal sur PA3, masse sur GND, et + alimentation sur du 5V qu’on peut récupérer sur la carte en soudant un fil à la sortie du régulateur 5V (U1 78M05). Surtout ne pas brancher sur le fil rouge du connecteur SENSOR BOARD car c’est du 15V. Si vous souhaitez brancher en plus des servos sur votre récepteur, il vaudra mieux l’alimenter à part, car le courant fourni par la carte est limité.

Détail du repiquage de l alimentation +5V sur une broche du régulateur.

Les entrées du STM32F103 sont très sensible aux perturbations électromagnétiques produites par les moteurs, aussi il faudra utiliser des câbles courts, et souder 2 petits condensateurs céramiques de 100pF entre les entrées et la masse.

Condensateurs 100pF à souder sous la carte entre les broches PA2, PA3 et la masse.

Pour commencer il faut télécharger le programme de Benjaf en cliquant sur le lien cité plus haut. Il faut cliquer sur Clone or download, puis sur Download ZIP.
Il faudra ensuite décompresser votre ZIP dans un dossier de votre disque dur, par exemple:

Vous obtiendrez des dossiers et fichiers avec la même arborescence que sur GitHUB. Le firmware déjà tout prêt se trouve dans le dossier Build, c’est le fichier hover.hex
Maintenant il faut lancer le programme ST-LINK Utility que normalement vous avez téléchargé et installé.
Branchez sur une prise USB de votre ordinateur l’adaptateur ST-LinkV2 et mettez sous tension la carte de l’hoverboard. Si c’est la première fois que vous branchez votre ST-LinkV2 il faut attendre un peu pour qu’il soit reconnu par Windows.
Dans ST-LINK Utility, cliquez sur l’icône "Connect to the target" (3ème icône en forme de prise de courant). Si c’est la première fois que vous flashez votre carte vous devriez obtenir un message en anglais comme quoi "la mémoire ne peut pas être lue, désactivez la protection en lecture et réessayez". Pour cela il faut ouvrir le menu Target, puis Options Bytes et mettre Read Out Protection sur Disable, puis cliquez sur Apply.
Notez qu’à cause de cette protection on ne peut pas lire le firmware original afin de le sauvegarder.

Maintenant, vous cliquez de nouveau sur l’icône Connect to the target et ça doit fonctionner.
Ensuite il faut aller chercher notre firmware modifié en cliquant sur File, puis Open file et on va chercher notre fichier hover.hex dans le dossier Build. Ensuite il faut ouvrir le menu Target, puis cliquer sur Program & Verify.
Avant ça il faudra mettre la carte sous tension en 36V et la maintenir allumée en laissant le doigt appuyé sur le bouton de mise en marche, ou remplacer ce bouton par un interrupteur, car si le processeur de la carte décide de l’éteindre pendant le flash, ça va planter.
Si tout se passe bien vous devriez entendre au bout de quelques secondes une petite musique en provenance de la carte, ça veut dire que le flashage est terminé. Cliquez sur l’icône Disconnect from the Target (4ème icône), déconnectez le câble USB, coupez l’alimentation de la carte.

Branchez votre récepteur RC comme indiqué plus haut sur la voie 2 du récepteur, allumez votre émetteur RC, mettez la carte sous tension, appuyez sur le bouton M/A de l’hoverboard, et normalement ça marche !

Maintenant je vais vous expliquer comment modifier le firmware à votre sauce, afin de l’adapter à votre projet. La plupart des modifications se font dans le fichier congig.h qui se trouve dans le dossier Inc, et aussi dans le fichier main.c qui se trouve dans le dossier Src.

Pour modifier ce fichier ou les autres, il faut utiliser un éditeur de code. Même si on peut ouvrir le fichier config.h et voir ce qu’il y a dedans avec le Bloc-notes de Windows, on ne peut pas le modifier, si vous le faites ça ne marchera pas au compilage.

Comme éditeur de code j’ai utilisé Visual Studio Code que vous pouvez télécharger ici : code.visualstudio.com

Il y a une procédure complète en anglais pour compiler décrite ici : github.com :-TranspOtter

Il y a une procédure pour Windows, et une pour Linux. Il faut savoir que ce programme à été compilé avec un logiciel libre gcc-arm-none-eabi qui normalement ne fonctionne que sur Linux.
Je vais vous décrire la procédure que j’ai utilisée, celle pour Windows 10 64 bits. (ne marche pas avec la version 32 bits)

Il faut commencer par installer Linux Subsystem pour Windows en allant dans : Panneau de configuration, Programmes, Activer ou désactiver des fonctionnalités Windows, et cocher Sous-système Windows pour Linux. Une fois fait il faudra redémarrer Windows. Ensuite il faut aller dans le Microsoft Store et taper dans la recherche le mot Linux. Dans les résultats de la recherche il faudra installer Ubuntu. Une fois fait, vous aurez une icône Ubuntu dans votre menu Démarrer.
Ouvrez Ubuntu et attendez la fin de la configuration. Ensuite il vous demandera d’entrer un nom et un mot de passe, mettez ce que vous voulez mais retenez le.
Maintenant il va falloir installer la suite gcc-arm-none-eabi en tapant les commandes suivantes dans la fenêtre terminal de Ubuntu :

sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
sudo apt-get update
sudo apt-get install gcc-arm-embedded
sudo apt install gcc-arm-embedded build-essential

Voila maintenant vous pouvez compiler le programme. Vous pouvez faire un essai en vous rendant dans le dossier où se trouve le programme de Benjaf sur votre disque dur. Auparavant il faudra remplacer dans son programme le fichier makefile par celui de NiklasFauth que vous pouvez récupérer ici:

github.com

Le fichier makefile de Benjaf pointe vers des fichiers qui ne seront pas trouvés sur votre ordinateur (PREFIX= etc…) c'est pour ça qu'il faut le remplacer par l'autre.

Donc dans la fenêtre terminal de Ubuntu, il faudra taper ça si vous avez mis le programme dans le dossier exemple que j’ai donné plus haut :

cd /mnt/c/hackinghoverboard/hoverboard-firmware-hack-esk8-master

Appuyez sur Entrée de votre clavier, puis tapez make et appuyez de nouveau sur Entrée.

Si tout se passe bien pour devriez voir défiler des lignes de codes, et normalement à la fin un fichier hover.hex et un fichier hover.bin sont créés dans le dossier build avec tout un tas d’autres fichiers. Vous pourrez flasher indifféremment le fichier hover.hex ou le hover.bin, c’est pareil. Pendant la compilation on remarquera qu’il y a beaucoup de "Warning", mais ça fonctionne quand même.
Si vous souhaitez de nouveau compiler votre programme, il faut effacer tout ce qui se trouve dans le dossier Build.

Pour mon projet, je souhaite faire une tondeuse à 4 roues motrices. J’utiliserai donc 2 cartes et 2 voies avec un mixage sur ma télécommande. Je souhaite aussi utiliser une batterie lipo 7S 10Ah (parce que je l’ai déjà) à la place de la 36V d'origine. La carte et le firmware étant prévu pour une batterie lipo 10S, il va falloir modifier avec Visual Studio Code, le fichier config.h comme ceci :

Lignes 18, 19 et 21 (pour la valeur 1157, j’ai divisé la valeur d’origine par 10, puis multiplié par 7)

#define BAT_CALIB_REAL_VOLTAGE 29.0 // input voltage measured by multimeter
#define BAT_CALIB_ADC 1157 // adc-value measured by mainboard (value nr 5 on UART debug output)
#define BAT_NUMBER_OF_CELLS 07 // normal Hoverboard battery: 10s

Je souhaite aussi que ma tondeuse s’arrête franchement quand le manche est au neutre, et aussi avoir des bip bip quand elle recule alors j’ai modifié ces valeur, lignes 109 et 110 :

#define BEEPS_BACKWARD 1 // 0 or 1
#define BRAKE_FILTER 0.09f // Replaces FILTER while braking

Je veux aussi que les roues soient freinées quand le manche est au neutre, alors j’ai désactivé cette valeur dans le fichier main.c ligne 282 :

// Disable motors when throttle is in neutral
// if(cmd2 == 0) {
// enable = 0;
// } else {
// enable = 1;
// }

Pour désactiver une fonction il faut taper // devant la fonction, et inversement pour l’activer. Il y a toujours aussi // devant les commentaires
Ensuite, après avoir sauvé les modifications, j’ai compilé à nouveau mon programme en tapant la commande make, puis j’ai flashé la carte, et ça marche !

Ma carte modifiée. Sur mon montage j’ai déporté le buzzer, mais bien sûr ce n’est pas indispensable.

Voilà, ce tuto devrait vous éviter de passer autant de temps que moi à chercher comment utiliser ces firmwares !

Franck24 Cyclurba


Article précedent: Kit de débridage SpeedUp Basic sur moteur Bosch Performance

Réagir, poser une questionProposer un articleS'abonner aux articlesConseiller l'article à un ami
Lien commercial -356-





Accédez à notre site www.power-e-bike.fr


Découvrez tous nos display compatible Bafang

Accédez à notre site www.power-e-bike.fr
A propos de cet article
Profil de Franck24infos Article de Franck24.
Dépanneur informatique. Électronicien de formation. Amateur, entre autres, de vélos électriques.

N° Article : 897
Article lu 1127 fois.
Créé le 12-06-2019 à 08h51.
Modifié le 17-06-2019 à 13h46.

Cliquez ici pour valider cet article Validation * * *

modifier cet article Mettre à jour l'article
Cliquez ici pour rediger un nouvel article Redigez un nouvel article
Discutons de cet article sur le forumVos réactions, sur le Forum
Liens externes
Autres articles du dossier

Tous nos articles Tous les articles