Annonces en gare avec RFID et DCC

Le module MAM

Ceci est le fruit d'une rencontre entre Xavier et Philippe d'où ont germés les idées pour développer ensemble ce module inédit.

MAM2 est une évolution du module MAM1 avec l'ajout d'une interface SPI pour communiquer avec les modules RFID.
L'idée est de diffuser des annonces vocales en gare personnalisées en fonction du train, de sa provenance et de sa destination en utilisant la technologie RFID associé au DCC. Les étiquettes RFID, appelées aussi NTag RFID, sont lues quand elles passent devant un capteur RFID. Le lecteur RFID envoie une onde radio à 13,56 MHz qui anime l'étiquette RFID ce qui lui permet de lire son contenu quand elle passe à proximité (moins de 2cm). Les étiquettes RFID sont reprogrammables à partir du lecteur RFID et elles disposent d'une mémoire permanente. Les étiquettes RFID autocollantes ultra fines mesurent 10x20mm et contiennent 144 octets ou plus selon les modèles. Elles sont collées sous les locos pour être lues quand celles-ci passent au dessus de l'antenne du lecteur RFID.



Le module MAM-RFID

Le projet est divisé en deux modules :

  • MAM-RFID lit les étiquettes RFID et envoie un message à MAM-Gare.
  • MAM-Gare reçoit les messages des modules MAM-RFID et diffuse les annonces vocales personnalisées correspondantes. Il peut aussi exécuter des commandes DCC puisque c'est un décodeur DCC.

Ces messages sont transmis en utilisant le bus I2C qui permet d'adresser individuellement chaque module avec un minimum de fils sur plusieurs mètres.


Le module MAM-RFID

Ce module lit les étiquettes RFID au moyen d'un capteur RFID dissimulé sous la voie. Ce capteur est relié au module qui lui est proche avec un bus SPI sur 8 fils qui est beaucoup plus efficace qu'un bus I2C dans ce cas. Le module est relié avec MAM-Gare en utilisant un bus I2C sur 4 fils (SCL, SDA, GND, +5V) qui alimente aussi ce module. La distance qui sépare ces deux modules peut atteindre 5m. Un Arduino Nano gère toutes les fonctions et fournit aussi un bit "Présence" actif bas et destiné à un bus de retro-signalisation. Il contient un décodeur DCC pour lire les messages DCC qui circulent sur les rails et qui entrent par le connecteur J10. Quand une étiquette RFID passe sur le capteur RFID, celui-ci lit les données contenu dans la mémoire de l'étiquette RFID. La sortie "Présence" sur J17-3 passe à zéro dès que l'étiquette RFID se trouve sur le lecteur RFID et pendant 2 secondes après qu'elle soit retirée. L'analyse de la position des aiguillages conjointement avec la lecture du contenu de l'étiquette RFID sont utilisés pour élaborer un message destiné à MAM-Gare qu'il transmettra sur le bus I2C qui les relie. Le bus USB de l'Arduino Nano permet de le programmer facilement avec l'IDE Arduino. En connectant son Moniteur sur le port USB correspondant (115200 baud) on peut surveiller le fonctionnement du module.


Le capteur RFID mini RC522

Le capteur RFID mesure 37x25mm avec une épaisseur de 4mm. Le coté de l'antenne située au dos du circuit imprimé se place directement sous la voie à une distance de 4m de la gare en H0. Un train à l'échelle H0 qui roule en moyenne à 63km/h parcourt 20cm/s. Une annonce peut durer 20s ce qui représente 4m parcouru par ce train. Un retard pour diffuser l'annonce est inscrit dans l'étiquette RFID pour s'adapter à chaque annonce. Sa petite taille lui permet d'être utilisé à l'échelle N en débordant de 4mm de chaque coté de la voie. La distance entre le capteur RFID et la gare sera réduit en fonction de l'échelle. Il est facile de dissimuler ce capteur dans la bande de liège de 5mm d'épaisseur qui supporte la voie, large de 30mm en H0. Les 8 fils du bus SPI sont soudés sur le capteur pour ne pas créer de surépaisseur. Ils traversent le support par un trou pour rejoindre MAM-RFID situé sous le réseau et se terminent dans un connecteur au pas de 2.54mm. Enfin un film plastique sera placé entre le capteur RFID et la voie pour pouvoir coller du ballast à cet endroit sans inconvénient pour le capteur, le rendant invisible.


          
          Le capteur RFID seul                      Le capteur RFID placé sous la voie H0

L'étiquette RFID

