Homemade Marklin - création d'un circuit intelligent

C’est parce que vous n’avez pas chercher à l’exploiter plus à fond. Jean (johnjeanb) qui est un inconditionnel de Rocrail et qui le connais bien te dira sans doute que l’on n’en verra sans doute jamais les limites.

Oui, il faut dezipper et placer le dossier complet dans les documents Arduino. En ouvrant le fichier “CAN_USB_gwV26Q_GFP_CSP10.ino”, vous allez automatiquement charger les fichiers liés, dont la bibliothèque Railuino qui a été ici renommée.

Le shield de Seeed Studio est vraiment bien mais les originaux sont à 20€ environ. Moi j’utilise des clones comme celui-ci qui reviennent à 10€ environ. (en cherchant on trouve à 7-8€)

Pour les entrées du CAN H et CAN L sur la Gleisbox, tu as sans doute vu que je ne me suis pas emm**dé, c’est des pins Dupont directement enfichées dans les bonnes broches.

N’hésite surtout pas à revenir vers moi au besoin.

Christophe

Bonsoir Christophe,

Au club, il semble que l’arduino connecté sur le bus can, possède aussi le shield W5100;
je ne sais pas comment cette connexion est possible. Un câble RJ45 raccorderait directement
le PC Rocrail avec cet arduino et ses deux shields (can et ethernet)
Je vérifierai cela ce vendredi mais je ne sais pas si je pourrai voir ce qui a été programmé
dans cet arduino. Je te tiens au courant.
Alain

Si effectivement le gars qui s’occupait de cela dans ton club touchait un peu sa bille, il a pu développer une passerelle Ethernet/CAN pour attaquer en TCP et non en sérial.

J’avais il y a quelque temps développé le programme pour une telle passerelle GitHub - BOBILLEChristophe/CAN_WiFi_gateway32: Le projet CAN/WiFi_gateway32 permet de réaliser une passerelle entre un bus CAN et un réseau en TCP (Ethernet et WiFi).

Essaye d’en savoir plus et prend des photos, ça peut aider.

Ethernet et l’autre protocole de la MS3 en particulier. Marklin a vraiment choisi les deux meilleurs modes de communication. Dommage qu’il n’aient pas fait évoluer le S88 en CAN mais cela n’empêche pas d’avoir une rétrosignalisation en CAN sur le réseau qui est reliée à Rocrail.

Christophe

Bonjour Alain,

Je me suis pris au jeu par rapport à ta demande initiale sur un sujet comme tu l’as vu qui m’intéresse tout particulièrement.

Tu as abordé le sujet en parlant d’un montage que j’avais réalisé permettant de piloter la Gleisbox avec un Arduino en CAN sans avoir besoin de CC-Schnitte. Et je t’ai répondu sur ce sujet. Ce test m’intéressait car je voulais analyser et comprendre les flux de messages entre la Gleisbox et Rocrail.

Mais ton besoin est différent et il existe une solution « packagée » avec Rocrail qui est WIO_CAN et qui répondra mieux à ton besoin.

WIO_CAN est en effet conçu par les développeurs de Rocrail, ils en assurent le support et il y a une documentation abondante. Voir cette page gca-wio_can-fr [Innovative Model Railroad Control System]

Cette solution est particulièrement adaptée avec le protocole Marklin.

Dans ton cas donc, cette direction me semble la meilleure et la plus simple.

Personnellement je ne m’y étais pas intéressé avant car le code sur l’ESPP32 est fourni en binaire donc impossible de le connaitre et je n’aime pas bien cela. Il utilise également un WEMOS D1 que je n’aime pas beaucoup non plus.

Et je n’avais pas poursuivi car ce que j’avais fait n’intéressait personne sur le forum, donc…

Néanmoins, si tu es partant, je veux bien travailler avec toi sur ce sujet. D’autres peut-être s’y intéresseront alors ! L’enjeu est de taille car il s’agit ni plus ni moins que de piloter son réseau directement à partir de Rocrail, avec toute la puissance de Rocrail et pouvoir se dispenser d’une MS2 ou MS3. Et pour ceux qui n’auraient pas encore mis en place la rétrosignalisation, pouvoir le faire avec un bus CAN beaucoup plus efficace et économique que le S88.

