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ère
https://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