Auteur Sujet: Une nouvelle rubrique dédiée à JMRI et l’Arduino  (Lu 16867 fois)

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 904
  • HO avec DCC++
    • Voir le profil
Une nouvelle rubrique dédiée à JMRI et l’Arduino
« le: juin 21, 2019, 02:41:39 pm »


JMRI (Java Model Railroad Interface) est un projet de contrôle de réseaux ferroviaires par ordinateur au travers d’une suite d’applications comme PanelPro pour piloter des locomotives et assurer la gestion de réseau ou DecoderPro, un puissant outil de programmation des décodeurs.

Dans l’esprit et la philosophie, JMRI a de nombreuses affinités avec l’Arduino et Locoduino bien sûr. C’est tout d’abord un projet open source qui se développe grâce à un certain nombre de contributeurs.

JMRI permet de tirer pleinement parti de DCC++, autre projet open source particulièrement puissant et apprécié à Locoduino.

Cette nouvelle rubrique a été créé à la demande de membres de Locoduino qui sont utilisateurs de JMRI et contributeurs actifs, en particulier sur le forum. Un premier article, mais certainement pas le dernier, a été co-rédigé par Nopxor qui est un utilisateur expert : http://www.locoduino.org/spip.php?article240

L’idée est de déplacer et regrouper ici les différents fils répartis sur l’ensemble du forum et concernant JMRI. Que les initiateurs de ces fils n’hésitent pas à nous faire savoir si nous avons oublié d'en déplacer certains.

Par la suite, les contributeurs dont le sujet touche essentiellement à JMRI pourront créer leurs fils dans cette rubrique.

Ce premier fil pourra être utilisé quand la création d’un nouveau fil ne se justifie pas, l’annonce d’une nouveauté ou la mise à disposition de liens vers les très nombreux articles disponibles sur le web et concernant JMRI et l’Arduino par exemple.

Bien amicalement à tous et profitez pleinement de notre passion commune.

Christophe

nopxor

  • Full Member
  • ***
  • Messages: 177
    • Voir le profil
Re : Une nouvelle rubrique dédiée à JMRI et l’Arduino
« Réponse #1 le: juin 21, 2019, 05:42:59 pm »
Bonjour,

Bonne idée cette nouvelle rubrique.
Peut être faudrait-il y déplacer aussi ces deux sujets:

JMRI et DCC++:
http://forum.locoduino.org/index.php?topic=476.0

JMRI:
http://forum.locoduino.org/index.php?topic=680.0

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2218
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Une nouvelle rubrique dédiée à JMRI et l’Arduino
« Réponse #2 le: juin 21, 2019, 07:13:22 pm »
Effectivement, le nombre de messages concernant JMRI croissant depuis 3 ans (lus des milliers de fois) justifie bien une rubrique dédiée !
Cordialement

lucdelch

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Une nouvelle rubrique dédiée à JMRI et l’Arduino
« Réponse #3 le: novembre 02, 2019, 07:12:47 pm »
bonjour,
effectivement JMRI est très intéressant notamment par son association avec DCC++
Il est vraiment possible de construire un ensemble cohérent en partant des articles rédigés autour de ces éléments et de leur association, par tous les "spécialistes" présents sur le site
En ce qui me concerne, ma centrale construite dans ce sens commence à très bien fonctionner sur la base d'un réseau en mode "labo" (double ovale avec deux voies de branchement)
Effectivement, le sujet JMRI mériterait un vrai groupe de travail auquel je suis prêt à participer modestement
JMRI dispose me semble t'il de beaucoup de possibilités mais son approche n'est pas des plus simple
A ce jour, je commence à bien gérer l'automatisme (section, transit, dispatcher)
certes à priori, je viens de trouver un bug sur le nombre de sections à réserver sur l'avant qui ne fonctionnement pas avec la valeur 1, mais par contre les fonctionnalités (ex logix) permettent de contourner certains problèmes
en espérant une suite heureuse sur ce sujet
un bon Week-end à tous
luc

nopxor

  • Full Member
  • ***
  • Messages: 177
    • Voir le profil
Re : Une nouvelle rubrique dédiée à JMRI et l’Arduino
« Réponse #4 le: novembre 03, 2019, 05:58:44 pm »
Bonjour,

