Domotiser une locomotive HO avec ESPHOME

L’objectif de ce projet:

L’objectif de ce projet est de faire circuler plusieurs trains sur un réseau HO analogique, en les contrôlant individuellement, mais à l’aide d’outils modernes.

Sur un réseau analogique classique, la tension appliquée aux rails détermine directement la vitesse et le sens de la locomotive. Pour manœuvrer plusieurs trains indépendamment, il faut donc les placer dans des zones isolées, chacune alimentée séparément.

Avec les trains numériques (DCC), les rails fournissent en permanence la même tension, mais transportent également des trames numériques contenant les ordres destinés aux locomotives.

Dans mon projet, la tension des rails reste constante et au maximum, mais les ordres sont transmis directement aux locomotives en Wi-Fi (peut-être Zigbee à terme). La technologie choisie, ESPHome, permet notamment :

  • de ne pas réinventer la roue pour la création d’un TCO numérique : l’interface de Home Assistant convient très bien ;
  • de créer des API facilitant l’automatisation avec les autres éléments du réseau (aiguillages, capteurs RFID/NFC sur la voie), par exemple :

Un processus d’identification de la locomotive sera également mis en place à la sortie des aiguillages.

Le PCB

Ce billet traite de la première étape du projet : le circuit électronique embarqué dans la locomotive.

Voici le troisième prototype — le premier réellement fonctionnel :

Avec l’ESP installé et raccordé à une locomotive sur un rail de test :

Avant d’en arriver là, plusieurs versions ont été nécessaires :

  • V0 : montage sur plaque à pastilles. J’ai rapidement compris qu’il serait impossible de loger ça dans une locomotive. Pour réduire l’encombrement, je suis passé à KiCad et j’ai fait fabriquer les PCB chez JLCPCB.
  • V1 : gestion du sens du courant (on ne sait jamais comment la loco est posée sur les rails). J’avais remplacé le pont de diodes de la V0 par un composant tout-en-un, mais son courant de fuite était trop important : impossible d’alimenter correctement l’ESP.
  • V2 : retour au pont de diodes, mais avec des diodes Schottky (moins de pertes). L’ESP démarre, mais dès que le moteur est sollicité, tout s’éteint : le moteur tire trop de courant.

Et enfin la V3.

Les résistances (qui limitaient les parasites mais faisaient chuter la tension) ont été supprimées. Le convertisseur DC-DC fournissant le 3,3 V de l’ESP a été remplacé par un module plus industriel (et plus cher), le TSR-1-2433. J’ai ajouté plusieurs condensateurs, placés au plus près des composants concernés. La largeur des pistes d’alimentation a été augmentée, et le routage a été repensé pour s’approcher d’une masse en étoile, afin de limiter les parasites générés par le moteur.

Et là… ça fonctionne.

Voici la schématique et le PCB :

Lien de téléchargement des fichiers Gerber

Le firmware à injecter sur l'ESP:

Tout est publié sur GitHub : https://github.com/gnieark/esphomeLoco (je mettrai aussi dans ce dépôt les fichiers Kicad)

Après avoir cloné le dépôt, renommez le fichier secrets-sample.yaml en secrets.yaml, puis adaptez les paramètres réseau, Wi-Fi, mots de passe et clés.

Utilisez ensuite ESPHOME pour compiler et téléverser le firmware sur l’ESP.

WebUI et intégration à Home assistant

La page web embarquée de la locomotive ressemble à ceci :

Dans Home Assistant, afin de simplifier l’interface, on ne reprendra pas tous les éléments de cette page. En revanche, un réglage essentiel s’y trouve : le PWM minimal.

La vitesse de la locomotive est pilotée via un signal PWM, exprimé en pourcentage. Le problème est que, selon le moteur, le poids de la machine, les frottements, etc., un faible PWM ne suffit pas à faire tourner le moteur. Concrètement, il peut être nécessaire d’atteindre par exemple 60 à 70 % de PWM avant que la locomotive ne commence réellement à avancer.

La WebUI permet donc de définir ce seuil minimal. Elle propose deux modes de contrôle de la vitesse :

  • un réglage qui fait varier le PWM de manière linéaire ;
  • un autre qui tient compte du PWM minimal, afin que la locomotive démarre immédiatement dès que la vitesse n’est plus à zéro.

Cela permet un comportement beaucoup plus réaliste et exploitable dans Home Assistant.

Voici à ce stade mon dashboard « Les trains du cabanon », avec la locomotive intégrée :

Conclusion.

Le résultat est concluant : la locomotive peut désormais être pilotée électroniquement, et cela ouvre la voie à un contrôle centralisé et à des scénarios d’automatisation plus poussés.

Pour aller plus loin et permettre la circulation simultanée de plusieurs trains sur le même réseau, avec gestion automatique des itinéraires, les étapes suivants :

  • Domotiser les aiguillages.
  • Identifier et localiser chaque train sur le réseau, notamment à proximité des aiguillages et aux extrémités des cantons. Pour cela, je prévois d’installer des lecteurs NFC sous les voies et des tags NFC sous les locomotives, afin que le système sache quelle machine se trouve où.

Probablement à suivre bientôt !

Page top