Un poste à itinéraires avec JMRI, C/MRI et Arduino

Bonjour et bienvenue !

En raison de la quasi-absence de tutoriels en langue française consacrés à JMRI et de la richesse de ce gratuiciel, il est difficile d'en connaître les possibilités et surtout de savoir par où commencer.

Après être parvenu à construire un petit poste à itinéraires inspiré de ceux en usage à la SNCF, je me suis avisé que la méthode employée pourrait intéresser d’autres modélistes.

N’étant ni électronicien ni programmeur de métier, l’utilisation conjointe de JMRI, C/MRI et d’Arduino m’a semblé plutôt abordable. Le plus compliqué ayant été de comprendre comment tirer profit de JMRI parmi les très nombreuses fonctionnalités de ce logiciel gratuit.

Ceci exposé, le fait que JMRI permette de réaliser des exploitations intégralement personnalisées de façon économique nécessite une implication personnelle plus importante que pour un produit « clé en main » dont il faudra par contre s'accommoder des limitations.

Ces quelques pages présentent un exemple de ce qu'il est possible de faire avec ce logiciel gratuit associé à des composants peu onéreux et la façon d'y parvenir.

Atouts de JMRI Panel Pro

JMRI Panel Pro constitue l'un des modules de JMRI. Il s'avère intéressant pour reproduire une exploitation SNCF à bien des égards :

Versions utilisées dans le cadre de la démonstration

Capture d'écran montrant les versions de JMRI et de JAVA
Haut de page

Consistance du projet

Afin de vérifier l’adaptation de JMRI à la reproduction d’un contexte SNCF, je me suis fixé l'objectif de reproduire le fonctionnement d'un poste à itinéraires commandant une gare dotée d'une voie directe et d'une voie d’évitement.

La gare comporte :

Les signaux utilisés n'étant pas pourvus de décodeurs intégrés, ils seront commandés par un Arduino faisant office de décodeur.

Pour des raisons de facilité de réalisation, le projet repose sur le classique ovale avec la non moins classique implantation de la gare parallèlement à l’un des bords. Mais nous allons constater que cette disposition sera suffisante pour découvrir tranquillement JMRI.

Plan dessiné avec CDM Rail
Plan du réseau de démonstration, dessiné avec CDM Rail.
Les paires de chiffres figurées en jaune correspondent aux coordonnées des jonctions entre les éléments de voie

 

Capture d'écran de la table de commande et de contrôle
Capture d'écran de la table de commande et de contrôle issue de l'éditeur de réseau de JMRI
Les commandes et les contrôles sont représentés sur l’écran. Les commandes s’effectuent par des clics de souris sur la zone activable des boutons présents sur l'écran.
Haut de page

Principe

Le principe est le suivant :

Schéma de l'interface entre l'ordinateur sur lequel tourne JMRI et l'Arduino chargé de la commande des accessoires et de la collecte des données
					de rétro signalisation
Interface entre l'ordinateur sur lequel tourne JMRI et l'Arduino chargé de la commande des accessoires et de la collecte des données de rétro signalisation.

Commande et contrôle du réseau depuis l'écran de l'ordinateur

Dans le cadre de cet exemple, l'interface de commande et de contrôle sera réalisée au moyen de l'éditeur de réseau (Layout editor) de JMRI Panel Pro.

Il existe au moins deux façons de procéder :

La solution adoptée dans cet exemple consiste à créer les éléments dans les tableaux idoines avant de les incorporer, parce que l'éditeur de réseau n'est pas qu'un simple outil de dessin. Il a en effet été conçu pour créer automatiquement des liens entre des objets (entre zones isolées contiguës, par exemple) en vue de faciliter les opérations ultérieures. Son utilisation est donc indispensable.

JMRI Panel Pro propose plusieurs interfaces de commande et de contrôle ; celle qui sera utilisée est issue de l'éditeur de réseau, bien que relativement sommaire. Si l'on souhaite réaliser une table de contrôle et de commande plus sophistiquée, il sera nécessaire d'en créer une deuxième par la suite, avec un autre outil JMRI de la même famille (éditeur de panneau).

La désignation des itinéraires comporte le numéro du signal origine, puis celui de signal de destination, ces derniers étant séparés par un trait d'union. Exemple : 101-201.

Exemple d'utilisation des itinéraires du poste réalisé avec JMRI
(Changement d'extrémité de la locomotive d'un train stationné sur la voie directe).

