Auteur Sujet: Bus CAN DIY compatible JMRI  (Lu 117 fois)

nopxor

  • Full Member
  • ***
  • Messages: 184
    • Voir le profil
Bus CAN DIY compatible JMRI
« le: septembre 17, 2024, 12:56:15 pm »
J'ai expérimenté un bus CAN à base de nœuds constitués d' ESP32 depuis JMRI.

J'ai utilisé simplement les exemples de la librairie OpenMRNLite.

J' ai d'abord fabriqué avec un ESP32, un module FTDI232 et un module WCMCU-230 une passerelle CAN-USB pour communiquer avec JMRI. J'ai utilisé le programme exemple ESP32SerialBridge qui emploie le format "Grid Connect".

J'ai ensuite rajouté un nœud WIFI-CAN avec un ESP32 et un module WCMCU-230. Il fonctionne avec le programme exemple ESP32IOBoard. C'est un nœud qui comporte 8 entrées et 8 sorties. Pour le test, je n'ai utilisé qu'un bouton poussoir avec une résistance pullup.

J'ai enfin rajouté au bus CAN un autre ESP32 avec toujours un driver WCMCU-230 dont j'ai viré la résistance de terminaison de 120 ohms. Il fonctionne lui aussi avec le programme exemple ESP32IOBoard, mais compilé cette fois sans l'option WIFI. Toujours doté de 8 entrées et 8 sorties. Je n'ai connecté qu'une led (avec sa résistance) en sortie.

Le but de la manip, vous l' aurez compris, étant d'allumer la led du nœud CAN2 en appuyant sur le bouton du nœud CAN1. Et surtout le faire depuis une configuration confortable de haut niveau dans JMRI. Adios la programmation Molinaro bas niveau bit à bit et ses sombres masques et filtres.

JMRI reconnaît tous les nœuds du bus CAN dans une arborescence où ils sont nommés en clair en plus de leur identifiant unique (hexadécimal).
Il suffit ensuite par copier-coller d'associer l'événement (event) appui sur input 1 du CAN1 à l'event output 1 sur ON du CAN2.

On ne peut plus simple.
Le tout en DIY open source normé.

Yes you CAN.  :)
Cqfd
 

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1054
  • HO avec DCC++
    • Voir le profil
Re : Bus CAN DIY compatible JMRI
« Réponse #1 le: septembre 17, 2024, 08:38:35 pm »
Bonjour Eric,

Content que tu ais pu tester le CAN avec succès et que tu sois aussi enthousiaste. J’espère que tu nous feras quelques démos.

Ce que tu que tu qualifies toi-même de programmation de haut niveau ne permet pas toujours de réaliser se que l’on veut faire exactement. Par exemple si l’on a des contraintes de vitesse, la programmation de haut niveau peut freiner les performances recherchées.

Je ne crois pas qu’il faille mettre dos à dos les deux (haut et bas niveau) et surtout pas le pauvre Pierre Molinaro qui n’y est pour rien. Sa bibliothèque correspond à certains types de besoins. D’autant que l’exemple des filtres que tu prends n’est vraiment pas quelque chose de compliqué quand on cherche à comprendre.

C’est pour ce genre de choses que je proposais d’approfondir le sujet. Le bas niveau permet de faire du sur mesure, de la dentelle en quelque sorte.

Mais l’essentiel étant d’apporter un éclairage le plus utile possible pour tout ceux que cela intéresse. Alors merci !

Christophe

nopxor

  • Full Member
  • ***
  • Messages: 184
    • Voir le profil
Re : Bus CAN DIY compatible JMRI
« Réponse #2 le: septembre 18, 2024, 03:38:52 pm »
Ci-joint le tuto 1 sur 2 pour reproduire l'expérimentation.

D'abord les connections:

   * passerelle CAN-USB :

ESP32            FTDI232

pin RX 16        pin TX

pin TX 17        pin RX

3V3                VCC

GND              GND

jumper du FTDI232 sur 3V3


ESP32            WCMCU-230

pin 4               CRX

pin 5               CTX

3V3                 3V3

GND                 GND

                      CAN H

                      CAN L

installer la librairie OpenMRNLite

Compiler et téléverser le programme exemple ESP32SerialBridge.ino

-------------------------------------------------------------------

   * nœud CAN1 (WIFI-CAN) :

ESP32            WCMCU-230

pin 4                CRX

pin 5                CTX

3V3                  3V3

GND                  GND

                       CAN H

                       CAN L


ESP32            bouton poussoir

pin 32            avec résistance pullup 10k


Compiler et téléverser le programme ESP32IOBoard.ino

au préalable définir le réseau WIFI avec son mot de passe  ligne 117 et 120

-----------------------------------------------------------------

   * nœud CAN2 (CAN) :

