# Programme CARTO-DCC pour centrale ARDUINO

1. Introduction
Ce logiciel écrit en Python permet de piloter un petit réseau de trains miniatures par ordinateur en DCC avec une centrale à base d’Arduino Uno ou Nano.
Il concerne la centrale DCC à base d'Arduino décrite ici.
La centrale DCC inclut un système de rétrosignalisation qui permet à l’ordinateur de connaître en temps réel l’état du réseau : présence ou absence d’un train sur une section de voie. Le réseau est découpé en cantons (sections de voie isolées électriquement).
Pour chaque canton :
- Un capteur détecte la présence d’un train.
- L'Arduino lit l’état du capteur et transmet l’information à l’ordinateur
- Le logiciel de commande CARTO-DCC adapte le trafic en conséquence.
Pour réduire le nombre de fils entre la centrale et les cantons, les détecteurs d'occupation peuvent être intégrés à la centrale DCC. Ainsi, il n'y a qu'un seul fil entre la centrale et chaque canton isolé.
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 du réseau.
Pour créer un trajet, il suffit de piloter un train avec un smartphone et l'ordinateur enregistre automatiquement les mouvements du train et crée un itinéraire qui peut ensuite être reproduit automatiquement par l'ordinateur. La prise en main du logiciel est ainsi très rapide.
Les itinéraires créés automatiquement par l'ordinateur sont associés à des trajets. Un itinéraire correspond à la circulation d'un train. Un trajet peut contenir jusqu'à 4 itinéraires. Il est donc possible de faire circuler simultanément jusqu'à 4 trains sur le réseau.
Les itinéraires sont décrits dans des tableaux OpenOffice Calc. OpenOffice est un logiciel gratuit tout à fait semblable à Excel. C’est un tableur facile à utiliser et ses fichiers sont simples à échanger.
En fait, le logiciel CARTO-DCC n'utilise pas directement les feuilles OpenOffice Calc. Il utilise des fichiers texte (.txt) pour écrire et lire les itinéraires qui sont plaçés dans un dossier intitulé "temp". Lorsqu'on modifie une feuille d'un classeur OpenOffice, à la fermeture du classeur, une macro écrite avec le langage Basic d'OpenOffice crée automatiquement les fichiers .txt qui sont plaçés dans le dossier "temp".
2. Modes de fonctionnement
Le logiciel offre 2 modes de fonctionnement:
- Mode Enregistrement d'un trajet
Dans ce mode, on pilote une loco avec un smartphone et l'ordinateur enregistre tous les mouvements de la loco.
Ce mode permet aussi de vérifier que le trajet a été correctement enregistré par l'ordinateur. Si ce n'est pas le cas, il faut recommencer l'enregistrement. Après vérification du trajet, on le transfère dans un itinéraire. On choisit le numéro de l'itinéraire et on donne un numéro au trajet ( entre 1 et 10). Le trajet peut être enregistré comme unique ( il ne sera exécuté qu'une seule fois) ou en boucle.
- Mode Exécution des itinéraires
C'est le mode de fonctionnement normal du logiciel qui permet de faire circuler jusqu'à 4 trains simultanément.
Un trajet peut comporter de un à 4 itinéraires et un itinéraire est exécuté par un train.
4. Principales caractéristiques de CARTO-DCC
Centrales compatble: ARDUINO UNO ou NANO
Rétrosignalisation: détecteurs d'occupation de cantons intégrés à la centrale
commande manuelle des trains: smartphone Android ou tablette en Bluetooth
Nombre de trains en fonctionnement simultané: 4
Nombre maximal de détecteurs d'occupation: 8
Nombre de détecteurs par canton: 1 (on peut même avoir des cantons sans détecteur. Par exemple, on peut tout à fait réaliser un va et vient automatique avec un seul détecteur)
Nombre maximal de trajets: 10
Nombre maximal d'itinéraires (trains) associés à un trajet: 4
5. Description des tableaux des itinéraires
Les itinéraires sont enregistrés dans des classeurs Excel qui sont remplis automatiquement par l'ordinateur en mode Enregistrement.
Chaque classeur OpenOffice Calc correspond à un trajet qui est constitué de un ou plusieurs itinéraires (4 au maximum) décrits dans les 4 feuilles du classeur.
Chaque feuille correspond un à itinéraire qui est effectué par un train de manière séquentielle.
Vouvez voir ci-dessous un exemple d'une feuille d'un classeur OpenOffice Calc.
Chaque ligne d'une feuille de calcul correspond à une séquence exécutée par un train pendant une durée comprise entre 1 et 99 secondes indiquée dans la colonne M.
Les colonnes A à L contiennent les commandes du train: adresse, sens de marche (MA=1 ==> marche avant, MA=2 ==> marche arrière), vitesse, fonctions F0 à F8.
La colonne M contient la durée de la séquence qui sera exécutée entre 1 et 99 secondes. Les valeurs supérieures à 100 sont utilisées pour la rétrosignalisation.
La rétrosignalisation utilise les commandes de durée entre 101 et 108.
durée=101 ==> la ligne de commande est exécutée jusqu'à l'activation du détecteur 1
durée=102 ==> la ligne de commande est exécutée jusqu'à l'activation du détecteur 2
etc...
durée=108 ==> la ligne de commande est exécutée jusqu'à l'activation du détecteur 8
durée=200 ==> fonctionnement en boucle
La colonne N contient le numéro de l'aiguillage à activer et la colonne O contient la position de l'aiguille (0 = directe et 1 = déviée).
Les trajets sont exécutés simultanément, ce qui permet de commander jusqu'à 4 trains simultanément.
Chaque classeur OpenOffice Calc contient une macro qui génère automatiquement des fichiers texte (extension .txt) à la fermeture du classeur. Les fichiers texte ( un fichier par feuille Excel) sont stockés dans le dossier intitulé "temp".
6. Description du logiciel cartodcc
Le programme cartodcc.py écrit en Python vient lire les fichiers texte stockés dans le dossier "temp" et exécute séquentiellement chaque ligne de commande.
Un trajet peut comporter jusqu'à 4 itinéraires, ce qui signifie que l'on peut faire circuler 4 trains simultanément (une feuille d'un classeur OpenOffice est affecté à chaque train).
Pour chaque trajet ,le logiciel lit le fichier " trajet01.txt " correspondant au trajet 1 sélectionné et détermine le nombre d'itinéraires associés à ce trajet.
Puis il ouvre les fichiers dans le dossier "temp" décrivant les trajets. ( trajet01loco1.txt, trajet02loco2.txt,...)
Les commandes de locomotives sont envoyées au module Arduino par les fonctions intitulées loco commande vitesse et sens de marche, loco commande des fonctions du groupe 1, loco commande des fonctions du groupe 2.
La fonction intitulée commande des aiguilles envoie à l’Arduino les commandes des décodeurs d'accessoires (commande des aiguilles). Il lit le numéro de l'aiguille dans les cellules de la colonne "numag" et la postion de l'aiguille dans les cellules de la colonne "POSAG" ( 0 correspond à la position directe et 1 correspond à la position déviée)
7. Sonorisation du réseau
La sonorisation permet par exemple de diffuser des annonces dans les gares et de sonoriser un passage à niveau.
La sonorisation peut être réalisée de deux façons différentes:
- Utilisation de modules DCC qui ont une adresse DCC comme une locomotive et qui permettent de choisir jusqu'à 8 sons différents. Vous trouverez la description d'un tel module en cliquant ici.
- Utilisation d'une enceinte Bluetooth
Il est aussi possible de sonoriser le réseau en insérant une petite enceinte Bluetooth dans un bâtiment ou sous le réseau. On peut ainsi diffuser par exemple des annonces en gare.
Dans ce cas, il faut utiliser le logiciel intitulé cartodccv2.exe.
Avec ce logiciel, les fichiers sonores au format .wav sont stockés dans le dossier "sound" et doivent être dénommés 1.wav, 2.wav, etc...Pour exécuter un son, il faut taper son numéro dans la cellule de la feuille de l'itinéraire dans la colonne "sono".
Le son démarre au début de l'exécution de la ligne de commande de la feuille de calcul.
Le PC doit évidemment avoir une fonction Bluetooth, sinon il faut ajouter une clé USB-Bluetooth.
Voici la procédure à suivre pour connecter une enceinte Bluetooth au PC.
Il faut allumer l’enceinte Bluetooth.
Sur votre PC, sélectionnez Démarrer > Paramètres > Périphériques > Bluetooth & d'autres appareils >
Ajouter bluetooth ou un autre appareil > Bluetooth. Choisissez l'appareil et suivez les instructions supplémentaires, le cas échéant, puis sélectionnez OK.
8. Lancement du logiciel
Vous devez connaître le numéro du port COM de l'Arduino. Pour celà, ouvrir le dossier intitulé CARTO-DCC-ARDUINO puis le dossier intitulé cartodccv1 puis le dossier intitulé Documentation puis le dossier intitulé port_com puis cliquez sur le fichier intitulé "liste_ports.exe"
Ouvrir le dossier intitulé CARTO-DCC-ARDUINO puis le dossier intitulé cartodccv1 puis cliquez sur le fichier intitulé "portcom.txt" et entrez le numéro du port COM de l’Arduino.
Ceci n'est à faire que lors de la première utilisation.
Ensuite, cliquez sur "carto-dcc-lenz.exe" pour lancer le logiciel.
9. Enregistrement d'un itinéraire
Dans ce mode, on pilote une loco avec le smartphone et l'ordinateur enregistre tous les mouvements de la loco.
Pour activer le mode enregistrement, lancer le logiciel en cliquant sur "carto-dcc-lenz.exe" puis taper 1 pour enregistrer un itinéraire.
Entrer le numéro du premier détecteur d'occupation qui sera rencontré dans l'itinéraire, puis le numéro du deuxième détecteur Taper 0 s'il n'y a pas de détecteur à utiliser.
Puis ouvrir l'application "BLUEDCCV3" sur le smartphone, se connecter à la centrale, entrer l'adresse de la loco, appuyer sur valider et faire circuler la loco. Lorsque l'itinéraire est terminé, entrer l'adresse 99, ce qui termine l'enregistrement.
L'itinéraire est enregistré dans un fichier temporaire intitulé "temp.txt" et situé dans le dossier "temp".
Il faut alors le transférer dans une feuille d'un classeur OpenOffice Calc.
Pour cela copier les cellules du fichier temp.tx qui décrivent l'itinéraire. Puis ouvrir la feuille du classeur OpenOffice correspondant au trajet souhaité (par exemple trajet2loco1) et cliquer sur la cellule ligne 6, colonne A.
Puis cliquer sur édition, puis sur Collage spécial puis sur OK. Une fenêtre s'ouvre alors et dans "options de séparateur" il faut cocher "Virgule" puis cliquer sur OK. C'est terminé.
10. Exécution d'un trajet
Pour exécuter un trajet, voici les opérations à effectuer.
Lancer le logiciel en cliquant sur "carto-dcc-lenz.exe" puis taper 0 pour exécuter un trajet.
Puis entrer le numéro du trajet à exécuter.
C'est tout, le trajet va s'exécuter.