Commande d'un réseau en DCC avec un module ARDUINO

Réalisation d'une centrale DCC pilotée par ordinateur ou par un régulateur filaire ou radio


Menu

1.Généralités

2. Schéma de la centrale

3. Régulateur

4. Unité centrale

5. Alimentation

6.. Description du mode manuel sans ordinateur avec commande par régulateur

7. Description du mode manuel sans ordinateur avec commande d'une loco par radio.

8 Description du mode automatique sans ordinateur .

9 Description du mode de commande du réseau avec ordinateur .

10 Description du mode de commande du réseau avec ordinateur .

1 Généralités

Cette centrale utilise un ARDUINO MEGA 2560 qui dispose d'une mémoire Flash de 256K et qui offre 54 entrées/sorties numériques et 16 entrées analogiques, ce qui est suffisant pour un réseau de taille moyenne.

La centrale réalisée offre 5 modes de fonctionnement:
- mode manuel sans ordinateur avec commande d'une loco par un boitier régulateur connecté par un cable à la centrale. Le boitier commande également les accessoires en utilisant l'adresse 1.
- mode manuel sans ordinateur avec commande d'une loco sans fil par un smartphone ou une tablette par l'intermédiaire d'un routeur Wi-Fi. Il est aussi possible d'utiliser un E/R à 41 MHz ou encore une commande par la voix..
- mode automatique sans ordinateur. Dans ce mode de fonctionnement, les détecteurs de passage sont connectés à l'ARDUINO qui permet de gérer jusqu'à 4 locos en automatique et une autre en manuel avec la commande radio.
- mode manuel avec ordinateur. L'intérêt de ce mode est de pouvoir utiliser le logiciel JMRI et la commande par smartphone ou tablette que j'utilisais déjà avec le SPROG.
- mode automatique avec ordinateur. Dans ce mode, c'est le programme Excel et Visual Basic de l'ordinateur qui gére les trajets et l'ARDUINO se contente de générer le signal DCC et d'envoyer au PC les signaux de rétrosignalisation. Il est possible d'avoir 4 locos en fonctionnement simultané.

Actuellement, j'ai testé ces 5 modes de fonctionnement et tout semble marcher. L'ARDUINO est vraiment intéressant, vu son prix

2 Schéma de la centrale

La centrale DCC est constituée des éléments suivants:
- un boîtier de commande (régulateur)
- une unité centrale
- une radiocommande par smartphone ou tablette
- un booster réalisé avec un module LMD18200
.

Le schéma de la centrale est donné sur la figure ci-dessous.



3 Régulateur

3.1 Régulateur manuel filaire

Le boitier de commande (appelé généralement régulateur) est relié par un cable en nappe à l'ARDUINO. Ses fonctions sont les suivantes:
:
- choix de l'adresse
- choix du mode de pilotage du réseau
- commande de la vitesse et du sens de marche
- commande des fonctions des décodeurs de locomotives (F0 à F4)
- commande des accessoires

Le régulateur actuellement réalisé est constitué des composants suivants:

- un potentiomètre pour le choix de l'adresse (entre 1 et 9).connecté à une entrée analogique de l'ARDUINO MEGA
- un potentiomètre pour la commande de la vitesse et du sens de marche connecté à une entrée analogique de l'ARDUINO MEGA
- un module rotacteur DFRobot SEN0156 à 12 positions pour le choix du mode de fonctionnement. La sortie analogique, proportionnelle à la position choisie, est.connectée à une entrée analogique de l'ARDUINO MEGA
- un clavier à 5 touches de DFRobot (commande des fonctions F0 à F4) relié à une entrée analogique de l'ARDUINO MEGA

Vous pouvez voir ci-dessous une photo du régulateur réalisé.


3.2 Régulateur sans fil

Les deux dispositifs suivants ont été testés et fonctionnent:

3.2 1 Commande par un smartphone ou tablette

