LaBox est un projet collaboratif basé sur une spécification évolutive. Il s’agit d’une centrale DCC capable d’alimenter une voie principale ou une voie de programmation, (mais une seule à la fois), à l’aide d’un unique pont en H. LaBox peut être commandée via une liaison série (JMRI, IDE Monitor, liaison série radio) ou à l’aide d’une application smartphone (WiThrottle, Engine Driver, Z21 mobile) en mode Station (via la box Internet) ou en mode Point d’Accès (accessible partout dans les expositions et les clubs sans Wi-Fi).
Un écran OLED affiche les commandes des trains, tandis qu’une interface utilisateur simple avec seulement 3 boutons permet d’effectuer diverses actions, telles que la recherche automatique de l’adresse DCC d’une locomotive posée sur la voie.
LaBox est équipée d’un connecteur de sortie vers les rails, d’une prise d’alimentation unique (12 à 19V) compatible avec les réseaux à l’échelle N ou HO, ainsi que d’une interface CAN pour les commandes via réseau CAN. Cette centrale offre une solution complète et économique.
Article mis à jour le 19/8/2024
Figure 1
La carte Labox, avec l’ESP32 à gauche, l’écran Oled à droite, et les boutons de couleur en bas.
Voici un tutoriel de démarrage lorsque la carte sera construite :
Cahier des charges :
Comme rappel du précedent article, LaBox se décrit comme suit :
Une centrale conforme à la norme DCC donc capable d’émettre toutes les commandes DCC avec un courant généré jusqu’à 4A maximum sur les rails avec une détection de court-circuit. Au delà de 4A on pourra adjoindre un booster plus puissant dont il existe des réalisations fonctionnelles.
Fonctionnement sur la voie principale et la voie de programmation, mais une seule à la fois puisqu’il n’y a qu’une seule sortie DCC.
Connexion des smartphones en poste de pilotage au serveur Wifi (ESP32) en mode point d’accès (ne nécessite pas de box internet avec login et password, ce qui est plus pratique dans les expos), ou en mode station via un routeur internet.
Donc la centrale contient des traducteurs de commandes non-DCC++ en commandes DCC++.
Compatibilité avec le protocole de commande de DCC++ qui peut-être échangé soit sur une liaison série (filaire ou radio), soit avec un PC et une application de type JMRI ou RocRail.
Choix des adresses des locos (courtes et longues selon NMRA) au clavier de WiThrottle et mémorisé d’une fois sur l’autre.
Possibilité de piloter au moins 2 locos en même temps avec (au moins) 1 ou 2 smartphones reliés en Wifi (applications WiThrottle, Engine Driver ou Z21 mobile) ou autant de manettes sans fil.
Selon l’application smartphone, par sécurité, la loco s’arrête automatiquement en cas d’appel téléphonique et lorsque l’application n’est plus en premier plan ou le smartphone mis en veille. Sans impact sur LaBox.
Marche avant et arrière (avec passage par la vitesse 0)
Fonctions des locos (Lumière et F1..F28) supportées.
Reconnaissance de l’adresse DCC d’une loco posée seule sur les rails.
Support de Railcom (de Lenz) moyennant une petite modification matérielle et la version logicielle qui le supporte (à venir).
Une interface CAN pour permettre un pilotage des locos (ralentir, s’arrêter, repartir...) par un bloc système ou un gestionnaire alimenté par une rétro signalisation. Cette interface associée à un jeu de messages CAN permettant de nombreuses fonctions et de nombreux projets de modules externes.
L’intégration d’un gestionnaire de circulation dans cette centrale n’est pas envisagé pour des raisons de puissance limitée du contrôleur ESP32, mais de petits automatismes et des fonctions passerelles semblent envisageables.
Configuration de la centrale à l’aide d’une interface utilisateur simple.
Coté matériel, nous avons :
Choix d’un ESP32 30 broches avec interface USB CP2102 (éviter le CH340).
Utilisation des 2 cœurs de l’ESP32 pour répartir les tâches.
Ecran Oled 4 lignes pour suivre le fonctionnement, et configurer quelque chose
3 boutons poussoirs pour évoluer dans des menus et valider, faire un arrêt d’urgence, etc..
Interface CAN pour agir sur les locos à partir de la rétro signalisation et transmettre des messages à des équipement externe (version logicielle à venir).
Une seule prise d’alimentation (un jack) pour utiliser les alims qu’on a en stock : de 12 à 19V.
Un convertisseur DC/DC soudé au PCB permet d’abaisser une tension comprise entre [12 VDC et 19 VDC] vers du 5 VDC afin d’alimenter l’électronique. L’ESP32 s’alimente en 3.3V mais la carte “DEVKIT” intègre un régulateur capable de générer le 3.3V depuis le 5V alors que le 5V servira également à d’autres composants.
Les mesures de courant pour la détection de court-circuit et pour la programmation des CVs des décodeurs.
Un circuit imprimé pré-équipé en usine par les composants CMS, à l’arrière du circuit.
Le but est de réaliser une plateforme matérielle aussi simple et bon marché que possible permettant d’autres applications et possibilités par évolutions logicielles. Et surtout facile à construire par soi-même.
Dans cette liste on n’a pas retenu pour le moment :
La génération de l’analogique sur du courant pulsé en PWM car, dans ce mode, une seule machine peut être pilotée à la fois.
La réalisation de LaBox
La description de cette réalisation est donnée exclusivement pour vous permettre de réaliser votre propre exemplaire par vous-même.
Nous espérons que tous les détails décrits ci-après permettront de répondre à toutes vos questions techniques. S’il vous manque quelque chose, nous attendons vos questions sur le forum.
Le schéma électronique de la centrale
Pour respecter le cahier des charges, le schéma électronique de cette carte a abouti à ceci :
Figure 2
Schéma général de "LaBox"
Pour une visibilité optimale et pouvoir l’imprimer, le schéma peut être consulté en PDF :
On y trouve :
un ESP32 pour la génération du DCC, les communications Wifi, CAN, série ;
un pont en H L6203 ;
un circuit de mesure du courant fourni sur les rails ;
un écran OLED et trois boutons poussoir pour l’HMI ;
une alimentation régulée pour fournir le 5V
une interface CAN
Le brochage de l’ESP32 montre les connexions avec les modules fonctionnels.
Figure 3
Affectation des broches de l’ESP32 à 30 broches
l’interface CAN qui est le driver MCP2562
les 3 boutons UP, DOWN et SEL
L’OLED via le bus I2C : SDA et SCL
Les commandes du pont en H L6203 (ENABLE = PWM et IN1 = DIR, IN2 étant déduit de IN1 via un inverseur à transistor Q1)
Les lectures de courant et de tension
A noter que les broches non utilisées sont accessibles sur un connecteur latéral pour extensions futures.
L’entrée série est aussi accessible pour permettre l’ajout d’un transmetteur radio comme décrit dans l’article Une manette simple et autonome pour LaBox.
Le choix du pont en H L6203 a été fait à l’époque où le LMD18200 s’est avéré plus cher et ses modules difficiles à trouver. Grâce à l’ingéniosité d’un des membres (Lebelge2), Il permet aussi de réaliser les lectures RailCom, en utilisant une sortie supplémentaire de l’ESP32. Une petite modification matérielle (un fil à ajouter et une piste à couper) permet à cette version d’accéder à cette fonction. Sa description est donnée dans le forum en attendant une nouvelle version.
Pour la mesure de courant, indispensable pour la lecture des CVs et les écritures avec retour du décodeur, nous avons choisi une mesure par résistance entre le L6203 et le GND, avec un ampli opérationnel. Le schéma montre le choix de la résistance 0,5Ω ou 0,25Ω (en soudant une seule ou les deux 0,5Ω) et du gain de l’ampli 4, 2 ou 1 par le jeu de straps soudés.
Nous recommandons d’installer 2 résistances de 0,5Ω en parallèle (une sur chaque emplacement pour réduire les pertes joule) et le gain de 4 (sans aucun strap) et ainsi de ne pas dépasser la puissance unitaire de 2W.
Le potentiomètre R17, dont la valeur peut être supérieure ou égale à 1MΩ, sert à régler la valeur "zéro mA" de la mesure de courant. Vous pouvez le remplacer par une résistance de 1MΩ (par exemple de 1/8W) pour un courant minimal, proche ou égal à zéro.
Avec le potentiomètre et le DCC allumé, et sans consommation sur les voies, vous aurez 0 mA si le potentiomètre est au maximum. En diminuant le réglage, vous verrez apparaitre une valeur positive. Revenez un peu en arrière pour retrouver le zéro. Vous pouvez vérifier ce réglage en posant une locomotive sur les voies et en allumant les feux. Vous devriez voir apparaitre une dizaine de mA pour des feux à LED.
Cette mesure est une information purement indicative, sans réelle précision. Elle s’accompagne de la mesure de la tension d’entrée fournie sur le jack d’alimentation.
Pour ce faire, les fichiers suivants ont été transmis à JLCPCB et nous vous expliquons en détail la marche à suivre.
1- Téléchargez les fichiers nécessaires : Gerbers, liste des composants et fichier de placement des composants. Enregistrez les dans un dossier nommé par exemple "PCB LaBox" afin de les retrouver facilement lorsque vous serez sur le site de JLCPCB. Les voici :
Fichiers Gerber du LaBox
Liste des composants CMS
Fichier de placement des composants CMS
2- Allez sur le site de JLCPCB
Choisissez l’option PCB Assembly et cliquez sur Quote Now.
Figure 4
Option PCB Assembly
Vous arrivez maintenant sur l’invitation a téléverser vos fichiers Gerber.
Figure 5
Téléversement des fichiers Gerber
Figure 6
Progression du téléversement des fichiers Gerber
Figure 7
Démarrage de la commande d’assemblage des CMS
Vous voyez maintenant les 2 faces du circuit imprimé.
A ce stade, vous pouvez conserver toutes les options par défaut qui sont présentées dans cette page. Mais vous pouvez aussi les modifier (changer le couleur par exemple) à vos risques et périls !
3- Maintenant il faut spécifier les placements des composants CMS ;
En bas de la liste des options, cliquez sur le bouton à droite de PCB Assembly pour accéder au montage des composants.
Prenez soin de choisir le "bottom side"
Figure 8
Choix de la face "bottom" pour les composants CMS
Confirmez votre choix et téléversez les 2 fichiers BOM et CPL que vous avez téléchargé précédemment.
Figure 9
Choix des fichiers BOM et CPL
Ils doivent apparaitre à la place des boutons de téléversement :
Figure 10
Fichiers BOM et CPL bien enregistrés
Confirmez les choix, sélctionnez ’Next’ lorsque l’image du circuit s’affiche et lancez le traitement de la commande pour vérifier la bonne disposition des composants.
Après quelques secondes d’attente le prototype des placements apparait à l’écran sur cette image, avec la liste des composants en stock chez JLCPCB qui vous seront comptés dans la facture :
Figure 11
1ère proposition de placement automatique
Sélectionnez ’Bottom’ en haut à droite pour voir le côté concerné par le montage.
L’image ci-dessus n’étant pas très visible, cette image ci-dessous a été améliorée pour vous, et doit être considérée comme référence des placements à obtenir : les polarité des diodes D1, D2 et D_INV ont été accentuées.
Figure 12
Référence des placements des composants CMS à obtenir !
Vous devez donc comparer le placement prototype proposé par JLCPCB avec le placement de référence ci-dessus. Il faut bien faire attention aux polarité "+" et "-" des diodes D1, D2, D_INV, des Leds et surtout des points rouges correspondant à la pin 1 de IC1 et IC2.
Sur cet exemple, les placements semblent bons du premier coup. Il n’est pas garanti que ce soit le cas lors de votre commande. Une image de placement vous sera proposée après la finalisation de la commande et le paiement. Donc ne vous souciez pas des erreurs visibles ou non à ce stade et finalisez la commande. Un premier mail sera envoyé pour confirmer la commande.
Peu de temps après (ça se chiffre en minute, même un dimanche !), un deuxième email vous est envoyé et vous avez un peu de temps pour accepter leur proposition ou décrire les erreurs à corriger. Pour vous exercer, ceci est un exemple avec des erreurs !
Figure 13
Placement des CMS proposé avec des erreurs
Le mail que vous recevez contient quelque chose comme : "Since we are not so sure about the polarities of the components LED1、LED3、D_INV、D1、D2、IC2、DEFAUT are correct or not. Could you please kindly check if the polarities and placements of the components are correct in the below picture ? Is it okay to proceed with production ?"
Évidemment non dans ce cas !
Avec une explication des règles de placement qui dépendent de l’orientation des composants dans les bandes qui alimentent les machines.
Figure 14
Règles de placement des CMS expliquées (anglais)
Dans cet exemple, j’ai répondu : "There is a necessary 180° rotation to apply to : IC2, LED3, DEFAULT.
The position is correct for all other components IC1, D_INV, D1, D2, LED1."
Arrive ensuite une 2ème proposition accompagnée d’un nouveau prototype à confirmer (sans doute sans erreur cette fois-ci).
Figure 15
Proposition de placement des composants CMS (correct cette fois-ci)
Votre confirmation sera le point de départ de la fabrication. Tout sera confirmé par email.
Peu de temps après la commande, un email vous préviendra de l’envoi du colis via le transporteur choisi (Global Standard Direct Line est le moins cher et a toujours été fiable). Puis la boite bleue tant attendue arrive dans la boite aux lettres. Voici 2 circuits recto et verso :
Figure 16
Les circuits arrivent quelques jours plus tard..
Maintenant c’est vous qui devez travailler !
L’équipement des composants à souder sur le circuit imprimé
Il est sage de commencer par quelques vérifications de la bonne orientation des diodes D1, D2 et D_INV), avec un multimètre en position ohm-mètre :
Figure 17
Test de la bonne orientation des diodes
Placer la pointe de touche rouge (le +) sur la masse de l’alimentation (pole - du jack d’alimentation) et la pointe de touche noire (le -) successivement sur les 3 emplacements de l’image ci-dessus. Le multimètre doit afficher une valeur entre 600 à 700 Ω.
Si ne n’est pas le cas (0L ou résistance très élevée), inversez les fils rouge et noir. Si la valeur attendue de la diode apparait, elle est inversée et il faudra la dessouder, la pivoter de 180° et ressouder chaque diode dans le bon sens. L’opération n’est pas trop difficile avec une pointe fine sur le fer à souder.
Il reste alors quelques composants à acheter et à souder sur cette carte généreusement pré-équipée.
Liste des composants additionnels
Attention le site pour l’ESP32 propose plusieurs modèles dont celui à 38 broches. Il faut choisir le modèle 30 broches dit Couleur : ESP32 30PIN
Cette liste contient aussi des exemples de liens vers un fournisseur, mais le choix de votre fournisseur est libre.
Figure 18
Les composants à souder vous-même
On vérifiera d’abord que chaque composant trouve bien sa place sur le circuit imprimé, en repérant leur bonne orientation.
Montage des composants
On commence par les 2 résistances R13 et R14 CMS de 0,5 Ohm du coté CMS.
Figure 19
Soudage des résistance de 0,5Ω et fixation de l’OLED (morceau de fil blanc - voir à la fin)
Les LED rouges sont facultatives, les LED vertes sous le circuit sont très lumineuses on les voit bien par transparence. Si vous en voulez aussi au dessus, les 2 LED rouges montées tête-bêche : +Led2- -Led4+ (le + correspond à la queue la plus longue). Si vous choisissez de placer des LED coté supérieur, ce sont bien des LED rouges (ou oranges) qu’il faut : en effet la tension directe de celles-ci étant inférieure à celle des LED vertes ce seront bien celles-ci qui s’illumineront.
Puis les 3 boutons poussoirs UP, DOWN et SEL. Si vous prévoyez une mise en coffret de LaBox, vous les sur-élèverez avec, par exemple, des headers femelles 3 points.
Ensuite on soude 4 morceaux de 1,5 à 2 cm de fil rigide (queue de résistance) aux 4 coins du convertisseur de tension (DC-DC step down) et on soude les autres extrémités sur le circuit imprimé en prenant soin de l’orientation IN et OUT inscrite sous le convertisseur.
Figure 20
Montage du convertisseur de tension
On soude maintenant le jack d’alimentation et on teste les tensions d’alimentation en branchant un adaptateur 12V : on doit lire 12V à l’entrée du convertisseur et 5V environ à sa sortie. Si votre convertisseur est muni d’un réglage, assurez vous qu’il fournit bien 5V à sa sortie.
Ces modèles sont à 100% de la tension d’entrée lorsqu’ils sont livrés.
Maintenant souder les barrettes 15 pins pour l’ESP32 et 4 pins pour l’afficheur OLED.
Puis le condensateur 220µF entre les barrettes 15 pins et le condensateur 470µF près du jack d’alimentation.
Et ensuite le connecteur de sortie DCC et les 2 connecteurs RJ12 qui n’ont que 4 pins à souder. Le standard LOCODUINO est celui des satellites : le CAN H se situe sur les deux broches centrales (3 et 4) et le CAN L est sur les deux extérieures (2 et 5).
Un header male (2 broches) est à souder à gauche des RJ12. Il sert à mettre en service la 120 ohms terminale du bus CAN avec un jumper.
On peut enficher l’OLED maintenant. Puis l’ESP32.
Avant de souder le L6203 pré monté sur son radiateur, installer et configurer le logiciel CommandStation-EX-LaBox de cette façon : Télécharger la version (actuelle 2.4.0).
Renommer le dossier "CommandStation-EX-LaBox-LaBox" en "CommandStation-EX-LaBox ». Il contient le programme "CommandStation-EX-LaBox.ino".
Dans ce dossier, renommer le fichier "config.LaBox.h" en "config.h"
Ouvrir le programme "CommandStation-EX-Labox.ino" avec l’IDE Arduino. Cela prend un peu de temps car l’IDE charge et ouvre environ 120 éléments !
Vérifier le contenu du fichier "config.h" avec l’IDE Arduino : il doit contenir la définition de la carte LaBox, lignes 61 à 66 :
où 2500 est la valeur de déclenchement en mA de LaBox et 0.8 le coefficient de lecture.
Le courant est limité à 2500 mA, après quoi il y a déclenchement et rétablissement rapide. Après plusieurs tentatives de rétablissement, il est coupé.
Du fait de la dispersion des composants, le déclenchement peut éventuellement ne pas intervenir. Nous avons prévu dans la liste des composants additionnels, une résistance de 4 ohms 100W pour tester ce déclenchement. (soit 3A sous 12V)
Vous pourrez adopter les couples de valeurs suivantes :
1.2 2500
1.0 2000
0.8 1750
Cette modification n’est utile que si vous n’obtenez pas de déclenchement avec 3A.
Cette configuration met LaBox en mode Point d’Accès, avec le nom de réseau "LaBox230" (ce sera le nom du réseau WiFi auquel il faudra connecter votre smartphone avant d’ouvrir l’application de pilotage).
Compiler et téléverser le logiciel dans l’ESP32 avec l’IDE Arduino. Ouvrir le moniteur série de l’IDE Arduino à la vitesse de 115200 b/s.
Au démarrage, l’OLED doit afficher l’interface utilisateur qui donne l’adresse IP de LaBox qui doit être configurée dans l’application de pilotage.
Au préalable configurer l’application (Z21 mobile ou autre) sur l’adresse IP de LaBox.
Pour utiliser LaBox en station Wifi connectée à votre réseau internet, modifier comme suit :
Ligne 118 indiquer le SSID de votre box internet à la place de "LaBox230" : #define WIFI_SSID "Your network SSID"
Ligne 124 indiquer le mot de passe de votre box : #define WIFI_PASSWORD "Your network passwd"
Ligne 138 changer true en false : #define WIFI_FORCE_AP false
Compiler et téléverser le logiciel dans l’ESP32 avec l’IDE Arduino.
Ouvrir le moniteur série de l’IDE Arduino à la vitesse de 115200 b/s.
Au démarrage, l’OLED doit afficher l’interface utilisateur qui donne l’adresse IP de LaBox qui doit être configurée dans l’application de pilotage
Figure 21
Premier démarrage de LaBox en mode point d’accès
On débranche le câble USB de l’ESP32.
On peut alors tester le L6203 pré monté sur son radiateur (sinon les pattes seraient trop courtes) pour éviter de souder un exemplaire défectueux. On enfiche le L6203 simplement dans les trous prévus sur le circuit imprimé, sans souder, car les contacts sont suffisants pour ce test simple.
Brancher le câble USB avec l’IDE Arduino, ouvrir le moniteur série et brancher une alimentation 12V sur le jack d’alimentation. Faire un reset de l’ESP32 et observer les affichages dans le moniteur qui contiennent, entre autres :
<* Labox : 2.4.0 *>
<* Mode Main *>
<* Wifi AP SSID LaBox230 PASS *>
<* Wifi AP IP 192.168.4.1 *>
<* Wifi setup failed to start mDNS *>
<* Wifi setup failed to add withrottle service to mDNS *>
<* UDP Connection started port 21105. Z21 apps are available. *>
<* Server will be started on port 2560 *>
<* Labox Main mode. *>
<* Pin 36 Max 2249mA (2823) *>
<= A MAIN>
<iDCC-EX V-5.0.3 / ESP32 / ESP32 G-3bddf4d>
<* LCD3:Ready *>
<p0>
Tapez "<1>" pour démarrer l’alimentation DCC, observer l’affichage de <p1 MAIN> dans le moniteur et observer que les 2 leds rouges s’allument. Au besoin, bouger un peu le L6203 pour améliorer les contacts.
Si ce test est concluant, débrancher les câbles 12V et USD, enlever l’ESP32 et souder le L6203.
On peut fixer l’OLED de façon fiable (pendant le transport), pour éviter qu’il bouge ou sorte de son connecteur. Prendre un morceau de fil électrique rigide (blanc sur la photo "Soudage des résistance de 0,5Ω et fixation de l’OLED" plus haut) et pliez le en forme de U. Enfiler les 2 branches dans les trous du circuit imprimé coté CMS (voir la figure "Soudage des résistance de 0,5Ω et fixation de l’OLED"). Ces branches passent aussi dans les trous correspondant de l’OLED. Dénuder les fils juste au niveau de l’OLED et souder les à l’OLED.
1) Connecteur du port série de l’ESP32
La sérigraphie des quatre broches du port série situé au dessus du bouton "SEL" est décalée et comporte une erreur : les broches RX et TX sont inversées.
Sans oublier que la liaison Tx n’est possible qu’en soudant le strap SJ3 au verso du circuit imprimé.
Connecteur série pour liaison radio ou filaire
2) La résistance réglable R17 peut être remplacée par une résistance fixe de 1MΩ
Cette résistance réglable sert a ajuster le zéro dans la mesure de courant.
Nous nous sommes aperçu qu’une simple résistance fixe de 1MΩ à la place de la résistance réglable est suffisant et donne un bon ajustement. Ce n’est pas hyper précis mais suffisant pour donner une bonne appréciation de la consommation de courant totale.
Cette mesure de courant ne sert que pour l’affichage sur l’Oled. Elle est indépendante de l’autre mesure de courant qui est faite par le CurrentMonitor pour la programmation des CVs et la détection de court-circuits.
une résistance de 1MΩ peut remplacer le potentiomètre r17
Maintenant votre LaBox est prête à être utilisée pour piloter vos trains... même avant d’avoir lu l’article suivant à venir décrivant le logiciel et le mode d’emploi opérationnel de LaBox.
Pour ce faire, utilisez l’application Z21 mobile (IOS et Android) dans ses fonctions de base et après lecture du mode d’emploi. L’utilisation du bus CAN viendra par la suite, ainsi que le support de RailCom (mais soyez patient, nous ne publions que ce qui marche et que nous avons monté et testé sérieusement).
Pour toute question et partage d’expérience, nous vous donnons rendez-vous sur le forum dans le sujet LaBox" : Une Centrale DCC polyvalente et abordable où vous pourrez regarder un tutoriel de démarrage rapide.