Remote Bluetooth avec ecran pour VESC UNIQUEMENT

0. Introduction du tutoriel

La télécommande en action une fois terminé:

I. Liste des composants et lien vers les programmes

les programmes et les fichiers d’impression 3D se trouvent ici :
https://github.com/Raidensama/ProgRemote

II. Programmation VESC

Pour que cette télécommande fonctionne sur sa propre board il faut configurer le VESC en PPM and UART ou UART.

Et fixer le baud rate à 115200.

III. Programmation des modules BLE HM-10
1. L’esclave (celui qui ira dans la board)

a) On branche l’arduino au module selon le schéma suivant :
HM-10--------ARDUINO
TXD ----------- D11
RXD ---------- D10
BRK ---------- D7
VCC ---------- 5V
GND ---------- GND

b) On lance l’IDE Arduino et on branche l’Arduino au PC à l’aide du cable USB fourni avec l’arduino.

c) On ouvre le programme « ProgHM10 » et on clique sur le bouton téléversement (petite flèche dans un rond en haut à gauche pour ceux qui n’ont jamais touché arduino)

d) On ouvre le moniteur série (la loupe en haut à droite) en mettant le baud rate à 9600 (en bas à droite du moniteur série) et on récupère l’adresse du module qu’on a demandé grâce au programme (à conserver sur un bout de papier ou autre on en aura besoin plus tard)

e) On ouvre le programme « ConfigHM10Slave » et on clique sur téléversement.

Le module esclave est enfin configuré. On le met de coté en le distinguant de l’autre module pour ne pas les mélanger (pastille de couleur, étiquette…)

2. Le maître (celui qui ira dans la télécommande)
a) On réalise le même branchement qu’avec l’esclave

b) On ouvre « ConfigHM10Master » sans cliquer sur téléversement cette fois

c) On modifie UNIQUEMENT la ligne de code suivante :
mySerial.write(« AT+CON »);
En ajoutant l’adresse de l’esclave que l’on a récupéré auparavant comme ci-dessous :
mySerial.write(« AT+CONadresseRécupérée »);

Exemple :
J’ai récupéré l’adresse suivante : D436799B46BA
Je modifie : mySerial.write(« AT+COND436799B46BA »);

d) On clique sur téléversement une fois qu’on a ajouté l’adresse.

e) Vérifions si l’adresse est bien rentrée.
On branche le module ESCLAVE sur le vesc comme dans le topic ci-dessous :
« Installer et utiliser le bluetooth avec un VESC » merci Pimousse :smiley:

On débranche l’arduino du PC et on retire uniquement les câbles de D11 et D10 on rebranche l’arduino.

A ce moment là le module Maitre clignote, on allume le vesc qui va alimenter le module Esclave et si l’adresse est bonne les deux modules vont s’appairer et les leds des modules seront fixes.
Si les leds sont bien fixes alors l’adresse est bien rentrée.

IV. Boitier
1. Filetage des trous
On visse une des vis jusqu’au bout en forçant légèrement dans tous les trous de fixation sauf ceux qui servent à fixer la gâchette (les deux pylônes troués à l’intérieur du boitier) puis on dévisse jusqu’à retirer la vis pour avoir un bon filetage.

Juste après l’impression :

On visse :

On dévisse:

Pour les trous de fixation de la gachette on répète la même opération mais on ne visse pas jusqu’au bout. On s’arrête de visser quand la tête de vis est à 3mm environ du haut de la fixation (ça devient dur d’aller plus loin) si on va plus loin on risque de casser la fixation :

On fait la même chose sur l’autre partie du boitier. Si ça ne passe pas on martèle à la main le tournevis pour faire descendre la vis jusqu’au petit trou :

Et on fini avec quelques tour de tournevis :

2. Vérification du boitier
On monte entièrement le boitier en le laissant vide et on vérifie si tout va bien. La vis en haut du cache pile sera celle en plastique (2,5mm de diamètre et 5mm de longueur), si elle s’enfonce sans réellement se visser ce n’est pas grave avec la vis du bas ça maintiendra bien le cache pile en place.

V. Programmation de la télécommande
Ce programme est pensé pour des moteurs possédant des capteurs à effet hall. Pour les moteurs sans capteur ça fonctionnera mais le calcul de la vitesse sera erroné.

