Auteur Sujet: 24 IN / 48 OUT card for JMRI  (Lu 8360 fois)

Erik84750

  • Newbie
  • *
  • Messages: 29
    • Voir le profil
24 IN / 48 OUT card for JMRI
« le: décembre 26, 2019, 02:57:27 pm »
Bonjour, suite à un article par NOPXOR sur https://www.trainboard.com/highball/index.php?threads/24-in-48-out-card-for-jmri.116454/#post-1118030 , dont je pouvais déduire qu'il est français, je voudrais faire un suivi sur ce forum.
L'article par nopxor concerne une module Input & Output parallel qui communique avec JMRI à travers USB (sortie JMRI) transformé en RS485 (conforme protocol C/MRI).
La beauté de ce projet est qu'il conforme à tous les requis C/MRI, qu'il fait émulation transparent du hardware C/MRI, qu'il est équipé de software développé par nopxor, et qu'il peut être équipé d'un MCU Arduino Nano (version nopxor) ou d'un MCU Arduino Pro Mini (ma version adaptée).

En plus, ce qui est merveilleux, c'est que nopxor a mis disponible tout le nécessaire pour la fabrication: le hardware (Eagle .sch, .brd et le partslist) ainsi que le software pour l'Arduino (tout en annexe)!

En ce qui concerne l'architecture, il s'agit d'une module connectable par JMRI (à travers le protocol C/MRI), et que plusieurs peuvent être installé en réseau "daisy-chained" (en série) sur le layout des trains (communications par RS485: 2 fils "twisted", une seule porte USB). Les commandes pour les sorties peuvent être automatisés à travers JMRI, les entrées peuvent être utilisés par JMRI également.
On peut par example même utiliser les sorties pour commander de aiguilages servo (il faut alors ajouter un interface avec un controlleur qui est programmé pour servos: il y a pleines de possibilités, par example des modules Adafruit (ou Ali Express) 16 channels PWM, I2C https://www.adafruit.com/product/815.

Ma contribution est que j'ai adapté le projet de nopxor en module pour SMD, pour Arduino Pro Mini, et ayant réduit les dimensions du pcb par la moitié.

Les fiches gerber sont utilisables chez elecrow.com.

EDIT: j'ai remplacé version 2a par version 2b: fonctionellement complètement identique, mais avec une toute petite modification esthétique de l'emplacement de quelques condensateurs: C5, C8 et C9.

EDIT 3/1/2020: il y a une erreur de connection dans la version dessous ainsi que dans la version 2b; une trace oubliée entre IC15 pin 13 et terre. Cette erreur est corrigée dans les version v2c et v3, inclus plus bas dans mes messages.
« Modifié: janvier 03, 2020, 10:17:21 pm par Erik84750 »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2576
  • 100% Arduino et N
    • Voir le profil
Re : 24 IN / 48 OUT card for JMRI
« Réponse #1 le: décembre 26, 2019, 07:27:00 pm »
Bonjour Eric,

Bravo pour cette version compacte qui vient en complément de cette de nopxor qui est décrite ici :
http://forum.locoduino.org/index.php?topic=507.0
Je regrouperai ta contribution avec ce fil si tu es ok.
Cordialement,
Dominique

Erik84750

  • Newbie
  • *
  • Messages: 29
    • Voir le profil
Re : 24 IN / 48 OUT card for JMRI
« Réponse #2 le: décembre 26, 2019, 07:42:53 pm »
Oui tout à fait! Quelle honneur pour moi!
Je souhaite toute l'équipe de Locoduino des très bonnes fêtes de fin d'année, et j'espère vous rencontrer à Lille au foire du modelisme trains (à Pâques?).
Erik

CATPLUS

  • Sr. Member
  • ****
  • Messages: 343
    • Voir le profil
Re : 24 IN / 48 OUT card for JMRI
« Réponse #3 le: décembre 27, 2019, 08:03:23 am »
Bonjour,
Pourriez-vous SVP fournir la liste des composants.
Une photo de l'ensemble assemblé.

Bonne fêtes de fin d'année à tous.
Marcel
Best Regards

Erik84750

  • Newbie
  • *
  • Messages: 29
    • Voir le profil
Re : 24 IN / 48 OUT card for JMRI
« Réponse #4 le: décembre 27, 2019, 09:54:03 am »
Voice la liste des composants.

La PCB vient d'être lancé hier soir, 2 semaines pour arriver, et si le temps permets, une ou deux semaines pour assembler: photo sera posée ici.
Salutations,
Erik

Erik84750

  • Newbie
  • *
  • Messages: 29
    • Voir le profil
Re : 24 IN / 48 OUT card for JMRI
« Réponse #5 le: décembre 27, 2019, 09:55:41 am »
Et voici une version de PCB (version 2c) avec trou de montage M4 inclus.
« Modifié: janvier 03, 2020, 10:26:35 pm par Erik84750 »

Erik84750

  • Newbie
  • *
  • Messages: 29
    • Voir le profil
Re : 24 IN / 48 OUT card for JMRI
« Réponse #6 le: décembre 27, 2019, 10:07:41 pm »
Cette carte donne 48 output digital. Pour commander 48 moteurs servo, comment procéder le mieux?
1. intermédiaire avec Mega plus module Adafruit I2C 16 channels PWM?
2. intermédiaire avec Uno plus matrice pour réduire le nombre d'input digital requis plus module Adafruit I2C 16 channels PWM?
3. autre?

nopxor

  • Full Member
  • ***
  • Messages: 152
    • Voir le profil
Re : 24 IN / 48 OUT card for JMRI
« Réponse #7 le: décembre 27, 2019, 10:56:30 pm »
Bonjour Erik,

Félicitations pour ton travail.
Je suis content de t'avoir inspiré.

Salutations et bonnes Fêtes à tous.
Eric alias nopxor

Erik84750

  • Newbie
  • *
  • Messages: 29
    • Voir le profil
Re : 24 IN / 48 OUT card for JMRI
« Réponse #8 le: décembre 28, 2019, 06:40:16 pm »
Bonjour Eric,

oui tu avais fait un travail très original et bien recherché.
Merci pour ta réponse.

Entretemps j'avais réfléchi comment réaliser une interface pour 48 servos.
Je pense le faire de manière suivante:
1. fabriquer une carte (SMD) pour 4 MCP23017, adressable, I2C, utilisant interrupts sur Pro Mini, 16ch input, un peu comme ici http://macetech.com/store/index.php?main_page=product_info&products_id=23, mais pour moins de 4EUR tot inclus, pcb avec composants soldés.
2. Pro Mini (software from https://www.best-microcontroller-projects.com/mcp23017-interrupt.html et https://learn.adafruit.com/16-channel-pwm-servo-driver
3. fabriquer une carte (SMD) interface pour PCA9685 I2C 16ch PWM controlleur (lien ici dessus)
4. songer à une façon de lier les trois (ou pas, comme c'est du I2C).

Les MCP23017 sont déjà commandés, pas bon marché: le mieux j'ai trouvé à 11EUR/20 transport inclus. Les PCA9685 aussi commandés; tout en SOP.
Quelques semaines (il faut quand-même digérer le Nouvel An) de délai.

Bonne Année à tous!
Erik


Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2576
  • 100% Arduino et N
    • Voir le profil
Re : 24 IN / 48 OUT card for JMRI
« Réponse #9 le: décembre 28, 2019, 09:11:46 pm »
Bonsoir Erik,

Ton projet est très intéressant et le partage est très sympa ;) ;D
J’avais écrit une comparaison Can/I2C, a toutes fins utiles:
http://forum.locoduino.org/index.php?topic=642.msg7237#msg7237

Je ne veux pas empêcher d’utiliser l’I2C, mais ce serait intéressant d’envisager le Can dans le futur, comme le suggère Jean-Luc pour C/MRI dans ce fil.
http://forum.locoduino.org/index.php?topic=765.msg8657#msg8657
Avec une convergence vers les satellites, peut-être.

Qu’en penses-tu ?
Cordialement,
Dominique

Erik84750

  • Newbie
  • *
  • Messages: 29
    • Voir le profil
Re : 24 IN / 48 OUT card for JMRI
« Réponse #10 le: décembre 28, 2019, 09:26:29 pm »
Bonjour Dominique,
merci pour ces infos! J'explore le CAN bus. S'il est plus utilitaire, c'est la façon de procéder.
Salutations,
Erik

Erik84750

  • Newbie
  • *
  • Messages: 29
    • Voir le profil
Re : 24 IN / 48 OUT card for JMRI
« Réponse #11 le: décembre 29, 2019, 07:15:37 pm »
CAN ou I2C ou...

I2C: J'ai fait un peu de recherche et il est bien documenté que I2C est conçu pour communications sur pcb, distances de qq centimètres. Il y a évidemment des projets pour but de prouver que des distances de plusieurs mètres soient faisables, il y a des chips (PCA9615 et autres) ayant pour but de communiquer par I2C sur des dizaines de mètres mais fin du jour I2C n'est pas conçu pour ça. Donc même si j'ai commandé quelques IC's pour expérimenter, ce sera tout ce que j'en ferais.

CAN: conçu par Bosch pour automobile, ensuite un standard industriel, selon ce que j'ai lû il s'agit non seulement d'un layer physique (model OSI layer 1), c'est également un protocol layer 2: très performant mais à mon avis, pour le modelisme, c'est comme tirer dessus une moustique avec un calibre .50. Le débugging au niveau de microcontrolleur est très difficile, les spécifications sont loin au dessus de ce que exigerait le modelisme féroviaire, et l'appliquer pour des simples contrôles d'aiguillages je pense ne pas passer mon temps.

RS485: mode de transmissions adhéré par C/MRI, OSI layer 1 (physique, pas de protocol standard; le protocol utilisé en modelisme est celui développé par Bruce Chubb), bien établi, multinode, half-duplex (physiquement le même que ethernet sauf que lui c'est full duplex et de point à point), et bien éprouvé pour le modelisme; puisque C/MRI l'utilise, à mon avis la route que je choisirait.

Mais maintenant à propos des modules d'ici dessus: un bon ami vient de me demander si c'est bien choisi de commander 48 servos depuis une node. Sauf qu'n cas d'un yard gigantesque il n'y aurait pas vraiment besoin. Reste donc à déterminer quel est le montant d'aiguillages qu'il faudrait commander depuis une node pour un modelisme de train moyen: six, dix, quinze,.. mais peu probable que ce soit plus.
Donc il s"avère que ce serait plus pratique d'avoir plusieures nodes repartis sur un layout ayant chaque au maximum une dixaine, max 16 aiguilles à commander.

Et alors, pourquoi ne pas utiliser l'approche de Geoff Bunza: https://model-railroad-hobbyist.com/node/24316?page=51 ? Où utiliser C/MRI mais avec des nodes controllant les aiguilles aux allentours de quelques mètres maxi?


« Modifié: décembre 29, 2019, 07:34:58 pm par Erik84750 »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2576
  • 100% Arduino et N
    • Voir le profil
Re : 24 IN / 48 OUT card for JMRI
« Réponse #12 le: décembre 29, 2019, 09:13:44 pm »
Ton analyse sous l’angle OSI est correcte, mais le bus Can est très facile à utiliser, contrairement à ce que tu crois : voir l’article http://www.locoduino.org/spip.php?article148#forum4339.
C’est le MCP2515 (ou le MCP2517) qui fait tout le boulot : l’Arduino ne fait qu’envoyer et recevoir des messages, filtrés pour lui seulement avec garantie de ne rien perdre.

J’en utilise partout sur mon réseau sans aucun problème: un Mega gère toutes les détections d’occupation et les clés d’aiguilles sur le TCO physique, un autre Mega gère les aiguilles, un autre Mega gère le DCC les trains, un autre Mega s’occupe de la programmation des locos et un autre Due gère un TCO  gestionnaire sur écran graphique Tactile et tout ça communique par messages can (je n’ai pas fini de décrire mon réseau http://forum.locoduino.org/index.php?topic=290.0 ). La suite sera d’interface JMRI via une interface C/MRI et un traducteur de messages, comme Jean-Luc a commencé à l’expliquer ( http://forum.locoduino.org/index.php?topic=765.msg8657#msg8657).

Et avec ces cartes (https://fr.aliexpress.com/item/33057126416.html?spm=a2g0o.productlist.0.0.55522856zKUQqK&algo_pvid=abf2d3f0-8e1c-4730-9965-4cd8dbc60cc4&algo_expid=abf2d3f0-8e1c-4730-9965-4cd8dbc60cc4-36&btsid=d2325bd7-2a91-40b5-9575-17263f72ddf1&ws_ab_test=searchweb0_0,searchweb201602_10,searchweb201603_53, ce n'est pas très cher !

Idéalement je devrai passer aux satellites, ce qui sera une évolution douce par la suite.

Mais ça n’avance pas vite  ??? ???
Et j’aimerai bien faire un peu de decor  :P


« Modifié: décembre 29, 2019, 10:15:36 pm par Dominique »
Cordialement,
Dominique

Erik84750

  • Newbie
  • *
  • Messages: 29
    • Voir le profil
Re : 24 IN / 48 OUT card for JMRI
« Réponse #13 le: décembre 30, 2019, 07:55:06 am »
Bonjour Dominique,

merci de ta réponse, ça met les choses en perspective. Je continue à explorer; ce forum est très intéressant.
Regardant ton réseau il est bien composé.
Dans ton cas je peux bien m'imaginer qu'expérimenter avec un CAN bus pose une solution élégante. Je me trouve souvant sur des forums anglophiles et je remarque que souvent leurs réseaux sont de taille différentes; donc je me demande si on a des dizaines (voire parfois de centaines) d'aiguillages, de sensors, d'animations à controller ou lire comment choisir son mode (layer 1) et protocol (layer 2) de communications.

Par example Geoff Bunza semble adhérer au concept de multiples bus DCC; un bus à travers les rails pour les loco's, des bus pour les aiguillages et autres (dont il propose un décodeur statique de fonctions qui peux controller des servos, etc..).
Ou l'approche C/MRI: bus RS485, quand-même éprouvé robuste et industriel..
Ou l'approche CAN ou ses frères (OpenLCB, CBUS)
Tout les autres: https://www.jmri.org/help/en/webtoc.shtml
Un tableau de comparaison en fonction de type et dimension de layout?

Moi en ce moment je ne vois pas la forêt à travers les arbres.

Erik

EDIT: la charpente dans to chambre est adorable! le sol c'est du parquet? Et quel joli tapis, j'en ai aussi un comme ça de mes grand-parents prêt pour mon local.
« Modifié: décembre 30, 2019, 08:00:19 am par Erik84750 »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2576
  • 100% Arduino et N
    • Voir le profil
Re : 24 IN / 48 OUT card for JMRI
« Réponse #14 le: décembre 30, 2019, 09:28:55 am »
Bonjour Erik,

Citer
EDIT: la charpente dans to chambre est adorable! le sol c'est du parquet? Et quel joli tapis, j'en ai aussi un comme ça de mes grand-parents prêt pour mon loca

C’est un grenier au dessus du garage. Un jour j’ai décidé de l’aménager pour changer sa destination d’entrepôt en désordre permanent. D’abord l’isolation sous les tuiles avec du lambris, puis un parquet de pin. Le tapis est à la retraite (comme moi)!
Du coup avec un peu de chauffage je peux y venir en hiver.
Cordialement,
Dominique