Auteur Sujet: Projet modules-sorties jmri/canbus  (Lu 7467 fois)

marc_geo

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
Projet modules-sorties jmri/canbus
« le: mai 06, 2023, 03:59:43 pm »
        Bonjour à vous tous,


        Pour toutes les personnes que cela pourrait intéresser, j'aimerais vous présenter le petit projet dans lequel je me suis lancé, à savoir la conception et le montage de petits modules de commandes(aiguillages, éclairages et autres) qui tournent sous le protocole canbus et pilotés par JMRI.

        Sans être trop long, voici un petit historique du matériel que j'utilise pour mon ancien-futur réseau:

        J'ai été très longtemps fidèle et coopérateur à l'équipe Rocrail depuis quasi sa naissance ... Ces derniers temps, j'avoue, j'ai un peu lâché le projet car la ligne directrice actuelle s'écarte un  peu de ma philosophie, notamment par rapport au code source qui n'est plus si accessible qu'auparavant et l'abandon de certains protocoles de communication (ddl, ddx, ...). J'insiste que cela reste mon avis et sentiment et que ce n'est nullement une critique négative vis à vis de Rocrail qui est un programme formidable.
        La conséquence de tout ceci est qu'actuellement je découvre JMRI beaucoup plus en profondeur et que j'essaye de le faire tourner avec du matériel issu de la lignée Rocrail. J'ai donc une centrale dcc++ avec un arduino uno couplé à un booster(ORD3-
https://wiki.rocrail.net/doku.php?id=ord3-cs-fr, duo qui fonctionne parfaitement. Pour la rétro-signalisation, j'ai un système basé sur Loconet(https://wiki.rocrail.net/doku.php?id=gca85-en), système robuste qui a depuis longtemps fait ses preuves. Il me manque donc tout ce qui est commandes. J'aurais pu passer via les modules loconet mais je préfère découvrir et concevoir pour le hobby un système séparé et indépendant de la rétro, ce qui est souvent conseillé même si pas obligatoire.

Voici dans les grandes lignes la démarche que j'ai établie:

  • J'ai pas mal de pièces électroniques en stock, donc essayer de les utiliser au maximum. Par exemple, j'ai une série de pic Atmega8 que je vais réutiliser. Comment ? C'est simple: au lieu d'acheter x nbre d'arduino, je vais simplement y charger un bootloader arduino ce qui va m'engendrer une série de petits arduino. Les atmega8 et 328 sont tout à fait équivalents dans leur structure. En consultant le datasheet, ce qui diffère, c'est l'espace mémoire. Comme le sketch que je vais télécharger est vraiment tout petit, ce ne sera pas un souci. Cette procédure n'est pas trop compliquée. On trouve de nombreux exemples sur internet, mais je peux l'expliquer si une personne me le demande, ce sera avec plaisir.
  • Trouver un système de cablage simple, comme cela s'est déjà fait, via du rj45. Cela réduira le nombre de cables et permettra d'amener partout sur le réseau des sources de 12V et 5V pour les différents besoins(électronique, décors, animations, ...
  • Créer le module sur une platine en y intégrant l'atmega8-arduino et le mcp2515 pour la connexion canbus
  • Piloter le tout via JMRI

J'ai déjà pas mal progressé dans le projet.



https://www.dropbox.com/s/90cyoerwi3lwu8n/essai1.jpg?dl=0

Dans ce fouillis de cables on distingue un atmega8, module réception1, un uno, module réception 2 qui communiquent avec un mega qui sert d'interface avec JMRI pour piloter des leds qui simulent des feux de signalisation.

Voilà pour les premières bases de cette aventure ...  :)

Belle journée à vous tous[/list][/list][/list]
« Modifié: mai 06, 2023, 04:03:05 pm par marc_geo »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3045
  • 100% Arduino et N
    • Voir le profil
Re : Projet modules-sorties jmri/canbus
« Réponse #1 le: mai 08, 2023, 09:26:52 pm »
Bonsoir Marc,

Merci pour votre choix du Can dans la relation avec JMRI.

Ce serait super de montrer la mise en ouvre de JMRI avec une centrale DCC inspirée par Locoduino et un réseau de retrosignalisation et de commandes via Can.

Je n’ai jamais voulu de pc sur mon réseau mais je suis prêt à installer JMRI sur un RPi. Donc votre projet m’intéresse et je peux partager mon expérience sur le Can.

Bon courage
Cordialement,
Dominique

marc_geo

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
Re : Projet modules-sorties jmri/canbus
« Réponse #2 le: mai 09, 2023, 10:44:38 pm »
Merci pour votre réponse  :)