La seule vraie limitation que je vois à ce stade est la puissance de la Gleisbox à 1,9A (je crois) ce qui limite l’usage à des petits réseaux (4 ou 5 locomotives en simultané). Mais peut être peut-on ajouter des Geilbox et les répartir sur le réseau ? Je ne connais pas encore assez les spécificités de Marklin. En DCC, multiplier les boosters nécessite des synchros complexées. Il devrait en être de même avec le protocole de voie Marklin qui n’est pas bien différent du DCC.

A suivre donc.

Christophe

1 « J'aime »

Bonjour Christophe,

Je vais regarder tout cela avec grand intérêt.

J’en connais plus en 2R qu’en 3R. Pour faire simple, iI y a plusieurs façon de voir notre hobby :

  • tu achètes tout fait avec le prix adéquat, cher généralement, un peu comme ta voiture, et tu ne t’inquiètes pas de savoir comment le moteur tourne; en cas de soucis tu vas au garage.

  • tu achètes une petite centrale et des modules accessoires tout montés ou en kit et cela fonctionne et en cas de soucis, tu changes le module déficient

-tu achètes le moins cher (arduino,…) et tu de débrouilles pour tout. Cela va des fichiers à trouver sur internet ou à développer et tester, des drivers nécessaires, à des développements complémentaires,…On y arrive aussi mais le chemin est plus ardu mais combien plus intéressant mais cela prend aussi beaucoup de temps. J’appartiens à cette catégorie.
On va donc du plus simple et direct car le but final est de faire rouler son matériel, au plus
compliqué : cela fonctionne en partie ou pas du tout et on cherche pourquoi.

Finalement peu importe, tant qu’on fait du train …au final !

J’ai eu confirmation que arduino + shield can + shield W5100 est opérationnelle au club.
J’en saurai plus vendredi sur la config logicielle de l’arduino.

Bonne semaine à tous,

Alain

Bonsoir Christophe et tous les intéressés,

Il semblerait qu’il s’agisse d’un exécutable à lancer qui permet de récupérer le trafic USB du
module CAN et le transmettre vers le module W5100; plus d’amples infos dès que possible.
Encore un peu de patience donc.

Alain

Bonjour à tous,

J’ai profité de ce début de vacances pluvieuses pour retravailler sur ma carte de pilotage qui permet de remplacer CC-Schnitte utilisé avec Rocrail. C’est le projet que j’avais déjà présenté plus haut sur un Arduino Uno mais il s’agit maintenant d’un ESP32, plus performant et qui dispose en entres autres choses du WiFi et du Bluetooth. J’ai ajouté sur cette carte un transceiver CAN MCP2562 (à 1Mhz) alors que le bus CAN Marklin fonctionne à 250Khz. C’est le petit composant en haut à gauche de la photo.

J’utilise également une bibliothèque CAN elle aussi performante, bref, une grosse évolution par rapport au premier projet. Et ce qui ne gâche rien, écrite par un français, passionné de modélisme ferroviaire qui s’appelle Pierre Molinaro. pierremolinaro (Pierre Molinaro) · GitHub

Et ça fonctionne parfaitement avec Rocrail et probablement avec les autres logiciels qui supportent CC-Schnitte. La reconnaissance MFX est totale. Au top donc.

L’ensemble devant revenir à environ 15€ !!!

Le programme pour la version USB/CAN est ici ESP32_rocrail_can_gateway/src/main.cpp at main · BOBILLEChristophe/ESP32_rocrail_can_gateway · GitHub

Du coup, dans l’enthousiasme de cette réalisation, je me suis attaqué à la version WiFi qui fonctionne également depuis ce soir.

C’est quand même plutôt sympa de pouvoir piloter la Gleisbox sans fil !!!

Je vais finir de mettre le code au propre et ajouter les commentaires qui vont bien et je mettrai cela sans doute demain dans la journée sur le Github.

En prime, j’ai développé un petit sniffer qui trace les trames échangées sur le bus CAN. Sans forcément chercher à tout décrypter, c’est au moins un outil pour vérifier si les configurations fonctionnent ou pourquoi elles ne fonctionnent pas.

Tous les codes sont des commandes dont la signification est dans le doc que m’avait transmise Julie.

…et que j’avais commencé à traduire et à commenter mais que je ne finirai probablement jamais. Si quelqu’un est intéressé pour poursuivre le job !

Je répondrai volontiers à toutes les personnes intéressées et j’accompagnerai également volontiers ceux qui voudraient franchir le pas.

Christophe

PS : Du coup, cela répond à la demande d’Alain3R et de quelques autres.

