La gare de Lormedy |
H0 |
Avertissement : ces projets se compilent parfaitement avec la version 1.8.19 de l'IDE Arduino. La version 2.0.x a généré des erreurs à la compilation !
De nouveaux micro-controleurs bon marchés sont apparus récemment avec une interface WiFi mais avec peu de pattes d'entrées/sorties : la série Espressif.
J'ai sélectionné un ESP8266 qui convient parfaitement comme interface WiFi entre le PC et notre Arduino MEGA, pour un petit prix.
Il remplace avantageusement le câble de la liaison USB ou celui d'une liaison Ethernet filaire.
De plus il fait office de serveur de fichiers en hébergeant tous les fichiers du logiciel qui conduit les trains en intégrant une mémoire Flash de 4 Mo, voire 16 Mo.
J'ai parcouru Internet et analysé les modèles de serveur de fichiers en WiFi. Finalement, j'ai utilisé un exemple de réalisation que j'ai étendu aux besoins du modélisme
ferroviaire pour développer une version personnelle : "WiFi DCC Dashboard", autrement dit : Tableau de bord DCC en WiFi.
Ce logiciel libre associé avec ce générateur DCC en WiFi fournit une centrale de commande bon marché pour réseau ferroviaire DCC.
Depuis, d'autres logiciels ont été créés dont TCOwifi pour commander les aiguillages et les accessoires, DMC pour commander simultanement 2 locos, etc...
La bibliothèque DCCppS88 pour Arduino MEGA2560 donne pleinement satisfaction à l'usage donc je l'ai utilisée.
Pour réaliser l'interface WiFi intégrant un serveur de fichiers j'ai choisi un ESP8266.
J'ai seulement ajouté du code dans l'ESP8266 pour gérer la transmission des données WiFi en utilisant aussi l'IDE Arduino.
La communication entre le MEGA2560 et l'ESP8266 se fait en mode SERIAL.
Note : DCCppS88 ne gère pas l'option RailCom. De plus l'option RailCom réduit la tension disponible au niveau du décodeur et certains décodeurs (ESU) peuvent présenter des dysfonctionnements.
Dans ce cas désactiver l'option RailCom sur la loco peut résoudre cette anomalie.
Ensuite j'ai construit plusieurs centrales DCC :
Remarque : utiliser un clone du MEGA2560 peut induire un blocage de l'échange de données sur sa pin Tx à cause d'une résistance non conforme. Tx doit être reliée à l'interface USB par une résistance de 1k mais parfois elle ne fait que 50 Ohms ce qui bloque la transmission.
Après les tests effectués avec la carte de prototypage, celle-ci a été avantageusement remplacée par un circuit imprimé.
Le circuit intégré AM26C31 et les divers connecteurs sont câblés sur un circuit imprimé superposé et embroché sur le MEGA.
Les deux solutions fonctionnent très bien en utilisant le même code paramétré selon les options choisies.
Leurs constructions nécessitent certaines compétences en électronique et en informatique qu'il ne faut pas négliger.
Synoptique simplifié de ma centrale DCCppS88 en WiFi
DCCppS88 permet de piloter plusieurs locos en même temps, en adresse courte, longue et UM,
offre une sortie DCC vers les voies principales et une sortie DCC vers une voie de programmation indépendante.
J'ai intègré la lecture de 2 bus S88 (détails en bas de la page).
La commande se fait par l'intermédiaire de fenêtres sur l'écran du PC/Tablette/Smartphone en WiFi qui communiquent avec le MEGA.
L'ESP8266 sert d'interface WiFi et de serveur de fichiers devant le MEGA.
Simultanément vous pouvez utiliser des tablettes ou des Smartphones en WiFi avec une "Box" Internet qui sert de routeur WiFi, en même temps qu'un PC.
L'ESP8266 peut gérer simultanément 5 clients WiFi différents.
DCCppS88 avec la lecture du bus de rétro-signalisation S88 est compatible avec les logiciels de commande de réseaux ferroviaires
tel que WDD, TCO, CDT31, JMRI, CDM-Rail, Rocrail, etc...
Vue de la centrale DCC WiFi avec son afficheur LCD (configuration 2)
Vue de la centrale DCC WiFi avec son afficheur LCD (configuration 3)
Centrale DCC WiFi avec la carte MEGA2560 sous le circuit imprimé portant le D1-Mini. (configuration 2, ancien PCB)
Circuit imprimé en 3D de la centrale DCC WiFi (ancien PCB)
Une centrale DCC en WiFi avec S88. Le MEGA R3 WiFi se trouve sous le nouveau circuit imprimé (configuration 3)
Ce circuit imprimé permet une utilisation de la centrale DCC avec différentes connexions vers le PC :
- configuration 1 avec un MEGA2560 en USB
- configuration 2 avec un MEGA2560 en WiFi en ajoutant un module D1-Mini comme sur la photo ci-dessus
- configuration 3 avec un MEGA R3 WiFi à la place du MEGA2560 sans module ajouté
- configuration 4 avec une interface Ethernet câblé du type W5100 (non décrite) que je déconseille parce qu'elle n'apporte pas la souplesse d'un vrai serveur WiFi
Voici les principaux composants utilisés pour construire cette centrale DCC :
MEGA 2560 pour la configuration 1 & 2
MEGA R3 WiFi pour la configuration 3
Des circuits intégrés utilisés et le module alimentation à découpage.
Afficheur LCD 4x20 avec I2C, optionnel mais pratique. D1-Mini pour la configuration 2 uniquement.
Attention : Beaucoup de MAX471 sont défectueux. Si vous continuez de les utiliser, vérifier avec un multimètre que la résistance lue entre RS+ et RS- soit proche de zéro Ohms. Sinon vous risquez d'endommager le MEGA. Ici, il est remplacé par la mesure de courant intégrée.
Et un bouton d'arret d'urgence de type NC
Adieu aux forêts de fils qui partent de l'Arduino, un simple câble RJ45 suffit. Les infos des capteurs de position des trains sur les cantons seront rassemblées sur place par une carte de rétro-signalisation. Puis elles sont transmises par le câble RJ45 vers la carte suivante et ainsi de suite le long du réseau jusqu'au MEGA WiFi. Pas besoin de boitier d'interface supplémentaire, tout est inclus. Le câble RJ45 du bus S88-N télé-alimente aussi les cartes, donc pas besoin d'alimenter séparément les cartes de rétro-signalisation. Sur le bus S88-N, le logiciel permet le mélange des cartes à 8 entrées avec celles à 16 entrées.
La centrale DCCpps88 qui utilise un D1-Mini permet de brancher directement une nappe de 4 fils relié à un module HC-05 ou HC-06. A cette intention, une petite modification sur le circuit imprimé est décrite dans le document Bluetooth-modif.pdf. Le logiciel du projet DCCpp_controller_BTwifi permet d'activer le Bluetooth dans le fichier Config.h. Il se télécharge à la rubrique "Firmware" ci-dessous. Ensuite la connexion avec une application Bluetooth sur Smartphone s'effectue après avoir procédé à l'appairage des 2 appareils. Voir aussi "Logiciels de commande" sur PC en bas de cette page et dans la rubrique "Les logiciels" du menu.
Plan de câblage du circuit imprimé
Plan de câblage de la lecture des courants, supplément nouvelle version
Note : Pour la voie principale, au lieu d'utiliser le booster L298N (2x2A), vous pouvez utiliser le Booster BTS7960 (43A) en insérant un fusible calibré et en adaptant son câblage : (Evitez le LMD18200 qui peut détruire les sorties du MEGA)
Connexions du BTS7960
Signaux (sorties) DCCppS88 |
J8/J10/J11/J12 circuit imprimé DCCppS88 |
Connexion |
BTS7960 (entrées/sorties) |
Non du signal |
DCC | Pin 3 ou 6 | ==> | Pin 1 | RPWM |
DCC/ | Pin 4 ou 5 | ==> | Pin 2 | LPWM |
Enable Main | Pin 2 ou 7 | ==> | Pin 3 | R_EN |
Enable Main | Pin 2 ou 7 | ==> | Pin 4 | L_EN |
Courant droit | ----- | <== | Pin 5 | R_IS |
Courant gauche | ----- | <== | Pin 6 | L_IS |
+5Vdc | +5V | ==> | Pin 7 | VCC |
Masse 0V | Pin 1 | <==> | Pin 8 | GND |
ESP 8266, WiFi et Bluetooth :
Avant de commencer, préparons l'IDE Arduino pour pouvoir compiler le code du ESP8266 en suivant
cette procédure.
Installer le logiciel WiFi pour ESP8266 qui se télécharge ici :
DCCpp_controller_BTwifi.zip. N'oubliez pas de lire le fichier d'installation.
Ensuite éditer le fichier WifiConfig.h pour sélectionner la configuration choisie : D1-Mini ou MEGA R3 WiFi intégré.
Puis indiquer le nom du réseau WiFi ainsi que le mot de passe auquel la centrale DCC sera connectée.
Le MEGA R3 WiFi ne permet pas d'utiliser le Bluetooth avec l'ESP8266. Seul le D1-Mini permet d'utiliser une interface additionnelle Bluetooth HC-05 ou HC-06 reliée
avec J13 modifié pour fournir le +5V.
Dans le fichier WifiConfig.h une définition à commenter ou non avant compilation contrôle l'usage du Bluetooth qui pourra se connecter sur une application Android sur Smartphone.
L'application DCCpp_Cab pour piloter les trains est disponible dans ma rubrique "Les logiciels".
Enfin je compile les fichiers pour un D1-Mini ou pour un ESP8266 générique selon le choix ci-dessus et j'obtiens :
COMM WiFi:
- Le croquis utilise 393844 octets (37%) de l'espace de stockage de programmes. Le maximum est de 1044464 octets.
- Les variables globales utilisent 32376 octets (39%) de mémoire dynamique, ce qui laisse 49544 octets pour les variables locales.
Le maximum est de 81920 octets. (Les chiffres sont approximatifs)
Je connecte l'ESP8266 sur une entrée USB du PC qui est automatiquement redirigé vers un port COMx et détecté par l'IDE Arduino.
Après la compilation, je téléverse le code puis les fichiers data dans la Flash de l'ESP8266 et j'ouvre le Moniteur série associé à l'IDE Arduino.
Quand le DEBUG est activé, on lis le rapport d'initialisation de l'ESP8266 envoyé par USB.
Note : le code installé dans l'ESP8266 gère l'OTA donc les prochains téléchargements de l'ESP8266 pourront aussi se faire en WiFi.
MEGA2560, commandes DCC :
J'installe le logiciel DCCpp avec option S88 qui se télécharge ici : DCCppS88 pour Arduino
et j'ouvre l'IDE d'Arduino. Ensuite j'édite le fichier DCCppS88.ino pour vérifier la configuration avec l'interface série de l'Arduino à 115200 bauds.
Choisir les interfaces utilisées indiquées par les commentaires encadrés par *****. Enfin je compile les fichiers pour un MEGA2560 et j'obtiens :
COMM série:
- Le croquis utilise 29750 octets (11%) de l'espace de stockage de programmes. Le maximum est de 253952 octets.
- Les variables globales utilisent 1461 octets (17%) de mémoire dynamique, ce qui laisse 6731 octets pour les variables locales.
Le maximum est de 8192 octets. (Les chiffres sont approximatifs)
Je connecte l'Arduino sur une entrée USB du PC qui est automatiquement redirigé vers un port COMx et détecté par l'IDE Arduino.
Après la compilation, je téléverse le code dans l'Arduino et j'ouvre le Moniteur série associé à l'IDE Arduino.
Comme j'ai activé le DEBUG, je lis le rapport d'initialisation envoyé par l'Arduino et je peux déjà envoyer des commandes manuelles
vers les locos qui réagissent immédiatement. Puis je ferme le Moniteur pour libérer le port COM. Important !
Cette centrale DCC accepte toutes les commandes compatibles générées par DCC++, DCCpp et DCCppS88.
La suite se trouve dans le menu "Logiciels" avec WDD,
DMC et TCOwifi.
Ces logiciels sont copiés dans la SPIFFS au format FAT32 et d'une capacité de 2.5 MB maximum.
Les logiciels se trouvent dans le répertoire du projet : data.
Tout se passe maintenant dans votre PC.
Ouvrez votre navigateur préféré et connectez-vous à l’adresse IP que vous a attribuée votre routeur DHCP ou avec son nom mDNS en ajoutant ".local".
Un menu apparait dans lequel vous sélectionnerez le logiciel que vous souhaitez utiliser.
Cette centrale DCC est compatible DCC++ avec les logiciels libres de gestion de réseau dont :
*** Attention : l'utilisation du bus S88 avec d'autres logiciels non cités dans cette page n'a pas été testée en WiFi, ni mise au point. ***
J'ai incorporé le programme maitre S88 dans la bibliothèque DCCpp pour générer DCCppS88 que j'utilise ici.
En conséquence j'utilise un SEUL Arduino MEGA pour gérer tout mon réseau DCC : un seul et unique !
La rétro-signalisation est totalement intégrée dans DCCppS88 sans ralentir l'Arduino.
Une trame de 512 bits maxi est lue en permanence par l'Arduino sur le bus S88-N en 100ms environ.
Les données des capteurs S88 sont lues sur 2 entrées simultanément pour ne former qu'un seul buffer,
les données DataL sont rangées au début du buffer et les données DataR sont rangées à la fin du buffer.
Cette configuration permet l'utilisation de 2 bus S88-N, un à gauche et un à droite ayant la même taille et limité à 256 capteurs maximum chacun.
A la demande du PC qui contrôle le réseau, celui-ci lit jusqu'à 10 fois par seconde les paquets de données recueillies sur
le bus S88 par l'Arduino qui lui transmet en moins de 50ms, sans que l'Arduino MEGA ne soit ni perturbé ni ralenti dans son fonctionnement.
Cependant à chaque changement d'état des capteurs, les dernières données lues sur le bus S88 sont envoyées à l'ESP8266 qui les transmet en WiFi au PC Maitre pour l'informer du changement.
Cette fonction utilise 5 pins de l'Arduino : Reset, Ps/Load, Clock, DataL et DataR. Voir la page rétro-signalisation.
*** Attention : l'utilisation du bus S88 avec d'autres logiciels n'a pas été testée en WiFi, ni mise au point. ***
PC 4/11/2019. Mise à jour du 15/08/2023