Contrôler vos trains MFX depuis un Arduino Due SANS passer par la Gleisbox

Bonjour Gérald et bonjour à tous ceux qui s’intéressent à ce sujet,

Petit point d’étape. J’ai commencé hier le développement du code pour la partie communication entre Rocrail et cette centrale MFX. C’est une communication en TCP, soit par Ethernet ou en WiFi car Rocrail et autres logiciels de gestion de réseau ne communiquent que comme cela. Je ferai plus tard la communication CAN qui elle, à priori, n’intéresse que la MS2.

J’ai obtenu les premiers échanges de commandes entre Rocrail et la centrale, l’interfaçage est donc réglé.

Je vais concentrer les fonctions de communication et d’interprétation des commandes sur l’un des cœurs de l’ESP32 pour reserver l’autre cœur à la génération du signal MFX qui necessite des timers précis ainsi que de la rapidité de calcul.

Je vais m’atteler dans la journée à convertir toutes les commandes reçues de Rocrail en en commandes interprétables par le programme de Gérald et donc la commandes des locomotives, de la traction mais aussi des fonctions sonores et lumineuses.

J’espère bien avoir fini pour le milieu de la semaine à venir l’exploitation totales des commandes de locomotives à partir de Rocrail. Ce qui permettrait grâce à l’énorme travail déjà réalisé par Gérald, de disposer d’une vraie centrale MFX en DIY avec une capacité de 4A ou plus.

Des nouvelles dès que j’ai bien avancé dans cette voie.

Christophe

Bonjour à tous,

Nouveau point d’étape. Depuis mon dernier post, j’ai fini l’interface logicielle entre Rocrail et l’ESP32, plateforme retenue pour le moment.

J’ai pu vérifier que toutes les commandes envoyées par Rocrail étaient bien reçues et interprétées par l’ESP32. C’est donc une première grande étape.

Quand je parle de Rocrail, c’est très certainement aussi vrai pour tous les autres logiciels et les CS2/3 et MS2 puisque je respecte le protocole Marklin (dénommé mbus dans Rocrail).

Pour des raisons de facilité, je communique en WiFi entre Rocrail et l’ESP32. Cependant, l’utilisation d’une liaison filaire Ethernet est prévue. En effet, bien que la liaison WiFi soit séduisante (pas de fil à la patte), elle n’est pas, selon moi, à généraliser sur un réseau miniature compte tenu principalement des interférences électromagnétiques nombreuse et variées. De même, quid de nos pauvres box domestiques si elles doivent supporter plusieurs dizaines de périphériques WiFi. Et quid aussi de notre santé (mentale) si, comme il est raisonnable de le penser, les ondes WiFi ne sont pas aussi inoffensives que cela.

Par ailleurs, la solution de timers proposée par Gérald n’est pas optimale sur l’ESP32 quand le WiFi est activé. Cela a été largement démontré en DCC et le projet DCC-Ex, le plus abouti actuellement en DCC, a abandonné les timers pour une autre solution. Bref, pour ne pas remettre en cause le travail de Gérald, il faudra renoncer au moins temporairement au WiFi pendant les premières phases d’exploitation.

Je vais aborder la semaine prochaine le « parser » de commandes entre Rocrail et le la partie du programme qui traduit ces commandes en bits et en durées de quelques µSecondes.

Gérald a créé une interface « série » avec laquelle on agit sur les commandes, c’est cela qu’il faut automatiser et rendre compréhensible dans le protocole de messagerie de Marklin.

Enfin, je n’ai pu m’empêcher de travailler cette semaine à une solution hard de centrale MFX.

La proposition du L298 de Gérald dans son exemple est assez théorique. Elle ne produit au mieux que 2 ampères sur la voie soit environ six locomotives en marche simultanément. Alors pourquoi pas la Gleisbox qui produit 1,9 ampères ?

Sinon, il faut recourir à des booster « du commerce » dépassant allègrement la centaine d’euros alors qu’une solution DIY à base de L6203 (4 ampères) revient dans le pire des cas à une vingtaine d’euros. Donc imaginez quand, comme Gérald, vous avez besoin de 4 boosters ou plus à 130 € pièces !

Voilà donc aussi quelques pistes de réflexion voir de discutions.

Bon WE à tous

Christophe

1 « J'aime »

Bonjour à tous,

Connaissez-vous Desktop Station pour Windows développé par Yaasan du Japon ?
https://desktopstation.net/wiki/doku.php/desktop_station_software
Je trouve ce logiciel fonctionnel, simple et intuitif pour permettre à mon petit-fils de 8 ans de commander quelques trains
J’en ai profité pour adapter mon code MFX à l’interface de programmation de Desktop Station
Ce résultat https://gelit.ch/Train/DirectMFXDesktop.ino devrait faciliter son adaptation à Rocrail