La commande peut s'effectuer en Bluetooth ou en Wi-Fi. La commande en Bluetooth est très simple à mettre en oeuvre et est à privilégier. Le seul inconvénient est la portée limitée à une vingtaine de mètres, ce qui est suffisant pour la plupart des réseaux.
La commande en WiFi est constituée d'un ARDUINO UNO, d'un serveur web réalisé à partir d'un shield Ethernet et d'un routeur Wi-Fi. Ce système est plus complexe à mettre en oeuvre mais la portée peut atteindre une centaine de mètres.
Les deux dispositifs se connectent à l'ARDUINO MEGA par une liaison série. Vous trouverez une description de ces dispositifs en cliquant
ici.

3.2 2 Commande par la voix

Il est possible de commander une loco par la voix en utilisant un module de reconnaissance vocale EasyVR et un micro HF. Le module EasyVR assure aussi la sonorisation du réseau (annonces en gare, sonnerie du passage à nivau, etc...) La portée dépend du micro HF utilisé et peut dépasser 50 mètres..
Vous trouverez une description de ce système en cliquant ici.

4 Unité centrale

L'unité centrale installée dans un vieux boîtier de magnétoscope, est constituée des composants suivants:
- un module ARDUINO MEGA 2560
- un afficheur 4 lignes de 20 caractères
- un récepteur de radiocommande
- un module de reconnaissance vocale EasyVR connecté à un ARDUINO UNO
- un booster

4.1 Module ARDUINO MEGA 2560

Le module ARDUINO MEGA réalise les actions suivantes:
- génération des trames DCC
- gestion de l'interface avec le régulateur
- gestion de l'interface avec le PC (en USB)
- gestion de l'interface avec les modules de rétrosignalisation
- commande des accessoires
- gestion de l'interface avec l'afficheur
- gestion de l'interface avec l'ARDUINO UNO pour la radiocommande
- gestion de l'interface avec le deuxième ARDUINO UNO pour la reconnaissance vocale

L'affectation des ports est la suivante:


Voici une photo de l'ARDUINO MEGA dans l'unité centrale.


Et voici une photo de la station de commande.


4.2 Afficheur

L'afficheur est un module SainSmart à LED rétroéclairé de 4 lignes de 20 caractères acheté
ici.
Il est connecté sur les broches SDA et SCL de l'ARDUINO MEGA.
Vous pouvez télécharger la librairie pour ce module en cliquant ici.

Voici une photo de l'afficheur installé sur la face avant de l'unité centrale.


Les instructions à placer en début du programme ARDUINO sont les suivantes:
#include
//Addr: 0x3F, 20 chars & 4 lines
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

Dans void setup(), placer les instructions:
lcd.begin(20,4);
lcd.backlight(); // allume l'éclairage

Les instructions pour écrire sur l'écran sont:
lcd.setCursor(9, 0); // place le curseur au caractère 9 de la ligne 0
lcd.print("manuel"); // écrit sur l'écran "manuel" à partir du caractère 10

4.3 Booster DCC

Le booster est un cirtcuit LMD18200
L'entrée GND est reliée à la masse de l'ARDUINO MEGA
L'entrée PWM est reliée au +5V
L'entrée DIR est reliée à la sortie DCC de l'ARDUINO ( pin 13)
L'entrée BRAKE est reliée à la masse.

Le signal DCC amplifié est disponible sur les sorties OUT1 et OUT2
L'amplitude du signal DCC dépend de la tension d'alimentation continue appliqué sur l'entrée V+ du module. Avec une alim de 16 Volts, on obtient un signal DCC de 16 Volts efficaces environ. qui est suffisant pour faire fonctionner un réseau DCC. .

5 Alimentation

J'utilise une alimentation secteur qui délivre une tension de 15 Volts continu et qui est connectée à l'ARDUINO et au booster. Un régulateur 7806 fournit également une tension de 6 volts pour les servos. Le courant consommé à vide sans loco est de 170 mA sans servo et de 250 mA avec un servo en marche.

6 Description du mode manuel sans ordinateur avec commande par régulateur