C'est vrai que DCC++ aime bien JMRI que ce soit pour la configuration des décodeurs de locos (DecoderPro) ou pour l'exploitation d'un réseau (PanelPro).
Mais la prise en main de JMRI n'est pas évidente.

J'ai trouvé plusieurs tutoriels PDF en Anglais qui aident bien.

Pour la configuration d'un réseau basique jusqu'à la signalisation:
https://www.jmri.org/community/clinics/NMRA2010/JMRILayoutEditor2010.pdf


Pour l'exploitation avec le dispatcheur permettant entre autre les trains automatiques:
https://www.jmri.org/community/clinics/NMRA2012/DispatcherClinic2012.pdf


Pour la configuration de C/MRI dans JMRI:
https://www.jmri.org/community/clinics/NMRA2012/JMRI_CMRI_Clinic2012.pdf


Pour la commande d'une loco depuis un smartphone en wifi:
http://www.nmra.org.au/Clinics/WiThrottle%20Clinic%202012%20handout.pdf


Dans PanelPro, d'abord on dessine son réseau en identifiant les aiguillages et les cantons avec leurs capteurs de présence.
A noter que les aiguillages et le moindre bout de voie sont également associés à un canton.
C'est important pour la suite lorsque l'on définit les sections pour les transits (itinéraires).
Mais avant cela on définit la signalisation en accord avec les aiguillages et les cantons.

Ensuite on peut définir les trajets qu'emprunteront les trains (sections et transits).
A partir de ce moment là l'outil dispatcheur va permettre d'associer des trains à des trajets pour l'exploitation.
Il permet le positionnement automatique de tous les aiguillages des trajets.
La conduite des trains se fait alors en manuel ou automatique.

Les premiers trains automatiques contrôlés par le PC, c'est des instants magiques!

CATPLUS

  • Sr. Member
  • ****
  • Messages: 407
    • Voir le profil
Re : Une nouvelle rubrique dédiée à JMRI et l’Arduino
« Réponse #5 le: novembre 03, 2019, 07:10:29 pm »
Bonsoir Eric

Merci pour tous ces renseignements.
Marcel
Best Regards

lucdelch

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Une nouvelle rubrique dédiée à JMRI et l’Arduino
« Réponse #6 le: novembre 03, 2019, 11:49:30 pm »
bonsoir,

j'avais un souci sur l'exécution simultanée de deux scripts permettant la gestion de deux lots d'aiguillages via deux cartes Arduino
le lancement du deuxième stoppait complètement le premier
la solution est traitée sur le site de MHR
je l'ai reprise dans le Word joint
une bonne soirée à tous
luc

nopxor

  • Full Member
  • ***
  • Messages: 177
    • Voir le profil
Re : Une nouvelle rubrique dédiée à JMRI et l’Arduino
« Réponse #7 le: novembre 04, 2019, 01:28:08 pm »
Bonjour,

Content que le problème soit résolu.
Je n'arrive pas à ouvrir le fichier (0 ko)
Sinon met le lien obtenu sur MRH.

lucdelch

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Une nouvelle rubrique dédiée à JMRI et l’Arduino
« Réponse #8 le: novembre 04, 2019, 07:01:30 pm »
bonjour
je remets un fichier Word en PJ avec l'essentiel
et ci contre son contenu au cas où ( adapter les lignes avec "AT" et "A")
la solution est d'utiliser des noms uniques pour quelques variables dans les scripts Python
une bonne fin de journée
luc

help about SMA29 JMRI Turnout Channels – Direct JMRI to Arduino Communications
Sat, 2019-11-02 16:05 — lucd
•   Track and electrical/DCC
•   Tools, tips and tricks
Hello Geoff
 
J read your article «  SMA29 JMRI Turnout Channels – Direct JMRI to Arduino Communications - Simple Support for Lots of Data Out From JMRI »
I need help with this communication between JMRI and Arduino
I am living in France and I built a DCC station with DCC++ and JMRI
I built a module to manage turnout without difficulty from your article and the website « locoduino » (arduino Uno / USB port com 9)
I built a second module with relays to manage switches under 16v alternative (arduino Uno / USB port com 4)
this second module also works perfectly from JMRI when it is alone
But, his presence completely blocks the first one who no longer receives anything
I made the requested changes in the script "Python" (cf the two scripts attached)
I reactivated the messages that can be seen in the console (cf the Word)
thank you for your help
a good weekend at all
best regards
luc
•   127 reads