J’ai aussi améliorer le fameux paquet Periodic … que j’ai découvert à l’époque en espionant ma Mobile Station 2
La grande majorité des décodeurs MFX exige de recevoir périodiquement ce paquet
Il est cette fois adapté à mes choix de travailler avec 8 crans de vitesse et les fonctions F0-F7

Il est temps pour moi de découvrir le mode automatique de Desktop Station
Je ([email protected]) suis preneur à vos réalisations (script, …) effectuées avec ce logiciel

Excellent WE

Bonjour Gérald,

Oui je connais Desktop Station qui est plutôt intéressant en effet. Cependant, il n’existe que sur PC et je crois qu’il est un peu vieillissant et je crois que son support est de moins en moins assuré (ou n’est plus). De plus, il repose sur Railuino comme interface pour ensuite piloter votre programme. Cela fait beaucoup, selon moi, d’étape pour une commande.

J’ai déjà présenté mon point de vue et je préfère capitaliser sur des logiciels « répandus » comme Rocrail. Ce n’est pas très compliqué à interfacer et plus simple donc plus robuste. Mais bon, ce n’est que mon point de vue.

Je suis très dispersé dans toutes mes réalisations qui me prennent pas mal de temps mais j’ai tout de même réussi à avancer sur la centrale MFX dont je rappelle que c’est un ESP32 qui joue votre programme. La partie puissance est terminée. Elle est à base d’un L2603 qui produit 4A. J’ai implanté une interface CAN et également une interface Ethernet en RJ45. Pour le WiFi, il est implanté d’origine dans l’ESP32.

Il ne me reste que la partie mesure de courant pour la détection de sur tensions et de court-circuit. Après pas mal de cogitations quant à la méthode, ASC712, INA619, mesure interne au L2603 … je vais finalement adopter un système par coil, un peu encombrant certes mais très efficace et économique. Je vais alors adopter le principe de lire et d’interpréter les mesures par un Attiny pour décharger l’ESP32 de cette tâche (ADC) ce qu’il ne sait pas trop bien faire.

J’ai déjà réalisé ce montage avec des résultats excellents. Vous pouvez voir ici : LOCODUINO - Détection de présence et de courts-circuits en DCC et en MFX.

Le montage sera plus simple que celui de l’article puisqu’il n’y a que la mesure de sur intensité et pas de relais pour couper le courant de voie. C’est la centrale qui fait cela.

Ca m’intéresse d’avoir votre point de vue.

Je trouve très stimulant de mener des réflexions parallèles avec des approches différentes ce qui est très enrichisssant.

Bon WE également et bon train avec vos petits enfants !

Christophe

Bonjour Christophe,
Bravo pour cet engagement
Je me réjouis de découvrir prochainement Rocrail que j’aimerais utiliser avec un ESP32 et une connexion WiFi si possible
Quelle carte ESP32 utilisez-vous ?
N’étant pas concerné par la partie puissance, je me garderai de donner un avis puisque j’utilise 4 boosters Littfinski dont la mesure du courant est transmise par BLE à ma centrale Windows.
Actuellement, je développe des petits automatismes tels que va et vient, 2 trains qui se suivent, … à partir de https://gelit.ch/Train/DirectMFX.ino
J’espère ainsi pouvoir un jour intéresser mes petit-enfants à la programmation
C’est dans ce contexte que je veux utiliser Rocrail à titre de comparaison
Merci de m’indiquer un(des) lien(s) youtube - pdf - html pour je puisse découvrir les bases de la programmation avec Rocrail
Bien à vous

Bonsoir à tous,

Je viens de terminer l’adaptation du programme de Gérald @gelit sur ESP32 ce qui a pour conséquence d’étendre les champs d’application (au WiFi et à l’Ethernet en particulier) et d’améliorer la robustesse et les performances avec une puissance de calcul supérieure avec l’utilisation des deux cœurs du microcontrôleur.

Je ne suis pas encore arrivé au but qui est de piloter cette centrale avec Rocrail. Mais elle est à ce stade fonctionnelle pour la partie pilotage des locomotives au travers de commandes série.

A terme, je prévois de réaliser la centrale complète avec un drivers L6203 de 4A (72VA).

Il sera aussi possible d’utiliser un dual L6203 pour disposer de 8 A comme ici :

Je rappelle que Gérald utilise 4 drivers de 4A chacun.

Pour amateurs de courants forts, j’ai fait le test sur un driver BTS7960 qui est donné pour 43A !!! (774VA). Je conseille fortement de limiter le courant entre 5 et 10A maxi car l’objectif n’est pas bien sûr de souder les roues aux rails en cas de court-circuit.

Le code du programme est sur mon Github et les mises à jour sont régulières :

Christophe

1 « J'aime »

Bonjour à tous,

