Bonjour à tous,
Je vous présente mon projet qui a bien avancé.
Comme j'étais petit garçon, j'adorai les trains en HO, et ayant une petite maison, mess circuits n'étaient pas fixés sur des planches en bois, et j'avais donc bcp de soucis de connexions électriques, avec des faux contacts et des roues qui noircissaient, faire attention aux aiguillages droit-gauche, etc.
J'ai un petit garçon de 5 ans et demi qui adore les trains. Après lui avoir acheté des trains en Lego qui marchent à piles, il a vu mes vieux trains et a voulu que je lui prête. Je lui ai expliqué que c'était compliqué et je ne voulais pas non plus qu'il joue tout seul avec un transfo de 220V/12V.
Donc l'idée mets venu d'essayer de rendre mes locos HO comme celles en Lego, c'est à dire à batterie et donc sans énergie venant des rails.
Etant ingénieur en informatique et fondu de IoT, j'avais les compétences pour ça.
Le but n'est pas de faire du modélisme ferroviaire pur et dur, mais juste de permettre à un enfant de jouer sans danger et facilement.
Je suis parti d'une vieille CC40101, récupérée dans une décharge au milieu des années 80. 2 avantages : elle est assez grande pour y placer l'électronique et les batteries nécessaire, et venant d'une décharge, elle était en mauvais état (plus de pantho, etc), donc c'était pas grave si je la sacrifiais pour rien.
Donc, l'idée de départ, était d'utiliser un ESP8266 alimenté par une ou plusieurs batteries, que l'on rechargerait en les débranchant du train pour les brancher sur un ordinateur ou sur un chargeur.
L'ESP contiendrait un serveur Web qui fournirait une interface simple pouvant être utilisé par un enfant de 5 ans.
Du train, on garde la motorisation. Par contre pour éviter des courts-circuits à travers les rails, on coupe les fils entre les essieux et le moteur, qui sera alimenté autrement.
L'idée de départ était d'utiliser une batterie de 3,7 V Li-ion avec un step-up pour fournir les 12V au moteur. Mais comme l'alim de l'ESP8266 nécessite 5V, il fallait mettre 2 batteries de 3,7 en série. De plus, avec une seule batterie, le step-up et moteur l'aurait trop sollicité.
Pour l'ESP, au début je suis parti sur un NodeMCU 12, mais après réflexion, un Wemos D1 Mini était plus compact et compatible avec un shield motor Wemos.
Pour piloter le moteur, au départ, j'ai utilisé un shield à base de L293D, mais les pointes de courant de certains moteurs de train dépassaient le maximum accepté par ce pont en H (600ma).
Finalement, j'ai opté pour un shield Wemos Motor qui se place au dessus des Wemos à base de TB6612FNG qui supporte 1,2 A en moyenne et des pointes à 3,2 A.
Pour la recharge des batteries, j'avais prévu de débrancher les batteries, et donc j'ai utilisé prises au format Micro JST 1.5mm ZH 2-Pin, qui sont les plus petites dispo car certains intérieurs de trains sont très petits. Mais ouvrir chaque loco, et charger chaque batterie une par une, c'était pas très pratique. J'ai donc opté par un rechargement sans ouvrir et démonter les batteries. Pour cela, j'ai installé un interrupteur pour basculer du mode "marche" au mode "rechargement" et une prise ZH pour y brancher un contrôleur de charge Li-ion USB à base de TP4056.
Après tâtonnement, le schéma électronique se compose de 2 batteries de 3,7 V Li-ion de 1200 mah, montées en série pour fournir entre 8,2 et 7,4 V, d'un module Step-up (hacheur) qui permet d'élever la tension de la batterie jusqu'à 12 V pour le moteur du train, d'un régulateur 5V pour alimenter l'ESP et consort, d'un ESP8266 au format Wemos D1 mini, d'un shield Motor Wemos qui vient se coller au dessus de l'ESP, d'un interrupteur 2x3 position (DPDT), et de prises au format Micro JST 1.5mm ZH 2-Pin, male et femelle.
Sur ce lien Youtube, le premier prototype :
Coté interface Web, l'idée de départ était que chaque train/ESP avait son interface de pilotage. Mais finalement, pour pouvoir contrôler plusieurs trains depuis une seule page Web, j'ai opté pour un modèle Restfull API, c'est à dire que dans chaque ESP, il y a une partie "cliente" (l'interface de pilotage) et une partie "serveur", le pilotage lui-même via des requêtes http GET, et POST.
Voir le fichier joint pour l'interface.