ENIB 2026 : Capteur de Lumière
Sommaire
Introduction
Pour ceux qui ont déjà joué au jeu très connu Minecraft, cet objet vous paraîtra peut-être familier : il s'agit d'un capteur de lumière, comme représenté ci- dessous.
Son fonctionnement dans le jeu est très simple : quand il fait jour, le capteur va s'allumer, et
quand il fait nuit, le capteur s'éteint. Il peut également être utilisé pour créer des mécanismes plus complexes, comme l'ouverture de portes par exemple.
Ici nous allons uniquement reprendre le concept d'allumage, on ne créera pas de système compliqué. Notre capteur va donc reprendre l'heure locale sur Internet et s'allumer quand il fait jour, ou s'éteindre quand il fait nuit.
Outils et Matériel utilisés
Nous utilisons le matériel suivant :
- Une carte ESP-32-WROOM
- Du carton
- Des plaques Labdec
- Des câbles Mâle-Femelle
- Une LED
- Une résistance
- De la colle forte
- Du papier calque
- Crayons de couleur
Nous utilisons les outils suivants :
- Cutter
- Découpeuse Laser
- Règle
- Pistolet à colle
- Équerre
- Ciseaux
Fichiers à joindre
Code Arduino
1
2 #include <WiFi.h>
3 #include <time.h>
4
5 // NTP server and timezone settings
6 const char* ntpServer = "0.fr.pool.ntp.org";
7
8 // Define daytime range (24-hour format)
9 const int dayStartHour = 6; // 06:00
10 const int dayEndHour = 18; // 18:00
11
12 //WIFI
13 const char ssid = "Formation";
14 const charpassword = "Apdgo29200!";
15 uint32_t last_ota_time = 0;
16
17 //Arduino
18 const uint8_t pinLight = 13;
19 bool on = 0;
20
21 //return if it is daytime
22 int isDay() {
23 struct tm timeinfo;
24 if (!getLocalTime(&timeinfo)) {
25 Serial.println("Failed to obtain time");
26 delay(2000);
27 return -1;
28 }
29
30 // Print current time
31 Serial.printf("Current time: %02d:%02d:%02d\n",
32 timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);
33
34 // Determine if it's daytime
35 if (timeinfo.tm_hour >= dayStartHour && timeinfo.tm_hour < dayEndHour) {
36 Serial.println("It is DAYTIME ☀️");
37 return 1;
38 } else {
39 Serial.println("It is NIGHTTIME 🌙");
40 return 0;
41 }
42 }
43
44 void setup() {
45 Serial.begin(115200);
46
47 WiFi.begin(ssid, password);
48 Serial.println("\nConnecting to WiFi...");
49
50 while (WiFi.status() != WL_CONNECTED) {
51 Serial.print(".");
52 delay(500);
53 }
54
55 Serial.println("\nConnected to WiFi!");
56 Serial.print("ESP32 IP Address: ");
57 Serial.println(WiFi.localIP());
58
59 // Configure NTP
60 configTime(0, 0, ntpServer);
61 setenv("TZ", "CET-1CEST,M3.5.0/2,M10.5.0/3", 1);
62 tzset();
63
64 pinMode(pinLight, OUTPUT);
65 }
66
67 void loop() {
68 // put your main code here, to run repeatedly:
69 int status = isDay();
70 if (status == 1) {
71 digitalWrite(pinLight, HIGH);
72 }
73 else if (status == 0) {
74 digitalWrite(pinLight, LOW);
75 }
76 else {
77 Serial.println("Errror : Time error");
78 }
79 delay(20000); //wait 20 seconds
80 }
Étapes de fabrication
Étape 1 : Modélisation du capteur sur schéma papier.
On effectue un schéma sur papier approximatif du capteur de lumière. Le modèle utilisera une LED rouge.
Étape 2 : Codage en Arduino.
On code sur la carte ESP-32 à l'aide du logiciel Arduino. (Pour le code en détail voir la rubrique correspondante).
Étape 3 : Fabrication du montage avec la LED.
Sur la plaque Labdec, on fabrique le montage avec la carte ESP-32, une LED, une résistance et des câbles Mâle-Femelle.
Étape 4 : Découpage test.
Le carton est découpé au cutter, avec les faces principales carrées et les faces latérales rectangulaires. Cela nous sert à obtenir les dimensions souhaitées pour modéliser les faces (centrales et latérales) du capteur comme ci-dessous. Les dimensions du capteur sont de 20×20×6,6cm.
Étape 5 : Découpage et Assemblage du capteur.
On utilise la découpeuse laser pour découper les faces à l'aide des dimensions mesurées et vérifiées dans l'étape précédente. Les faces sont ensuite assemblées et consolidées grâce à de la colle forte venant du pistolet à colle.
On imprime puis découpe les images correspondant aux côtés du capteur, pour les coller sur chacune des faces latérales. Pour la face du dessus, on dessine et colorie sur papier calque, puis on place sur la face du dessus.
Troubleshouting
La plupart de nos difficultés étaient en lien avec la carte ESP-32 et le logiciel Arduino, qui étaient très compliqués à connecter sur un PC. Nous avons dû utiliser plusieurs stratégies, telles que changer de module, de connexion Internet, etc...
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