1. Installation des librairies Adafruit
Les deux zip à l’intérieur de ProgRemote (le fichier récupéré depuis le lien github dans le I.) si vous ne les avez pas déjà installés pour un autre projet (Adafruit_SSD1306-master et Adafruit-GFX-Library-master) NE LES DECOMPRESSER PAS.

a) On lance l’IDE Arduino et on effectue la manouvre suivante :

On sélectionne l’une des librairies et on l’installe. On fait pareil pour l’autre librairie.

b) En DUAL motor on ouvre le programme « RemoteDualMotorOS ». En SINGLE motor on ouvre le programme « RemoteSingleMotorOS ».
c) On entre les paramètres liés à son skate dans cette zone du programme délimité par « DEBUT DE LA PARTIE A MODIFIER SELON VOTRE ESKATE » et « FIN DE LA PARTIE A MODIFIER » :

Pour obtenir le nombre de paire de pôles du moteur demander le à votre fournisseur s’il ne le connait pas (oui c’est possible…) il faut démonter le moteur et compter le nombre d’aimants (les petites plaques collé sur le rotor) et diviser ce nombre par 2 (on veut le nombre de PAIRES).

Rapport = nbre de dents poulie-moteur / nbre de dents poulie-roue (à arrondir au centième)

d) On clique sur téléversement une fois qu’on a entré les paramètres

Tous les éléments sont programmés on peut procéder au cablage.

VI. Câblage

1. Cablage du coupleur
On cable le coupleur de pile, le switch et on fait des points d’alimentation (GND et VCC). Il faut penser à faire passer les fils du coupleur de pile avant de souder dans la fente prévu à cet effet.

Placement du coupleur :

Soudure des composants :

Les broches en suspension sont mes points d’alimentation à droite GND et à gauche VCC (5V de l’arduino). Par la suite tous les fils rouges (5V) seront connectés au point d’alimentation VCC et tous les fils noirs seront connectés au point d’alimentation GND. Pour le switch, le fil rouge du coupleur va sur la broche du milieu (s’il y a plusieurs rangées peu importe la rangée) et la broche juste à gauche ou juste à droite (peu importe ici tant que c’est sur la même rangée) doit être reliée à « vin » de l’arduino.

2. Préparation des composants
On prépare les composants en y soudant des cables de 3-4 cm max sinon les câbles prendront trop de place et on ne pourra pas fermer le boitier.

a) La gachette
La gachette arrivera en pièce détaché il faut donc la monter avant de la préparer

D’abord on retire l’ecrou et la rondelle :

Ensuite on insère le potentiomètre dans la partie centrale :

Après on fixe le tout en remettant la rondelle et l’écrou :

On place l’espèce de triangle comme ci-dessous :

Enfin on place la partie qui accueille le doigt et le ressort :

On soude des câbles sur la gâchette comme ci-dessous. La couleur des fils est importante si on inverse le rouge et le noir on se retrouve avec une gâchette inversée :

On fait une petite entaille à la pince coupante à la limite du trou pour que ça rentre dans le boitier (si on utilise le boitier que j’ai fait) :

Enfin la gâchette est prête.

b) On prépare les autres composants en mettant de la gaine thermo-rétractable. Tous les Vcc on met un fil rouge et tous les GND on met un fil noir pour savoir qui va sur quel point d’alimentation. Pour les autres broches on va essayer de mettre des couleurs différentes les unes des autres et aussi des cables dupont pour les broches TX et RX du module BLE Maitre (j’expliquerai plus tard pourquoi des cables dupont) :

c) On prépare le pont diviseur avec les 2 résistances de 10kΩ en mettant de la gaine thermo-retractable pour isoler:

Encore de la gaine thermo

d) On soude l’une des broches sans cable (peu importe laquelle) sur la borne du switch qui est relié à « vin » de l’arduino:

e) L’autre broche sera soudée au point d’alimentation GND. Et enfin le câble du pont diviseur (celui qui est soudé entre les 2 résistances) sera relié à « A1 » de l’arduino.

f) En pensant à isoler les points d’alimentation avec de la gaine thermo ou du chatterton, on câble le reste à l’arduino de cette manière :
Ecran :
SDA------ A4
SCL ------ A5
Vcc---------- point d’alimentation Vcc
GND --------- point d’alimentation GND

HM-10 Maitre : 

