La petite centrale DCC LaBox décrite sur le forum ici (en attendant la série d’articles qu’elle mérite), présente de nombreuses possibilités de pilotage de trains : smartphones IOS et Android via Wifi, Ordinateur via l’USB, notamment avec le logiciel JMRI qui, lui-même, peut être commandé par des smartphones. Tout le monde s’accorde sur les avantages pratiques de cette centrale Locoduino.
Mais l’un des auteurs de cet article (msport) a conçu une manette encore plus simple à utiliser, en liaison radio, avec sa batterie interne. Elle offre d’emblée une maniabilité supérieure. L’objet de cet article est sa description, sa construction, sa programmation (celle d’un Arduino pro-mini) et son utilisation.
Une manette simple et autonome pour LaBox
. Par :
, . URL : https://www.locoduino.org/spip.php?article286Le projet de centrale LaBox wifi DCC++ Can a du succès sur le forum [1] grâce à la possibilité de piloter les locomotives depuis un smartphone. Cependant la commande depuis un écran tactile bien qu’esthétique manque parfois de souplesse et une manette dédiée, avec des commandes directes, ne mobilise pas un appareil dont la vocation est quand même de téléphoner.
Nous allons décrire une manette autonome dont une première réalisation a été publiée aux US par Dave Bodnar en 2016 [2] et que nous avons modifiée et complétée.
De base, la version actuelle de cette manette comporte un clavier 4x4, un afficheur couleur TFT 1.44" et un codeur rotatif, le tout avec un Arduino Mini Pro. Elle permet de piloter de une à quatre locomotives avec leurs 29 fonctions. Trois options permettent de commander des aiguillages, des accessoires statiques et une plaque tournante.
On a fait le choix d’un Arduino Mini Pro pour obtenir un maximum de compacité. Ce choix permet de faire tenir l’ensemble des composants sur un circuit imprimé de 50x95 mm, et le tout dans un boitier économique de 125x80x30 mm, et donc de réduire significativement le coût. Les amateurs d’impression 3D pourraient également donner libre cours à leur passion.
Pour rendre le montage autonome, on le fait communiquer avec LaBox ou une BaseStation par un module radio 433 MHz. On complète par une petite batterie 3,7V 1000 mAh qui lui donne plusieurs heures d’autonomie. On utilise un module chargeur 5V, et un module step-up 3,7V / 5V. Une tension de 3,3V étant recommandée pour le module radio, un régulateur 3,3V la lui fournit. Un câble USB / jack 3,5mm est nécessaire pour la recharge à partir d’un bloc secteur de smartphone (5V).
Bien sur, et ce qui n’est pas le plus facile à mettre en œuvre, un boitier pour contenir le tout.
Comme dans le projet de Dave Bodnar, cette manette envoie directement des ordres DCC++ par radio, qui sont récupérés sur le port série de LaBox via un autre transmetteur installé dans celle-ci. La greffe à faire dans LaBox a été prévue dès sa conception et est décrite en fin d’article.
Au départ, cette manette a été conçue avec un écran OLED 128x64 pixels comme représenté sur l’image suivante :
Cette version est équipée d’un écran OLED 128x64 pixels noir et blanc. On verra quelques photos de cette version dans cet article. Elle n’est pas décrite ici, mais vous pourrez trouver son logiciel sur le Forum ici : [3].
Et puis une version couleur est apparue, équipée d’un écran TFT 128x128 pixels couleur qui permet d’afficher plus d’informations.
Nous allons décrire la version avec écran couleur (boitier blanc).
La manette avec écran couleur
Les choix qui ont été définis pour la réalisation de cette manette sont les suivants :
- commandes de 1 à 4 locomotives (4 adresses DCC différentes) : vitesse et direction ;
- commutation d’une locomotive à une autre par une seule touche (permutation circulaire) en conservant les paramètres de conduite et de fonctions ;
- 29 fonctions par locomotive ;
- commandes de 63 aiguilles (position droite ou déviée) - nombre et plage modifiables dans le programme - ;
- commandes de 63 accessoires (activé ou désactivé) - idem - ;
- commandes d’une plaque tournante : impulsion de lancement / sens ;
- écran TFT 1,44 pouce couleur 128x128 pixels ;
- clavier 16 boutons ;
- batterie Lipo 3,7V 1000 mAh pour une autonomie de plusieurs heures et charge de la batterie par câble USB ou chargeur 5V ;
Ces choix peuvent évidemment être adaptés selon les besoins de chacun. Tous les détails donnés dans cet article permettent de modifier le projet à sa convenance. Des informations complémentaires peuvent toutefois être demandées en utilisant la partie forum en bas de cet article et un sujet dédié sur le forum Locoduino précité.
Le schéma ci-après montre les ingrédients nécessaires
Nous y voyons un Arduino Pro-mini entouré, à sa droite, des organes d’entrées (clavier 16 touches et encodeur quadratique avec bouton), à sa gauche, des organes de sorties (écran couleur TFT et transmetteur radio HC12) et, au dessus, d’une chaine d’alimentation par batterie (alimentation 5V, chargeur de batterie, batterie Lipo 3,7V, élévateur de tension 5V et régulateur de tension 3,3V).
Le régulateur 3,3V est préférable pour le transmetteur HC12. Le Pro-Mini à 16MHz a besoin de 5V, bien qu’il existe une version 3,3V mais moins rapide (8MHz au lieu de 16 MHz pour la version 5V) qui ne suffirait pas avec l’écran TFT.
Le clavier 16 touches est relié à l’Arduino en 4 rangées et 4 colonnes respectivement sur les pins 5, 6, 7, 8 et A0, A1, A2, A3. Le clavier est géré dans le programme par la bibliothèque Keypad de Mark Stanley et Alexander Brevig. Sa disposition en matrice économise 8 entrées. [4].
L’encodeur quadratique est relié aux pins 2,3 pour la rotation et 4 pour le bouton central. Il est géré par la bibliothèque Encoder de PJRC [5]. Les pins 2 et 3 supportent les interruptions pour les meilleures performances de cette bibliothèque. Selon l’encodeur dont on dispose, on pourra être amené à inverser ces deux pins dans le programme pour retrouver le sens normal.
L’écran TFT est connecté en mode SPI (Serial Peripheral Interface) sur les pins 9, 10, 11, 13 de l’Arduino, ainsi que la pin RST. Il est géré par les bibliothèques Adafruit_ST7735 et Adafruit_GFX [6]
Réalisation de la manette
Nous vous recommandons de lire complètement cet article avant de vous lancer dans la réalisation !
On commence par la liste des courses : voici un fichier pdf contenant tous les liens vers un fournisseur possible (si le lien ne fonctionne pas, une recherche avec le nom du produit donnera des résultats actualisés).
A la fin de cette liste, on pourra trouver la visserie ainsi que l’outillage dont on aura certainement besoin, notamment pour percer le boitier et y fixer les éléments à l’intérieur.
En plus de cette liste, il faut se procurer le circuit imprimé qui peut être commandé chez JLCPCB [7] avec ces fichiers Gerber :
Voici le circuit imprimé livré (deux exemplaires par carte, sécables, le prix avec les options proposées par défaut est de 1,63€ pour 5 exemplaires + 5,54€ de port). Soit un total de 7,17€.
L’image à droite du circuit imprimé représente les pistes sur les 2 faces, pour vous aider à suivre les connexions si nécessaire.
D’après la liste des ingrédients à approvisionner, vous devriez disposer de :
- Un Arduino Pro-mini 5V 16Mhz. Il en existe plusieurs modèles dont les broches A4 et A5 sont tantôt à coté des broches A2 et A3 mais en retrait par rapport au bord, tantôt en bordure sur le petit coté avec A6 et A7. Cela a son importance car la mesure de la tension de la batterie sur l’écran initial nécessite la broche A7, ce qui rend nécessaire la version avec les quatre broches A4-A7 alignées.Ce n’est que la mesure de la tension initiale de la batterie qui n’est pas opérationnelle si on n’a pas acquis le bon modèle de Pro Mini. C’est sans incidence sur le fonctionnement de la manette, tous les modèles de Pro Mini conviennent.
On peut contourner le problème en soudant un fil volant entre A7 et le + de la batterie. Par exemple entre A7 et le Vin du module step-up.
- Un écran TFT 1,44 pouce, 128x128 pixels, équipé du contrôleur ST7735, sans lecteur de carte SD.
- Un module radio HC12
- Un module d’interface USB-série, à base de FTDI232RL (qui a été validé) ou équivalent
- Un chargeur de batterie Lipo 3,7V
- Une batterie Lipo 3,7V 1000mAh
- Un convertisseur de tension élévateur vers 5V
- Un régulateur 3,3V
- Quelques résistances et condensateurs CMS (100nF, 220µF, 10kΩ)
Puis de :
- L’encodeur rotatif
- Les boutons poussoirs à queue longue (20 mm hors tout) pour sortir du boitier avec leur capuchon
- l’interrupteur arrêt-marche qui n’est autre qu’un bouton poussoir avec blocage, monté sur deux fois trois contacts 2,54 tulipe pour être amené à la bonne hauteur.
- Le boitier plastique de votre choix. Le boitier 125x80x25mm facilite relativement le montage en fixant le circuit imprimé sur son fond avec des entretoises nylon de 10mm. La batterie se colle au fond avec du double face mince.
- Un câble USB-jack 3,5mm pour la charge de la batterie ou un câble USB micro qui s’insère directement dans celui du chargeur (selon votre choix de découpe du boitier)
- Des barrettes de broches mâles et femelles qui pourront être découpées selon les besoins (2,54mm de type DuPont, dits "headers")
- Et aussi un peu de visserie et d’outils pour percer le boitier et fixer les éléments à l’intérieur.
Voilà les éléments achetés et rassemblés pour la photo :
Le montage s’inspirera des photos présentées dans cet article.
Préparation des modules radio HC12 :
Pour la manette : il faut souder l’antenne coté opposé au texte en pliant à 90° l’extrémité : ensuite, il faut souder le connecteur 2,54 (header) 1x5 mâle coudé coté opposé au texte. Le circuit imprimé comporte un connecteur femelle coudé à quatre broches : la broche SET reste en l’air.
Une fois les connecteurs soudés, il faut configurer le transmetteur à 115200 bauds : On peut utiliser le moniteur de l’IDE à la vitesse de 9600 b/s et en envoyant la séquence AT+B115200 avec le module convertisseur USB/Série (typ. FTDI), tout en mettant la broche SET au GND. Le branchement se fait avec des nappes DuPont femelle/femelle dont on aura mis un fil en Y pour faire la connexion SET/GND avec une soudure. Un montage à l’aide d’un breadboard et de nappes DuPont est également possible, ce qui évite une soudure, mais l’expérience montre que la fiabilité n’est pas toujours au rendez-vous. Sous Windows un petit utilitaire permet de faire cette opération visuellement et incidemment de changer de canal si besoin était.
https://github.com/robert-rozee/HC-...
Préparation de la batterie :
La batterie est livrée fils nus, il faut les raccorder à un header femelle 1x2. Pour éviter un court-circuit, on procédera en deux temps : enfilage d’un morceau de thermorétractable (Ø 1 mm) sur un fil, soudure, rétractation, enfilage d’un morceau de thermorétractable sur l’autre fil, rétractation, enfilage d’un morceau de thermorétractable (5mm) sur l’ensemble, rétractation.
Nous vous recommandons de ne pas brancher la batterie avant d’avoir testé le montage, en commençant par les alimentations, puis le fonctionnement général.
Assemblage du circuit imprimé :
On taraude les deux trous du bas avec un taraud M3x0.5 pour pouvoir y fixer les entretoises dont on coupera à raz la partie filetée qui dépasse du circuit imprimé. Ce qui permet d’implanter les deux boutons correspondants
Comme toujours, on commence par les composants les plus bas (résistances et condensateurs CMS, régulateur 3,3V). Les deux condensateurs de 100nF sur l’encodeur ne sont plus utiles depuis que les rebonds sont gérés par le logiciel de la bibliothèque.
Il faut souder le connecteur de la batterie (pins header mâle 1x2 coudé) en dessous du circuit imprimé. Le module chargeur se soude sur six pins headers 1x1 aux coins, de même le step-up sur un 1x3. L’interrupteur s’enfiche sur deux supports tulipe 1x3 pour la rehausse et un peu de souplesse. Ensuite, les condensateurs et le jack d’alimentation (pour la recharge). Les deux tailles de jack 5,5mm et 3,5mm sont possibles mais il vaut mieux privilégier le 3,5mm. Le 5,5mm étant généralement la taille pour les alimentations 12V, tension qui serait probablement fatale à l’ensemble du montage. Les deux pins headers femelle 1x12 plus le pin header femelle 1x4 pour l’Arduino (dont A7), le pin header femelle 1x8 pour l’afficheur TFT.
Pour le soudage des composants CMS, on se reportera à l’article Utiliser les composants CMS. On peut recommander de couper un petit bout de soudure, de le placer à coté d’une extrémité du composant, d’immobiliser le composant en appuyant avec une pince brucelles fine tout en approchant la pointe du fer à souder ce qui le fixe de ce coté soudé, puis de souder l’autre coté de façon habituelle, avec la soudure à la main.
Ensuite on installe le chargeur et le convertisseur-élévateur (step-up) en plaçant sa bobine vers le circuit imprimé.
Comme on place les composants de plus en plus haut, on continue avec les deux connecteurs femelle 12 broches pour le Pro-mini, le connecteur 8 broches femelles pour l’écran TFT, le connecteur 4 broches femelles pour le transmetteur HC12 qui se place du coté opposé au Pro-mini sous le circuit imprimé et le connecteur 2 broches mâles pour la batterie qui se place aussi sous le circuit imprimé (! avant le module chargeur), du coté opposé au chargeur Lipo.
Ayant coupé à raz les deux queues des entretoises, on se lance dans la soudure des seize boutons poussoirs après avoir vérifié soigneusement l’alignement des tiges.
A ce stade, cela ressemble à çà :
Sur cette photo on voit le connecteur nécessaire à la programmation avec des broches des deux cotés de l’Arduino Pro-mini. Or, la partie supérieure des broches ne pourraient pas tenir dans le boitier. Elles ne servent que pour la mise au point du programme et évitent de démonter le Pro-mini de son support à chaque télé-déversement. Dans le montage standard, on utilisera un simple connecteur 6 broches, broches en dessous (femelle ou mâle, au choix).
Si les broches du Pro-mini ne sont pas fournies soudées, on les soudera sans l’installer pour le moment. Le connecteur 6 broches est aussi à souder sur le petit coté du Pro-mini pour sa programmation (broches DTR, TX, RX, VCC, GND, GND).
On place et soude ensuite l’encodeur, l’interrupteur arrêt marche, surélevé par deux séries de trois broches femelles tulipes, puis les 16 boutons poussoirs (après avoir taraudé les deux trous, vissé les entretoises et coupé la partie qui dépasse).
Quand tout est monté et soudé la platine équipée est comme ceci :
Préparation du boitier :
On taraude les colonnes du fond du boitier pour les quatre vis M3x20.
On commence la découpe par le couvercle. Pour repérer la position des trous à faire, on imprime à échelle 1/1 le circuit imprimé en version normale et en version miroir.
Ces représentations à l’échelle 1 sont données ici :
Comme à la fabrication, il y a 2 circuits imprimés par plaque de 10x10 cms, on en découpe un seul de chaque version qu’on immobilise en place par de l’adhésif. Le direct au fond du boitier, le miroir au dos du couvercle. On repère bien le coté sur lequel on se cale (droite ou gauche, avouerais-je que je me suis fait prendre après m’être laissé distraire). Laisser 1 à 2 mm entre le bord de la feuille et le coté du boitier. On peut également mieux centrer le circuit imprimé et ne pas souder le jack de 3,5mm, que dans ce cas on colle au fond du boitier à la Loctite, avec perçage du boitier en rapport.
On perce au travers du papier des trous à 1,5mm, qu’on agrandit à 6mm avec une fraise conique (on peut aussi le faire avec un forêt de 6 mm, mais dans du plastique, le centrage est vite perdu).
Pour la découpe de la fenêtre de l’afficheur, on perce aux quatre coins, mais avec un cadre sensiblement plus petit que l’afficheur, j’ai toujours été surpris, après première découpe, de ne pas trouver l’afficheur là où je l’attendais. On utilise une fraise de 20mm avec la Dremel. Prévoir plusieurs mm de marge en retrait et terminer au cutter et à la lime plate.
On perce le passage de l’encodeur et du bouton de mise sous tension (de même 1.5mm puis 6mm).
Puis de même, les seize trous des boutons. Ébavurage à la fraise à 90° et finition de tous les trous à la lime queue de rat.
Dans le fond du boitier, vérifier avec une tige fine où tombent les trous des deux boutons du couvercle (ceux des colonnettes) pour percer les quatre. Au dos, faire les chanfreins à 90°.
Percer après repérage le trou latéral du couvercle à 3,5/4 mm pour le jack de recharge.
Poser des capuchons sur les tiges des boutons poussoirs avec un soupçon de Loctite sur le bout.
On fixe la batterie avec un petit morceau de double face mince. On cale l’afficheur avec un petit morceau de plastique récupéré lors de la découpe de la fenêtre. Son champ est à coller sur le circuit imprimé.
Vérifications et mise en service :
Ce paragraphe est à lire avant de commencer le montage, car des tests sont à réaliser tout au long du montage pour garantir le bon fonctionnement et éviter de tomber dans un processus de réparation !
La batterie est repérée sur le circuit imprimé. Le + est en bas. En plus mettre un + au feutre.
Avant d’enficher les composants, la brancher et appuyer sur le bouton de mise sous tension.
Vérifier qu’il y a 5V entre Vcc et GND entre la 2e et la 4e broche du support Arduino, rangée du haut.
Vérifier qu’il y a 5V entre Vcc et GND entre la 1ère et la 2e broche du support TFT, en partant du bas.
Vérifier qu’il y a 3,3V entre Vcc et GND entre la 1ère et la 2e broche du support HC12, en partant du haut.
Mettre hors tension. Monter le circuit imprimé dans le boitier.
Enficher l’écran TFT et le HC12, en faisant attention à ne pas décaler les broches par rapport au support. La broche SET du HC12 reste en l’air.
Télécharger le programme dans l’Arduino avec le module convertisseur USB/Série (celui de FTDI a les broches alignées avec celles de Arduino) avant de l’enficher dans le bon sens. Le bouton de reset est à droite.
Si c’est OK, à la mise sous tension, l’afficheur indique : "Appuyer ...."
Nous conseillons de tester le Pro-mini seul pour commencer en connectant le module USB-série (typ. FTDI) sur ses broches dédiées à cet effet. Si on a mis un header femelle 6x1 sur l’Arduino, on peut y brancher directement le module convertisseur USB/Série (typ. FTDI) mâle. On peut alors téléverser le logiciel de la manette donné en fin d’article.
Pour ce type de test, on peut utiliser le moniteur de l’IDE réglé à 115200 bauds. Le logiciel doit envoyer au démarrage un numéro de version et une date de version, puis la commande "<1>".
Jusque là le Pro-mini n’a pas besoin d’être placé sur son support pour faire ce premier test. Si tout se passe bien on peut l’installer sur son support et tester à nouveau. L’avantage maintenant est que le montage complet peut-être testé avec l’alimentation de l’USB (sans la batterie). Mais pour le téléversement du logiciel, il ne faut pas installer le transmetteur HC12 qui partage les broches RX et TX avec le module convertisseur USB/Série (typ.FTDI). En effet, la connexion du module HC12 sur les broches RX/TX de l’Arduino peut empêcher le déversement du programme.
Dans ces conditions, ensuite, on peut tester l’écran TFT qui est placé au dessus du chargeur de batterie. L’affichage de son écran d’accueil confirme le bon fonctionnement.
Vient ensuite le test de l’encodeur et des boutons du clavier. C’est avec la touche *
qu’on introduit l’adresse des quatre locomotives pour les stocker en EEPROM. Confirmation avec #
En appuyant successivement sur la touche #
on doit voir défiler les 4 locos possibles avec leur adresse DCC par défaut. Si votre encodeur tourne dans le mauvais sens, il y a lieu d’inverser les pins 2 et 3 dans le programme.
Lorsque tous les tests sont bons, il est possible d’installer la batterie. Avant fermeture du boitier, celle-ci peut être chargée en branchant un câble USB sur la prise USB du chargeur (micro-USB). La led rouge du chargeur indique la charge et la led bleue, la fin de charge.
A la fin la manette avec son boitier ressemble à cela :
Intégration du transmetteur HC12 dans LaBox
Les modifications à apporter dans LaBox sont très simples :
- Un connecteur femelle 4 broches est prévu sur le coté droit pour le transmetteur HC12
- Le potentiomètre de 500kΩ doit normalement avoir été soudé "à plat" comme sur la photo
- On peut aussi remplacer le condensateur C7 par un modèle plus petit comme un condensateur CMS tout aussi facile à souder en redressant ses pattes, du coté composants.
Le module HC12 s’installe sans difficulté à droite de l’écran OLED et son antenne passe, soit au dessus du condensateur C7, soit à gauche du condensateur en pliant sa base de 30° environ. La broche SET reste en l’air.
Liaison avec une BaseStation
La BaseStation standard telle que Greg Bermann l’a conçue peut recevoir des ordres DCC++ sur son port série. Une manette peut y être connectée en filaire et éventuellement s’y alimenter en 5V. Ce qui permet de vérifier la manette si on a un doute sur la liaison radio. La connexion de TX/RX d’un HC12 sur respectivement RX/TX soit D0/D1 du UNO est fonctionnellement équivalente à ces quatre fils. Et donc assure le pilotage de la BaseStation.
HC12 | UNO |
---|---|
Tx | Rx |
Rx | Tx |
GND | GND |
VCC | 3,3V |
Mode d’emploi
Locomotives :
Sur la première ligne de l’afficheur on a derrière V= la vitesse sur 128 pas. L’encodeur permet de la régler. Le sens est donné par les >>>
, il s’inverse par appui sur l’encodeur avec affichage de <<<
. Sur la deuxième ligne de l’afficheur on a l’adresse de la locomotive avec son ordre (#n) parmi les quatre en accès direct. On cycle parmi les quatre avec le bouton #
. (On peut limiter ce nombre entre un et quatre à l’initialisation).
La commande des fonctions :
du groupe , F0 F1 F2 F3 F4 F5 F6 F7 F8
commandées par 1, 2, 3, 4, 5, 6, 7, 8, 9
, on passe dans le groupe 1
et suivants par la touche D
donc au groupe 1
, F9 F10 F11 F12
commandées par 6, 7, 8, 9
et au groupe 2
, F13 F14 F15 F16 F17 F18 F19 F20
commandées par 2, 3, 4, 5, 6, 7, 8, 9
et au groupe 3
, F21 F22 F23 F24 F25 F26 F27 F28
commandées par 2, 3, 4, 5, 6, 7, 8, 9
On revient dans le groupe par la touche D
Le bouton remet à toutes les fonctions des groupes et 1
(dans ces groupes)
Le bouton 1
remet à toutes les fonctions des groupes 2
et 3
(dans ces groupes)
Ainsi, sur les lignes trois à six, on a l’affichage des fonctions de la locomotive en cours d’utilisation : 1
pour activé, pour désactivé.
Sur la première de ces quatre lignes :
dans l’ordre F4 F3 F2 F1 F0
puis F8 F7 F6 F5
du groupe , commandées par 5, 4, 3, 2, 1
et 9, 8, 7, 6
.
sur la deuxième ligne : F12 F11 F10 F9
du groupe 1
commandées par 9, 8, 7, 6
une fois passé dans le groupe 1
par la touche D
sur la troisième ligne : F20 F19 F18 F17 F16 F15 F14 F13
du groupe 2
commandées par 9, 8, 7, 6, 5, 4, 3, 2
, une fois passé dans le groupe 2
par la touche D
sur la quatrième ligne : F28 F27 F26 F25 F24 F23 F22 F21
du groupe 3
commandées par 9, 8, 7, 6, 5, 4, 3, 2,
une fois passé dans le groupe 3
par la touche D
On revient dans le groupe par la touche D
Le bouton D
repéré P/N
sur cette autre version de la manette change le groupe de fonctions G0
, G1
, G2
, G3
.
Aiguillages :
On passe dans ce mode par la touche A. Retour au mode locomotive par un appui sur une touche sauf les chiffres. On choisit le n° de l’aiguille à commander par le codeur rotatif. Alternativement Direct ou Dévié. Un appui sur le codeur lance la commande. Actuellement le nombre d’aiguillage est limité à 64 mais la plage peut être modifiée dans le programme. Le codage NMRA en adresse / sub-adresse est actuellement affiché.
Accessoires :
On passe dans ce mode par la touche C. Retour au mode locomotive par un appui sur une touche sauf les chiffres. On choisit le n° de l’accessoire à commander par le codeur rotatif. Alternativement Activé ou Désactivé. Un appui sur le codeur lance la commande. Actuellement le nombre d’accessoires est limité à 64 mais la plage peut être modifiée dans le programme. Pour les accessoires fonctionnant avec une impulsion, c’est au décodeur de gérer la durée de cette impulsion.
Plaque tournante :
On passe dans ce mode par la touche B. Retour au mode locomotive par un appui sur une touche sauf les chiffres. On choisit le sens à commander par le codeur rotatif. Alternativement Horaire ou Antihoraire. Un appui sur le codeur lance la commande. Deux commandes DCC++ simultanées sont lancées : une correspond à l’activation - désactivation d’une adresse d’accessoire et définit le sens de rotation du moteur. L’autre commande correspond à l’activation d’une autre adresse d’accessoire et doit être décodée comme une impulsion pour le solénoïde. Ce fonctionnement correspond aux plaques Fleischmann et dérivées (anciennes et récentes). Actuellement les adresses sont codées "en dur" et peuvent être modifiées dans le programme.
Écran initial et supervision de la batterie
Cet écran est affiché pendant une seconde pendant laquelle il est possible de modifier le nombre de locomotives, parmi lesquelles on fera ultérieurement un cycle par le bouton approprié. Pour rentrer dans cette modification, on appuie sur le bouton de l’encodeur. Pendant ce temps, on lit la tension de la batterie. La batterie est protégée contre une décharge profonde et l’écran s’éteindra avant que la tension tombe en dessous de 3V. La recharger avant.
Description du logiciel
On rappelle les articles de Locoduino expliquant comment installer l’IDE : Installation de l’IDE Arduino
Comment compiler un programme et le transférer dans la mémoire de l’Arduino : Arduino : toute première fois !
De même pour installer une bibliothèque (library en anglais) : Installer une bibliothèque
Ici on utilise un Arduino Pro Mini, qui comporte le même cœur que les Uno et Nano, mais ne comporte pas d’interface USB ni de régulateur 3,3V. On est obligé d’utiliser un convertisseur USB/Série (typiquement FTDI car les broches de celui-ci sont exactement en correspondance pour le Pro Mini), ce qui ne change rien par ailleurs.
Compte tenu de l’implantation du circuit imprimé et de la taille réduite du boitier, il faut enlever l’Arduino de son support pour le connecter au module convertisseur USB/Série (typ. FTDI), qui, lui, sera relié au port USB de l’ordinateur. (ou le programmer avant montage).
Bibliothèques utilisées :
#include <Adafruit_GFX.h> // la bibliothèque graphique générale d'Adafruit
#include <Adafruit_ST7735.h> // bibliothèque de l'afficheur TFT utilisé.
#include <SPI.h> //bibliothèque de l'interface de l'afficheur TFT utilisé
#include "EncoderStepCounter.h" //bibliothèque de l'encodeur.
#include<EEPROM.h> // bibliothèque permettant de conserver en Eeprom les informations des locomotives même hors tension.
#include <Keypad.h> //bibliothèque permettant de gérer un clavier en matrice, 4x4 ici.
Dans le Setup
getNumberOfLocos()
: permet de modifier le nombre de locomotives accessibles directement de 1 à 4.
Dans la Loop
On teste le clavier en permanence :
De à 9
= fonctions
*
= changement d’adresse de la locomotive active
#
= changement de locomotive active
A
= routine de la fonction aiguillages
B
= routine de la fonction plaque tournante (sens moteur horaire/antihoraire et impulsion bobine)
C
= routine de la fonction accessoires
D
= changement du groupe de fonctions de la locomotive active (0 – 3) fonctions qui sont commandées au clavier
Le numéro de la locomotive active est ActiveAddress
(de 1 à 4), on le change (en cycle) avec la touche #
L’adresse de la locomotive active se modifie comme suit :
après avoir appuyé sur la touche *
, il s’affiche :
Adresse DCC ? 1 (ou 2 ou 3 ou 4, c’est le n° de la locomotive active choisie avec #)
On tape alors la nouvelle adresse en commençant par des si besoin. Il faut compléter les quatre chiffres pour terminer.
Cette adresse est conservée en EEPROM.
Le sens la locomotive active est LocoDirection[ActiveAddress]
, sa vitesse est LocoSpeed[ActiveAddress]
.
doPoint()
gère le codeur pour avoir le numéro de l’aiguillage à commander et doPointLCD()
l’affiche sur le TFT.
doAccessory()
gére le codeur pour avoir le numéro de l’accessoire à commander et doAccessoryLCD()
l’affiche sur le TFT.
doDCC()
envoie les commandes DCC++ via Serial.print au module HC12, donc en final à la centrale.
doDCCfunctionXX()
envoie les commandes DCC++ pour les fonctions.
doDCCpoint()
envoie les commandes DCC++ pour les aiguillages.
doDCCaccessory()
envoie les commandes DCC++ pour les accessoires.
getAddresses()
récupère les adresses en EEPROM.
saveAddresses()
sauve les adresses en EEPROM.
doMainLCD()
affiche l’écran TFT principal : vitesse, sens, adresse, numéro et fonctions de la locomotive active.
void doPointLCD()
affiche l’écran de commande des aiguillages.
void doAccessoryLCD()
affiche l’écran de commande des accessoires.
Evolutions et informations complémentaires
[2] La vidéo de présentation : https://www.youtube.com/watch?v=qyK... (on peut sauter la partie entre 4’ et 15’ consacrée à sa découpeuse laser)
L’article de Dave Bodnar : http://www.trainelectronics.com/DCC...