Luc, the discussion
Sat, 2019-11-02 20:59 — samusi01
Luc,
the discussion at https://groups.io/g/jmriusers/topic/32577852 may provide some assistance. in short, there may be duplicated variables that mean the second script is referring to a variable already created by the first script.
Sam

----------------------------------------------------------------------------------------------------------------------
La correction proposée sur un exemple de script

Les lignes en « bleue » doivent contenir des noms de variables spécifiques à chaque canal de capteur
J’ai pris AT et T pour l’exemple


# Transfer "TurnOut" Data from to an Arduino via Serial Transmission
# Author: Geoff Bunza 2018 based in part on a script by
# Bob Jacobsen as part of the JMRI distribution
# Version 1.1
# Connects JMRI Turnout "Watcher" to an Arduino Output Channel
# Note that JMRI must be set up to have a valid
# turnout table; if you're not using some other DCC connection,
# configure JMRI to use LocoNet Simulator
import jarray
import jmri
import java
import purejavacomm
# find the port info and open the port
global extportinA
portname = "COM5"
portID = purejavacomm.CommPortIdentifier.getPortIdentifier(portname)
try:
    port = portID.open("JMRI", 50)
except purejavacomm.PortInUseException:
    port = extportinA
extportinA = port
# set options on port
baudrate = 19200
port.setSerialPortParams(baudrate,
    purejavacomm.SerialPort.DATABITS_8,
    purejavacomm.SerialPort.STOPBITS_1,
    purejavacomm.SerialPort.PARITY_NONE)
# get I/O connections for later
inputStreamAT = port.getInputStream()
outputStreamAT = port.getOutputStream()
# define a turnout listener that will

class Datatransfer(java.beans.PropertyChangeListener):
    # initialization
    # registers to receive events
    def __init__(self, id, value) :
              self.name = "AT"+str(id)
              self.closed = value # write this value to close
              self.thrown = value # write this value to throw
              turnout = turnouts.provideTurnout(self.name)
              turnout.addPropertyChangeListener(self)
              turnout.setCommandedState(CLOSED)
              return

     # on a property change event, first see if
     # right type, and then write appropriate
     # value to port based on new state
     def propertyChange(self, event):
          #print "change",event.propertyName
          #print "from", event.oldValue, "to", event.newValue
          #print "source systemName", event.source.systemName
          if (event.propertyName == "CommandedState") :
            if (event.newValue == CLOSED and event.oldValue != CLOSED) :
              print "set CLOSED for", event.source.userName
              outputStreamAT.write(event.source.userName)
              outputStreamAT.write(",0")
            if (event.newValue == THROWN and event.oldValue != THROWN) :
              print "set THROWN for", event.source.userName
              outputStreamAT.write(event.source.userName)
              outputStreamAT.write(",1")
         return
# The following will set up 5 listeners for Turnouts PT1 though PT6 (by username)
for x in range(1,6) :
     Datatransfer(x,x+100)


lucdelch

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Une nouvelle rubrique dédiée à JMRI et l’Arduino
« Réponse #9 le: novembre 05, 2019, 04:34:33 pm »
bonjour,
le fichier Word n'est pas repris certainement pour des problème de sécurité sur le site (virus  etc)
je remets le PDF
une bonne journée à tous
luc

lucdelch

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Une nouvelle rubrique dédiée à JMRI et l’Arduino
« Réponse #10 le: novembre 14, 2019, 03:35:43 pm »
bonjour, à tous

je rencontre des difficultés dans l'automatisation du réseau sous JMRI
je suis sur un mode "labo" avec une simple planche (2.50x1.30), deux ovales avec deux bretelles et deux voies de garage
la logique des signaux est me semble t'il fonctionnelle
les capteurs de direction identifiés comme facultatifs, sont en fait obligatoires
cela fonctionne correctement avec un seul train
par contre l'ajout d'un deuxième train en simultané n'est pas terrible
j'ai un fonctionnement par intermittence et des blocages complets au bout d'un certain temps
Quel est votre retour d'expérience sur cette partie ?
en espérant que je suis tout seul dans la difficulté et que vos conseils vont me permettre d'avancer
une bonne journée
luc

