LOCODUINO

Aide
Forum de discussion
Dépôt GIT Locoduino
Flux RSS

dimanche 14 avril 2024

Visiteurs connectés : 46

TCO Web interactif avec des ESP32 et des ESP8266 (3)

Les itinéraires (les principes)

.
Par : utpeca

DIFFICULTÉ :

Les itinéraires, le sujet a été souvent abordé à Locoduino, comme par exemple dans les articles Un gestionnaire en C++ pour votre réseau (3) ou SGDD : Système de Gestion DD (2) ainsi que dans le forum Commande d’itinéraires par arduino (locoduino.org).

Alors, direz-vous, pourquoi un article de plus ? Tout d’abord, un vieux dicton plein de sagesse populaire nous dit « qu’abondance de biens ne nuit pas ». Ensuite, les TCO concernés par cet article sont plutôt du type « gare d’Aumont-Aubrac » que du type commande centralisée de la LGV Sud-Est. Enfin, nous nous sommes attachés, par la simplicité du mode opératoire, à préserver le plaisir de « jouer au train ».

<

La commande des appareils de voie décrite dans les articles TCO Web interactif avec des ESP32 et des ESP8266 (1) et TCO Web interactif avec des ESP32 et des ESP8266 (2) permet à un Aiguilleur de former un itinéraire. Nous allons voir dans cet article comment montrer l’itinéraire formé, comment l’Aiguilleur peut l’alimenter et, ainsi permettre au Mécano de conduire son train.

Bien sûr, l’Aiguilleur et le Conducteur de train peuvent être une seule et même personne. Pour élaborer un itinéraire, il faut positionner les appareils de voie, cliquer sur un élément de départ (heurtoir ou feu). L’itinéraire se constitue automatiquement jusqu’à ne plus pouvoir avancer (appareil non fait pour la direction voulue, butoir ou sortie du TCO).

La figure suivante présente, de manière succincte, la formation d’un itinéraire, et son utilisation pour conduire un train.

Figure 1
Figure 1
Principe de formation d’un itinéraire avec TCO-Web.

Définitions préalables.

Qu’est-ce qu’un itinéraire ?

Un itinéraire permet à un train d’emprunter les sections de voie reliant un point de départ (élément de départ du TCO) et un point d’arrivée (élément de TCO). Une section de voie (appelée parfois canton) est la portion de voie comprise entre deux appareils ou entre un point de départ ou de sortie et un appareil. Cette section de voie est constituée d’un ou plusieurs éléments de voie représenté par les petits carrés dans le TCO.

La figure ci-après présente un itinéraire du TCO Combrailles, (TCO imaginé à partir de l’article intitulé « Un Suédois dans les Combrailles » et paru dans le Loco Revue N° 907 de février 2023). Cet itinéraire permet d’amener l’engin moteur, qui est près du heurtoir, sur la plaque tournante afin d’y être retourné.

Figure 2
Figure 2
Exemple d’itinéraire établi sur le TCO Combrailles.

Un itinéraire peut être formé (les éléments qui le composent ont des motifs grisés) ou bien alimenté (les motifs des éléments sont bleus). Lorsque un itinéraire est formé, tant qu’il n’est pas alimenté, ce dernier est détruit par n’importe quelle action sur un appareil de voie.

Qu’est-ce qu’un élément de voie ?

Un élément de voie peut être un aiguillage, une portion de voie droite ou courbe ou tout autre dispositif utile à la conduite des trains. Pour un état donné, un élément de voie dispose d’une extrémité origine et d’une extrémité destination. Par convention, mais cela n’est pas obligatoire, l’origine est à gauche (ou en bas) et la destination à droite (ou en haut). La figure suivante résume tout cela.

Figure 3
Figure 3
Définition d’un élément de voie.

Qu’est-ce qu’un point de départ ?

Pour le moment, un point de départ est, soit un heurtoir (butoir), soit un feu de départ. Ces éléments sont caractérisés par une origine valant zéro et une destination comprise entre 1 et 8, comme indiqué sur la figure ci-dessous.

Figure 4
Figure 4
Définition d’un point de départ.

Qu’est-ce qu’un point d’arrivée ?

Un point d’arrivée est l’élément à partir duquel il n’est plus possible de constituer l’itinéraire. Ces impossibilités sont montrées dans la figure suivante.

Figure 5
Figure 5
Détermination des points d’arrivée.

Comment constitue-t-on un itinéraire ?

La figure ci-après montre comment l’Aiguilleur peut constituer un itinéraire.

Figure 6
Figure 6
Comment créer un itinéraire.

L’algorithme de calcul d’un itinéraire est comme suit :

  • partir d’un point de départ ;
  • tant qu’un point d’arrivée n’est pas atteint :
  1. chercher l’élément suivant ;
  2. s’il n’existe pas : le point d’arrivée est atteint ;
  3. vérifier que la destination de l’élément courant est à 180° de l’origine de l’élément suivant (c’est à dire qu’un coupon de voie dirigé vers l’est se connecte bien avec un coupon de voie dirigé vers l’ouest) ;
  4. sinon, intervertir l’origine et la destination de l’élément suivant et revérifier ;
  5. si ce n’est pas le cas : le point d’arrivée est atteint ;
  6. l’élément suivant validé devient l’élément courant et on reboucle.

