C'est l'hiver ! Hiver.gif

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

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Troubleshouting)
(Étape 1)
 
(3 révisions intermédiaires par le même utilisateur non affichées)
Ligne 27 : Ligne 27 :
 
[[Fichier:Câblage de l'ESP32.jpg|200px]]<br>
 
[[Fichier:Câblage de l'ESP32.jpg|200px]]<br>
 
Compiler et téléverser le code fourni, vérifier le bon fonctionnement des LED.<br>
 
Compiler et téléverser le code fourni, vérifier le bon fonctionnement des LED.<br>
(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)<br>
+
Modifier la partie Wifi du code pour que la catre se connecte à votre réseau wifi.<br>
 +
* la partie ssid correspond au nom du réseau (en exemple Point) <br>
 +
* la partie password correspond au mot de passe (en exemple Point...) <br>  
 
<br>
 
<br>
 
Câblage de la Raspberry Pi : <br>
 
Câblage de la Raspberry Pi : <br>
 
[[Fichier:Câblage de la Raspberry.jpg|200px]]<br>
 
[[Fichier:Câblage de la Raspberry.jpg|200px]]<br>
 +
La configuration de la Raspberry pi est plus compliquer que celle de l'ESP32.<br>
 +
Nous nous sommes basée sur les indications de ce lien pour la configurer : <br>
 +
https://github.com/2D-Quest/AfficheurBus_GTFS-RT_Brest <br>
  
 
===Étape 2===
 
===Étape 2===

Version actuelle datée du 24 janvier 2026 à 09:47

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 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.
Modifier la partie Wifi du code pour que la catre se connecte à votre réseau wifi.

  • la partie ssid correspond au nom du réseau (en exemple Point)
  • la partie password correspond au mot de passe (en exemple Point...)


Câblage de la Raspberry Pi :
Câblage de la Raspberry.jpg
La configuration de la Raspberry pi est plus compliquer que celle de l'ESP32.
Nous nous sommes basée sur les indications de ce lien pour la configurer :
https://github.com/2D-Quest/AfficheurBus_GTFS-RT_Brest

É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, en utilisant des librairies spécialisées dans le décodage du signal GTFS-RT. On gagne de la puissance de calcul avec Raspberry et de l'efficacité avec des librairie adaptées. Il suffit de bien gérer l'extraction 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 Gemini, à 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
Fichier:Présentation Tram-Tram.pdf

Ne pas modifier sous cette ligne