Pour l'instant, je suis en attente de quelques composants qui vont arriver d'un jour à l'autre.
Dès réception, je ferai les premiers tests et je posterai le schéma de la carte.
Et bien-sûr, je ne demande pas mieux  d'avoir un coup de main, sachant que je découvre le bus can.

Belle soirée.

Marc

marc_geo

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
Re : Projet modules-sorties jmri/canbus
« Réponse #3 le: mai 18, 2023, 11:12:58 pm »
Bonsoir à tous.

Voici le résumé de mes avancées  :)

Petit rappel de mon carnet des charges.
Réalisation d'un réseau de commandes d'accessoires contrôlé par JMRI via le bus can, réseau actuellement indépendant de la détection.
Essayer au maximum de réduire le cablage divers ce qui assurera une certaine robustesse au système et simplifiera grandement la clarté de l'ensemble.
Pour arriver à ce but, relier entre eux les divers modules et les alimenter par du cablage rj45(8 fils) et en profiter pour diffuser un autre voltage pour alimenter les accessoires. J'utilise pour la source du courant, une alimentation de pc, en général très précise, qui peut fournir du 12V, 8A, et du 5V 20A,ce qui pourra largement supporter beaucoup d'accessoires.

J'ai donc réalisé le schéma électronique sur base des pièces que j'ai en stock( tous les fichiers sont joints et si vous trouvez des erreurs, ne pas hésiter à le dire, je ne suis qu'hobbyiste et non professionnel)des cartes module et fait imprimer les platines.
J'en ai monté une pour commencer les tests qui sont positifs. Cela reste un prototype de base comme un arduino sauf qu'ici j'ai utilisé un atmega8 que j'avais également en stock.

Il y a à l'entrée, un étage de régulation de courant avec le classique ams1117 bien connu des arduinistes ;)
En suite les 3 ic, atmega(au choix 8, 88, 328, ...), mcp2515 et le tja050 pour le bus can.
J'ai placé un connecteur pour programmer l'atmega directement sur la platine(j'utilise un programmeur classique USBasp) mais c'est optionnel.
Il y a aussi un connecteur qui permet l'utilisation de l'interrupt ou simplement la sortie. Actuellement, je ne 'utilise pas le système de l'interrupt pas toujours facile à maîtriser, même si indispensable en cas de très gros réseau.
Rien de révolutionnaire donc. A terme, cette petite structure sera utilisée pour des modules à usage précis avec une platine dédiée car un atmega ou arduino ne peut pas alimenter beaucoup de choses (même 15 leds alumées en même temps ...) mais simplement commander. Je pense à par exemple à une carte leds-signaux lumineux, une carte servo-moteurs, une carte son, .....

En ce qui concerne les sketch, j'ai utilisé la bibliothèque autowp-mcp2515 que je trouve vraiment ultra simple d'utilisation et très légèrehttps://github.com/autowp/arduino-mcp2515 même si à terme et si j'en ai le courage, je coderai sans doute en C pour gagner de l'espace mémoire, mais encore une fois, vu la taille du sketch, cet aspect est purement optionnel.

Dans jmri_can_master,il y a un fichier global.h qui permet de définir le nombre de sorties que l'on veut piloter, en rapport avec le nombre de sorties dans JMRI, voir plus bas, et la définition des filtres:

/********************/
/* fichier global.h */
/********************/
#ifndef jmricom_h
#define jmricom_h

#define NBRESORTIESJMRI 69
#define NBRECONJMRI 69

int canFilter[2] = {0x010, 0x011};

#endif

Actuellement je fais des tests avec 69 sorties et deux modules, donc deux filtres.

Dans jmri_can_module,il y a un fichier global.h qui permet de définir le numéro du module à piloter, en rapport avec le nombre de sorties dans JMRI, voir plus bas, et la définition des filtres:
/********************/
/* fichier global.h */
/********************/



#define NUMMODULE 1

const int FILTRE[]={0x000, 0x010, 0x011};


Pour ce qui est de la communication avec JMRI, je passe par le script écrit en python par Geoff Bunza https://forum.mrhmag.com/post/sma29-jmri-turnout-channels-%E2%80%93-direct-jmri-to-arduino-communications-simple-support-for-lots-of-12210817, un article sur locoduino ayant été écrit sur ce sujet(attention, le lien des fichiers dans l'article locoduino nous donne un fichier obsolète. Il faut prendre les fichiers originaux sur le site de Geoff !).

Voilà, cela avance donc et j'espère ne pas être trop brouillon dans mes explications, je suis conscient que c'est pas toujours facile d'être bien clair !

Bonne soirée et au chapitre suivant  :)

Marc

marc_geo

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
Re : Projet modules-sorties jmri/canbus
« Réponse #4 le: mai 18, 2023, 11:31:51 pm »
Suite des fichiers  :)