Notice de montage et d utilisation Réaliser une «Souris DCC avec une carte ARDUINO» compatible XpressNet Ce projet décrit la réalisation d une souris DCC utilisant le protocole XpressNet pour piloter des locomotives. La base du projet utilise une carte Arduino Mega ou compatible. Pour communiquer avec la centrale DCC, le protocole XpressNet utilisé pour ce projet est un bus de commande utilisé par les centrales Atlas, Lenz, Hornby, OpenDCC, Paco Canada, ZTC Controls, Viessmann, et Roco. Le bus XpressNet a été développé par Lenz. Il s agit de réaliser une souris esclave compatible avec les centrales Roco 10761, 10764, Z21, Z21, Viessmann Commander, : il faudra nécessairement disposer d une souris en maître Lockmaus ou Multimauss avec une centrale Roco 10761, 10764. 1. Présentation de la «Souris xpse» 1 a. Pourquoi ce nom?... 1 b. Quelles fonctionnalités?... 2 c. Limites de la «Souris xpse»... 3 2. Présentation de la carte ARDUINO 3 3. Configuration de la carte ARDUINO 4 a. Installation du logiciel ARDUINO... 4 b. Configuration... 4 c. Librairie à installer... 4 d. Programme Source... 5 4. Platine / Carte d extension - Shield 6 a. Schéma de la carte XpressNet... 6 b. Circuit imprimé de la carte XpressNet... 7 c. Lecteur(s) de carte micro SD... 9 d. Paramétrage du programme... 9 e. Programmer / Téléverser... 10 f. Equipements... 11 5. Fonctionnement de la «souris xpse» 11 a. Initialisation... 11 b. Pilotage d une locomotive... 13 c. Choisir une locomotive à partir de la bibliothèque14 d. Choisir une locomotive à partir du CV1... 14 e. Créer le fichier de bibliothèque... 14 6. Dépannage 16 a. Carte ARDUINO Mega 2560 reconnue?... 16 b. Débogage à l aide du moniteur série... 16 c. Erreur lors de la compilation... 16 d. Problème de connexion... 16 1. Présentation de la «Souris xpse» a. Pourquoi ce nom? La Section Modélisme de l UAICF Nevers-Vauzelles a en projet depuis plusieurs années de piloter une locomotive en DCC via un vrai pupitre d engin SNCF. Ce sera finalement un pupitre de TGV PSE. Il faut donc relier le pupitre à la centrale DCC, c est à dire concevoir une souris DCC un peu particulière. La centrale utilisée est une centrale Roco. En réalisant le prototype de cette commande sur la base d une carte ARDUINO, ce projet a aussi donné naissance à un autre projet : réaliser une souris «esclave» compatible avec une centrale DCC utilisant le protocole de communication XpressNet entre la centrale et les souris. Son nom de code : «Souris xpse» pour Xpressnet, et TGV Paris Sud-Est. UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 1/16
b. Quelles fonctionnalités? La Souris xpse version 1.A présente les caractéristiques suivantes : Ecran LCD 16 x 2 ; Clavier 12 touches + 4 boutons poussoirs ou 16 touches ; Contrôle de la vitesse avec un bouton rotateur avec bouton poussoir ; Lecteur de carte micro SD ; Bouton d'arrêt d'urgence ; Connecteur R11/12 ; Commande de la locomotive dans la plage des adresses CV1 de 1 à 99 (adresses courtes) ; Contrôle de la fonction d'éclairage et des fonctions supplémentaires de F1 à F28 ; Visualisation du nom de la locomotive, du CV1, de la vitesse, du sens de marche ; Visualisation de l état de toutes les fonctions sur un écran LCD ; Bouton de mise à «0» de la vitesse de la locomotive pilotée ; Inversion du sens de marche avec deux touches du clavier ; Sélection de la locomotive avec le CV1 de la locomotive ; Sélection de la locomotive dans une bibliothèque avec affichage du nom et du CV1 de la locomotive ; Simplification du paramétrage du nom et adresse des locomotives : chargement à partir d un fichier CSV, TXT lu depuis une carte micro SD ; Sélection de l'adresse XpressNet de la console entre 1 et 31 ; La bibliothèque de locomotives a été testée avec 50 adresses de locomotives. Le nombre d adresses peut être étendu au-delà de 50 adresses sans saturer la mémoire de la carte ARDUINO. Le lecteur de carte micro SD est optionnel : si aucune carte SD n est trouvée, le programme charge l adresse CV1 paramétrée par défaut dans le programme ARDUINO. La bibliothèque ne comprend alors que la locomotive paramétrée par défaut. L utilisation de la carte micro SD permet de changer les noms des locomotives de la bibliothèque sans avoir besoin de reprogrammer la carte ARDUINO. Avec des évolutions, ce projet à base d un ARDUINO Mega permet de proposer d autres fonctionnalités : Utilisation d un écran LCD 20 x 4 ; Commande de la locomotive avec la plage des adresses CV1 de 1 à 9999 ; Sélection de la bibliothèque de locomotives au démarrage ; Pilotage des aiguillages ; UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 2/16
c. Limites de la «Souris xpse» La «souris xpse» ne pourra pas être utilisée comme une souris maître avec une centrale Roco 10761, 10764. La «souris xpse» se connecte à une centrale Roco Z21 ou z21 ou une centrale Viessmann Commander via le port Xbus. La souris devrait fonctionner avec d autres centrales utilisant le protocole XpressNet. Lorsque les fonctions ou vitesses d une locomotive sont changées via une autre souris ou commande, les informations sont reçues par la «souris xpse» et sont affichées sur l écran LCD. Remarque : Il a été constaté que les Fonctions F13 à F28 ne remontaient pas via une centrale Roco lorsque celles-ci sont modifiées via une autre souris. 2. Présentation de la carte ARDUINO Les cartes ARDUINO sont des cartes électroniques basées autour d'un microcontrôleur Atmega du fabricant Atmel, dont le prix est relativement bas pour l'étendue possible des applications. Le logiciel de programmation est gratuit et compatible Windows, Mac et Linux. Ce microcontrôleur peut être programmé pour analyser et produire des signaux électriques, de manière à effectuer des tâches très diverses pour le pilotage de divers équipements. Les modules ARDUINO trouvent pleinement leur place dans le monde du modélisme ferroviaire pour piloter des locomotives, des accessoires, des feux de signalisation, Les cartes comprennent un certain nombre d entrées / sorties analogiques et numériques paramétrables dans un langage proche du «langage C». Ces entrées / sorties sont accessibles via des connecteurs femelles (au pas de 2,54 mm). On peut ajouter des platines optionnelles (ou carte d extension) qui permettent de leur adjoindre de multiples possibilités et interfaces supplémentaires. On peut notamment développer des interfaces pour piloter du «matériel» en digital. De nombreux sites proposent à la vente les cartes ARDUINO. Pour le projet de pilotage d accessoires (aiguillages), on utilisera une carte ARDUINO MEGA 2560 qui coûte environ 40 ou une carte compatible. L intérêt de l ARDUINO est de pouvoir personnaliser les programmes et de pouvoir réaliser des kits «maison» à un prix très raisonnable. Pour programmer la carte, il faut disposer d un ordinateur (PC, Mac, Linux) et d un cordon USB. La carte fonctionne avec une alimentation externe lorsqu elle n est pas auto alimentée par le port USB. Pour le projet «Souris xpse», la carte sera alimentée par la prise RJ11/12 reliée à la centrale DCC. UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 3/16
3. Configuration de la carte ARDUINO a. Installation du logiciel ARDUINO Il faut télécharger la dernière version du logiciel ARDUINO disponible sur un site officiel http://www.arduino.cc/en/main/software ou http://www.arduino.org/downloads Le programme fonctionne sous Windows, Macintosh et Linux. Il faut suivre les conseils d installation. Il n y a pas de difficultés particulières pour l installation. L ARDUINO est un Logiciel Libre et Matériel Libre sous license Creative Commons paternité, non commercial et licence contaminante. Toute liberté est permise à qui voudrait faire évoluer le matériel ou la plate-forme de programmation dans le respect de la licence. 1 - Télécharger le logiciel ARDUINO 2 - Dé zipper le fichier téléchargé 3 - Brancher l ARDUINO à l ordinateur avec le port USB 4 - Lancer le programme «arduino.exe» 5 - Aller dans le gestionnaire de périphérique pour vérifier que la carte a bien été reconnue (Port COM) 6 Si la carte n a pas été reconnue, mettre à jour le pilote : les drivers sont présents dans le répertoire «Drivers» du dossier Arduino. b. Configuration Pour la configuration et la programmation des cartes ARDUINO, il existe de nombreux tutoriaux disponibles sur Internet comme : http://fr.openclassrooms.com/sciences/cours/arduino-pour-biencommencer-en-electronique-et-en-programmation Lors du lancement du programme ARDUINO, il faut désigner le type de carte utilisée (Mega 2560) et cocher le numéro du port COM (USB- Série) où est connectée la carte. Ces paramètres sont modifiés depuis le menu «Outils». c. Librairie à installer Pour utiliser la carte ARDUINO MEGA 2560 avec le protocole XpressNet, il faut télécharger et installer plusieurs bibliothèques gratuites : SD : Lecture de fichiers sur une carte mémoire EEPROM : Mémoire SD : Carte mémoire SD ; Keypad : Clavier 16 touches ; LiquidCrystal : Ecran LCD 16 x 2 ou 20 x 4 ; XpressNet : Protocole XpressNet. UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 4/16
Les librairies décompressées doivent être déposées dans le répertoire «librairies» où est installé le programme ARDUINO ou dans le répertoire «\Mes documents\arduino\libraries». La librairie «EEPROM» est proposée par défaut avec l installation du logiciel Arduino. L EEPROM est une mémoire «morte» utilisée pour enregistrer des informations qui ne doivent pas être perdues lorsque l'appareil qui les contient n'est plus alimenté en électricité. Elle est utilisée pour enregistrer l adresse XpressNet de la souris. Les librairies «LiquidCrystal» et «SD» sont installées par défaut avec le programme ARDUINO. La librairie «Keypad» peut être téléchargée à l adresse : http://playground.arduino.cc/uploads/code/keypad.zip La librairie «XpressNet» peut être téléchargée depuis le site http://sourceforge.net/projects/pgahtow/files/ puis il faut décompresser l archive «XpressNet.zip». Le répertoire «XpressNet.zip» est situé à l adresse : http://sourceforge.net/projects/pgahtow/files/arduino%20%28v1.0%29%20libaries/ d. Programme Source Le programme proposé par la section Modélisme de l UAICF Modélisme Nevers-Vauzelles doit être chargé dans la carte ARDUINO Mega ou compatible à l aide d un cordon USB. Le code source de la dernière version du projet peut être téléchargé sur le site Internet http://modelisme58.free.fr UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 5/16
4. Platine / Carte d extension - Shield Une platine ou carte d extension spécifique est composée de plusieurs éléments. Les éléments viennent s embrocher ou se raccorder à la carte ARDUINO. Il est important de respecter les connections et les polarités. a. Schéma de la carte XpressNet UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 6/16
b. Circuit imprimé de la carte XpressNet Connecteurs écran LCD 14 1 Pot. Encodeur Connecteur RJ /11/12 Bouton RESET Alim 3,3 V Connecteur pour lecteur carte SD Connecteur RJ 11/12 si déporté Connecteur pour le clavier, bouton d arrêt d urgence et carte SD Implantation des composants sur la platine de la carte ARDUINO Mega 2560 UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 7/16
Carte côté pistes de la platine de la carte ARDUINO Mega 2560 La souris «xpse» sera reliée à la centrale DCC par un câble R11 (4 fils) ou R12 (6 fils) présent sur la carte ou via le connecteur déporté. Pour réaliser un câble R11 (4 fils) ou RJ12 (6 fils), il faut une pince à servir. A défaut de connecteur RJ11 ou RJ12 disponible, les fils d une rallonge téléphonique peuvent être directement soudé sur la carte. Les boutons poussoirs (encodeur, RESET, arrêt d urgence) commutent sur la masse (GND). UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 8/16
c. Lecteur(s) de carte micro SD Le lecteur de carte micro SD peut être acheté auprès de revendeurs spécialisés pour une somme modique ou réalisé à l aide d un adaptateur de carte micro SD : http://www.zem.fr/diy-fabrication-shield-microsd-arduino/ Remarque : La tension d alimentation d un lecteur de carte micro SD est de 3,3 Volts. Une broche a été prévue sur la carte du circuit imprimé. d. Paramétrage du programme Il faut ouvrir le programme avec le logiciel ARDUINO prévu à cet effet. Borne de l Arduino recevant les informations de la centrale // XpressNetClass XpressNet; #define XNetSRPin 3 // Max485 Bus du driver relié à la borne de l'arduino Nom du fichier de la bibliothèque des locomotives char NomFichier[] ="meslocos.csv"; Disposition des touches du clavier numérique Disposition des touches du clavier sur le pupitre --------------- 7 8 9 C 4 5 6 D 1 2 3 E A 0 B F --------------- // Clavier 16 touches char hexatouches[colonnes][lignes] = { {'3','7','B','F'}, {'2','6','A','E'}, {'1','5','9','D'}, {'0','4','8','C'} }; byte ColBroches[Colonnes] = {35, 37, 39, 41 }; // Bornes de l ARDUINO byte LigBroches[Lignes] = {43, 45, 47, 49 }; // Bornes de l ARDUINO Ecran LCD LiquidCrystal lcd (2, 4, 8, 9, 10, 11); // Bornes de l ARDUINO #define NbreLigneLCD 2 #define NbreColonneLCD 16 Bouton poussoir de l encodeur # define Bouton 34 // Borne Arduino pour le bouton de l'encodeur rotatif Nombre maximum de locomotives dans la bibliothèque #define NbreLocosMaxi 50 UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 9/16
Nombre maximum de caractères pour le nom d une locomotive #define NbreCaractereMaxi 12 Valeur du CV1 pour la locomotive par défaut #define DCCDefault 3 // Valeur du CV1 pour la locomotive par défaut Valeur du pas de l encodeur rotatif (sélection de la vitesse uniquement) #define PasPot 5 // Pas du potentiomètre pour 128 crans - Si appuyé, pas de 1 en 1 Une fois les éventuelles modifications apportées, il faut télécharger le programme dans la carte ARDUINO MEGA. e. Programmer / Téléverser Lorsque le programmer est prêt, il faut le téléverser à l aide d un cordon USB raccordant l ordinateur et la carte ARDUINO. Il faut bien veiller à sélectionner la carte «Arduino Mega 2560» dans le menu «Outils» ainsi que le port «COM» correspondant. Le bouton «Moniteur Série» permet d afficher la configuration de la carte au démarrage et de visualiser les échanges d information. Ceci est très utile pour identifier des dysfonctionnements et de cibler l origine d une panne. Dans le moniteur série, il faut sélectionner la vitesse de communication à «9600» bauds. UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 10/16
f. Equipements La «Souris xpse» comprend au minimum : un écran LCD (16 x 2), un clavier 16 touches ou 12 touches + 4 boutons poussoirs, un bouton encodeur avec bouton poussoir. En option, on peut ajouter : un bouton poussoir pour l arrêt d urgence, un bouton poussoir pour le RESET, un lecteur de carte micro SD. 7 8 9 Annul. 4 5 6 Biblio. 1 2 3 CV1 * 0 # Fonction Arrêt d Urgence RESET Face avant la «Souris xpse» 5. Fonctionnement de la «souris xpse» a. Initialisation Il est possible régler la luminosité de l écran LCD à l aide du potentiomètre présent sur la carte. Au démarrage, l écran LCD s affiche avec le numéro de la version du projet ARDUINO. S o u r i s X p r e s s N e t U A I C F 5 8 v 1. A Si la carte micro SD est connectée et reconnue, le message suivant s affiche : C a r t e O K m e s l o c o s. c s v Le nom du fichier est celui paramétré dans le programme ARDUINO. UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 11/16
Si le module de la carte mico SD n est branché, ou la carte micro SD non insérée ou le fichier non reconnu, les messages suivants apparaissent : P b C a r t e S D m e s l o c o s. c s v P b C a r t e S D P a s B i b l i o. L o c o La bibliothèque de locomotives n est alors pas chargée. Le nom de la locomotive par défaut sera alors utilisée (nom définie dans le programme Arduino). S affiche ensuite l adresse XpressNet de la souris pour communiquer avec la centrale DCC : la valeur doit être comprise entre 1 et 31. Elle est enregistrée dans l EEPROM (mémoire morte). Elle est conservée en mémoire lors de la mise hors tension de la souris. S o u r i s X p r e s s N e t A d r e s s e X N e t : 1 0 Pour modifier l adresse de la souris, il faut maintenir enfoncé le bouton poussoir de l encodeur dès la mise sous tension de la souris. Relâcher le bouton poussoir lors de l affichage du message cidessus. Le message suivant apparait avec le curseur clignotant. Changer la valeur de l adresse à l aide du bouton rotatif : A d r e s s e X N e t? = 1 0 Valider la nouvelle valeur à l aide du bouton poussoir de l encodeur. N v e l X N e t = 9 F a i r e u n R E S E T.. Pour annuler la saisie, utiliser la touche «Annul.». N o M o d i f. X n e t! F a i r e u n R E S E T.. Réinitialiser la souris pour que les modifications soient prises en compte. Le nombre de locomotives chargées dans la bibliothèque s affiche : M a B i b l i o t h e q u e 3 9 l o c o s UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 12/16
S affiche ensuite la locomotive sélectionnée par défaut lors du démarrage de la souris : B B 6 7 5 8 1 5 8 < 0 % - - - - - - - - - - La première ligne de l écran LCD comprend le nom de la locomotive enregistrée dans la bibliothèque (carte micro SD ou programme ARDUINO) et son adresse (CV1). La deuxième ligne affiche l état de la vitesse, du sens de marche et des fonctions F0 à F28 de la locomotive correspondante. Si des fonctions sont activées ou une consigne de vitesse donnée par une autre souris, les consignes sont affichées sur la deuxième ligne : B B 6 7 5 8 1 5 8 7 5 % > * - - - - - - - b. Pilotage d une locomotive Le bouton encodeur rotatif permet de faire varier la vitesse de la locomotive de 0 à 100% de la vitesse maximale de la vitesse. En appuyant en même temps sur le bouton poussoir de l encodeur, la variation de la vitesse est plus précise. Les touches «A» ou «*» et «B» ou «#» permettent de changer le sens de marche de la locomotive. Les chiffres 0 à 9 permettent d activer ou désactiver les fonctions «F0» à «F9». En appuyant sur la touche «F» ou «Fonction», on change la sélection du groupe de fonction : «F10» à «F19» avec curseur affiché puis «F20» à «F28» avec curseur clignotant. B B 6 7 5 8 1 5 8 7 5 % > * - - - - - - - f0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Fonction «F1» à «F10» activée Fonction «F11» à «F20» activée Fonction «F21» à «F28» activée Quand aucune fonction «F1» à «F28» n est activée, un petit point apparait. Remarque : Il a été constaté que les Fonctions F13 à F28 ne remontaient pas via une centrale Roco lorsque celles-ci sont modifiées via une autre souris. UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 13/16
c. Choisir une locomotive à partir de la bibliothèque En appuyant sur la touche «D» ou «Biblio.», on accède à la liste des locomotives enregistrées dans la bibliothèque. Le curseur clignote alors. B i b l i o. L o c o? B B 6 7 5 8 1 5 8 Le bouton encodeur permet de faire défiler la liste des locomotives avec l adresse du CV1. En appuyant sur le bouton poussoir de l encodeur rotatif, la locomotive est sélectionnée et l écran de contrôle correspondant s affiche. Une pression sur la touche «C» ou «Annul.» permet d annuler la sélection en cours et de revenir à l écran de contrôle de la locomotive. Une pression sur la touche «E» ou «CV1» permet d accéder au choix de la locomotive via son adresse CV1. d. Choisir une locomotive à partir du CV1 En appuyant sur la touche «E» ou «CV1», on accède au choix de la locomotive via son adresse CV1. A d r e s s e D C C? C V 1 = 3 En appuyant sur le bouton poussoir de l encodeur rotatif, le CV1 est sélectionné et l écran de contrôle de la locomotive s affiche : Si le CV1 correspond au nom d une locomotive de la bibliothèque, le nom de la locomotive s affiche. Si le CV1 ne correspond pas à un nom d une locomotive de la bibliothèque, un nom par défaut s affiche : «Locomotive». Une pression sur la touche «C» ou «Annul.» permet d annuler la sélection en cours et de revenir à l écran de contrôle de la locomotive. En appuyant sur la touche «D» ou «Biblio.», on accède à la liste des locomotives enregistrées dans la bibliothèque. e. Créer le fichier de bibliothèque Le fichier est un document «texte» avec l extension, «CSV» ou «TXT». Les lignes du fichier sont constituées comme suit : «locomotive ; 3 ; 128» avec le nom de la locomotive, puis l adresse du CV1 puis les crans (128 par défaut). Le fichier peut être réalisé avec un logiciel de tableur comme «Excel» ou «LibreOffice». UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 14/16
Le fichier doit être enregistré au format TXT ou CSV et copié le fichier sur la carte SD à l aide d un lecteur adapté. Entête du tableau Ligne en commentaire Saisie des données sous Excel Visualisation des données avec le logiciel «Bloc-notes» La première ligne contient l entête du tableau. Si une ligne commence par le caractère «/», la locomotive est ignorée. L ordre des locomotives dans la bibliothèque correspond à l ordre des locomotives enregistrées dans le fichier. UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 15/16
6. Dépannage Lors de l installation et de la configuration de ce kit, on peut rencontrer plusieurs problèmes. Vous trouverez ci-après quelques points à vérifier. a. Carte ARDUINO Mega 2560 reconnue? Dans le programme «Arduino», il faut veiller à ce que la carte ARDUINO soit reconnue et sélectionner le port «COM» pour programmer ou lire les informations provenant de la carte. b. Débogage à l aide du moniteur série L utilisation du moniteur série apporte de précieuses informations sur le fonctionnement de la carte. Il faut bien sélectionner la vitesse de communication : «9600 baud». c. Erreur lors de la compilation Si une erreur se produit lors de la compilation, il peut y avoir plusieurs origines : La carte ARDUINO Mega 2560 n est pas sélectionnée ; Une erreur dans le code de programmation : il manque une parenthèse, une virgule, un point-virgule, Une bibliothèque n est pas installée correctement. Pour vérifier que les bibliothèques sont bien installées, il est conseillé d ouvrir un programme de démonstration à partir du menu «Fichier ---> Exemples». Compiler le programmer pour vérifier s il n y a pas d erreurs. d. Problème de connexion Si la carte Arduino ne permet pas de commander la centrale DCC, il faut vérifier si : Pas de locomotive ayant l adresse sélectionnée (CV1) sur les voies de circulation ; Centrale DCC non connectée ; Un conflit d adresse du protocole XpressNet ; UAICF Nevers-Vauzelles Section Modélisme - http://modelisme58.free.fr 19 janvier 2016 16/16