Echanges entre l'ordinateur et le réseau

Ces échanges s'effectuent par une liaison série issue de l'un des ports USB de l'ordinateur et reliée à un ou plusieurs Arduino, chaque Arduino émulant un (ou plusieurs) nœud(s) C/MRI.

La gestion de ces échanges est assurée par le protocole C/MRI :

Arduino

On aura recours à un (voire plusieurs, selon l'importance du réseau) Arduino, généralement de type « Mega » doté d'un « bouclier » (shield) sur lequel seront branchés les capteurs ainsi que les sorties de commande.

Le programme de l'Arduino comprendra :

Haut de page

Méthode

1 - Recensement de tous les éléments nécessaires

Dans l'idéal, chaque élément (aiguille, signal, itinéraire, zone de détection, commande, contrôle, appellation, etc.) devrait être prévu en phase de conception.

Même si JMRI semble très stable, mieux vaut éviter les ajouts ou changements en cours de route. En effet, si JMRI gère très bien les changements d'appellations, grâce à la double identification d'un élément par son « Nom système » et par son « Nom Utilisateur », il se montre parfois beaucoup moins coopératif si on lui demande de supprimer des objets devenus inutiles ou de modifier des signaux après leur création.

Il arrive aussi assez fréquemment que les changements de dernière minute soient bien moins maîtrisés qu'escompté, du fait d'une mauvaise appréciation de l'impact ou de l'ampleur des modifications.

Un croquis constitue une aide d'autant plus précieuse que le paramétrage d'un réseau ne s'effectue pas en une soirée...

Exemple de croquis récapitulatif
Exemple de croquis montrant l'emplacement des divers éléments. Ce croquis servira de base lors de la phase de dessin avec l'Editeur de réseau de JMRI.

2 - Détermination du nombre de liaisons entre JMRI et le réseau

La détermination préalable du nombre de liaisons entre l'ordinateur et le réseau est nécessaire pour procéder (très simplement, qu'on se rassure) au paramétrage du protocole C/MRI au sein de JMRI et de l'Arduino. Ces nombres se calculent assez aisément :

Bon à savoir :

Une indication correspond à un aspect du signal. Par exemple, l'un des signaux de notre projet peut présenter les indications : Carré fermé, Feu rouge clignotant, Avertissement fermé + Rappel ralentissement 60, Avertissement fermé, Rappel Ralentissement 60 et feu vert, soit 6 indications.

En effet, le groupe « Avertissement fermé + Rappel ralentissement 60 » doit être considéré comme une indication à part entière et non pas comme l'addition d'une indication « Avertissement fermé » et d'une indication « Rappel de Ralentissement 60 ».

Ceci s'explique par les raisons suivantes :

  • JMRI transmet, au décodeur(Arduino, dans notre cas), une commande codée de l'indication à faire afficher par le signal ; Dès réception de cette commande, le programme de ce dernier (« croquis » de l'Arduino) va provoquer :
    1. l'extinction des feux de l'indication précédemment commandée,
    2. puis l'allumage des feux correspondant à l'indication reçue de JMRI.
  • C/MRI ne transmet qu'une commande à la fois.

Dès lors, si l'on transmet successivement une commande de l'indication « Avertissement fermé », puis une commande de l'indication « Rappel Ralentissement 60 », le décodeur va :

  1. éteindre les feux correspondant à l'indication anétrieurement commandée,
  2. allumer le feu jaune situé en bas du châssis-écran et de l'œilleton à la réception du premier ordre (« Avertissement fermé »),
  3. Puis, à la réception du deuxième ordre (« Rappel Ralentissement 60 ») :
    1. Eteindra le feu jaune situé en bas du châssis-écran ainsi que l'œilleton,
    2. Puis commandera le clignotement des deux feux jaunes du Rappel Ralent 60 (feux disposés sur une ligne verticale sur la partie supérieure droite du châssis-écran) et l'allumage conjoint de l'œilleton.

Il est donc bien nécessaire de considérer que tout groupement de signaux par ailleurs portés individuellement par le signal, ou tout clignotement de feux existant sous forme fixe sur le signal constitue une indication à part entière et doit être pris en compte dans le dimensionnement des sorties.

3 - Saisie dans JMRI Panel Pro

Ce recensement étant effectué, on entreprendra alors le travail dans JMRI Panel Pro :

Haut de page
Page suivante : Paramètres de base de JMRI