On a tous le même problème de gérer la rédaction "d'articles" et la programmation
J'ai lu la quasi totalité de ton blog, qui mérite effectivement le détour...
Il y a de très bonnes choses, c'est sûr.
En fait, avec un Arduino par canton, c'est un peu comme si tu avais un objet C++ par canton, sauf que, là, l'objet, tu peux le tenir dans la main !
Je note avec bonheur qu'il n'y a finalement que peu de fils sous le plateau, puisque tous les liens sont dans le CAN.
La gestion de la signalisation est finalement totalement indépendante du DCC.
Au travers des messages que tu cites :
- (canton) détection zone & mise à jour de la signalisation & envoi du message au dcc
- (dcc) gestion des positions des locos & envoi d'une requête de vitesse au canton
- (canton) envoi de la directive de vitesse à la loco
- (loco) en fonction de son script et de la signalisation, déduit la vitesse voulue & envoi de la directive au dcc
- (dcc) message DCC
je remarque un certain mix entre la centralisation et la décentralisation.
Et je pense que, suivant la façon dont on voit les choses, on pourrait changer la programmation en augmentant la décentralisation.
1°) Le décodeur de la loco est du commerce (surtout en N, comme pas mal d'entre nous)
2°) On construit une centrale DCC dont le but est de générer un signal DCC à l'attention des locos, uniquement.
Deux actions possibles sur cette vitesse :
- le conducteur donne une vitesse de consigne (j'aimerais bien rouler à 100 km/h)
- le réseau lui envoie un ordre prioritaire (non, ici, tu ne dois pas dépasser le 30 km/h)
En fait, la centrale DCC n'a
aucune raison de savoir où est le train.
Et ce, d'autant plus qu'on va gérer les aiguilles, la signalisation, ... hors DCC, via le CAN.
3°) La gestion de l'occupation, de la signalisation, de la position des aiguilles n'a que faire de l'id DCC du train qu'elle gère.
Le seul qui doive connaitre l'id DCC du train, c'est l'Arduino qui a ce train sur le canton qu'il gère.
C'est juste pour qu'il puisse dire à la centrale : mets le train
n°3 à 30 km/h.
Et aussi, pour refiler ce n° DCC de train à l'Arduino qui gère le canton suivant.
Plus je réfléchis, moins je trouve d'arguments à la centralisation des informations.
Je suis presque certain qu'on peut tout décentraliser si on met un Arduino par canton.
A creuser.