C'est l'hiver ! Hiver.gif

ENIB 2026 : Devin'Temp : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Etapes de fabrication)
(Mettre du code Arduino)
 
(31 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 22 : Ligne 22 :
 
-Une led rouge <br />
 
-Une led rouge <br />
 
-Une led jaune <br />
 
-Une led jaune <br />
-Un servo moteur <br />
+
-Un moteur 28BYJ-48 <br />
 
-Des câbles éléctriques <br />
 
-Des câbles éléctriques <br />
 
-Un morceau de carton <br />
 
-Un morceau de carton <br />
Ligne 30 : Ligne 30 :
 
==Fichiers à joindre==
 
==Fichiers à joindre==
 
[[Fichier:Devin’Temp Présentation PowerPoint.pdf]]
 
[[Fichier:Devin’Temp Présentation PowerPoint.pdf]]
 +
 +
[[Fichier:Devin temp_présentation_projet.pdf]]
 
===Mettre du code Arduino===
 
===Mettre du code Arduino===
 
<syntaxhighlight lang="Arduino" line>  
 
<syntaxhighlight lang="Arduino" line>  
Ligne 35 : Ligne 37 :
 
#include <Arduino_GFX_Library.h>
 
#include <Arduino_GFX_Library.h>
  
 +
#include <WiFi.h>
 +
#include <HTTPClient.h>
 +
#include <AccelStepper.h>
 +
#define FULLSTEP 4
 +
#define STEP_PER_REVOLUTION 2048 // this value is from datasheet
 +
 +
// Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence
 +
AccelStepper stepper(FULLSTEP, 25, 19, 21, 18);
 +
 +
// WiFi
 +
const char* ssid = "iPhone";
 +
const char* password = "Louis1342";
 +
 +
// API météo
 +
int debut =0;
 +
String apiKey = "f888dbc5f27c4338aae48889a8ca6e96";
 +
String city = "Guilers";
 +
int valeur_bouton, valeur_bouton_2, valeur_bouton_3, valeur_bouton_4, temp = 1, bouton_choisi = 1;
 +
int temperature;
 
void setup() {
 
void setup() {
   // put your setup code here, to run once:
+
  stepper.setMaxSpeed(1000.0);   // set the maximum speed
 +
  stepper.setAcceleration(50.0); // set acceleration
 +
  stepper.setSpeed(200);        // set initial speed
 +
  stepper.setCurrentPosition(0); // set position
 +
  stepper.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution
 +
  Serial.begin(115200);
 +
  pinMode(26, INPUT);
 +
  pinMode(13, INPUT);
 +
  pinMode(14, INPUT);
 +
  pinMode(35, INPUT);
 +
  pinMode(34, INPUT);
 +
  pinMode(33, OUTPUT);
 +
  pinMode(4, OUTPUT);
 +
  pinMode(18, OUTPUT);
 +
  pinMode(19, OUTPUT);
 +
  pinMode(21, OUTPUT);
 +
  pinMode(23, INPUT);
 +
  WiFi.begin(ssid, password);
 +
  Serial.print("Connexion WiFi");
  
 +
  while (WiFi.status() != WL_CONNECTED) {
 +
    delay(500);
 +
    Serial.print(".");
 +
  }
 +
 +
  Serial.println("\nWiFi connecté !");
 
}
 
}
  
 
void loop() {
 
void loop() {
   // put your main code here, to run repeatedly:
+
   if (temp) {
 +
    if (WiFi.status() == WL_CONNECTED) {
 +
      HTTPClient http;
  
 +
      String url = "https://api.openweathermap.org/data/2.5/weather?q="
 +
                  + city +
 +
                  "&units=metric&appid=" + apiKey;
 +
 +
      http.begin(url);
 +
      int httpCode = http.GET();
 +
 +
      if (httpCode > 0) {
 +
        String payload = http.getString();
 +
 +
        // --- Extraction MANUELLE de la température ---
 +
        int indexTemp = payload.indexOf("\"temp\":");
 +
        if (indexTemp != -1) {
 +
          int start = indexTemp + 7; // après "temp":
 +
          int end = payload.indexOf(",", start);
 +
          String tempStr = payload.substring(start, end);
 +
          temperature = tempStr.toFloat()*100;
 +
          Serial.println(temperature);
 +
        } else {
 +
          Serial.println("Température non trouvée");
 +
        }
 +
      } else {
 +
        Serial.println("Erreur HTTP");
 +
      }
 +
 +
      http.end();
 +
    }
 +
  temp = 0;
 +
 +
  }
 +
  valeur_bouton = digitalRead(13);
 +
 +
  valeur_bouton_2 = digitalRead(26);
 +
  valeur_bouton_3 = digitalRead(14);
 +
  valeur_bouton_4 = digitalRead(35);
 +
  if (digitalRead(13) == 1) {
 +
  bouton_choisi = 1;
 +
  }
 +
  else if (digitalRead(26) == 1) {
 +
  bouton_choisi = 2;
 +
  }
 +
  else if (digitalRead(14) == 1) {
 +
  bouton_choisi = 3;
 +
  }
 +
  else if (digitalRead(35) == 1) {
 +
  bouton_choisi = 4;
 +
  }
 +
 +
  if (temperature < 500 && bouton_choisi == 1){
 +
    digitalWrite(4, HIGH);
 +
    digitalWrite(33, LOW);
 +
  }
 +
  else if (500 <= temperature && temperature <1000 && bouton_choisi == 2){
 +
    digitalWrite(4, HIGH);
 +
    digitalWrite(33, LOW);
 +
  }
 +
  else if (1000 <= temperature && temperature < 1500 && bouton_choisi == 3){
 +
    digitalWrite(4, HIGH);
 +
    digitalWrite(33, LOW);
 +
  }
 +
  else if (1500 <= temperature && bouton_choisi == 4){
 +
    digitalWrite(4, HIGH);
 +
    digitalWrite(33, LOW);
 +
  }
 +
  else{
 +
    digitalWrite(4, LOW);
 +
    digitalWrite(33, HIGH);
 +
  }
 
}
 
}
  
Ligne 67 : Ligne 182 :
 
<br />  
 
<br />  
 
Fonctionnement du système : <br />  
 
Fonctionnement du système : <br />  
<br />  
+
<br />
 
Si le participant appuie sur un mauvais bouton : <br />  
 
Si le participant appuie sur un mauvais bouton : <br />  
<br />
+
La LED rouge s’allume. <br />  
La LED rouge s’allume<br />
 
<br />  
 
 
Aucune autre action ne se produit : cela indique que la température sélectionnée est incorrecte.<br />  
 
Aucune autre action ne se produit : cela indique que la température sélectionnée est incorrecte.<br />  
 
<br />  
 
<br />  
 
Si le participant appuie sur le bon bouton :<br />  
 
Si le participant appuie sur le bon bouton :<br />  
<br />
 
 
La LED verte s’allume et le servomoteur s’active. Le servomoteur possède un aiguille qui pointera en direction de la méteo actuelle.
 
La LED verte s’allume et le servomoteur s’active. Le servomoteur possède un aiguille qui pointera en direction de la méteo actuelle.
  
Ligne 82 : Ligne 194 :
 
Pour cette seconde étape, nous avons commencé à regarder la documentation technique afin de s'approprier le fonctionnement de la connectivité entre la carte ESP32 et notre ordinateur. <br />  
 
Pour cette seconde étape, nous avons commencé à regarder la documentation technique afin de s'approprier le fonctionnement de la connectivité entre la carte ESP32 et notre ordinateur. <br />  
 
Puis, nous avons commencé le câblage de notre circuit, en commençant par câbler les LED et les boutons poussoirs.
 
Puis, nous avons commencé le câblage de notre circuit, en commençant par câbler les LED et les boutons poussoirs.
 +
<br />
 +
<br />
 +
[[Fichier:Devin'Temp montage.jpeg|200px]]
  
[[Fichier:Support meteo.jpeg|200px]]<br />
+
===Etape 3===
  
===Etape 3===
+
Ensuite, nous avons commencé à connecter l'API à notre programme afin de recevoir la température en temps réel de la ville de Brest. <br />
 +
<br />
 
[[Fichier:Programmation Devin'Temp.jpeg|200px]]
 
[[Fichier:Programmation Devin'Temp.jpeg|200px]]
 
 
<br />  
 
<br />  
Ensuite, nous avons commencé à connecter l'API à notre programme afin de recevoir la température en temps réel de la ville de Brest. <br />  
+
<br />  
 
Puis, nous avons réussi à connecter les 4 boutons poussoirs et faire fonctionner notre idée : si le bon bouton poussoir correspondant à la bonne température est appuyée la LED verte s'allume. <br />  
 
Puis, nous avons réussi à connecter les 4 boutons poussoirs et faire fonctionner notre idée : si le bon bouton poussoir correspondant à la bonne température est appuyée la LED verte s'allume. <br />  
 
Dans le cas contraire, la LED rouge s'allume.
 
Dans le cas contraire, la LED rouge s'allume.
Ligne 97 : Ligne 212 :
 
Pour ce faire, nous avons utilisé un morceau de carton et imprimé des images de météo.<br />  
 
Pour ce faire, nous avons utilisé un morceau de carton et imprimé des images de météo.<br />  
 
<br />  
 
<br />  
[[Fichier:TManuel Devin'Temp.jpeg|200px]]
+
[[Fichier:TManuel Devin'Temp.jpeg|200px]]<br />
 +
<br />
 +
[[Fichier:Support meteo.jpeg|200px]]<br />
  
 
===Etape 5===
 
===Etape 5===
 +
Nous avons continué par coder le moteur. Nous avons ajouté un contacteur afin de gérer la position du moteur en temps réel. Cela permet que l'aiguille s'arrête devant le bon état de météo.
 +
<br />
 +
<br />
 +
[[Fichier:Devin'Temp progra.jpeg|200px]]
 +
<br />
 +
<br />
 +
En parallèle, nous avons continué à cabler le montage en ajoutant le système d'aiguille avec le support.
 +
<br />
 +
<br />
 +
[[Fichier:Devin'Temp montage.jpeg|200px]]
  
 
===Troubleshouting===
 
===Troubleshouting===
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?
+
Quelles sont les difficultés rencontrées, les problèmes, les solutions, ainsi que les trucs et astuces pour que cela fonctionne ?
Premièrement, nous avons rencontré des difficultés pour réaliser les conditions pour allumer la bonne LED suivant si la bonne température est sélectionné. Ce problème venait du fait qu'en language Arduino, il n'est pas possible d'encadrer une variable par des conditions. Nous avons donc modifié le tire, en séparent les deux conditions. Notre code est devenue à nouveau fonctionnel. <br />
+
<br /><br />
 +
Premièrement, nous avons rencontré des difficultés pour réaliser les conditions permettant d’allumer la bonne LED en fonction de la température sélectionnée. Ce problème venait du fait qu’en langage Arduino, il n’est pas possible d’encadrer directement une variable par des conditions comme nous l’avions initialement prévu. Nous avons donc modifié la logique du test en séparant les deux conditions. Notre code est ainsi redevenu fonctionnel.
 +
<br /><br />
 +
Deuxièmement, nous avons rencontré un problème lors de l’utilisation du servomoteur. En effet, celui-ci ne possède pas de position de départ relative. Nous avons donc fait le choix d’utiliser un moteur à incrémentation.
 +
<br />
 +
Au départ, nous avons testé l’ajout d’un contacteur afin de détecter lorsqu’un tour complet était effectué, ce qui nous aurait permis de gérer la direction de l’aiguille vers la bonne météo.
 +
<br />
 +
Cependant, cette solution ne fonctionnait pas correctement car le contact était trop court.
 +
<br />
 +
Nous avons alors opté pour une nouvelle idée : ajouter un morceau de cuivre (matériau conducteur) afin d’obtenir une surface de contact plus grande lorsque les deux fils se croisent.
 
<br />
 
<br />
Deuxièmement, nous avons rencontré un second problème pour l'utilisation du cervomoteur. En effet, il ne possède pas de position relative (de départ). Donc, nous avons fait le choix
+
Cette solution nous a permis de résoudre le problème. Désormais, lorsque le programme se lance, le servomoteur tourne jusqu’à ce que les deux contacteurs se touchent.
 +
<br />
 +
Nous avons ainsi déterminé une position 0.
 +
<br /><br />
 +
Troisièmement, nous avons rencontré un problème de manque de temps, car deux camarades sur les trois initiaux ne pouvaient pas être présents l’après-midi du 22/01/2026.
 +
<br />
 +
Nous n’avons malheureusement pas pu aller jusqu’au bout du projet.
  
 
==Sources et documentation complémentaire==
 
==Sources et documentation complémentaire==
  
 
* Rédаctiоn et illustratiоn : <br>
 
* Rédаctiоn et illustratiоn : <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é.  
+
La rédaction, ainsi que les photos ont été réalisé par notre secrétaire Pierre MERLET. Elles sont donc libre de droit.
  
 
* Prоgrammаtiоn : <br>
 
* Prоgrammаtiоn : <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.
+
En сe qui cоncernе la prоgrаmmatiоn, nous avons utilisé de la documentation pour comprendre comment l'API fonctionne sur Arduino :<br>
 +
ESP32 HTTP GET and HTTP POST with Arduino IDE (JSON, URL Encoded, Text) - https://randomnerdtutorials.com/esp32-http-get-post-arduino <br>
 +
Rest API: HTTP GET Request - https://forum.arduino.cc/t/rest-api-http-get-request
  
 
* Transpаrence et dосumеntatiоn : <br>
 
* Transpаrence et dосumеntatiоn : <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е.
+
Nous n'avons pas utilisé l'IA pour réaliser le programme.
 
 
* Traçabilité : <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.
 
  
 
==Elément de présentation==
 
==Elément de présentation==
je met ici le document de présentation de mon projet
+
Première présentation 21/01/2026 : [[Fichier:Devin’Temp Présentation PowerPoint.pdf]]
 +
<br />
 +
Seconde présentation 22/01/2026 : [[Fichier:Devin temp_présentation_projet.pdf]]
  
 
==Ne pas modifier sous cette ligne==
 
==Ne pas modifier sous cette ligne==
 
[[Catégorie:Enib2026]]
 
[[Catégorie:Enib2026]]

Version actuelle datée du 22 janvier 2026 à 16:55

Titre de la fiche expérience :

Description (résumé)

Dans cette page dédiée à notre projet Devin'Temp, vous trouverez les ressources que nous avons utilisées pour le concevoir.
Vous trouverez également un guide retraçant les différentes étapes que nous avons effectuées.
Ce projet s’est déroulé sur deux journées entières.

Introduction

Dans le cadre du projet du Hackathon avec l'ENIB, nous devons réaliser un projet concret en deux jours pour faire de la médiation scientifique.
Pour se faire, nous avons deux jours pour réaliser les différentes étapes allant de la conception de l'idée à son élaboration.
Notre projet Devin'Temp consiste à réaliser un petit jeu permettant de deviner la température extérieur à Brest : si la bonne température est trouvée, l'aiguille du cerveau moteur pointera vers la météo actuelle.

Equipe Devin'Temp.jpeg
Photo de l'Equipe Devin'Temp

Outil et matériel

Lors de ce projet, nous allons utiliser :
-Une plaque labdec
-Une carte ESP32
-Trois bouton poussoir
-Une led rouge
-Une led jaune
-Un moteur 28BYJ-48
-Des câbles éléctriques
-Un morceau de carton
-Une feuille de papier
-Plusieurs feutres

Fichiers à joindre

Fichier:Devin’Temp Présentation PowerPoint.pdf

Fichier:Devin temp présentation projet.pdf

Mettre du code Arduino

  1  
  2 #define PIN 9
  3 #include <Arduino_GFX_Library.h>
  4 
  5 #include <WiFi.h>
  6 #include <HTTPClient.h>
  7 #include <AccelStepper.h>
  8 #define FULLSTEP 4
  9 #define STEP_PER_REVOLUTION 2048 // this value is from datasheet
 10 
 11 // Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence
 12 AccelStepper stepper(FULLSTEP, 25, 19, 21, 18);
 13 
 14 // WiFi
 15 const char* ssid = "iPhone";
 16 const char* password = "Louis1342";
 17 
 18 // API météo
 19 int debut =0;
 20 String apiKey = "f888dbc5f27c4338aae48889a8ca6e96";
 21 String city = "Guilers";
 22 int valeur_bouton, valeur_bouton_2, valeur_bouton_3, valeur_bouton_4, temp = 1, bouton_choisi = 1;
 23 int temperature;
 24 void setup() {
 25   stepper.setMaxSpeed(1000.0);   // set the maximum speed
 26   stepper.setAcceleration(50.0); // set acceleration
 27   stepper.setSpeed(200);         // set initial speed
 28   stepper.setCurrentPosition(0); // set position
 29   stepper.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution
 30   Serial.begin(115200);
 31   pinMode(26, INPUT);
 32   pinMode(13, INPUT);
 33   pinMode(14, INPUT);
 34   pinMode(35, INPUT);
 35   pinMode(34, INPUT);
 36   pinMode(33, OUTPUT);
 37   pinMode(4, OUTPUT);
 38   pinMode(18, OUTPUT);
 39   pinMode(19, OUTPUT);
 40   pinMode(21, OUTPUT);
 41   pinMode(23, INPUT);
 42   WiFi.begin(ssid, password);
 43   Serial.print("Connexion WiFi");
 44 
 45   while (WiFi.status() != WL_CONNECTED) {
 46     delay(500);
 47     Serial.print(".");
 48   }
 49 
 50   Serial.println("\nWiFi connecté !");
 51 }
 52 
 53 void loop() {
 54   if (temp) {
 55     if (WiFi.status() == WL_CONNECTED) {
 56       HTTPClient http;
 57 
 58       String url = "https://api.openweathermap.org/data/2.5/weather?q=" 
 59                   + city + 
 60                   "&units=metric&appid=" + apiKey;
 61 
 62       http.begin(url);
 63       int httpCode = http.GET();
 64 
 65       if (httpCode > 0) {
 66         String payload = http.getString();
 67 
 68         // --- Extraction MANUELLE de la température ---
 69         int indexTemp = payload.indexOf("\"temp\":");
 70         if (indexTemp != -1) {
 71           int start = indexTemp + 7; // après "temp":
 72           int end = payload.indexOf(",", start);
 73           String tempStr = payload.substring(start, end);
 74           temperature = tempStr.toFloat()*100;
 75           Serial.println(temperature);
 76         } else {
 77           Serial.println("Température non trouvée");
 78         }
 79       } else {
 80         Serial.println("Erreur HTTP");
 81       }
 82 
 83       http.end();
 84     }
 85   temp = 0;
 86 
 87   }
 88   valeur_bouton = digitalRead(13);
 89 
 90   valeur_bouton_2 = digitalRead(26);
 91   valeur_bouton_3 = digitalRead(14);
 92   valeur_bouton_4 = digitalRead(35);
 93   if (digitalRead(13) == 1) {
 94   bouton_choisi = 1;
 95   }
 96   else if (digitalRead(26) == 1) {
 97   bouton_choisi = 2;
 98   }
 99   else if (digitalRead(14) == 1) {
100   bouton_choisi = 3;
101   }
102   else if (digitalRead(35) == 1) {
103   bouton_choisi = 4;
104   }
105 
106   if (temperature < 500 && bouton_choisi == 1){
107     digitalWrite(4, HIGH);
108     digitalWrite(33, LOW);
109   }
110   else if (500 <= temperature && temperature <1000 && bouton_choisi == 2){
111     digitalWrite(4, HIGH);
112     digitalWrite(33, LOW);
113   }
114   else if (1000 <= temperature && temperature < 1500 && bouton_choisi == 3){
115     digitalWrite(4, HIGH);
116     digitalWrite(33, LOW);
117   }
118   else if (1500 <= temperature && bouton_choisi == 4){
119     digitalWrite(4, HIGH);
120     digitalWrite(33, LOW);
121   }
122   else{
123     digitalWrite(4, LOW);
124     digitalWrite(33, HIGH);
125   }
126 }

Etapes de fabrication

Etape 1 : La Recherche d'idée

Premièrement, nous avons commencé par lister nos premières idées. A l'aide d'un brainstorming nous avons mis l'ensemble des éléments qui nous venaient en tête en rapport avec le sujet.
Puis nous avons rédigé une première description du fonctionnement de notre projet.

Premier scenario.jpeg

Puis, aprés un échange avec Nadia, une intervenante nous avons modifier notre fonctionnement final qui est le suivant :
Le système récupère automatiquement, via une clé API météo, la température actuelle de la ville de Brest.
Les participants doivent deviner dans quelle zone de température se situe la température réelle, puis appuyer sur le bouton correspondant.

Les trois boutons poussoirs représentent chacun une plage de température indiqué:

Bouton 1 : température inférieure ou égale à 5 °C
Bouton 2 : température comprise entre 5 °C et 10 °C
Bouton 3 : température comprise entre 10 °C et 15 °C
Bouton 4 : température supérieure ou égale à 15 °C

Fonctionnement du système :

Si le participant appuie sur un mauvais bouton :
La LED rouge s’allume.
Aucune autre action ne se produit : cela indique que la température sélectionnée est incorrecte.

Si le participant appuie sur le bon bouton :
La LED verte s’allume et le servomoteur s’active. Le servomoteur possède un aiguille qui pointera en direction de la méteo actuelle.

Etape 2

Pour cette seconde étape, nous avons commencé à regarder la documentation technique afin de s'approprier le fonctionnement de la connectivité entre la carte ESP32 et notre ordinateur.
Puis, nous avons commencé le câblage de notre circuit, en commençant par câbler les LED et les boutons poussoirs.

Devin'Temp montage.jpeg

Etape 3

Ensuite, nous avons commencé à connecter l'API à notre programme afin de recevoir la température en temps réel de la ville de Brest.

Programmation Devin'Temp.jpeg

Puis, nous avons réussi à connecter les 4 boutons poussoirs et faire fonctionner notre idée : si le bon bouton poussoir correspondant à la bonne température est appuyée la LED verte s'allume.
Dans le cas contraire, la LED rouge s'allume.

Etape 4

Lors de cette 4ème étape, nous avons réalisé le support contenant l'ensemble des états de météo existant.
Pour ce faire, nous avons utilisé un morceau de carton et imprimé des images de météo.

TManuel Devin'Temp.jpeg

Support meteo.jpeg

Etape 5

Nous avons continué par coder le moteur. Nous avons ajouté un contacteur afin de gérer la position du moteur en temps réel. Cela permet que l'aiguille s'arrête devant le bon état de météo.

Devin'Temp progra.jpeg

En parallèle, nous avons continué à cabler le montage en ajoutant le système d'aiguille avec le support.

Devin'Temp montage.jpeg

Troubleshouting

Quelles sont les difficultés rencontrées, les problèmes, les solutions, ainsi que les trucs et astuces pour que cela fonctionne ?

Premièrement, nous avons rencontré des difficultés pour réaliser les conditions permettant d’allumer la bonne LED en fonction de la température sélectionnée. Ce problème venait du fait qu’en langage Arduino, il n’est pas possible d’encadrer directement une variable par des conditions comme nous l’avions initialement prévu. Nous avons donc modifié la logique du test en séparant les deux conditions. Notre code est ainsi redevenu fonctionnel.

Deuxièmement, nous avons rencontré un problème lors de l’utilisation du servomoteur. En effet, celui-ci ne possède pas de position de départ relative. Nous avons donc fait le choix d’utiliser un moteur à incrémentation.
Au départ, nous avons testé l’ajout d’un contacteur afin de détecter lorsqu’un tour complet était effectué, ce qui nous aurait permis de gérer la direction de l’aiguille vers la bonne météo.
Cependant, cette solution ne fonctionnait pas correctement car le contact était trop court.
Nous avons alors opté pour une nouvelle idée : ajouter un morceau de cuivre (matériau conducteur) afin d’obtenir une surface de contact plus grande lorsque les deux fils se croisent.
Cette solution nous a permis de résoudre le problème. Désormais, lorsque le programme se lance, le servomoteur tourne jusqu’à ce que les deux contacteurs se touchent.
Nous avons ainsi déterminé une position 0.

Troisièmement, nous avons rencontré un problème de manque de temps, car deux camarades sur les trois initiaux ne pouvaient pas être présents l’après-midi du 22/01/2026.
Nous n’avons malheureusement pas pu aller jusqu’au bout du projet.

Sources et documentation complémentaire

  • Rédаctiоn et illustratiоn :

La rédaction, ainsi que les photos ont été réalisé par notre secrétaire Pierre MERLET. Elles sont donc libre de droit.

  • Prоgrammаtiоn :

En сe qui cоncernе la prоgrаmmatiоn, nous avons utilisé de la documentation pour comprendre comment l'API fonctionne sur Arduino :
ESP32 HTTP GET and HTTP POST with Arduino IDE (JSON, URL Encoded, Text) - https://randomnerdtutorials.com/esp32-http-get-post-arduino
Rest API: HTTP GET Request - https://forum.arduino.cc/t/rest-api-http-get-request

  • Transpаrence et dосumеntatiоn :

Nous n'avons pas utilisé l'IA pour réaliser le programme.

Elément de présentation

Première présentation 21/01/2026 : Fichier:Devin’Temp Présentation PowerPoint.pdf
Seconde présentation 22/01/2026 : Fichier:Devin temp présentation projet.pdf

Ne pas modifier sous cette ligne