C'est l'hiver ! Hiver.gif

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

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Étape 1)
 
(86 révisions intermédiaires par 4 utilisateurs non affichées)
Ligne 3 : Ligne 3 :
  
 
[[Fichier:Équipe Tram-Tram.jpeg|vignette|Photo de l'équipe ]]
 
[[Fichier:Équipe Tram-Tram.jpeg|vignette|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.
  
==Introduction==
 
 
éventuelle vidéo
 
 
==Outils et matériel==
 
==Outils et matériel==
 +
* Carte ESP32 <br>
 +
ou
 +
* Carte Raspberry Pi <br>
 +
* Carte SD de 16 GO minimum (pour l'installation de l'OS) <br>
 +
<br>
 +
Matériel général : <br>
 +
* Bande LED (une de 25 LED et une de 3 LED) <br>
 +
* Câble de transfert de données
 +
* Alimentation externe (pour la carte et la bande LED)
  
 
==Fichiers à joindre==
 
==Fichiers à joindre==
code, ficher d'impression 3D, de découpe laser ou vinyle, ...
 
===Mettre du code Arduino===
 
<syntaxhighlight lang="Arduino" line>
 
#define PIN 9
 
#include <Arduino_GFX_Library.h>
 
 
void setup() {
 
  // put your setup code here, to run once:
 
 
}
 
 
void loop() {
 
  // put your main code here, to run repeatedly:
 
  
}
+
Fichier code Arduino : [[Fichier:Code_arduino_Tram_Tram.pdf]]
  
</syntaxhighlight>
+
Fichier code Raspberry Pi : [[Fichier:Tramtramras.pdf|vignette]]
  
 
==Étapes de fabrication==
 
==Étapes de fabrication==
 
 
===Étape 1===
 
===Étape 1===
Fonctionnement de la bande LED avec la carte. <br>
+
Câblage de la carte Arduino et des LED : <br>
[[Fichier:cartebranchée.jpg|200px]]
+
[[Fichier:Câblage de l'ESP32.jpg|200px]]<br>
[[Fichier:led+code.jpg|200px]]
+
Compiler et téléverser le code fourni, vérifier le bon fonctionnement des LED.<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>
 +
Câblage de la Raspberry Pi : <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===
===Étape ...===
+
Réalisation de la maquette accueillant les LEDs, en affichant les arrêts.<br>
 +
[[Fichier:Maquette_Tram_Tram.jpg|200px]]
 +
 
 
===Troubleshouting===
 
===Troubleshouting===
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?
+
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).<br>
 +
'''Premier gros problème''' : Utilisation des API fournies par Bibus => le format donné (GTFS-RT) est difficile à traiter sur la carte ESP32.
 +
<br>
 +
Les données sont également fournies au format SIRI (plus utilisable), mais sont indisponibles sans autorisation. <br>
 +
<br>
 +
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. <br>
 +
 
 +
Au final, on a réussi à décoder le GTFS-RT sur Raspberry comme sur Arduino. <br>
 +
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é. <br>
 +
<br>
 +
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. <br>
 +
La partie décodage à été réalisée à l'aide de Gemini, à partir du prompt suivant :<br>
 +
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 <br>
 +
2) Extraire les données de cette trame (sur environ 50 octets).<br>
 +
3) Vérifier l'extraction de données en s'appuyant sur une documentation technique publiée.<br>
 +
5) Décoder tout le fichier.<br>
 +
6) Fournir une fonction de décodage en langage C.<br>
 +
Puis passage sur Claude Code pour obtenir du code optimiser pour ESP32.<br>
 +
Optimiser la fonction suivante pour fonctionner sur ESP32 avec PlatformIO/Arduino avec une gestion optimiser de la mémoire.
  
 
==Sources et documentation complémentaire==
 
==Sources et documentation complémentaire==
  
* Liens vers les APIs utilisés : <br>
+
* Liens vers les API du réseau BiBus : <br>
 
https://transport.data.gouv.fr/datasets/horaires-theoriques-et-temps-reel-des-bus-et-tramways-circulant-sur-le-territoire-de-brest-metropole <br>
 
https://transport.data.gouv.fr/datasets/horaires-theoriques-et-temps-reel-des-bus-et-tramways-circulant-sur-le-territoire-de-brest-metropole <br>
https://proxy.transport.data.gouv.fr/resource/bibus-brest-gtfs-rt-vehicle-position
+
* Lien d'API utilisé dans le code : <br>
 
+
https://proxy.transport.data.gouv.fr/resource/bibus-brest-gtfs-rt-vehicle-position <br>
* Rédаctiоn et illustratiоn : <br>
+
<br>
Pоur tоus vоs trаvauх, qu'ils sоient écrits оu visuels, l'utilisatiоn de l'intеlligеnce artificiеllе générativе, que сe sоit pоur le teхte оu les images, n'еst pas conseillé.
+
* Site utilisé pour récupérer les données GPS des arrêts de tram : <br>
 
+
https://earth.google.com/web/@48.37769996,-4.55144777,85.56403392a,2198.04856239d,35y,0h,0t,0r/data=CgRCAggBMikKJwolCiExdTVWVXM3X3lCUWpQVnR5ZmhNMUd2UGFWWjlZaHlaWHcgAToDCgEwQgIIAEoHCNfv8VEQAQ?pli=1 <br>
* Prоgrammаtiоn : <br>
+
<br>
En сe qui cоncernе la prоgrаmmatiоn, il est еssentiеl de ne pаs faire dе l'IA vоtrе prеmier rеcоurs. Cоncеntrеz-vоus d'abоrd sur vоtre prоpre lоgiquе, votre experience еt lеs ressоurcеs disponibles.
+
** Pour Arduino :<br>
 
+
* Lien vers les sites de débug et d'aide à utiliser pour Arduino :<br>
* Transpаrence et dосumеntatiоn : <br>
+
https://arduinofactory.fr/<br>
Si vоus utilisеz l'IA pоur déblоquer оu améliоrеr une pаrtiе de vоtre cоdе, il est cruciаl de l'indiquеr сlairеmеnt dans vоtre dосumentatiоn tеchniquе.
+
<br>
 
+
** Pour Raspberry :<br>
* Traçabilité : <br>
+
* GitHub utilisé pour configurer le Raspberry Pi : <br>
Chаque ехtrait de cоde généré avес l'аidе de l'IA dоit êtrе accоmpagné de la sоurce, ainsi que du prоmpt eхact qui a été utilisé pоur sа créatiоn, afin d'аssurеr une évaluatiоn clаire dе vоtre prоcessus.
+
https://github.com/2D-Quest/AfficheurBus_GTFS-RT_Brest <br>
 +
<br>
 +
* Utilisation de l'IA : <br>
 +
L'intelligence artificielle Gemini 3 nous a légèrement été utile dans la réalisation du code Raspberry Pi. <br>
  
 
==Elément de présentation==
 
==Elément de présentation==
je met ici le document de présentation de mon projet
+
[[Fichier:Présentation_Hackathon.png|600px]]<br>
 +
[[Fichier:Présentation_Tram-Tram.pdf]]
  
 
==Ne pas modifier sous cette ligne==
 
==Ne pas modifier sous cette ligne==
 
[[Catégorie:Enib2026]]
 
[[Catégorie:Enib2026]]

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