Conception d’un décodeur pour Magnorail avec un Arduino et un lecteur MP3
- Le principe Magnorail
- Gestion du moteur avec un Arduino
- Simulateur Wokwi en ligne
- Commande et paramétrage
- Fichiers Source
Le principe Magnorail
Le système Magnorail utilise un moteur caché qui entraîne une chaîne équipée d’aimants sous la surface du décor. Ces aimants font avancer des véhicules ou cyclistes miniatures ou bateaux placés au-dessus, sans moteur visible, créant une illusion de mouvement réaliste.
L’entrainement de la chaine est réalisé à l’aide d’un moteur en courant continu. Le projet est de piloter le moteur en DCC à l’aide d’un décodeur DCC basé sur une carte Arduino Nano. Il est prévu d’ajouter un lecteur MP3 pour créer des animations sonores.
On trouve sur YouTube de nombreuses mises en scènes très réalistes avec le principe Magnorail.
Gestion du moteur avec un Arduino
Le projet est de permettre de piloter le moteur en courant continu en digital (DCC) avec un décodeur. La contrainte est que l’on pourra commander le moteur que dans un seul sens de circulation. Il est prévu un mode « manuel » pour permettre la circulation en sens inverse lors des phases de tests par exemple. Le choix a été fait de concevoir ce décodeur avec une carte Arduino et de mettre en œuvre un lecteur MP3 pour ajouter des animations sonores commandées uniquement par la centrale digitale.
La commande de la carte Arduino peut être réalisée :
- en DCC : commande du moteur et des sons (bruitages) ;
- avec des boutons poussoirs pour uniquement la commande du moteur.
Les démarrages et les arrêts sont progressifs grâce au pilotage d’une carte de développement basé sur le circuit intégré L298N : cette carte permet le pilotage de 2 moteurs à courant continu ou d’un moteur pas-à-pas (4 fils).
La carte électronique a été réalisée avec le logiciel Eagle et les fichiers source (schéma, carte PCB) sont disponibles.

Les entrées sont optionnelles mais peuvent être utiles pour les phases de tests ou de réglages :
- bouton poussoir pour l’arrêt du moteur
- bouton poussoir pour l‘augmentation de la vitesse
- bouton poussoir pour la diminution de la vitesse
- bouton poussoir pour le changement de direction si le mode inversion de sens de marche est débloqué
- bouton à levier ou switch pour déverrouiller le sens de circulation imposé.
Les sorties sont :
- 3 sorties pour piloter le circuit L298N : 1 sortie pour le PWM pour gérer la vitesse de rotation du moteur et 2 sorties pour le sens de rotation du moteur
- 1 LED en option pour indiquer le sens horaire de rotation du moteur
- 1 LED en option pour indiquer le sens anti-horaire de rotation du moteur
- 1 LED en option pour indiquer le mode bloquage inversion du sens de rotation (direction)
- 2 sorties pour la commande du lecteur MP3, le DFPlayer Mini MP3, dont l’emplacement est prévu sur la carte électronique
- 2 sorties optionnelles pour commander au choix un afficheur TM1637 à 4 digits de 7 segments ou un écran LCD 16×2 via le port I2C. L’afficheur permet de visualiser la vitesse de consigne. L’écran LCD pemet d’afficher en plus le sens de rotation, les fonctions F0 à F16 gérée par le DCC. L’usage de l’afficheur peut être utilisé pour des réglages mais n’est pas utile lors de l’utilisation normale.


Les bibliothèques utilisées sont :
- EEPROM pour la gestion des paramètres enregistrés dans la mémoire de la carte Arduino
- AP_DCC_library pour la gestion de la réception du signal DCC
- Bounce2 pour la gestion des rebonds des boutons poussoirs
- SoftwareSerial et DFRobotDFPlayerMini pour la gestion du lecteur MP3
- Wire et LiquidCrystal_I2C pour la gestion de l’écran LCD.
Simulateur en ligne avec Wokwi
Wokwi est une plateforme en ligne qui permet de simuler des circuits électroniques, notamment avec des microcontrôleurs comme Arduino, ESP32 ou Raspberry Pi Pico, directement dans le navigateur.
Pour simuler le fonctionnement de la carte, la carte de développement du composant L298N a été remplacée par 3 LED violettes et bleue. Le lecteur MP3 n’est pas présent. Il ne sera pas possible de piloter la carte en DCC avec le simulateur en ligne.
On peut réaliser les tests de fonctionnement en ligne depuis le navigateur Internet à l’aide des boutons poussoirs et le bouton à levier.
Commande et paramétrage
La commande et le paramétrage de la configuration du décodeur peut se faire via le Moniteur Série de la carte Arduino ou depuis la souris d’une centrale DCC.
Paramètres | Moniteur Série xx valeur numérique | Centrale DCC CV | Valeur par défaut | Plage |
Adresse décodeur | $Dxx | CV 1 => 3 [1-127] |
Temps du pas entre chaque pas de vitesse | CV 2 => 100 [1-255] | |
Pas accélération | $Fxx | CV 3 => 8 [1-32] |
Pas décélération | $fxx | CV 4 => 8 [1-32] |
Vitesse par defaut (F0) | $Exx | CV 5 => 89 [1-100] |
Fréquence mini du moteur | $pxx | CV 6 => 40 [1-255] |
Fréquence maxi du moteur | $Pxx | CV 7 => 255 [1-255] |
Niveau du volume sonore | $Mxx | CV 8 => 20 [1-30] |
Egaliseur lecteur sonore (effet sonore) | CV 9 => 0 [0-6] | |
Configuration générale du décodeur | CV 29 => 6 [1-63] | |
Arrêt du moteur : vitesse = 0 | $S | Utilisation du rotateur de la souris |
Vitesse par défaut | $A | F0 |
Augmente la vitesse | $V | Utilisation du rotateur de la souris |
Diminue la vitesse | $v | Utilisation du rotateur de la souris |
Inversion du sens de marche si mode débloqué | $I | Utilisation du rotateur de la souris |
Jouer un son | $Jxx | F4 à F16 |
Afficher l’aide en ligne | $H | |
Afficher la configuration | $C | |
Reset du décodeur | $R99 |
Fichiers source