C'est l'hiver ! Hiver.gif

ENIB 2026 :Gestion de toilettes : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(étapes de fabrication)
(étape 1)
Ligne 177 : Ligne 177 :
  
 
===étape 1===
 
===étape 1===
[[Fichier:Câblage du sender et du receiver .jpeg|400px]]
+
[[Fichier:sender.jpeg|400px]]
  
 
===étape 2===
 
===étape 2===

Version du 22 janvier 2026 à 14:49

Titre de la fiche expérience :

description (résumé)

éventuelle photo de l'équipe

Gestiontoilettes.jpg

Introduction

éventuelle vidéo

outil et matériel

Pour réaliser ce projet avec succès, nous avons eu recours à plusieurs composants essentiels. Nous avons utilisé deux microcontrôleurs ESP32, accompagnés de deux servomoteurs pour le contrôle mécanique. Pour l’alimentation et la communication, deux câbles USB ont été nécessaires. Afin de faciliter les connexions et les expérimentations, nous avons également employé deux breadboards, un bouton-poussoir pour les interactions, ainsi qu’une dizaine de fils permettant de relier l’ensemble des éléments entre eux

fichiers à joindre

code, ficher d'impression 3D, de découpe laser ou vinyle, ... Fichier:Gestion de toilettes.pdf

Mettre du code Arduino

  1  
  2 //code de la carte du sender
  3 
  4 #include <esp_now.h>
  5 #include <WiFi.h>
  6 
  7 #define buttonPin 18
  8 #define ledPin 4
  9 
 10 bool systemState = false;
 11 bool lastButtonState = HIGH;
 12 
 13 uint8_t broadcastAddress1[] = {0x20,0xe7,0xc8,0xac,0xb1,0x48};
 14 esp_now_peer_info_t peerInfo;
 15 
 16 // Callback
 17 void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
 18   Serial.print("Send status: ");
 19   Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Success" : "Fail");
 20 }
 21 
 22 void setup() {
 23   Serial.begin(115200);
 24 
 25   pinMode(buttonPin, INPUT_PULLUP);
 26   pinMode(ledPin, OUTPUT);
 27 
 28   WiFi.mode(WIFI_STA);
 29 
 30   if (esp_now_init() != ESP_OK) {
 31     Serial.println("ESP-NOW init failed");
 32     return;
 33   }
 34 
 35   esp_now_register_send_cb(OnDataSent);
 36 
 37   memcpy(peerInfo.peer_addr, broadcastAddress1, 6);
 38   peerInfo.channel = 0;
 39   peerInfo.encrypt = false;
 40 
 41   if (esp_now_add_peer(&peerInfo) != ESP_OK) {
 42     Serial.println("Failed to add peer");
 43   }
 44 }
 45 
 46 void loop() {
 47   char message = '2';   // default value
 48   bool buttonState = digitalRead(buttonPin);
 49 
 50   // Detect button press (falling edge)
 51   if (lastButtonState == HIGH && buttonState == LOW) {
 52     systemState = !systemState;
 53 
 54     if (systemState) {
 55       digitalWrite(ledPin, 0);
 56       message = '1';
 57     } else {
 58       digitalWrite(ledPin, 1);
 59       message = '0';
 60     }
 61 
 62     esp_err_t result = esp_now_send(
 63       broadcastAddress1,
 64       (uint8_t *)&message,
 65       sizeof(message)
 66     );
 67 
 68     if (result == ESP_OK) {
 69       Serial.print("Sent: ");
 70       Serial.println(message);
 71     } else {
 72       Serial.println("Send error");
 73     }
 74   }
 75 
 76   lastButtonState = buttonState;
 77   delay(50); // debounce
 78 }
 79 
 80 
 81 
 82 
 83 //code de la carte du receiver
 84 #include <esp_now.h>
 85 #include <WiFi.h>
 86 #include <ESP32Servo.h>
 87 #define led1 18
 88 #define servoPin 5
 89 Servo myServo;
 90 
 91 // Callback function executed when data is received
 92 void OnDataRecv(const esp_now_recv_info_t *recv_info, const uint8_t *incomingData, int len) {
 93   if (len > 0) {
 94     char receivedChar = incomingData[0];  // extract the first byte
 95 
 96     // Convert MAC to string
 97     char macStr[18];
 98     snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x",
 99              recv_info->src_addr[0], recv_info->src_addr[1], recv_info->src_addr[2],
100              recv_info->src_addr[3], recv_info->src_addr[4], recv_info->src_addr[5]);
101 
102     Serial.print("Received from: ");
103     Serial.println(macStr);
104     Serial.print("Character received: ");
105     Serial.println(receivedChar);
106     if(receivedChar=='1'){
107       digitalWrite(led1, 1);
108       
109         myServo.write(180);
110     }
111     else if(receivedChar=='0'){
112       digitalWrite(led1, 0);
113       
114         myServo.write(0);
115     }
116     else{
117       for (int i=0;i<180;i+=10){
118          myServo.write(i);
119          digitalWrite(led1, 0);
120          delay(1000);
121          digitalWrite(led1, 1);
122       }
123     }
124    
125   }
126 }
127 
128 void setup() {
129   Serial.begin(115200);
130 
131   // Set device as a Wi-Fi Station
132   WiFi.mode(WIFI_STA);
133 
134   // Initialize ESP-NOW
135   if (esp_now_init() != ESP_OK) {
136     Serial.println("Error initializing ESP-NOW");
137     return;
138   }
139 
140   // Register callback for receiving data
141   esp_now_register_recv_cb(OnDataRecv);
142 
143   Serial.println("ESP-NOW Receiver Ready");
144   pinMode(led1,OUTPUT);
145   myServo.attach(servoPin);
146   myServo.write(0); // position initiale du servo
147   digitalWrite(led1,0); // éteindre la led
148 }
149 
150 void loop() {
151   // Nothing needed here; data is handled in the callback
152 }

étapes de fabrication

La réalisation de ce projet a nécéssité plusieurs étapes: Etape1: Boutton poussoir câblé sur le sender ainsi qu'une led Etape2: servomoteur câblé sur le receiver ainsi qu'une led Etape3: câblage complet du prototype ainsi que test

étape 1

Sender.jpeg

étape 2

étape ...

Troubleshouting

Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?

Sources et documentation complémentaire

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

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

ne pas modifier sous cette ligne