RXD--------TX1 (rappel : cable dupont)
TXD-----------RX0 (rappel : cable dupont)
Vcc------------- point d’alimentation Vcc
GND ------------- point d’alimentation GND

Gachette : 

fil rouge (Vcc) ----------- point d’alimentation Vcc
Fil noir (GND) ---------- point d’alimentation GND
Fil du milieu (violet sur la photo) ---------------A0

Photo des points d’alimentation une fois isolés à la gaine thermo :

e) une fois le cablage fini on le vérifie, on branche la pile et on vérifie que le switch remplit bien sa fonction d’interrupteur. L’écran doit s’allumer et afficher « 0km/h », « 0% » et le niveau de charge de la pile.

VII. Montage de la télécommande

  1. On place l’interrupteur et on le fixe avec de la glue ou un pisto-colle en faisant :!: attention à ne pas bloquer le mécanisme de l’interrupteur avec la colle.

  2. On place les autres composants en faisant en sorte que ça ressemble à la photo ci-dessous (écran OLED au dessus et dans le bon sens, Arduino en dessous et module BLE au dessus du compartiment de la pile). Le placement est important parce que le module BLE possède une antenne qui doit être éloigné le plus possible du reste de l’électronique.

  3. On colle l’écran OLED sur l’autre partie de la télécommande en mettant de la glue sur les petits rebords prévus à cet effet.

  1. On ferme le tout et voilà

VIII. Reprogrammation
Si un jour on veut changer de roues ou de moteurs il faudra reprogrammer la télécommande (c’est pour cette raison qu’il faut des cables dupont pour le module BLE). Pour ça il faut l’éteindre et débrancher les connecteurs dupont du module BLE. Ensuite il faut connecter l’arduino au PC et reprogrammer selon les changements. Une fois le téléversement terminé on déconnecte l’arduino du PC et on rebranche les cables dupont au bon endroit. On teste puis on referme le tout. Si ça ne REfonctionne pas, il y a de fortes chances que les câbles dupont ne soient pas branchés au bon endroit on échange et on reteste.

Et voilà une télécommande bluetooth avec un compteur de vitesse intégré pour pas grand chose (20€ à peu près) si ce n’est du temps :smiley: Bonne Bidouille :sunglasses:

:!: Disclaimer :!: : Ni le forum , ni moi ne sommes responsables en cas de dommages de tout ou partie du matériel causés par une mauvaise manipulation/configuration du matériel, et/ou des blessures pouvant survenir lors de l’utilisation du matériel.

EX-CEL-LENT !!!
Chapeau messieurs, c’est un tuto de toute beauté.

Mais vous me connaissez bien je peux pas vous laisser sans quelques remarques. :mrgreen:

  • Il n’est pas possible de faire une règle de 3 pour la charge de batterie restante du skate ! La décharge n’est pas linéaire.
    Utilisez plutôt ce qu’a fait Rollinggecko sur sa remote (lipocheck.cpp) : https://github.com/RollingGecko/ArduBoa … ntroler_TX
  • Intégrez un numéro de version à votre sketch pour qu’on puisse suivre vos updates (ainsi que date et vos noms, c’est pas mal si ça se retrouve aux 4 coins de la toile :wink: )
  • Vous ne gérez pas la perte de comm. Il y a un peu de place sur cet écr, l’occasion d’afficher le statut de la comm. (en faisant un if sur vescUartGetValues).
  • Pour économiser un peu de ressources proc du nano, passez dans le setup les commandes d’affichage qui ne bougent pas (genre display.fillRect(92,3,3,2,WHITE);
    display.drawRect(95,0,28,8,WHITE); si j’ai bien compris)

En tout cas, vous tenez un bon début, vous avez possibilités de faire pleins de trucs c’est chouette.
D’ailleurs avez-vous jeter un oeil ici ?
Le code dans la description vidéo. A pomper sans modération ! :wink:

Vous etes tous des ouf de l’élec! perso ça me parait bien trop compliqué pour moi, après si certains en monte et en vendent… :slight_smile:

Allez hop, en favoris !
Super tuto, chapeau !

Mon dieu vous êtes de véritables artistes !!
et jeune de surcroît :slight_smile:

Je n’y connais pas grand chose mais merci pour votre partage de savoir :idea:

