Page 10 sur 14
Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 12:12
par patrice_b
Comme Hervé avance la réalisation a grand pas, et de main de maître, je me dit qu'il faut que je réfléchisse a l'automatisation de ce merveilleux engin.
Bien sur rien ne presse, mais, ce serait bête de se dire, une fois terminé, mince, j'ai oublié ça ou ça ...
Alors le fonctionnement manuel est parfait.
Vu que je prévois, l'utilisation (au moins au niveau zéro) de retro-signalisation, par zones de détection de courant , ce que j'aimerais ajouter, c'est la gestion de la sortie ou rentrée des rames du stockage, par le logiciel de gestion de train (Rocrail ou iTrain...)
A une heure donnée, l'APT va chercher une rame au stockage, et l'envoi sur le réseau, et inversement pour la rentrée.
Pour l'ascenseur vers le niveau un, un pote m'avait donné une idée. je vous la donne :
Récupérer les fils de commande de l'ascenseur, faire une dérivation vers une entrée d'une carte d’accessoire, et commander la montée ou la descende par le logiciel qui pilote la carte. Ça devrait permettre une circulation automatique sur l'ascenseur.
Pour l'APT, c'est bien plus compliqué.
Je ne voudrais pas laisser les 36 voies de stockage sous tension en permanence (bonjour la consommation), ou alors il me faudra un booster que pour l'APT, ce qui est une possibilité, mais va t'elle apporter grand chose ? (Le Booster RailBox a iun prix abordable)
Je pense qu'il est mieux d'alimenter que la voie du stockage en cours d’utilisation, comme il est prévu pour le mode manuel par Hervé...
Auriez vous des idées ? Des pistes ?
Merci de m'avoir lu

Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 13:39
par ramasoft
Pour la commande de l'ascenseur, ce n'est pas juste deux fils qui commandent les mouvements mais le logiciel de l'Arduino, donc il faudrait prévoir dans le logiciel une interface externe avec une adresse pour chaque voie comme pour un pont tournant: quand le logiciel de gestion du réseau envoie une commande à cette adresse, l'APT se met directement sur cette voie et renvoie un code de confirmation quand la position est verrouillée.
Le dialogue se faisant par le DCC avec la bibliothèque ad hoc (il y en a plusieurs)
Pour ne mettre le courant que sur la voie active on peut utiliser des relais, mais là aussi c'est au logiciel de commander ça.
Et comme il y a beaucoup de voies il faudra prévoir un multiplexage.
Donc petite modif à prévoir sur le logiciel de commande
Au boulot Hervé ...

Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 13:47
par patrice_b
Merci Patrick.
Ah voila une explication intéressante.
Mais je pige pas tout
Hervé va finir par me détester...
(RailBox sorte une carte de gestion de pont tournant...)
Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 13:48
par herwat
ramasoft a écrit : 21 oct. 2025, 13:39
Pour ne mettre le courant que sur la voie active on peut utiliser des relais, mais là aussi c'est au logiciel de commander ça.
Et comme il y a beaucoup de voies il faudra prévoir un multiplexage.
Donc petite modif à prévoir sur le logiciel de commande
Au boulot Hervé ...
C'est prévu !
C'est même à l'étude !

Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 13:54
par ramasoft
Pour un pro de l'ascenseur, je me disais aussi que tu aurais prévu tout ça et peut-être même davantage...

Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 13:55
par herwat
Pour les logiciels, j'ignore totalement leur fonctionnement . Il m'est donc impossible d'étudier quoi que ce soit . . . .
Mais je suis ouvert à tout !
Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 13:57
par herwat
Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 13:58
par patrice_b
Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 14:00
par patrice_b
herwat a écrit : 21 oct. 2025, 13:55
Pour les logiciels, j'ignore totalement leur fonctionnement . Il m'est donc impossible d'étudier quoi que ce soit . . . .
Mais je suis ouvert à tout !
Avec les pointures de ce forum, sur le sujet, on va apprendre, et c'est très intéressant pour moi.

Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 14:02
par ramasoft
Il faut que chaque voie ait une adresse.
Avec une bibliothèque genre DCC Decoder l'Arduino écoute le DCC et quand il repère une commande sur une adresse des voies de l'APT il se positionne dessus.
Et quand la position est verrouillée il renvoie un code de confirmation ou mettre une simple temporisation dans le logiciel de commande du réseau.
Il faut voir effectivement comment ce logiciel fonctionne, par exemple quand il doit commander une plaque tournante.
Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 14:13
par patrice_b
J'ai trouvé ça sur LocoDuino :
Article pont Tournant DCC
Je vais voir ce qu'ils disent...
Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 14:20
par herwat
ramasoft a écrit : 21 oct. 2025, 14:02
Il faut que chaque voie ait une adresse.
Avec une bibliothèque genre DCC Decoder l'Arduino écoute le DCC et quand il repère une commande sur une adresse des voies de l'APT il se positionne dessus.
Et quand la position est verrouillée il renvoie un code de confirmation ou mettre une simple temporisation dans le logiciel de commande du réseau.
Il faut voir effectivement comment ce logiciel fonctionne, par exemple quand il doit commander une plaque tournante.
Je pourrais m'inspirer de l'article de Patrick (Patlum) sur l'éclairage de voitures .
Et je ferais une liaison entre les deux arduino . . . .
Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 14:56
par herwat
Je viens juste de recevoir ce qu'il faut (peut-être)
.
IMG_3342.jpg
.

Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 15:48
par patlum
Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 16:23
par patrice_b
Hervé tu avais déjà tout ça en tête ?

Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 16:46
par ramasoft
Pour les tests, tu peux le commander avec une multimaus comme un aiguillage
Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 17:26
par patrice_b
Je l'utilise (quand je fais des tests) que pour conduire une loco la Multimauss, sinon je passe par l'appli RB (pour le moment).
Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 17:56
par likiki
Perso j'ai fait comme suit :
Un arduino Mega qui commende tout
Un wemos branché sur la Mega via TX / RX (les fils sont très court pour éviter les parasites)
J'ai 2 cartes avec chacune 8 relais et équipé d'un ESP32 =>
Ali .... Baba ? ?
Fonctionnement :
Je demande a l'ascenseur de descendre au -2 (par exemple).
1) coupure de l'alimentation de la voie du plateau, de la voie de droite et de la voie de gauche
La MEGA envois dans le Wemos les ordres suivants. Carte 1 relais 1 = 0, relais 2 = 0, carte 2 relais 1 = 0
2) la MEGA fait descendre l'ascenseur. Une fois arrivé, la Mega donne l'ordre d'alimenter la voie du plateau Carte 1 relais 1 = 1 et la voie du -2 soit Carte 2 relais 3 = 1
En langage Arduino lorsque l'on coupe les alimentations, cela donne :
Code : Tout sélectionner
void Coupure() {
Serial.println("ESP2:C0"); delay (100) ;
Serial.println("ESP2:C-1"); delay (100) ;
Serial.println("ESP2:C-2"); delay (100) ;
Serial.println("ESP2:C-3"); delay (100) ;
Serial.println("ESP2:C-4"); delay (100) ;
Serial.println("ESP2:C-5"); delay (100) ;
Serial.println("ESP2:CP"); delay (100) ;
Serial.println("ESP2:CR"); delay (100) ;
Serial.println("ESP3:C0"); delay (100) ;
Serial.println("ESP3:C-1"); delay (100) ;
Serial.println("ESP3:C-2"); delay (100) ;
Serial.println("ESP3:C-3"); delay (100) ;
Serial.println("ESP3:C-4"); delay (100) ;
Serial.println("ESP3:C-5"); delay (100) ;
Serial.println("ESP3:CP"); delay (100) ;
Serial.println("ESP3:CR"); delay (100) ;
}
Pour alimenter les voies sélectionnées cela donne :
Code : Tout sélectionner
if (msg == "0") { Aller = Pos0SS; Position = 0; Deplacement(); Serial.println("ESP2:0"); delay(100) ; Serial.println("ESP3:0"); } // Action si choix RC
else if (msg == "-1") { Aller = Pos1SS; Position = -1; Deplacement(); Serial.println("ESP2:-1"); delay(100) ; } // Action si choix -1
else if (msg == "-2") { Aller = Pos2SS; Position = -2; Deplacement(); Serial.println("ESP2:-2"); delay(100) ; } // Action si choix -2
else if (msg == "-3") { Aller = Pos3SS; Position = -3; Deplacement(); Serial.println("ESP2:-3"); delay(100) ; } // Action si choix -3
else if (msg == "-4") { Aller = Pos4SS; Position = -4; Deplacement(); Serial.println("ESP2:-4"); delay(100) ; } // Action si choix -4
else if (msg == "-5") { Aller = Pos5SS; Position = -5; Deplacement(); Serial.println("ESP2:-5"); delay(100) ; } // Action si choix -5
else if (msg == "-6") { Aller = Pos6SS; Position = -6; Deplacement(); Serial.println("ESP3:-1"); delay(100) ; } // Action si choix -1
else if (msg == "-7") { Aller = Pos7SS; Position = -7; Deplacement(); Serial.println("ESP3:-2"); delay(100) ; } // Action si choix -2
else if (msg == "-8") { Aller = Pos8SS; Position = -8; Deplacement(); Serial.println("ESP3:-3"); delay(100) ; } // Action si choix -3
else if (msg == "-9") { Aller = Pos9SS; Position = -9; Deplacement(); Serial.println("ESP3:-4"); delay(100) ; } // Action si choix -4
else if (msg == "-10") { Aller = Pos10SS; Position = -10; Deplacement(); Serial.println("ESP3:-5"); delay(100) ; } // Action si choix -5
// else if (msg == "P") { Serial.println("ESP2:P"); } // Utilisation non encre défini
Coté Wemos, car au dessus ce sont les ordres de la Mega vers le Wemos ou l'émetteur si vous préférez il faut envoyer l'ordre a la bonne carte.
Code : Tout sélectionner
if (Serial.available()) {
String cmd = Serial.readStringUntil('\n');
cmd.trim();
if (cmd.indexOf("ESP2:") == 0) { // renvois ordre vers la carte relais ESP2
String sub = cmd.substring(5);
esp_now_send(macESP2, (uint8_t*)sub.c_str(), sub.length() + 1);
}
else if (cmd.indexOf("ESP3:") == 0) { // renvois ordre vers la carte relais ESP2
String sub = cmd.substring(5);
esp_now_send(macESP3, (uint8_t*)sub.c_str(), sub.length() + 1);
}
}
Coté carte relais (la carte ESP 2 par exemple)
Code : Tout sélectionner
oid OnDataRecv(const esp_now_recv_info * info, const uint8_t *incomingData, int len) {
String msg = String((char*)incomingData);
msg.trim();
if (msg == "0") { activerRelais(PIN_0); }
if (msg == "-1") { activerRelais(PIN_M1); }
if (msg == "-2") { activerRelais(PIN_M2); }
if (msg == "-3") { activerRelais(PIN_M3); }
if (msg == "-4") { activerRelais(PIN_M4); }
if (msg == "-5") { activerRelais(PIN_M5); }
if (msg == "P") { activerRelais(PIN_P); }
if (msg == "R") { activerRelais(PIN_R); }
if (msg == "C0") { desactiverRelais(PIN_0); }
if (msg == "C-1") { desactiverRelais(PIN_M1); }
if (msg == "C-2") { desactiverRelais(PIN_M2); }
if (msg == "C-3") { desactiverRelais(PIN_M3); }
if (msg == "C-4") { desactiverRelais(PIN_M4); }
if (msg == "C-5") { desactiverRelais(PIN_M5); }
if (msg == "CP") { desactiverRelais(PIN_P); }
if (msg == "CR") { desactiverRelais(PIN_R); }
}
Cela parait très compliqué, mais au final c'est extrêmement simple quand ont procède étape par étape, et la mise en œuvre est hyper facile.

Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 18:22
par patrice_b
Merci beaucoup Christian.
Ça c'est pour la partie alimentation des voies de stockage.
Aurais tu des idées, un principe, une piste, pour automatiser la gestion de l'ATP, piloté par un programme de gestion comme RocRail ??

Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 18:26
par patlum
En tout cas l'explication est clair

Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 18:30
par likiki
C'est simple.
Un Wemos lis la trame DCC.
Quand il vois passer un ordre DCC qu'il attend par ex 532.
532 serait pas exemple aller a l'étage 3. Le wemos DCC envois au Wemos de la Mega l'ordre "3"
Le Wemos Mega, a la réception de l'ordre "3" dit a la Mega "3" et là, la Mega exécute.
Mais attention, cela doit rester dans la visu qu'un train ne soit pas en cour de passage sur l'ascenseur sinon .........

Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 18:53
par herwat
Je regarderai tout ça en temps utile !

Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 19:14
par herwat
Mais je sens que ça va être intéressant !

Re: La maquette de l'APT de Patrice
Posté : 21 oct. 2025, 20:23
par patrice_b