ESP32            WCMCU-230

pin 4                CRX

pin 5                CTX

3V3                  3V3

GND                  GND

                    CAN H

                    CAN L

il faut virer (dessouder de préférence) la résistance CMS R2 de terminaison de bus de 120 ohm sur ce module WCMCU-230
il y a déja les 2 résistances nécessaires au CAN sur les 2 autres drivers CAN

ESP32            diode LED

pin 15            avec résistance environ 560 ohm reliée à GND


Compiler et téléverser le programme ESP32IOBoard.ino

au préalable commenter la ligne 57 en:   // #define USE_WIFI

ligne 100 il faut un identifiant de node qui soit différent de CAN1: remplacer à la fin la lettre a par b par exemple

-------------------------------------------------------------------------

relier ensemble les 3 CAN H

relier ensemble les 3 CAN L

vérifier bien les connections



Alimenter les 3 ESP32 et connecter la prise USB du FTDI232        si rien ne fume, on continue ; )

Il faudra noter le port COM du FTDI232, c'est lui qui est connecté au PC JMRI

aller dans le gestionnaire de périphériques pour l'identifier (dans Windows 10: touche WIN + x)

------------------------------------------------------------------------

Lancer JMRI,  aller dans menu Modifier -> Préférences

clic sur onglet + (ajouter nouvelle connexion)

Fabricant système -> choisir:  OpenLCB

Connexion système -> choisir:  CAN via GridConnect adapter

renseigner le port série COM du FTDI232

cocher  Réglages connexion supplémentaires

choisir débit en bauds :  115.200bps

enregistrer et relancer JMRI



Si tout va bien, il y a un nouvel onglet OpenLCB dans le menu JMRI




nopxor

  • Full Member
  • ***
  • Messages: 184
    • Voir le profil
Re : Bus CAN DIY compatible JMRI
« Réponse #3 le: septembre 18, 2024, 05:09:39 pm »
La suite du tuto : 2 sur 2

menu OpenLCB -> Configurer noeud



La fenètre Network Tree affiche les noeuds du réseau CAN avec leur identifiants en hexadécimal
Il y a bien 2 Arduino IO boards et 1 Arduino Serial Bridge de listés
Il y a aussi un noeud pour JMRI

05.01.01.01.18.2A - Arduino IO Board est le CAN1
05.01.01.01.18.2B - Arduino IO Board est le CAN2

cliquer sur le noeud CAN1
puis cliquer sur Open Configuration dialog

cela ouvre la fenêtre de dialogue du CAN1
cliquer sur Segment:Settings
on voit d'abord les 8 onglets des outputs du CAN1



descendre dans la fenêtre jusqu'au 8 inputs
le bouton est connecté (pin32) sur input1
l'appui correspond au niveau LOW cela produit l'event 05.01.01.01.18.2A.00.11
le relachement correspond au niveau HIGH cela produit l'event 05.01.01.01.18.2A.00.10



Il faut associer ces 2 events à la sortie 1 du CAN2
Pour cela on retourne dans la fenêtre Network Tree pour cliquer sur le noeud CAN2
cela ouvre la fenêtre de dialogue du CAN2
cliquer sur Segment:Settings
on va à l'onglet output1. C'est sur cette sortie qu'est connectée la led (pin15)
par copy / paste des events:
on associe  l'event 05.01.01.01.18.2A.00.10 du CAN1 à l'event output on du CAN2
et on associe l'event 05.01.01.01.18.2A.00.11 du CAN1 à l'event output off du CAN2

Les events passent en orange lorsqu'ils sont modifiés il faut appuyer sur write pour valider



L'appui (low) sur le bouton éteint bien la Led
Le relachement (HIGH) l'allume

Si on ouvre le moniteur de trafic on voit bien les events déclenchés par l'appui sur le bouton



nopxor

  • Full Member
  • ***
  • Messages: 184
    • Voir le profil

CATPLUS

  • Sr. Member
  • ****
  • Messages: 426
    • Voir le profil
Re : Bus CAN DIY compatible JMRI
« Réponse #5 le: septembre 18, 2024, 06:31:09 pm »
Bonsoir

Merci Eric pour ce tuto, plus qu'à tester
Best Regards

nopxor

  • Full Member
  • ***
  • Messages: 184
    • Voir le profil
Re : Bus CAN DIY compatible JMRI
« Réponse #6 le: septembre 18, 2024, 07:22:04 pm »
Bonsoir Marcel,
Cela fait beaucoup de boulot pour allumer une led  :) mais cela offre des perspectives intéressantes.
Rien qu'avec la passerelle CAN-USB, on économise plus de 70€.
Si j' ai du courage je dessinerai un pcb pour un câblage propre.