1 « J'aime »

Bonjour à tous,

J’ai mis ce matin sur Github la version WiFi / Ethernet de de projet : https://github.com/BOBILLEChristophe/ESP32_rocrail_can_tcp_gateway

Il est donc possible à partir de Rocrail de commander une MS2 directement en WiFi ou avec une liaison Ethernet comme on peut le faire avec une CS2 ou une CS3. Les réglages dans Rocrail sont d’ailleurs ceux qui s’appliquent à CS2/CS3

Il ne faut pas sélectionner “Maître” car seule la CS2 qui incorpore la base de données MFX est capable de renseigner toutes les informations des locomotives.

J’ai aussi vérifié la compatibilité avec iTrain (au travers de la doc) et de JMRI, c’est en tous points identique avec un protocole qui change parfois de nom, CBUS par exemple mais c’est du pareil au même :

PS l’adresse IP 192.168.1.13 est celle qui s’applique pour moi, sur votre réseau domestique, vous devrez très certainement renseigner une autre adresse attribuée par votre box.

Par contre, il ne faut pas modifier le port 15731 à moins que vous n’ayez déjà une CS2/CS3 sur votre réseau. Il faudra alors choisir un autre port et modifier dans le programme

Christophe

4 « J'aime »

Bonjour et tout simplement… impressionnant !
C’est fou ce qu’on peut faire par passion :wink:
Bonne continuation.

2 « J'aime »

Merci pour les appréciations par messages, par like ou par MP !

J’ai oublié le lien sur le code de la version WiFi : https://github.com/BOBILLEChristophe/ESP32_rocrail_can_tcp_gateway

Je suis en train de rédiger une article complet sur le sujet que je pourrai communiquer à ceux que ça intéresse.

Christophe

2 « J'aime »

Bonjour à tous,

Suite du projet de pilotage d’une MS2 + Gleisbox à partir d’un ESP32 + CAN en WiFi qui a encore évolué (en bien !).

Tout d’abord, j’ai réécrit presque totalement la version TCP (celle qui permet de communiquer avec la Gleisbox en WiFi). J’ai en particulier développé en utilisant les tâches de freeRTOS pour faire tourner 4 process en parallèle et en (quasi) temps réel. Il y donc une tâche pour la réception TCP, une pour la réception CAN, une pour l’envoi TCP et une dernière pour l’envoi en CAN. Cette organisation me permet d’affirmer que la perte de message est très certainement minime, tout au plus de 1/1000 voir de 1/10000

Du coup, je ne vois plus vraiment l’intérêt de la version par liaison USB ?

Le code est ici sur le Github

Cette version TCP est aussi celle qui permet de communiquer de l’ordinateur avec la MS2 et la Gleisbox en WiFi et je dois avouer que c’est tout de même super confortable.

La mise en œuvre est hyper simple. Je vous ai pris des photos du montage.