Chaque étiquette RFID se programme avec le logiciel MAM_config (70Mo), écrit en Processing 3.5.4, qui utilise ce capteur et MAM-RFID pour lire et écrire nos données. Autocollante, elle mesure 10x20mm sans épaisseur. Elle peut contenir 144 octets ce qui est plus que suffisant pour stocker les informations du train.

Elle contient :
- le numéro du CV qui contient le numéro du train enregistré en MP3
- un indicateur pour déterminer si le train s'arrête ou passe en gare
- un retard pour la diffusion du message
- le nom du train sur 16 caractères.



Etiquette autocollante RFID Ntag213

Le module MAM-Gare

Ce module surveille les modules MAM-RFID en communiquant avec le bus I2C par lequel il télé-alimente aussi les modules. Dès qu'un module MAM-RFID envoie un message, il est lu et analysé pour être diffusé dans la gare avant l'arrivée du train. La provenance dépend de la position des aiguillages aux entrées de la gare. MAM-Gare contient un Arduino Nano qui est un décodeur DCC ce qui lui permet de connaitre la position des aiguillages. De cette analyse, il en déduit la provenance du train et sa destination. Il contient aussi un DFPlayer connecté à un haut-parleur externe. Ainsi il peut diffuser une annonce d'arrivée précisant quelle est le numéro du train, sa provenance ou destination et vers quelle voie ou quai il se dirige. De plus les commandes DCC permettent de diffuser 8 annonces différentes de départ des trains. En option, un potentiomètre de 10K pour ajuster le volume sonore connecte son curseur sur l'entrée J17-4 avec retour GND en J17-5. Le volume se règle aussi par CV ou avec une commande USB.

Ce module dispose de 8 sorties destinées à commander des servomoteurs ou des solénoïdes (avec 4CH_MAG ) pour manoeuvrer des aiguillages. Le bus USB de l'Arduino Nano permet de le programmer facilement avec l'IDE Arduino. En connectant son Moniteur sur le port USB correspondant, à 115200 baud, on peut surveiller le fonctionnement du module.



Le module MAM-Gare

Description du module MAM2

Ce module de 86,5 x 100 mm intègre un microprocesseur Arduino Nano associé avec un générateur de son DFPlayer. Les annonces en gare sont constitués d'une suite de 10 fichiers MP3 maximum diffusés l'un après l'autre sans interruption. Les morceaux d'annonces vocales sont enregistrés en fichiers MP3 sur une SD-card intégrée avec le générateur vocal. De nombreux connecteurs permettent plusieurs configurations en fonction du câblage des composants et du logiciel spécifique qui sera téléchargé dans l'Arduino Nano. Suivant le câblage choisit, des fonctions seront exploitées ou ignorées.

Ce module fonctionne avec des logiciels destinés au Nano qui se téléchargent en bas de cette page.

Attention : Certains DFPlayers présentent un défaut. Parfois la patte du capot métallique fait un court-circuit avec la pin 3 (Tx) ce qui la connecte à la masse. Ceci a pour effet de neutraliser toutes les commandes adressées par le Nano. Vérifiez la soudure de sa pin 3.

L'alimentation du module peut se faire avec un connecteur Jack (J11) ou sur un bornier (J12) à partir d'une alimentation en courant continu comprise entre 7 et 20 Volts / 0.5A. Une autre option permet une alimentation directe par le signal DCC (J10) à condition d'avoir une consommation modeste pour éviter la surchauffe du booster DCC. Une sortie +5 Volts / 500mA est disponible pour alimenter des modules périphériques. Une LED verte s'allume dès que le module est sous tension. Indépendamment, une autre LED jaune s'allume pour indiquer la présence du DCC. Pour apprécier toutes les possibilités offertes par ce module, reportez vous à la documentation téléchargeable ici. (2MB)

Toutes les fonctions sont paramétrées dans 50 CV pour MAM-RFID et 200 CV pour MAM-gare. Les CV sont mémorisés dans l'EEPROM du Nano sous le contrôle de l'utilisateur. Le logiciel MAM_config écrit avec Processing est fourni pour faciliter le paramétrage des CV. Les logiciels qui gèrent toutes ces fonctions sont téléchargeables en bas de cette page.


Les entrées et les sorties du module MAM2