Ce mode permet de piloter une loco en manuel avec le régulateur
La loco doit avoir une adresse comprise entre 3 et 9.
L'adresse 1 est affectée à la commande des accessoires avec l'allocation suivante des touches de fonction:
- touche F0: commande du servo qui actionne les barrières du passage à niveau
- touche F1: commande de l'aiguille N° 1
- touche F2: commande de l'aiguille N° 2
- touche F3: commande de l'aiguille N° 3
- touche F4: commande de l'aiguille N° 4

Si l'ARDUINO MEGA est connecté à l'ordinateur, ce mode permet aussi d'enregistrer le trajet dans un tableau EXCEL. Ce tableau pourra ensuite être transféré dans le programme de l'ARDUINO pour être exécuté en mode automatique.

7 Description du mode manuel sans ordinateur avec commande d'une loco par radio.

Les données émises par le smartphone ou la tablette (adresse, sens de marche, vitesse et fonctions du groupe 1) sont transmises à l'ordinateur qui les enregistre.

Si on utilise une radiocommande à 41 MHz, l'adresse doit être sélectionnée par le potentiomètre du régulateur manuel.
La radiocommande à 41 MHz permet les commandes suivantes:
- le canal 2 commande la vitesse et le sens de marche
- le canal 1 commande les fonctions F1 (mise en marche de la sonorisation) et F2 (activation du sifflet ou du klaxon).

8 Description du mode automatique sans ordinateur .

Dans ce mode de fonctionnement, les détecteurs de passage sont connectés à l'ARDUINO qui permet de gérer une ou deux locos en automatique et une autre en manuel avec la commande radio.
En mode automatique, l'ARDUINO commande l'exécution d'un trajet constitué par une suite de lignes de commandes qui sont exécutées séquentiellement.
Une ligne de commande est constituée par les paramètres suivants:
- le numéro de la ligne de commande
- l'adresse de la loco
- le sens de marche
- la vitesse
- les fonctions à exécuter (F0 à F8)
- les accessoires à commander (aiguillages, feux de signalisation, ...)
- la durée de la ligne de commande entre 1 et 99 secondes.
La ligne de commande sera exécutée pendant la durée indiquée puis le programme exécutera la ligne de commande suivante jusqu'à la fin du programme.
La ligne de commande peut aussi se terminer par la réception d'un signal venant d'un détecteur de passage. Lorsque le signal est reçu, le programme passe à la ligne de commande suivante. Par exemple, la détection de passage à l'entrée en gare provoque l'arrêt du train (vitesse 0). Les durées de valeur supérieures à 100 sont utilisées pour la rétrosignalisation suivant la règle suivante: durée = 100 + N° du détecteur de passage (ou du canton).
Par exemple, une ligne de commande de durée 102 signifie que la ligne de commande sera exécutée jusqu'à ce que la loco passe devant le détecteur N°2. Lorsque le détecteur 2 est activé, le programme exécute la ligne de commande suivante.
Pour les adresses supérieures à 1, l'affectation des fonctions est la suivante:
- F0: commande de l'allumage des phares
- F1: mise en marche de la sonorisation
- F2: commande du sifflet ou klaxon
- F3: mise en marche du fumigène
- F4: commande du dételeur automatique
La commande des accessoires est effectuée par l'adresse 1 avec l'allocation suivante:
- F8: commande du servomoteur qui actionne les barrière du passage à niveau
- F4: commande de l'aiguille N° 1
- F5: commande de l'aiguille N° 2
- F6: commande de l'aiguille N° 3

9 Description du mode de commande du réseau avec ordinateur .

Dans ce mode de fonctionnement, l'ARDUINO est utilisé pour générer les trames DCC et gérer la rétrosignalisation. C'est le logiciel installé sur le PC qui génère les commandes. La liaison entre le PC et l'ARDUINO s'effectue par le cable USB L'ARDUINO utilise la communication série (Software Serial Library) pour communiquer avec le PC.

9.1 Mode manuel

9.1.1 Fonctionnalités