Dans Rocrail, on crée une centrale avec le protocole modbus puis une sortie en TCP. On renseigne l’IP de l’ESP32 et le bon port (j’ai repris celui que Marklin utilise par défaut 15731

prise_din_gleisbox

Il suffit juste de relier les sorties de l’ESP32 CAN High (fil vert ici) dans l’entrée 4 de la Gleisbox et CAN Low dans l’entrée 8. Ne vous étonnez pas H → H et L → L, le CAN n’utilise pas de connexions croisées (comme en communication série par exemple).

Le cable USB entre l’ESP32 et l’ordinateur n’est là que pour l’alimentation électrique et aussi pour avoir, si vous le souhaitez, un debug sur le moniteur série de l’IDE Arduino (ou mieux Coolterm). Mais la carte dispose d’un régulateur 5V/1A qui permet une alimentation autonome

Qui est tenté pour faire le test ?

Christophe

3 « J'aime »

Bonjour à toutes et à tous,

je viens de publier sur Locoduino un article qui présente de façon exhaustive le projet que je vous ai déjà présenter dans les grandes lignes sur ce fil

https://www.locoduino.org/spip.php?article361

L’avantage de la présentation en article est que cela offre une vison globale, structurée et plus détaillée.

L’avantage aussi des articles de Locoduino est qu’il y a un espace d’échange. Comme un forum me direz vous mais là aussi l’information est plus structurée ce qui facilite la compréhension globale.

Bon WE

Christophe

2 « J'aime »

Merci beaucoup Christophe pour ce partage.

Certains diront qu’il ne s’agit que de ré-inventer la roue. Je rétorquerais qu’il est parfois important de comprendre le fonctionnement des choses pour progresser, se sentir indépendant, et s’épanouir dans son hobby. Ce coté “sand box” m’attire en tout cas.

Je regarderai tout cela plus en détail une fois mes projets en cours terminés. En attendant, je garde ce post bien au chaud. Merci encore.

1 « J'aime »

Bonjour Christophe, j’ai passé un peu de temps sur Locoduino hier, parcourant ainsi ton article fort intéressant et d’autres tutoriels pour les débutants dans l’univers Arduino. J’ai une question vraiment préliminaire et sans doute basico-basique pour un expert. Je précise que je n’ai aucune connaissance de l’univers Arduino, et aucunes prétentions de réaliser quoi que ce soit, je souhaite juste explorer le fonctionnement et le potentiel des solutions DIY pour le modélisme ferroviaire. Mode “sand box”.

Dans ton article je lis:

Pour rendre l’ensemble plus « propre », j’utilise des petites cartes « universelles » » que j’avais réalisées, qui incorporent un transceiver CAN MCP2562 et dont j’ai souvent parlé sur Locoduino.

Sur Ebay, je tombe sur des “Development Boards” pour ESP32 mais la plupart n’intégrent pas le transceiver CAN. J’en ai vu 2 qui semblent l’intégrer mais sont plus cheres (autour des 25 euros) et se trouvent en Chine. Avant d’acheter n’importe quoi, je préfere me renseigner :sweat_smile:

Je comprends que tu as “fabriqué” ta carte universelle, en y greffant le transceiver MCP2562. Je ne saurais pas réaliser ceci sans infos complémentaires. Je n’ai pas trouvé d’articles sur Locoduino abordant ce sujet spécifique. Peux-tu m’aiguiller sur un ou des articles qui traitent du sujet ? Quel matériel recommandes-tu pour une experience se rapprochant du “Plug & Play” ?

Par avance merci !

1 « J'aime »

Bonjour Jérôme,

Merci tout d’abord de t’intéresser à ce que je fais.

Pour répondre à tes questions, il n’y a pas d’article spécifique sur cette carte car c’est quelque chose de très basique. Par contre, il m’arrive de mettre ce que l’on appelle les fichiers Gerber en PJ et la liste des composants quand je parle de cette carte.

Les lecteurs sur Locoduino sont un peu initiés, ils en ont suffisamment pour se débrouiller.

Mais dans ton cas, surtout si une seule carte t’intéresse, au lieu de commander en Chine (mini commande 5) expliquer quel type exactement etc… et d’acheter tes composants (ESP32, MCP2562…) à droite et à gauche avec à chaque fois le port, je te propose de tout te fournir.

Le PCB me revient à 1€ environ port compris
L’ESP32 environ 10€ (je n’achète pas de clônes moins chers mais moins fiables)
Le MCP2562 1 ou 2€
Quelques diodes, leds, résistances, connecteurs, 1 à 2€

Voilà, au max 15€

Je n’ai pas compris dans le prix le convertisseur qui n’est pas utile si l’ESP est alimenté par le port USB

Mais à terme, cette carte étant « universelle » tu voudras peut-être la poser dans un coin de ton réseau pour lui demander de faire des tâches automatiques. Il faudra alors le convertisseur. (2 à 3€)

Donc si je t’adresse une carte complète avec le port, ça te revient à 24 – 25€

Je peux même te la fournir composants soudés si tu veux ! Et là on est Plug & Play.

Cette carte dite « universelle » fait plein de choses sur le bus CAN Marklin :

  • Par exemple un sniffer de trames CAN pour savoir si le bus fonctionne et ce qui circule
  • Dans la bibliothèque Railuino dont je viens de terminer la réécriture, j’ai introduit une fonction qui permet d’envoyer des commandes au réseau en saisissant simplement les infos dans un moniteur série comme celui de l’IDE d’Arduino du type – « power » 1 ou « power 0 » ou encore « speed 16391 200 » pour vitesse de la loco locID 16391 à 200 (sur 1000 chez Marklin) !!!
  • Et bien évidement remplacer une CC-Schnitte à 150-180€ !!!

Donc des petits utilitaires bien pratiques pour qui veut comprendre et pouvoir agir au moins un minimum sur son layout !!!

Tiens moi au courant et continue à t’intéresser.

Christophe

2 « J'aime »