ENIB 2026 : En route ! : Différence entre versions
(→étape 1 : conception de l'objet) |
(→Sources et documentation complémentaire) |
||
| Ligne 199 : | Ligne 199 : | ||
==Sources et documentation complémentaire== | ==Sources et documentation complémentaire== | ||
| − | * Pour l'API : | + | * Pour l'API : <br> |
https://data.rennesmetropole.fr/explore/dataset/etat-du-trafic-en-temps-reel/api/ | https://data.rennesmetropole.fr/explore/dataset/etat-du-trafic-en-temps-reel/api/ | ||
Version du 22 janvier 2026 à 15:56
Titre de la fiche expérience :
Sommaire
Introduction
Nous sommes quatre étudiantes de troisième année à l'ENIB : l'Ecole Nationale d'Ingénieur de Brest.
Notre équipe de droite à gauche : Jûna, Fanny, Julie, Albane
Dans le cadre du hackathon « Hack the POCL », organisé par Les Petits Débrouillards et Les Fabriques du Ponant, nous devons rendre des données tangibles en inventant un POCL : un Petit Objet Connecté Ludique.
Nous avons conçus une maquette qui permet de voir en temps réel le trafic dans la métropole de Rennes. Si la voiture bouge rapidement, cela signifie que le trafic est fluide et inversement si la voiture bouge lentement.
outil et matériel
le matériel
- une carte ESP32
- une plaque labdec
- un moteur continu
- un L298N Dual H-Bridge
- une batterie
- des câbles
les outils
- du carton
- un cutter
- un pistolet à colle
fichiers joint
Code Arduino
1
2 #include <WiFi.h>
3 #include <WiFiClientSecure.h>
4 #include <HTTPClient.h>
5 // Librairies additionnelles :
6 #include <ArduinoJson.h>
7 #include <Stepper.h>
8
9
10 // ici on initialise les broches pour le moteur
11 const int ENA = 23;
12 const int IN1 = 22;
13 const int IN2 = 21;
14
15
16
17
18
19 // Fonction pour contrôler le moteur
20 // sens = true -> horaire, false -> antihoraire
21 // vitesse = 0 à 255
22 void setMotor(bool sens, int vitesse) {
23 vitesse = constrain(vitesse, 0, 255); // Sécurité
24
25 if (sens) {
26 digitalWrite(IN1, HIGH);
27 digitalWrite(IN2, LOW);
28 } else {
29 digitalWrite(IN1, LOW);
30 digitalWrite(IN2, HIGH);
31 }
32
33 analogWrite(ENA, vitesse); // PWM pour vitesse
34 }
35
36 const char* SSID = "Formation";
37 const char* PSWD = "Apdgo29200!";
38
39
40 StaticJsonDocument<200> json_parse(String json) {
41 StaticJsonDocument<200> doc;
42
43 // Deserialize the JSON document
44 DeserializationError error = deserializeJson(doc, json);
45
46 // Test if parsing succeeds.
47 if (error) {
48 Serial.print(F("deserializeJson() failed: "));
49 Serial.println(error.f_str());
50 }
51
52 return doc;
53 }
54
55
56 void wifi_setup() {
57 WiFi.begin(SSID, PSWD);
58 Serial.print("\nConnecting");
59
60 while(WiFi.status() != WL_CONNECTED) {
61 Serial.print(".");
62 delay(500);
63 }
64
65 Serial.println("\nConnected to the WiFi network");
66 Serial.print("Local ESP32 IP: ");
67 Serial.println(WiFi.localIP());
68 }
69
70 String get_http_string(String url) {
71 WiFiClientSecure client;
72 client.setInsecure(); // ignore SSL certificate (OK for APIs)
73
74 HTTPClient https;
75 https.begin(client, url);
76
77 String payload = "{}";
78 int httpCode = https.GET();
79
80 if (httpCode > 0) {
81 payload = https.getString();
82 } else {
83 Serial.println("HTTP ERROR");
84 }
85
86 https.end();
87 return payload;
88 }
89
90 void setup(){
91
92 //moteur
93 pinMode(ENA, OUTPUT);
94 pinMode(IN1, OUTPUT);
95 pinMode(IN2, OUTPUT);
96
97 Serial.begin(9600);
98 int vitesse = 1;
99 Serial.println("on alume le moteur");
100 setMotor(true, vitesse); // on commence avec une vitesse faible tant qu'on a pas encore les données
101 wifi_setup();
102 char * url = "https://data.rennesmetropole.fr/api/explore/v2.1/catalog/datasets/etat-du-trafic-en-temps-reel/records?limit=20";
103 String json = get_http_string(url);
104 StaticJsonDocument doc = json_parse(json);
105 for (int i = 0; i < 15; i++) {
106 float averagevehiclespeed = doc["results"][i]["averagevehiclespeed"];
107 Serial.print("averagevehiclespeed ");
108 Serial.print(averagevehiclespeed);
109 Serial.print(i);
110 Serial.print(" : ");
111
112 float v = (averagevehiclespeed*255)/130;
113 setMotor(true, v); // sens horaire et vitesse v
114 delay(10000);
115 Serial.print("v");
116 Serial.println(v);
117 }
118
119
120 }
121
122 void loop(){
123
124
125 }
étapes de fabrication
étape 1 : conception de l'objet
Faire un schéma papier aux dimensions souhaitées de la maquette.
étape 2 : construction de la maquette
Construire la maquette suivant les photos ci-dessous.
étape 3 : branchement de la carte
Branchez la carte ESP30, le pont en H L295N et la batterie selon la photo ci-dessous.
Il faut brancher la Pin 23 de la carte à A Enable du L295N, la Pin 22 à IN1, la Pin 21 à IN2.
Il faut branche les deux câbles du moteur à Output A.
Il faut brancher les fils rouge de la batterie à +5V Power.
Le reste des câbles doivent être branché à la masse.
étape 4 : connexion ordinateur-carte
Copiez le code qui est donné avant, dans la partie "fichers joint", sur le logiciel Arduino. Puis lancez le code Arduino de manière classique et appuyiez sur le bouton Boot de la carte ESP32 en même temps.
Troubleshouting
On a eu du mal à trouver des données en temps réel qui avaient un rapport avec la circulation routière. Nous avons fini par en trouver non pas sur la ville de Brest mais sur la ville de Rennes.
On a eu beaucoup de mal à la configuration du logiciel Arduino pour qu'il détecte la carte. Une des solutions que nous avons trouvé est qu'il faut appuyer sur le bouton Boot pour que le programme se lance.
Sources et documentation complémentaire
- Pour l'API :
https://data.rennesmetropole.fr/explore/dataset/etat-du-trafic-en-temps-reel/api/
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é.
- Prоgrammаtiоn :
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.
- Transpаrence et dосumеntatiоn :
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е.
- Traçabilité :
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.
Elément de présentation
je met ici le document de présentation de mon projet