L'intérêt de ce mode est de pouvoir utiliser le logiciel
JMRI DecoderPro.
. En effet, JMRI DecoderPro est un logiciel libre qui permet de modifier les CV des décodeurs DCC et de piloter une loco avec un régulateur affiché sur l'écran du PC ou encore en WiFi avec un smartphone ou une tablette avec l'application "Engine Driver".

DecoderPro est compatible avec la plupart des centrales du commerce et en particulier avec le SPROG.
J'ai décidé d'utiliser les commandes du module SPROG pour piloter mon ARDUINO.
Il faut noter que je n'utilise DecoderPro avec l'ARDUINO que pour piloter une loco et pas pour programmer les CV. Je continue à utiliser le SPROG pour la programmation des CV.

Ainsi, dans DecoderPro, il suffit de sélectionner le SPROG dans la liste des centrales et de choisir comme port COM celui de l'ARDUINO pour pouvoir piloter une loco avec l'ARDUINO..

9.1.2 Commandes envoyées par DecoderPro sur le port série (port COM virtuel de l'ARDUINO)

Les commandes sont les suivantes:
- Adresse: lettre A + espace + adresse en décimal +point
Exemple de commande envoyée pour l'adresse 8: "A 8."
- Vitesse et sens de marche
commande envoyée pour la marche avant: ">vitesse."
commande envoyée pour la marche arrière: " Exemple vitesse 8 et marche avant: ">8."

- Commande des fonctions
C'est un peu plus compliqué
DecoderPro envoie la lettre O suivie de 3 octets codés en hexadécimal:
- l'octet d'adresse
- l'octet de commande des fonctions
- l'octet de controle
Par exemple pour tranmettre la fonction F1 à l'adresse 8, la séquence suivante est envoyée: "O 08 81 89"

9.1.3 Réception et traitement des commandes par l'ARDUINO

L'ARDUINO reçoit les commandes envoyées par DecoderPro sur l'interface série et transmet le signal DCC sur la sortie 13.

L'ARDUINO traite les octets reçus en ASCII . Par exemple, la valeur de l'octet reçu correspondant à l'envoi du caractère A a pour valeur 65. Pour les valeurs décimales, si la valeur envoyée est N (entre 0 et 9), la valeur de l'octet reçu par l'ARDUINO a pour valeur N + 48.

Pour la commande des accessoires, l'ARDUINO peut gérer jusqu'à 63 décodeurs d'accessoires
.La règle utilisée est la suivante:
- les accessoires reliés directement à l'ARDUINO sont commandés par l'adresse 1 avec les numéros 1 à 4 avec l'allocation suivante: les numéros 1 à 3 commandent les aiguilles 1 à 3 et le servo est commandé par le numéro 4.
- les accessoires commandés par un décodeur d'accessoires DCC doivent utiliser des numéros supérieurs à 4.

9.1.4 Paramétrage de JMRI DecoderPro

Lancer DecoderPro et choisir le SPROG comme centrale et indiquer comme port COM celui de l'ARDUINO.
Pour utiliser le régulateur, cliquer sur Actions puis sur NewThrottle.
Après avoir indiqué l'adresse de la locomotive, vous pouvez la piloter et utiliser les fonctions F0 à F8.
Pour commander les accessoires, cliquer sur Actions puis sur Turnout Control et indiquer le numéro de l'accessoire à commander.
Pour utiliser la commande par smartphone, cliquer sur Actions puis sur Start WiThrottle Server. Sur le smartphone, ouvrir l'application "Engine Driver".

9.1.5 Enregistrement d'un trajet

Il est possible d'enregistrer avec DecoderPro un trajet qui sera ensuite stocké sur l'ordinateur sous forme d'une feuille d'un classeur Excel. La procédure est décrite dans la rubrique logiciels. Le trajet peut ensuite être exécuté en automatique par le logiciel CARTO-DCC installé sur l'ordinateur.

9.2 Mode automatique

Dans ce mode, c'est le programme CARTO-DCC installé sur le PC qui gère les trajets. Les commandes envoyées par CARTO-DCC sur le port série vers l'ARDUINO sont constituées d'une suite d'octets.

Pour la commande des locos, les octets envoyés sont:
caractère "C" (octet de valeur 67)
adresse dizaines
adresse unités
caractère ">" si MAV ou "<" si MAR
vitesse dizaines
vitesse unités
fonctions du groupe 1 dizaines
fonctions du groupe 1 unités
fonctions du groupe 2 dizaines
fonctions du groupe 2 unités

Pour la commande des accessoires, les octets envoyés sont:
caractère "O"
octet d'adresse de l'accessoire en hexa
octet de commande de l'accessoire en hexa
octet de controle en hexa

Pour la rétrosignalisation, dans le sens ARDUINO vers PC, l'ARDUINO envoie au PC un nombre appelé retroc constitué de deux octets indiquant l'état des détecteurs d'occupation.
Ce nombre est calculé comme suit:
retroc = retro[1] + 2^ retro[2] +4^retro[3]+8^retro[4]
avec retro[i]=1 si le canton est occupé ou 0 si le canton est libre.

10. Description et téléchargement des logiciels

10.1 Logiciel pour l'ARDUINO MEGA

Ce logiciel gère les modes de fonctionnement décrits ci-dessus avec les restrictions suivantes
- mode manuel sans PC : commande d'une seule loco d'adresse comprise entre 3 et 99 avec les fonctions F0 à F4.
L'adresse 1 est réservée à la commande des accessoires (3 aiguilles et un servo)
- mode automatique sans PC: commande simultanée de deux locomotives en automatique et d'une loco en manuel avec les restrictions ci-dessus.Il est possible de céer jusqu'à 8 trajets différents.L'adresse 1 est réservée à la commande des accessoires (3 aiguilles et un servo)
- mode manuel avec PC : commande d'une seule loco d'adresse comprise entre 3 et 99 avec les fonctions F0 à F8 et commande des accessoires ( 4 accessoires connectés à l'ARDUINO et jusqu'à 200 accessoires reliés à des décodeurs d'accessoires DCC)
- mode automatique avec PC: commande simultanée de 4 locos et des accessoires avec le logiciel CARTO-DCC décrit ci-après.

Vous pouvez télécharger ce logiciel intitulé ARDUINO_MEGA_DCC_V1 en cliquant
ici.

10.2 Logiciels installés sur le PC

Ces logiciels sont constitués de classeurs EXCEL incluant des macros écrites avec le language VBA (Visual Basic for Applications). VBA est fourni avec Excel. Pour gérer l'accès au port COM virtuel de l'ARDUINO, les macros VBA utilisent le composant NETComm.

Il existe deux versions de ce composant: NetCommOCX pour Windows XP et NetcommW7 pour Windows Vista et 7.

J'ai développé deux logiciels pour la commande du réseau avec un ARDUINO:
- un logiciel intitulé ETA_DCC (Enregistrement d'un Trajet ARDUINO en DCC) qui permet d'enregistrer un trajet en mode manuel et aussi de créer le programme pour l'ARDUINO en mode automatique sans PC.En effet, la modification d'un programme ARDUINO pour piloter une loco en automatique est une opération fastidieuse car il faut écrire de nombreuses lignes de code pour créer un nouveau trajet.Il vaut mieux laisser Excel s'en charger.
- un logiciel intitulé CARTO-DCC (Commande Automatique d'un Réseau de Trains par Ordinateur) qui permet de commander en automatique jusqu'à 4 trains simultanément.

10.2.1 ETA-DCC

Pour créer un trajet, l'ordinateur doit être connecté à l'ARDUINO. Il suffit de piloter un train avec le régulateur ou la radiocommande et l'ordinateur enregistre automatiquement dans une feuille Excel les mouvements du train et crée le trajet.
Les tableaux Excel sont créés automatiquement par l'ordinateur en mode "enregistrement" mais il est tout à fait possible de les modifier par la suite.
Ensuite, une macro Excel écrite en VBA crée le programme qui sera téléchargé dans l'ARDUINO.
Il est possible de créer un itinéraire avec deux trajets, c'est à dire d'avoir deux trains en pilotage automatique sans l'ordinateur, plus un trosième en pilotage manuel par la radiocommande. La figure ci-dessous montre les donneées d'un tableau Excel correspondant à un trajet.


Chaque ligne du tableau correspond à une commande qui sera exécutée pendant un temps indiqué dans la colonne intitulée durée.La liste des colonnes est la suivante::
colonne A: adresse loco (l'adresse 1 est affectée à la commande des accessoires)
colonne B: sens de marche. ma=1 correspond à la marche avant et ma=0 correspond à la marche arrière
colonne C: vitesse entre 0 et 99
colonnes D à H: fonctions F0 à F4
colonne I: durée de la séquence entre 1 et 99 secondes. Les valeurs supérieures à 100 correspondent à l'attente du signal d'un détecteur de passage ou d'occupation de canton

La macro VBA lit les données du tableau Excel et génère le programme pour l'ARDUINO

Vous pouvez télécharger ce programme ETA-DCC .inclant les composants Netcomm.en cliquant ici.

Le dossier comprend
- le classeur Excel intitulé "enregistrement.xls" avec la macro VBA.
- les composants Netcomm à installer pour accéder au port COM de l'ARDUINO
- le programme pour l'ARDUINO MEGA intitulé "arduino_dcc.ino"
- Un mode d'emploi succint dans le dossier "mode d'emploi"

10.2.2 CARTO-DCC

Ce programme écrit en Visual Basic permet de piloter un réseau de trains miniatures par ordinateur en DCC. Il est décrit ici.
J'ai créé une version pour l'ARDUINO basée sur un classeur Excel avec une macro écrite en VBA. Ce logiciel s'utilise conjointement avec JMRI DecoderPro.

Ce logiciel se distingue des autres logiciels de pilotage de réseau en ce sens qu'il n'y a pas d'interface graphique avec création d'un dessin de réseau.
Pour créer un trajet, il suffit d'utiliser DecoderPro et de piloter un train avec un smartphone ou une tablette. L'ordinateur enregistre automatiquement les mouvements du train et crée un trajet qui peut ensuite être reproduit automatiquement par l'ordinateur avec CARTO-DCC. La prise en main du logiciel est ainsi très rapide. Il suffit de s'habituer à l'utilisation du smartphone et de Engine Driver.
Il est possible de se passer du smartphone en utilisant le régulateur de DecoderPro mais cette solution ne permet pas de suivre les trains sur le réseau, ce qui n'est pas pratique.

Les trajets créés automatiquement par l'ordinateur sont associés à des itinéraires. Un trajet correspond à la circulation d'un ou deux trains. Un itinéraire peut contenir jusqu'à 4 trajets. Il est donc possible de faire circuler simultanément jusqu'à 8 trains sur le réseau.

Les itinéraires sont décrits dans des tableaux Excel.
La figure ci-dessous montre les donneées d'un tableau Excel correspondant à un trajet.


Chaque ligne du tableau correspond à une commande qui sera exécutée pendant un temps indiqué dans la colonne intitulée durée.La liste des colonnes est la suivante::
colonne A: adresse loco
colonne B: sens de marche. ma=1 correspond à la marche avant et ma=0 correspond à la marche arrière
colonne C: vitesse entre 0 et 27
colonnes D à L: fonctions F0 à F8
colonne M: durée de la séquence entre 1 et 99 secondes. Les valeurs supérieures à 100 correspondent à l'attente du signal d'un détecteur de passage ou d'occupation de canton
colonne N: numéro de l'aiguillage à commander
colonne O: commande la position de l'aiguille (0 pour direct et 1 pour dévié)
Le numéro zéro de la colonne N est réservé pour la sonorisation du réseau

La macro VBA lit les données des feuilles Excel sélectionnées pour un itinéraire et exécute les commandes correspondantes.

Vous pouvez télécharger le progamme CARTO-DCC en cliquant ici.

Un mode d'emploi est fourni.



Page suivante


Page précédente


Retour page d'accueil