Cet algorithme est concrétisé par la fonction Javascript CalculIti qui sera abordée dans un prochain article. On peut le mettre en images comme suit :

Figure 7
Figure 7
Algorithme de détermination d’un itinéraire.

L’élément courant est déterminé par ses coordonnées X (abscisse) et Y (ordonnée). La position de l’élément suivant se déduit des coordonnées de l’élément courant et de la valeur de la donnée destination de l’élément courant comme indiqué dans le tableau ci-après.

Figure 8
Figure 8
Calcul de l’élément suivant.

Qu’est-ce qu’une section de voie ?

Une section de voie (ou canton - peut-être abusivement) est une suite d’éléments de voie qui peut être alimentée et pour laquelle il est possible d’en connaître l’occupation par un train.

Une section de voie est généralement comprise entre deux appareils de voie ou entre un élément de départ et un appareil . Elle se caractérise essentiellement par un libellé, comme par exemple dans la figure suivante :

Figure 9
Figure 9
Exemple de nommage des sections de voie.

Définition de la table des éléments de TCO.

Cette table permet de décrire (grâce au langage Javascript) chaque élément utilisable dans le TCO. Un élément est caractérisé par un code, un type, une origine et une destination.

Cette table est utilisée principalement lorsque l’état d’un appareil est modifié pour mettre à jour la nouvelle destination de l’appareil.

Figure 10
Figure 10
Table des éléments de TCO.

Définition de la table descriptive du TCO.

Cette table (toujours en code Javascript) se compose de chaque élément non vide du TCO, c’est-à-dire des appareils de voie, des éléments de départ et des éléments de voie simples (comme les segments de voie droite, les segments obliques, les virages à droite ou à gauche).

Chaque ligne de la table est constituée par :

  • un numéro fabriqué à partir des coordonnées X et Y de l’élément dans le TCO ;
  • un code pour mettre en relation la ligne avec la table des éléments ;
  • l’angle de rotation de l’élément qui vaut « valeur » x 90° (sens trigonométrique) ;
  • le type de l’élément qui est identique au type indiqué par la table des éléments ;
  • le nom de l’image qui est le nom du fichier dans la mémoire Flash sans l’extension PNG ;
  • l’origine et la destination qui sont celles de la table élément si l’angle de rotation vaut 0°, qui sont recalculées comme l’indique la figure 12 ci-après ;
  • enfin, le nom de la section (canton) à laquelle appartient l’élément.
Figure 11
Figure 11
Table descriptive du TCO.

Le tableau suivant permet de calculer l’origine ou la destination d’un élément de voie, après une rotation de 90°, 180° ou 270° dans le sens trigonométrique.

Figure 12
Figure 12
Rotations des origines ou des destinations.

Définition des tables Itinéraires et Cantons.

Ces tables sont renseignées automatiquement par le code Javascript de calcul d’itinéraire (fonction CalculIti , voir dans l’article suivant).

La table Itinéraire est formée de la liste de tous les éléments intervenants dans l’itinéraire. Pour chaque élément, ses coordonnées, le nom de l’image (en mémoire Flash) et le nom de la section de voie sont nécessaires.

La table Cantons, quant à elle, est la liste des cantons formant l’itinéraire. L’état d’un canton peut avoir les valeurs suivantes :

  • canton non affecté à un itinéraire (inactif) ;
  • canton d’un itinéraire formé ;
  • canton d’un itinéraire alimenté ;
  • canton occupé par un convoi (fonctionnalité abordée dans un prochain article).
Figure 13
Figure 13
Tables Itinéraires et Cantons.

Pour conclure.

La théorie sur les itinéraires pour le TCO Web, pour le moment c’est terminé. Nous allons pouvoir imaginer un TCO comme celui de Combrailles.

Figure 14
Figure 14
Un des itinéraires alimentés du réseau Combrailles.

Pour concrétiser votre TCO, il vous faudra vous inspirer des solutions logicielles mises en œuvre dans le prochain article, ainsi que des solutions matérielles qui feront l’objet d’un article à suivre.

Réagissez à « TCO Web interactif avec des ESP32 et des ESP8266 (3) »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Projets »

LaBox, Une Centrale DCC polyvalente et abordable (1)

LaBox, Une Centrale DCC polyvalente et abordable (2)

LaBox, Une Centrale DCC polyvalente et abordable (3)

Comment piloter trains et accessoires en DCC avec un Arduino (1)

Comment piloter trains et accessoires en DCC avec un Arduino (2)

Comment piloter trains et accessoires en DCC avec un Arduino (3)

Comment piloter trains et accessoires en DCC avec un Arduino (4)

SGDD : Système de Gestion DD (1)

SGDD : Système de Gestion DD (2)

SGDD : Système de Gestion DD (3)

La PWM : Qu’est-ce que c’est ? (1)

La PWM : Qu’est-ce que c’est ? (2)

La PWM : Qu’est-ce que c’est ? (3)

La PWM : Qu’est-ce que c’est ? (4)

Mise en oeuvre du Bus CAN entre modules Arduino (1)

Mise en oeuvre du Bus CAN entre modules Arduino (2)

Un gestionnaire en C++ pour votre réseau (1)

Un gestionnaire en C++ pour votre réseau (2)

Un gestionnaire en C++ pour votre réseau (3)

Un gestionnaire en C++ pour votre réseau (4)

Réalisation de centrales DCC avec le logiciel libre DCC++ (1)

Réalisation de centrales DCC avec le logiciel libre DCC++ (2)

Réalisation de centrales DCC avec le logiciel libre DCC++ (3)

Contrôleur à télécommande infrarouge pour centrale DCC++

Gestion d’une gare cachée (1)

Gestion d’une gare cachée (2)

Gestion d’une gare cachée (3)

La carte Satellite V1 (1)

La carte Satellite V1 (2)

La carte Satellite V1 (3)

La carte Satellite V1 (4)

La carte Satellite V1 (5)

Chenillard de DEL

Enseigne de magasin

Feux tricolores

Multi-animations lumineuses

L’Arduino et le système de commande numérique DCC

Un décodeur d’accessoire DCC versatile basé sur Arduino

Un moniteur de signaux DCC

Une barrière infrarouge

Un capteur RFID

Un TCO xpressnet

Une animation sonore

L’Arduino au coeur des systèmes de pilotage analogiques ou numériques

Calcul de la vitesse d’un train miniature avec l’Arduino

La génèse d’un réseau 100% Arduino

Une horloge à échelle H0

Simulateur de soudure à arc

Un automatisme de Passage à Niveau

Automatisation du pont FLEISCHMANN 6152 (HO) avec un ESP32 (1)

Identifier et localiser vos trains avec le RFID/NFC et un bus CAN.

Etude d’un passage à niveau multivoies

La rétro-signalisation sur Arduino

Décodeur pour aiguillage à solénoïdes sur Arduino

Un décodeur DCC pour les signaux à deux ou trois feux sur Arduino NANO/UNO

Etude d’un passage à niveau universel

Réalisation pratique d’un système de mesure de vitesse à l’échelle N

Une Passerelle entre le bus S88 et le bus CAN pour la rétro signalisation

Un décodeur DCC pour 16 feux tricolores

Block Automatique Lumineux avec la carte shield "Arduino 4 relays"

Réalisation d’un affichage de gare ARRIVEE DEPART

Ménage à trois (Ordinateur, Arduino, réseau)

Réalisation d’un va-et-vient automatique et réaliste

Souris et centrale sans fil

Communications entre JMRI et Arduino

Annonces en gare avec la RFID

Une croix de pharmacie animée avec Arduino UNO

Réalisation d’un wagon de mesure (distance et vitesse)

Passage à niveau géré par Arduino (1)

Passage à niveau géré par Arduino (2)

Passage à niveau géré par Arduino (3)

Passage à niveau géré par Arduino (4)

Passage à niveau géré par Arduino (5)

Une manette simple et autonome pour LaBox

Éclairer le réseau (1)

Éclairer le réseau (2)

Block Automatique Lumineux à 8 cantons analogiques

Un décodeur DCC pour les plaques tournantes Fleischmann et Roco

Éclairer le réseau (3)

Éclairer le réseau (4)

Éclairer le réseau (5)

JMRI pour Ma première centrale DCC

Rocrail pour Ma première centrale DCC

CDM-Rail pour Ma première centrale DCC (1)

CDM-Rail pour Ma première centrale DCC (2)

Banc de test pour les décodeurs DCC

Ma première manette pour les aiguillages DCC

Mon premier décodeur pour les aiguillages DCC

Boitier 3D pour la station DCC minimale

Va-et-vient pour deux trains

Un programme pour régler facilement les servos moteurs avec un ESP32

Affichage publicitaire avec Arduino (1)

Affichage publicitaire avec Arduino (2)

Les derniers articles

LaBox, Une Centrale DCC polyvalente et abordable (3)


Thierry

LaBox, Une Centrale DCC polyvalente et abordable (1)


Thierry

LaBox, Une Centrale DCC polyvalente et abordable (2)


Dominique, msport, Thierry

Un programme pour régler facilement les servos moteurs avec un ESP32


bobyAndCo

TCO Web interactif avec des ESP32 et des ESP8266 (5)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (4)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (3)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (2)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (1)


utpeca

Affichage publicitaire avec Arduino (2)


catplus, Christian

Les articles les plus lus

Réalisation de centrales DCC avec le logiciel libre DCC++ (3)

La PWM : Qu’est-ce que c’est ? (1)

Comment piloter trains et accessoires en DCC avec un Arduino (1)

La rétro-signalisation sur Arduino

Une Passerelle entre le bus S88 et le bus CAN pour la rétro signalisation

Automatisation du pont FLEISCHMANN 6152 (HO) avec un ESP32 (1)

Réalisation de centrales DCC avec le logiciel libre DCC++ (1)

Chenillard de DEL

Mise en oeuvre du Bus CAN entre modules Arduino (2)

Feux tricolores