Pour le tien, je pense que quand le décor aura évolué, on en reparlera, je suis sûr que ça sera bien.
D'autant qu'il n'y a pas encore de décor, car je tiens à installer tous les équipements électriques (détecteurs, signaux, alimentations DCC (au moins 3, une pour le va et vient, une pour la voie de programmation et au moins une pour le réseau principal, avec de l'électronique et des relais pour les isoler ou raccorder les zones ensemble), ainsi que les branchements du décor.
Pour le moment, j'ai 2 centrales DCC (modules de traction), un TCO physique (plaque représentant le réseau avec leds d'occupation et de position d'aiguilles et inverseurs d'aiguilles), un module de commande d'aiguilles et un système de gestion simplifié.
Chaque module est connecté sur un bus CAN et échange des messages avec les autres modules.
Le module de traction du va et vient est le plus récent. Il tourne sur Nano avec une face avant sympa :
C'est un projet basé sur DCC++ (
http://forum.locoduino.org/index.php?topic=203.60) que j'ai modifié pour intégrer une reconnaissance automatique de l'adresse DCC de la loco posée sur la voie, l'automate de gestion complète du va et vient avec asservissement de vitesse selon une consigne affichée en km/h, et d'autres asservissements pour réaliser le ralentissement et l'arrêt en gare en souplesse, comme en vrai.
Le module de traction principal a été réalisé il y a plus d'un an et est basé sur CmdrArduino.
Il gère les vitesses, directions et feux de 4 trains par potentiomètre à glissière et inverseurs et envoie les changements par message CAN. Il peut aussi recevoir des messages pour ralentir ou stopper un train, ce qui est nécessaire pour faire du cantonnement et un block système.
Je vais complètement refaire ce module sur la base de DCC++ avec diverses manettes de commande. J'y reviendrai plus loin.
Le module de commande d'aiguilles est un Arduino Mega qui pilote 40 relais (2 par aiguille, afin de n'alimenter la bobine qu'une seconde et jamais 2 bobines en même temps).
Le module TCO est aussi un Arduino Mega qui gère 20 inverseurs et 80 leds. Il fallu recourir à un paquet de 74HC595 pour démultiplier les commandes des leds. Il reçoit aussi la rétrosignalisation (les détecteurs de consommation). Je le détaillerai plus loin.
Enfin le module gestionnaire est un Arduino Due qui doit se charger de tout gérer en communiquant avec les autres modules via le bus CAN.
En fait j'ai construit ces modules ne sachant pas exactement où aller au moment où j'ai commencé. Mais les échanges très instructifs sur Locoduino m'ont amené à définir toutes les fonctionnalités que je souhaite avec des possibilités d'évolutions.
Ainsi, le gestionnaire devra piloter le réseau conformément aux règles de la SNCF : le train doit obéir aux signaux. Il doit aussi piloter le TCO, les aiguilles, les signaux et les éléments de décor en relation avec les circulations (passage à niveau par exemple). Il doit aussi assurer les circulations automatiques.
Je sais depuis longtemps qu'il serait trop compliqué de concentrer la totalité des traitements dans un seul Arduino, même un Due qui en est certainement capable.
Deux exemples :
1) Le module de traction peut connaitre les trains dans le détail (nom, correspondance entre crans DCC et vitesse réelle par étalonnage des vitesses, pilotage par la vitesse réelle plutôt que par le cran DCC, etc..). Il peut gérer seul le ralentissement avec la seule connaissance de la distance. Il peut donc présenter une interface simplifiée avec le gestionnaire qui peut voir des trains "virtuels" et ne pas s'encombrer des caractéristiques spécifiques à chaque train.
2) Le module TCO qui reçoit la rétrosignalisation peut filtrer les signaux reçus avant de transmettre des occupations et libérations "propres".
Sur tout cela je reviendrai plus loin en détail.