nopxor

  • Full Member
  • ***
  • Messages: 177
    • Voir le profil
Re : Une nouvelle rubrique dédiée à JMRI et l’Arduino
« Réponse #11 le: novembre 14, 2019, 04:14:20 pm »
Bonjour Luc,

Tu es à un stade plus avancé que moi car je n'ai pas encore essayé de lancer 2 trains en mode auto.

Effectivement les capteurs de direction sont en fait obligatoires.
Même s'il s'agit de capteurs "internes" donc virtuels.

Peux-tu joindre ton fichier .xml de panneau pour que l'on puisse jeter un oeil ?

Tu as la possibilité d'exposer ton problème sur Github là:
https://github.com/JMRI/JMRI/issues
Les membres sont assez réactifs.

fcot2002

  • Full Member
  • ***
  • Messages: 114
    • Voir le profil
Re : Une nouvelle rubrique dédiée à JMRI et l’Arduino
« Réponse #12 le: novembre 15, 2019, 10:25:50 am »
Bonjour @ tous,

Ne pas oublier que JMRI est principalement pensé USA. J'ai beaucoup discuté sur le groupe Yahoo, et aussi en direct avec des modélistes US, ils ne pensent pas comme nous coté circulations.

Ils pensent un train, un itinéraire, une conduite, manœuvres.

J'ai trouvé les même embûches que vous dès lors que je voulais automatiser avec "itinéraires" plus d'un train.

La gestion automatique des blocs fonctionne très bien avec les détecteurs réels/virtuels, mais l'arrêt des trains est plus complexe.

La solution que j'ai trouvé pour les arrêts au pieds des signaux, est l'utilisation du freinage ABC.

lucdelch

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Une nouvelle rubrique dédiée à JMRI et l’Arduino
« Réponse #13 le: novembre 18, 2019, 04:15:59 pm »
bonjour à tous,
Un we en vacances à Honfleur sans train mais sous la pluie!!
Selon ma compréhension, il y a deux méthode pour utiliser JMRI
La première via les "itinéraires", les manifestes, les éditions etc
la deuxième via les sections, les transits, la logique simple signal, le dispatcheur
Je suis resté sur la deuxième solution avec un canton par section

j'ai fait de nombreux essais de paramétrage au niveau de l'allocation des trains
A ce jour, le meilleur paramétrage trouvé est celui-là
une réservation avec trois cantons en avant
la gestion de la priorité via le niveau de priorité et le type de train
la longueur des trains et celle des cantons ( ce qui retarde la bascule des aiguillages me semble t'il)

Dans ce contexte et en mode manuel, la logique de signalisation fonctionne bien sous réserve de supprimer les capteurs de direction ( option dans le menu "tableau/section")
le fonctionnement de deux trains sur des "transits" qui ne se recoupent pas, fonctionne.
la signalisation aussi
Si les "transits" allouent des sections communes alternativement, cela fonctionne pendant un certain temps ( dans mon cas 5 ou 6 révolutions complètes des ovales), puis on se trouve sur des arrêts, qui me semblent adossés à des conflits de priorité ou des pertes de suivi dans le module "dispatcher"

j'ai mis le fichier Xml en pièce jointe qui me semble correct

merci d'avance pour vos retours d'expérience
une bonne journée
luc



lucdelch

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Une nouvelle rubrique dédiée à JMRI et l’Arduino
« Réponse #14 le: novembre 20, 2019, 05:44:08 pm »
bonjour à tous,
une nette amélioration en modifiant mes détecteur de consommation de courant
j'ai remplacé les optocoupleurs CNY74-2 par des TLP620-2 à deux diodes de détection
de ce fait, la détection des trains est très correcte
la présence d'un train arrêté génère le ralentissement et l'arrêt du train qui arrive
Par rapport au mail du 15/11, je n'ai pas trouvé la notion de freinage ABC dans JMRI, pouvez vous m'indiquer où elle se trouve?
j'ai maintenant le même problème que vous avez rencontrez, les trains dépassant les signaux lors du freinage
j'ai aussi regardé la vidéo très intéressante que vous avez faite en lien avec JMRI, DCC++ et CMRI
merci pour le retour
une bonne fin de journée à tous
luc