Bonsoir à tous,
J’ai reçu aujourd’hui les PCB que j’ai fait fabriquer ad hoc pour entrer dans le wagon suiveur.
La batterie, le BMS et le steper-up prennent place dans le corps de chauffe comme je l’ai montré précédemment.
Sur le PCB du wagons suiveur, l'ESP32 est un Node 32S qui a l'avantage d'être l'un des plus étroit du marché. Plus long mais moins large encore qu'un WEMOS et c'est ce qui m'intéressait.
La batterie 18650 est alimentée au besoin par les rails soit en DCC soit en analogique (DC). Un pont de diodes se charge de redresser le courant en DC.
Sur la photo, on voit l’empreinte des quatre diodes qui ne sont pas encore soudées. La tension de ce courant DC est abaissée de 18v à 5v au travers d'un convertisseur pour être supporté par le BMS 1S qui charge la batterie en continu. A la sortie de la batterie 18650 nous avons un Step-up qui remonte le courant à une tension de 12v pour alimenter le moteur au travers de la carte Pololu TB6612.
L'ESP32 est alimenté à partir de ce courant 12v au travers d'un convertisseur 3,3v
Et voilà le résultat :
Je vous joint le code pour l’ESP32 (récepteur). Le code pour le pilotage est écrit en C++ mais sur mon ordinateur. Je vais rapidement faire une version pour ESP32 (émetteur), pour un pilotage très simple : Potentiomètre rotatif sur une entrée analogique et un simple bouton pour l’inversion de sens.
Ce code est assez complet et inclus la possibilité de mise à jour en OTA. Il est en même temps assez simple puisqu'il s'agit de communication en TCP. La connexion n'est jamais fermée entre l'émetteur et le récepteur pour la rapidité des transactions (j'ai même été obligé de ralentir un peu le programme !). Si la connexion est coupée, la locomotive se met immédiatement en eStop.
Dans le fichier Config.h, il y a moyen de régler l'accélération et la décélération de façon indépendante comme sur un décodeur et aussi limiter la vitesse maxi. Il y a également moyen de régler la fréquence de la PWM du moteur que j’ai mise à 30000Hz mais je pense être un peu optimiste.
Je vais aussi adapter une version HTML (tablettes, smartphones) avec des websockets.
Pour la syntaxe des messages, j’ai copié celle de DCC++ adaptée à ce projet spécifique afin de rester dans un univers connu. Ainsi, une commande de traction s’écrit elle <t 100 1> pour commander une traction (t) à la vitesse de 100 en marche avant (1). Il n’y a bien sûr pas de référence à l’adresse du décodeur.
Pour les fonctions, idem <f 128> par exemple.
J’ai fait des tests de sons comme l’a fait Gboule avec des fichiers directement copiés dans la mémoire SPIFFS de l’ESP. Ca fonctionne bien mais comme je n’avais qu’un malheureux transistor 2N2222 en sortie, le volume n’était pas convainquant. J’ai commandé le même ampli que Gboule MAX98357 que je devrais recevoir mercredi. Merci à lui pour le tuyau.
Voilà pour le moment mais je reste très motivé pour avancer sur ce sujet dont je remercie une nouvelle fois Gboule de l’avoir apporté.