Incroyable ! vraiment cool, j’adore !
Je trouve par contre que l’ergonomie de la télécommande serait à revoir… si bien à l’intérieur, l’extérieur est un peu trop… carré

Raidensama vous répondra mieux pour les caractères techniques.

N’hésitez pas à nous dire où l’on vous a perdu sur le tuto. On va essayer de vous mettre en place une solution pour bipasser le schémas électrique qui peut en arrêter plus d’un.

Concernant la télécommande, la prise en main est pas désagréable. Moi qui était un adepte de la https://fr.aliexpress.com/item/MAYITR-N … 58d7335af1
ça fait 2 mois que je l’utilise quasi tous les jours et ça m’a pas dérangé.

Elle est en effet un assez cubique, vous pourrez mettre à jour le fichier 3D dispo en Open Source ! N’hésitez pas à poster vos améliorations :wink:

Une fonction pour le calcul de la charge dont j’étais plutôt content avant que mes VESC ne me lâchent.

Merci à tous pour les remarques et les compliments :smiley: .

@Pimousse J’ai pris note des remarques ^^. Par contre pour ta dernière remarque j’y avais pensé mais pour actualiser l’affichage on est obligé d’effacer tout l’écran sauf si on déclare un affichage par motif. Le programme est plutôt lourd pour le nano (74% de la mémoire disponible…) et si on déclare un affichage en plus on risque de rendre le système instable (l’ide le dit en orange lors de la compilation…) j’ai même été obligé de réduire dans le soft la taille de l’écran pour gagner des octets. Par conséquent, si je met les motifs fixes comme le dessin de la pile dans le setup() à la seconde itération du loop() ils seront effacés (pour actualiser l’écran) et ils n’apparaîtront plus .

C’est top ! Bravo les mecs !

Si vous voulez gagner des ressources vous pouvez toujours modifier la libraire Rollinggecko pour retirer les variables vesc que vous n’utilisez pas (ça en fait quelques-unes si vous n’en utilisez que 2).

Incroyable ! vraiment cool, j'adore ! Je trouve par contre que l'ergonomie de la télécommande serait à revoir... si bien à l'intérieur, l'extérieur est un peu trop... carré Le mieux reste quelques photo & Video de la prise en main ;) No coment sur la qualité d'impression :D c'est juste qu'on avait mal ajusté notre fichier STL ce qui nous a généré des supports. On a ajusté les réglages sur le STL joint en haut du tuto pour un rendu clean des 2 côtés.

Joli tuto et belle réalisation ! Bravo BYB :wink:
Par contre au niveau fiabilité (je sais que vous la testez depuis quelques temps), qu’en est-il face à une GT2B dont le protocole est me semble t’il protégé des interférences ?

J’allais poser la même question … j’ai lu un peu partout que les connections bluetooth étaient pas ultra fiables …
Après il y a a certainement moyen de faire un truc hybride et de séparer la partie info de la partie commande et de combiner avec une GTB2B

mais ca tue BRAVO et MERCI

c’est exactement ce que j’ai demandé à KRIS de faire un module écran à part et chacun garde sa remote… en plus en BT Low Energy , ça dure vraiment longtemps. Mais faut refaire une bonne partie du code apparemment, dommage !

Si t’enlèves la partie commande, le code devient bien plus simple. :wink:
Si tu telances dedabs je te le file si tu veux Leon.
Maiw par contre attention : plus de connexion à une app smartphone possible (sauf en dual)

Oui si tu veux juste le retour d’informations sur l’écran tu retire la partie commande VescSetCurrent et VescCanSetCurrent (si c’est en dual) et tu ne connecte pas la gâchette du coup.

@Slak on a fait differents tests sur la position du module BLE (la position de l’antenne en fait) et en le plaçant comme sur le tuto on a eu aucune perte de signal depuis plusieurs semaines d’utilisations. Je peux pas te sortir une certification radio de la poche mais je pense vraiment que les risques de perte de connexion sont faibles @Toleg je pense qu’il est possible de faire un truc hybride il faudrait retirer la partie commande du programme, et mettre l’écran + module + nano dans une Gt2b. La modification du programme est simple mais la fusion avec la GT2B risque d’être punchy :? mais pas infaisable ^^

ouai ca va peut etre donner une telco de golgoth :stuck_out_tongue:

Exactement :smiley: