C'est l'hiver ! Hiver.gif

ENIB 2026 : Tram-Tram : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Étapes de fabrication)
(Étape 2)
Ligne 36 : Ligne 36 :
 
===Étape 2===
 
===Étape 2===
 
Réalisation de la maquette accueillant les LEDs, en affichant les arrêts.
 
Réalisation de la maquette accueillant les LEDs, en affichant les arrêts.
 +
[[Fichier:Maquette_Tram_Tram.jpg|200px]]
  
 
===Troubleshouting===
 
===Troubleshouting===

Version du 22 janvier 2026 à 16:08

Le POCL qui suit les trams de la ligne A à travers Brest !

Description (résumé)

Photo de l'équipe

L'objectif de ce projet est de créer un chemin de bande LED dont le but est de suivre la position des trams de la ligne A de Bibus à Brest en temps réel. Les LEDs s'allument en vert lorsque le tram se situe à l'arrêt correspondant à leur position.

Outils et matériel

  • Carte ESP32

ou

  • Carte Raspberry Pi
  • Carte SD de 16 GO minimum (pour l'installation de l'OS)


Matériel général :

  • Bande LED (une de 25 LED et une de 3 LED)
  • Câble de transfert de données
  • Alimentation externe (pour la carte et la bande LED)

Fichiers à joindre

Fichier Ligne A - base de la maquette :


Fichier code Arduino : Fichier:Code arduino Tram Tram.pdf

Fichier code Raspberry Pi : Fichier:Tramtramras.pdf

Étapes de fabrication

Étape 1

Câblage de la carte Arduino et des LED :
Câblage de l'ESP32.jpg
Compiler et téléverser le code fourni, vérifier le bon fonctionnement des LED.
(Pour le code, veiller à ce que le nom du réseau wifi et le mot de passe soient modifiés en fonction de vos besoins)

Câblage de la Raspberry Pi :
Câblage de la Raspberry.jpg

Étape 2

Réalisation de la maquette accueillant les LEDs, en affichant les arrêts. Maquette Tram Tram.jpg

Troubleshouting

On se tient à la ligne A car la ligne B n'est toujours pas en service au moment où l'on crée ce projet (donc pas de données sur celle-ci).
Premier gros problème : Utilisation des API fournies par Bibus => le format donné (GTFS-RT) est difficile à traiter sur la carte ESP32.
Les données sont également fournies au format SIRI (plus utilisable), mais sont indisponibles sans autorisation.

Pour avoir plus de chances de réaliser quelque chose et d'avoir un rendu final, nous avons décidé de nous séparer le travail. Une personne tente de décoder le GTFS-RT sur Arduino, et une autre le fait sur Raspberry 3, une carte plus puissante qui peut utiliser les librairies Python fournies par Google pour décoder le GTFS-RT.

Au final, on a réussi à décoder le GTFS-RT sur Raspberry comme sur Arduino.
Pour la Raspberry, on peut coder en python ce qui fait que des librairies specialisées dans le decodage du signal gtfs-rt, on gagne de la puissance de calcul avec raspberry et de l'efficcité avec des librairie adaptées. Il suffit de bien gerer lextraction des données et le tour est joué.

Pour Arduino, on a dû ruser. Après recherches, on a décidé de filtrer les données binaires du GTFS-RT, en recherchant certains éléments. Tout d'abord, les lettres "ve", qui nous confirmerait que la donnée correspond aux informations d'un véhicule. Ensuite, le caractère "A", pour retrouver les trams de la ligne A. On a alors ciblé les informations utiles de tous les trams circulants sur la ligne A, qu'il nous "suffit" maintenant de décoder (la partie demandante du code). Faire cela nous a permis de ne pas décoder toutes les données, mais seulement celles relatives au trams de la ligne A, bien moins demandantes en ressources pour l'ESP32.
La partie décodage à été réalisée à l'aide de Gémini, à partir du prompt suivant :
1) Extraire le format binaire d'un fichier GTFS-RT, en se basant sur le lien suivant : https://proxy.transport.data.gouv.fr/resource/bibus-brest-gtfs-rt-vehicle-position
2) Extraire les données de cette trame (sur environ 50 octets).
3) Vérifier l'extraction de données en s'appuyant sur une documentation technique publiée.
5) Décoder tout le fichier.
6) Fournir une fonction de décodage en langage C.
Puis passage sur Claude Code pour obtenir du code optimiser pour ESP32.
Optimiser la fonction suivante pour fonctionner sur ESP32 avec PlatformIO/Arduino avec une gestion optimiser de la mémoire.

Sources et documentation complémentaire

  • Liens vers les API du réseau BiBus :

https://transport.data.gouv.fr/datasets/horaires-theoriques-et-temps-reel-des-bus-et-tramways-circulant-sur-le-territoire-de-brest-metropole

  • Lien d'API utilisé dans le code :

https://proxy.transport.data.gouv.fr/resource/bibus-brest-gtfs-rt-vehicle-position

  • Site utilisé pour récupérer les données GPS des arrêts de tram :

https://earth.google.com/web/@48.37769996,-4.55144777,85.56403392a,2198.04856239d,35y,0h,0t,0r/data=CgRCAggBMikKJwolCiExdTVWVXM3X3lCUWpQVnR5ZmhNMUd2UGFWWjlZaHlaWHcgAToDCgEwQgIIAEoHCNfv8VEQAQ?pli=1

    • Pour Arduino :
  • Lien vers les sites de débug et d'aide à utiliser pour Arduino :

https://arduinofactory.fr/

    • Pour Raspberry :
  • GitHub utilisé pour configurer le Raspberry Pi :

https://github.com/2D-Quest/AfficheurBus_GTFS-RT_Brest

  • Utilisation de l'IA :

L'intelligence artificielle Gemini 3 nous a légèrement été utile dans la réalisation du code Raspberry Pi.

Elément de présentation

Présentation Hackathon.png

Ne pas modifier sous cette ligne