C'est l'hiver ! Hiver.gif

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

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Mettre du code Arduino)
(Mettre du code Arduino)
Ligne 93 : Ligne 93 :
 
   delay(50); // debounce
 
   delay(50); // debounce
 
}
 
}
 +
 +
 +
 +
 
//code de la carte du receiver
 
//code de la carte du receiver
 
#include <esp_now.h>
 
#include <esp_now.h>

Version du 22 janvier 2026 à 11:52

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 mener à bien ce projet nous eûmes besoin de deux ESP32, ainsi que deux servomoteurs, de deux câbles USB, d'une breadboard, d'un boutton poussoir, d'une dizaine de fils

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

indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)

étape 1

é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