Ce module comporte une multitude de connecteurs décrit ci-dessous :

  • J1 à J8 sorties de puissance destinées à des servomoteurs, relais ou LEDs. (+5V ou +12V sélectionné par JP9)
  • J10 bornier d'entrée signal DCC isolé par un opto-coupleur
  • J11 entrée pour alimentation 7..12V/1A (fiche Jack)
  • J12 bornier d'entrée pour alimentation +7..12V/1A
  • J13 bornier de masse (GND)
  • J14 bornier de sortie +5V issu du régulateur U1 pour alimenter éventuellement les appareils connectés sur J1..J8
  • J15 bornier d'entrée/sortie pour bus I2C
  • J16 bornier d'entrée de détection de trains
  • J17 bornier d'entrée AUX pour des boutons et sortie rétro-signalisation sur la pin 3
  • J18 bornier de sortie SON vers un Haut-parleur et vers un ampli stéréo externe
  • J19 bornier d'entrée test pour le DFPlayer, situé au dos du module
  • J20 bornier de sortie SON vers un ampli stéréo, situé au dos du module
  • J24 bornier d'entrée/sortie pour bus SPI alimenté en 3.3V/50mA


Circuit imprimé et schéma de MAM2

          

Voici le plan dessiné avec le logiciel gratuit KiCad (avec lequel est réalisé le circuit imprimé ci-dessus)

- U6 contient 8 transistors Darlington qui agissent comme des interrupteurs en commutant les sorties vers la masse avec un maximum de 500 mA chacune. Les sorties de U6 sont connectées aux connecteurs J1 à J8. Elles sont protégées par une diode en inverse permettant de commander des relais sous une tension externe qui peut atteindre 24V. Evidement l'utilisation simultanée de toutes les sorties au maximum de leur intensité conduirait le circuit U6 vers une surchauffe destructrice, à condition d'avoir une alimentation suffisamment puissante ! Cependant les appareils qui seront commandés par ce module ont des consommations électriques très raisonnables inférieure à 100 mA.

- En remplaçant U6 par un réseau de 8 résistances indépendantes de 150 Ohms minimum pour protéger les 8 sorties du Nano, ce module peut animer des servomoteurs ou des LEDs ou des modules de puissance 4CH_MAG pour activer des solénoïdes. Les appareils seront connectés directement sur les sorties J1 à J8.


Caractéristiques techniques de l'Arduino Nano :

Micro contrôleurATmega328P, 8-bit RISC
Tension de fonctionnement5V
Tension d'alimentation recommandée7 à 12V
Tension d'alimentation extrême6 à 20 V
Courant max sur sortie 3,3 V généré par le chip USB50 mA
Courant max par broches E/S40 mA (200 mA maximum pour la somme des E/S)
Entrées/sorties numériques14 dont 6 disposent d'une sortie PWM
Entrées analogiques8 canaux 10-bit (5 volts maxi)
Timers3 dont 2 de 8 bits et 1 de 16 bits
Mémoire FLASH 32 KB dont 2 KB réservé pour le bootloader
Mémoire SRAM 2 KB dont 0.5 KB réquisitionné par la pile (stack)
Mémoire EEPROM 1 KB
Fréquence horloge 16 MHz
Dimensions 43x17 mm

Arduino Nano possède des interfaces de communication de type série TTL (0-5V), bus I2C ou TWI, bus SPI (Serial Peripheral Interface), 6 sorties PWM (Pulse Width Modulation). Il dispose d'interruptions dont 2 entrées d'interruptions externes rapides câblées en hardware.

Une attention particulière doit être utilisée pour interfacer les accessoires alimentés en +3.3V car le module fonctionne avec +5V.

Logiciels

Les projets sont compilés en utilisant l'IDE Arduino. Une sélection de bibliothèques a permis de réduire la taille du code contenu dans la mémoire de l'Arduino Nano. Certaines bibliothèques créent des dysfonctionnements qui conduisent jusqu'à la non détection de commandes DCC parce qu'elles bloquent inutilement les interruptions qui proviennent du DCC. Mises à jour récemment, elles ont aussi la mauvaise tendance à consommer inutilement la mémoire pour des fonctions qui ne nous servent pas. Les bibliothèques utilisées dans cette réalisation sont fournies sous forment de ZIP dans le répertoire "libraries". Elles ont été modifiées pour corriger leurs défauts. Pour vous éviter tous ces tracas, une version compilée pour chaque module se trouve dans le répertoire "upload" accompagnée de la méthode pour téléverser le code directement dans le Nano sans compilation.

Les logiciels qui gèrent ces 2 modules sont téléchargeables ici : MAM-RFID.zip et MAM-Gare.zip.

Le paramétrage des CV est simplifié avec l'utilisation de MAM_config_application.windows64.7z (71Mo) écrit en Processing 3.5.4. Il est fourni sous forme d'un fichier exécutable pour Windows sans recourir à une installation et se dezippe avec le logiciel 7-Zip.

Ces logiciels seront améliorés à chaque mise à jour.

 PC 22/02/2020- Mise à jour 18/04/2022