Parfois il n’est pas nécessaire de chercher bien loin. J’ai choisi d’implanter le programme dans laBox de Locoduino qui est à la base une centrale DCC complète. Elle dispose en particulier des composants pour gérer les sur-intensités et les courts-circuits.

Le driver est un L6203 dont je parlais hier qui autorise jusqu’à 4A (72VA) d’intensité. A titre de comparaison, la Gleisbox délivre 1,9A.

LaBox dispose d’origine du protocole CAN ce qui la rend totalement compatible avec l’univers Marklin et les logiciels comme Rocrail.

LaBox avec tous ses composants à un cout de revient d’environ 30 à 40€.

Voilà donc la question du hard qui est réglée et va me permettre de me concentrer sur le développement du soft et en particulier les commandes externes (Rocrail, MS2…).

Christophe

4 « J'aime »

Bonjour à tous,

Voila, j’ai terminé l’essentiel du travail pour porter le logiciel de Gérald sur ESP32 et surtout piloter à partir de Rocrail.

Mais comme en réalité il s’agit du protocole CAN de Marklin, cela doit fonctionner à partir de n’importe quel logiciel.

Je rappelle que j’utilise pour la partie hard la centrale LaBox de Locoduino qui était à l’origine prévue pour le DCC mais qui convient parfaitement.

L’alimentation dans cette version délivre 4A aux rails. Son cout de revient est de l’ordre de 30 à 40€.

Le programme est ici : GitHub - BOBILLEChristophe/directMFX_ESP32: MFX centrale on ESP32

Petite vidéo d’illustration :

Et, cerise sur le gâteau, la centrale fonctionne en WiFi !
Christophe

3 « J'aime »

Bonjour Christophe,
Bravo pour cette nouvelle étape MFX
Je partage évidemment vos louanges adressées à Stephan Krauss sans qui je n’aurais pas pu développer https://gelit.ch/Train/DirectMFX.ino
Reconnaissez toutefois que vous n’auriez pas pu réaliser votre oeuvre sans le lien précité !
Merci d’ajouter dans votre source ma clé de lecture https://gelit.ch/Train/MFX.pdf

DirectMFX démontre qu’il est possible de commander une maquette de trains sans canal RDS de retour !
Je ne suis donc pas intéressé de participer à votre initiative

De plus la découverte des logiciels Rocrail et iTrain m’a convaincu qu’ils n’étaient pas destinés à un public novice désireux d’automatiser la conduite des trains.
Je suis en train de développer un éditeur graphique sous Windows, inspiré du concept DesktopStation, qui doit me permettre de commander mes trains à partir d’une centrale DCC++ ou compatible.
J’espère pouvoir un jour partager cette expérience et suis pour l’instant en pleine phase de développement avec une multitude de tests unitaires à effectuer.

1 « J'aime »

Bonjour Gérald,

Voilà qui est complété ! directMFX_ESP32/src/main.cpp at main · BOBILLEChristophe/directMFX_ESP32 · GitHub

C’est vrai que DirectMFX fonctionne sans les informations de retour. Mais c’est s’amputer de fonctionnalités qui font aussi la richesse du MFX. Je ne suis pas certain que beaucoup d’habitués de la marque soient prêts à renoncer à la reconnaissance automatique des locomotives par exemple.

Par ailleurs, je trouve qu’il est important d’assurer la plus grande compatibilité possible avec les équipements existants. Cela veut dire par exemple de pouvoir commander la centrale avec une MS2 ou une CS3 ou les logiciels tels que TC ou RR. Il faut alors pouvoir remonter les infos de la voie.

J’ai pu constater aussi avec la centrale LaBox que de nombreux utilisateurs souhaitent utiliser des applications telles que Z21, Engine Driver etc… qui sont gratuites et particulièrement bien faites.

Mon intérêt pour l’ESP32 est aussi lié au fait que sa mémoire flash peut héberger des webApps. Il faut vivre avec son temps !

Mais chaque point de vue est entendable d’où l’intérêt de continuer à partager nos avancées.

PS : Je suis en train de terminer l’intégration de RMT pour éviter d’avoir à recourir au timer pour la génération du signal de voie sur ESP32.

Christophe

Bonjour à tous,

Voilà je viens de terminer la centrale Direct MFX en incorporant la technologie RMT de Espressif. Le signal de voie est plus précise et plus stable sur l’ESP32 qu’au travers des timers.

Ces captures à l’oscillo montrent bien les trames pour les bits 0 à 100µs et pour les bits 1 à deux alternances de 50µs.


https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/rmt.html

Le code modifié est sur mon github : GitHub - BOBILLEChristophe/directMFX_ESP32: MFX centrale on ESP32

Cela m’a occupé pas mal de temps mais je vais maintenant pouvoir me consacrer à l’implantation du retour d’information dans cette centrale.

Christophe

2 « J'aime »