<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>http://wiki.lesfabriquesduponant.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nathou</id>
		<title>Les Fabriques du Ponant - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.lesfabriquesduponant.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nathou"/>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Sp%C3%A9cial:Contributions/Nathou"/>
		<updated>2026-04-29T13:22:00Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36751</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36751"/>
				<updated>2026-01-20T14:59:14Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* Code Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
//Librairie&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED et Bouton&lt;br /&gt;
#define LED_VERTE 2 // LED verte physique&lt;br /&gt;
#define LED_ROUGE 4 // LED rouge physique&lt;br /&gt;
#define BOUTON 5    // Bouton pour changer l'état&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
///Code d'accès pour changer l'état&lt;br /&gt;
const String CODE_ACCES = &amp;quot;1234&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
///Serveur Web&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
//Variable systèmes&lt;br /&gt;
bool led_actuel = false;          // État actuel du magasin&lt;br /&gt;
bool dernier_etat_bouton = HIGH;  // État précédent du bouton&lt;br /&gt;
unsigned long lastPress = 0;      // Dernière pression du bouton&lt;br /&gt;
String historique = &amp;quot;&amp;quot;;            // Historique des changements&lt;br /&gt;
&lt;br /&gt;
//Fonctions système&lt;br /&gt;
&lt;br /&gt;
///Ajoute un événement dans l'historique avec horodatage&lt;br /&gt;
void ajouterHistorique(String etat){&lt;br /&gt;
  struct tm timeinfo;&lt;br /&gt;
  if(!getLocalTime(&amp;amp;timeinfo)){&lt;br /&gt;
    Serial.println(&amp;quot;Impossible d'obtenir l'heure&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  char buffer[9];&lt;br /&gt;
  strftime(buffer, 9, &amp;quot;%H:%M:%S&amp;quot;, &amp;amp;timeinfo);&lt;br /&gt;
  String timeStr = String(buffer);&lt;br /&gt;
  historique = timeStr + &amp;quot; - &amp;quot; + etat + &amp;quot;&amp;lt;br&amp;gt;&amp;quot; + historique;&lt;br /&gt;
  if(historique.length() &amp;gt; 1000) historique = historique.substring(0,1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///Envoie l'état actuel au client&lt;br /&gt;
void envoyerEtat(){&lt;br /&gt;
  String etat = led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;;&lt;br /&gt;
  server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///Setup Serveur et WiFi&lt;br /&gt;
void setup(){&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  //Initialisation LED et bouton&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
  pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
  //Création du point d'accès WiFi&lt;br /&gt;
  WiFi.softAP(ssid, password);&lt;br /&gt;
  configTime(0, 0, &amp;quot;pool.ntp.org&amp;quot;, &amp;quot;time.nist.gov&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;AP créé, connectez-vous au WiFi Magasin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //Routes serveur&lt;br /&gt;
  server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/toggle&amp;quot;, [](){&lt;br /&gt;
    if(server.hasArg(&amp;quot;code&amp;quot;) &amp;amp;&amp;amp; server.arg(&amp;quot;code&amp;quot;) == CODE_ACCES){&lt;br /&gt;
      led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
      digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
      digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
      ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
      server.send(200, &amp;quot;text/plain&amp;quot;, &amp;quot;OK&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      server.send(401, &amp;quot;text/plain&amp;quot;, &amp;quot;Code invalide&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/&amp;quot;, [](){&lt;br /&gt;
    String page = &amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;html lang='fr'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta name='viewport' content='width=device-width, initial-scale=1.0'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;title&amp;gt;État du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;body{font-family: Arial; background:#f2f2f2; display:flex; justify-content:center; align-items:center; height:100vh; margin:0;}&amp;quot;&lt;br /&gt;
      &amp;quot;.card{background:white; padding:30px; border-radius:12px; box-shadow:0 4px 10px rgba(0,0,0,0.1); text-align:center; width:90%; max-width:400px;}&amp;quot;&lt;br /&gt;
      &amp;quot;h1{margin-bottom:20px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.status{font-size:24px; font-weight:bold; padding:15px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.open{background:#d4f7d4; color:#1b7f1b;}&amp;quot;&lt;br /&gt;
      &amp;quot;.closed{background:#ffd6d6; color:#a00000;}&amp;quot;&lt;br /&gt;
      &amp;quot;input{padding:8px; width:60%; margin-bottom:10px;}&amp;quot;&lt;br /&gt;
      &amp;quot;button{padding:10px; font-size:16px; cursor:pointer;}&amp;quot;&lt;br /&gt;
      &amp;quot;.history{text-align:left; margin-top:20px; max-height:150px; overflow-y:auto; font-size:14px; background:#eee; padding:10px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='card'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;h1&amp;gt;État du magasin&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div id='etat' class='status'&amp;gt;Chargement...&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;input type='text' id='code' placeholder='Code pour changer'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;button onclick='toggleEtat()'&amp;gt;Changer état&amp;lt;/button&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='history' id='history'&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/etat').then(r=&amp;gt;r.text()).then(data=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot; const el=document.getElementById('etat');&amp;quot;&lt;br /&gt;
      &amp;quot; el.innerText=data;&amp;quot;&lt;br /&gt;
      &amp;quot; if(data.includes('Ouvert')) el.className='status open';&amp;quot;&lt;br /&gt;
      &amp;quot; else el.className='status closed';&amp;quot;&lt;br /&gt;
      &amp;quot;});&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/history').then(r=&amp;gt;r.text()).then(d=&amp;gt;{document.getElementById('history').innerHTML=d;});&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;function toggleEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; const code=document.getElementById('code').value;&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/toggle?code='+code).then(r=&amp;gt;r.text()).then(d=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot; if(d=='OK'){updateEtat(); document.getElementById('code').value='';}&amp;quot;&lt;br /&gt;
      &amp;quot; else alert('Code invalide');&amp;quot;&lt;br /&gt;
      &amp;quot;});&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;setInterval(updateEtat,500); updateEtat();&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/html&amp;gt;&amp;quot;;&lt;br /&gt;
    server.send(200,&amp;quot;text/html&amp;quot;,page);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/history&amp;quot;, [](){&lt;br /&gt;
    server.send(200,&amp;quot;text/html&amp;quot;,historique);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Loop principal&lt;br /&gt;
void loop(){&lt;br /&gt;
  server.handleClient();&lt;br /&gt;
&lt;br /&gt;
  //Lecture bouton&lt;br /&gt;
  bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
  if(etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH &amp;amp;&amp;amp; millis() - lastPress &amp;gt; 200){&lt;br /&gt;
    led_actuel = !led_actuel;&lt;br /&gt;
    lastPress = millis();&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
    digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
    ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  dernier_etat_bouton = etat_bouton;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///Client pour récupérer l'état depuis un serveur distant&lt;br /&gt;
#define SERVEUR &amp;quot;http://192.168.4.1/etat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void setupClient(){&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connexion au WiFi&amp;quot;);&lt;br /&gt;
  while(WiFi.status() != WL_CONNECTED){&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot; connecté !&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loopClient(){&lt;br /&gt;
  if(WiFi.status() == WL_CONNECTED){&lt;br /&gt;
    HTTPClient http;&lt;br /&gt;
    http.begin(SERVEUR);&lt;br /&gt;
    int httpCode = http.GET();&lt;br /&gt;
&lt;br /&gt;
    if(httpCode == 200){&lt;br /&gt;
      String etat = http.getString();&lt;br /&gt;
      etat.trim();&lt;br /&gt;
&lt;br /&gt;
      if(etat.indexOf(&amp;quot;Ouvert&amp;quot;) &amp;gt;= 0){&lt;br /&gt;
        digitalWrite(LED_VERTE,HIGH);&lt;br /&gt;
        digitalWrite(LED_ROUGE,LOW);&lt;br /&gt;
      } else if(etat.indexOf(&amp;quot;Fermé&amp;quot;) &amp;gt;= 0){&lt;br /&gt;
        digitalWrite(LED_VERTE,LOW);&lt;br /&gt;
        digitalWrite(LED_ROUGE,HIGH);&lt;br /&gt;
      }&lt;br /&gt;
    } else {&lt;br /&gt;
      Serial.print(&amp;quot;Erreur HTTP : &amp;quot;); Serial.println(httpCode);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    http.end();&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.println(&amp;quot;WiFi déconnecté !&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(250);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est à utiliser sur la carte qui sera reliée au bouton, le code esclave peut être utilisé avec autant de LED que l'on souhaite.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36747</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36747"/>
				<updated>2026-01-20T14:57:40Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* outil et matériel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;//Librairie&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED et bouton&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
///Code d'accès pour changer l'état&lt;br /&gt;
const String accessCode = &amp;quot;1234&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
///Serveur web&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
//Variables systèmes&lt;br /&gt;
bool led_actuel = false;          // État actuel&lt;br /&gt;
bool dernier_etat_bouton = HIGH;  // Dernier état du bouton&lt;br /&gt;
unsigned long lastPress = 0;      // Dernière pression&lt;br /&gt;
String historique = &amp;quot;&amp;quot;;            // Historique des changements&lt;br /&gt;
&lt;br /&gt;
//Fonctions système&lt;br /&gt;
&lt;br /&gt;
///Ajoute un événement dans l'historique&lt;br /&gt;
void ajouterHistorique(String etat){&lt;br /&gt;
  struct tm timeinfo;&lt;br /&gt;
  if(!getLocalTime(&amp;amp;timeinfo)){&lt;br /&gt;
    Serial.println(&amp;quot;Impossible d'obtenir l'heure&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  char buffer[9];&lt;br /&gt;
  strftime(buffer, 9, &amp;quot;%H:%M:%S&amp;quot;, &amp;amp;timeinfo);&lt;br /&gt;
  String timeStr = String(buffer);&lt;br /&gt;
  historique = timeStr + &amp;quot; - &amp;quot; + etat + &amp;quot;&amp;lt;br&amp;gt;&amp;quot; + historique;&lt;br /&gt;
  if (historique.length() &amp;gt; 1000) historique = historique.substring(0,1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///Envoie l'état actuel au client&lt;br /&gt;
void envoyerEtat(){&lt;br /&gt;
  String etat = led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;;&lt;br /&gt;
  server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Setup&lt;br /&gt;
void setup(){&lt;br /&gt;
  //Initialisation LED et bouton&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
  pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  //WiFi AP&lt;br /&gt;
  WiFi.softAP(ssid, password);&lt;br /&gt;
  configTime(0, 0, &amp;quot;pool.ntp.org&amp;quot;, &amp;quot;time.nist.gov&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;AP créé, connectez-vous au WiFi Magasin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //Routes serveur&lt;br /&gt;
  server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/toggle&amp;quot;, [](){&lt;br /&gt;
    if (server.hasArg(&amp;quot;code&amp;quot;) &amp;amp;&amp;amp; server.arg(&amp;quot;code&amp;quot;) == accessCode){&lt;br /&gt;
      led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
      digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
      digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
      ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
      server.send(200, &amp;quot;text/plain&amp;quot;, &amp;quot;OK&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      server.send(401, &amp;quot;text/plain&amp;quot;, &amp;quot;Code invalide&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/&amp;quot;, [](){&lt;br /&gt;
    String page = &amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;html lang='fr'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta name='viewport' content='width=device-width, initial-scale=1.0'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;title&amp;gt;État du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;body {font-family: Arial; background:#f2f2f2; display:flex; justify-content:center; align-items:center; height:100vh; margin:0;}&amp;quot;&lt;br /&gt;
      &amp;quot;.card {background:white; padding:30px; border-radius:12px; box-shadow:0 4px 10px rgba(0,0,0,0.1); text-align:center; width:90%; max-width:400px;}&amp;quot;&lt;br /&gt;
      &amp;quot;h1 {margin-bottom:20px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.status {font-size:24px; font-weight:bold; padding:15px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.open {background:#d4f7d4; color:#1b7f1b;}&amp;quot;&lt;br /&gt;
      &amp;quot;.closed {background:#ffd6d6; color:#a00000;}&amp;quot;&lt;br /&gt;
      &amp;quot;input {padding:8px; width:60%; margin-bottom:10px;}&amp;quot;&lt;br /&gt;
      &amp;quot;button {padding:10px; font-size:16px; cursor:pointer;}&amp;quot;&lt;br /&gt;
      &amp;quot;.history {text-align:left; margin-top:20px; max-height:150px; overflow-y:auto; font-size:14px; background:#eee; padding:10px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='card'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;h1&amp;gt;État du magasin&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div id='etat' class='status'&amp;gt;Chargement...&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;input type='text' id='code' placeholder='Code pour changer'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;button onclick='toggleEtat()'&amp;gt;Changer état&amp;lt;/button&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='history' id='history'&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/etat').then(r=&amp;gt;r.text()).then(data=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot; const el=document.getElementById('etat');&amp;quot;&lt;br /&gt;
      &amp;quot; el.innerText=data;&amp;quot;&lt;br /&gt;
      &amp;quot; if(data.includes('Ouvert')){el.className='status open';}&amp;quot;&lt;br /&gt;
      &amp;quot; else {el.className='status closed';}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/history').then(r=&amp;gt;r.text()).then(d=&amp;gt;{document.getElementById('history').innerHTML=d;});&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;function toggleEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; const code=document.getElementById('code').value;&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/toggle?code='+code).then(r=&amp;gt;r.text()).then(d=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot; if(d=='OK'){updateEtat(); document.getElementById('code').value='';}&amp;quot;&lt;br /&gt;
      &amp;quot; else{alert('Code invalide');}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;setInterval(updateEtat, 500); updateEtat();&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/html&amp;gt;&amp;quot;;&lt;br /&gt;
    server.send(200,&amp;quot;text/html&amp;quot;,page);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/history&amp;quot;, [](){&lt;br /&gt;
    server.send(200, &amp;quot;text/html&amp;quot;, historique);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Loop&lt;br /&gt;
void loop(){&lt;br /&gt;
  server.handleClient();&lt;br /&gt;
&lt;br /&gt;
  //Lecture bouton&lt;br /&gt;
  bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
  if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH &amp;amp;&amp;amp; millis() - lastPress &amp;gt; 200){&lt;br /&gt;
    led_actuel = !led_actuel;&lt;br /&gt;
    lastPress = millis();&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
    digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
    ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  dernier_etat_bouton = etat_bouton;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///Client WiFi pour récupérer l'état du serveur&lt;br /&gt;
#define SERVEUR &amp;quot;http://192.168.4.1/etat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void setupClient(){&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connexion au WiFi&amp;quot;);&lt;br /&gt;
  while(WiFi.status() != WL_CONNECTED){&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot; connecté !&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loopClient(){&lt;br /&gt;
  if(WiFi.status() == WL_CONNECTED){&lt;br /&gt;
    HTTPClient http;&lt;br /&gt;
    http.begin(SERVEUR);&lt;br /&gt;
    int httpCode = http.GET();&lt;br /&gt;
&lt;br /&gt;
    if(httpCode == 200){&lt;br /&gt;
      String etat = http.getString();&lt;br /&gt;
      etat.trim();&lt;br /&gt;
&lt;br /&gt;
      if(etat.indexOf(&amp;quot;Ouvert&amp;quot;) &amp;gt;= 0){&lt;br /&gt;
        digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
        digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
      } else if(etat.indexOf(&amp;quot;Fermé&amp;quot;) &amp;gt;= 0){&lt;br /&gt;
        digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
        digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
      }&lt;br /&gt;
    } else {&lt;br /&gt;
      Serial.print(&amp;quot;Erreur HTTP : &amp;quot;);&lt;br /&gt;
      Serial.println(httpCode);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    http.end();&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.println(&amp;quot;WiFi déconnecté !&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(250);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est à utiliser sur la carte qui sera reliée au bouton, le code esclave peut être utilisé avec autant de LED que l'on souhaite.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36741</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36741"/>
				<updated>2026-01-20T14:55:18Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* Code Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
//Librairie&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED et bouton&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
///Code d'accès pour changer l'état&lt;br /&gt;
const String accessCode = &amp;quot;1234&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
///Serveur web&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
//Variables systèmes&lt;br /&gt;
bool led_actuel = false;          // État actuel&lt;br /&gt;
bool dernier_etat_bouton = HIGH;  // Dernier état du bouton&lt;br /&gt;
unsigned long lastPress = 0;      // Dernière pression&lt;br /&gt;
String historique = &amp;quot;&amp;quot;;            // Historique des changements&lt;br /&gt;
&lt;br /&gt;
//Fonctions système&lt;br /&gt;
&lt;br /&gt;
///Ajoute un événement dans l'historique&lt;br /&gt;
void ajouterHistorique(String etat){&lt;br /&gt;
  struct tm timeinfo;&lt;br /&gt;
  if(!getLocalTime(&amp;amp;timeinfo)){&lt;br /&gt;
    Serial.println(&amp;quot;Impossible d'obtenir l'heure&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  char buffer[9];&lt;br /&gt;
  strftime(buffer, 9, &amp;quot;%H:%M:%S&amp;quot;, &amp;amp;timeinfo);&lt;br /&gt;
  String timeStr = String(buffer);&lt;br /&gt;
  historique = timeStr + &amp;quot; - &amp;quot; + etat + &amp;quot;&amp;lt;br&amp;gt;&amp;quot; + historique;&lt;br /&gt;
  if (historique.length() &amp;gt; 1000) historique = historique.substring(0,1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///Envoie l'état actuel au client&lt;br /&gt;
void envoyerEtat(){&lt;br /&gt;
  String etat = led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;;&lt;br /&gt;
  server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Setup&lt;br /&gt;
void setup(){&lt;br /&gt;
  //Initialisation LED et bouton&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
  pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  //WiFi AP&lt;br /&gt;
  WiFi.softAP(ssid, password);&lt;br /&gt;
  configTime(0, 0, &amp;quot;pool.ntp.org&amp;quot;, &amp;quot;time.nist.gov&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;AP créé, connectez-vous au WiFi Magasin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //Routes serveur&lt;br /&gt;
  server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/toggle&amp;quot;, [](){&lt;br /&gt;
    if (server.hasArg(&amp;quot;code&amp;quot;) &amp;amp;&amp;amp; server.arg(&amp;quot;code&amp;quot;) == accessCode){&lt;br /&gt;
      led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
      digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
      digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
      ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
      server.send(200, &amp;quot;text/plain&amp;quot;, &amp;quot;OK&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      server.send(401, &amp;quot;text/plain&amp;quot;, &amp;quot;Code invalide&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/&amp;quot;, [](){&lt;br /&gt;
    String page = &amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;html lang='fr'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta name='viewport' content='width=device-width, initial-scale=1.0'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;title&amp;gt;État du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;body {font-family: Arial; background:#f2f2f2; display:flex; justify-content:center; align-items:center; height:100vh; margin:0;}&amp;quot;&lt;br /&gt;
      &amp;quot;.card {background:white; padding:30px; border-radius:12px; box-shadow:0 4px 10px rgba(0,0,0,0.1); text-align:center; width:90%; max-width:400px;}&amp;quot;&lt;br /&gt;
      &amp;quot;h1 {margin-bottom:20px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.status {font-size:24px; font-weight:bold; padding:15px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.open {background:#d4f7d4; color:#1b7f1b;}&amp;quot;&lt;br /&gt;
      &amp;quot;.closed {background:#ffd6d6; color:#a00000;}&amp;quot;&lt;br /&gt;
      &amp;quot;input {padding:8px; width:60%; margin-bottom:10px;}&amp;quot;&lt;br /&gt;
      &amp;quot;button {padding:10px; font-size:16px; cursor:pointer;}&amp;quot;&lt;br /&gt;
      &amp;quot;.history {text-align:left; margin-top:20px; max-height:150px; overflow-y:auto; font-size:14px; background:#eee; padding:10px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='card'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;h1&amp;gt;État du magasin&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div id='etat' class='status'&amp;gt;Chargement...&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;input type='text' id='code' placeholder='Code pour changer'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;button onclick='toggleEtat()'&amp;gt;Changer état&amp;lt;/button&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='history' id='history'&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/etat').then(r=&amp;gt;r.text()).then(data=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot; const el=document.getElementById('etat');&amp;quot;&lt;br /&gt;
      &amp;quot; el.innerText=data;&amp;quot;&lt;br /&gt;
      &amp;quot; if(data.includes('Ouvert')){el.className='status open';}&amp;quot;&lt;br /&gt;
      &amp;quot; else {el.className='status closed';}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/history').then(r=&amp;gt;r.text()).then(d=&amp;gt;{document.getElementById('history').innerHTML=d;});&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;function toggleEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; const code=document.getElementById('code').value;&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/toggle?code='+code).then(r=&amp;gt;r.text()).then(d=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot; if(d=='OK'){updateEtat(); document.getElementById('code').value='';}&amp;quot;&lt;br /&gt;
      &amp;quot; else{alert('Code invalide');}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;setInterval(updateEtat, 500); updateEtat();&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/html&amp;gt;&amp;quot;;&lt;br /&gt;
    server.send(200,&amp;quot;text/html&amp;quot;,page);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/history&amp;quot;, [](){&lt;br /&gt;
    server.send(200, &amp;quot;text/html&amp;quot;, historique);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Loop&lt;br /&gt;
void loop(){&lt;br /&gt;
  server.handleClient();&lt;br /&gt;
&lt;br /&gt;
  //Lecture bouton&lt;br /&gt;
  bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
  if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH &amp;amp;&amp;amp; millis() - lastPress &amp;gt; 200){&lt;br /&gt;
    led_actuel = !led_actuel;&lt;br /&gt;
    lastPress = millis();&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
    digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
    ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  dernier_etat_bouton = etat_bouton;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///Client WiFi pour récupérer l'état du serveur&lt;br /&gt;
#define SERVEUR &amp;quot;http://192.168.4.1/etat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void setupClient(){&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connexion au WiFi&amp;quot;);&lt;br /&gt;
  while(WiFi.status() != WL_CONNECTED){&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot; connecté !&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loopClient(){&lt;br /&gt;
  if(WiFi.status() == WL_CONNECTED){&lt;br /&gt;
    HTTPClient http;&lt;br /&gt;
    http.begin(SERVEUR);&lt;br /&gt;
    int httpCode = http.GET();&lt;br /&gt;
&lt;br /&gt;
    if(httpCode == 200){&lt;br /&gt;
      String etat = http.getString();&lt;br /&gt;
      etat.trim();&lt;br /&gt;
&lt;br /&gt;
      if(etat.indexOf(&amp;quot;Ouvert&amp;quot;) &amp;gt;= 0){&lt;br /&gt;
        digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
        digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
      } else if(etat.indexOf(&amp;quot;Fermé&amp;quot;) &amp;gt;= 0){&lt;br /&gt;
        digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
        digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
      }&lt;br /&gt;
    } else {&lt;br /&gt;
      Serial.print(&amp;quot;Erreur HTTP : &amp;quot;);&lt;br /&gt;
      Serial.println(httpCode);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    http.end();&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.println(&amp;quot;WiFi déconnecté !&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(250);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est à utiliser sur la carte qui sera reliée au bouton, le code esclave peut être utilisé avec autant de LED que l'on souhaite.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36738</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36738"/>
				<updated>2026-01-20T14:54:56Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* outil et matériel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
//Librairie&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED et bouton&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
///Code d'accès pour changer l'état&lt;br /&gt;
const String accessCode = &amp;quot;1234&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
///Serveur web&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
//Variables systèmes&lt;br /&gt;
bool led_actuel = false;          // État actuel&lt;br /&gt;
bool dernier_etat_bouton = HIGH;  // Dernier état du bouton&lt;br /&gt;
unsigned long lastPress = 0;      // Dernière pression&lt;br /&gt;
String historique = &amp;quot;&amp;quot;;            // Historique des changements&lt;br /&gt;
&lt;br /&gt;
//Fonctions système&lt;br /&gt;
&lt;br /&gt;
///Ajoute un événement dans l'historique&lt;br /&gt;
void ajouterHistorique(String etat){&lt;br /&gt;
  struct tm timeinfo;&lt;br /&gt;
  if(!getLocalTime(&amp;amp;timeinfo)){&lt;br /&gt;
    Serial.println(&amp;quot;Impossible d'obtenir l'heure&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  char buffer[9];&lt;br /&gt;
  strftime(buffer, 9, &amp;quot;%H:%M:%S&amp;quot;, &amp;amp;timeinfo);&lt;br /&gt;
  String timeStr = String(buffer);&lt;br /&gt;
  historique = timeStr + &amp;quot; - &amp;quot; + etat + &amp;quot;&amp;lt;br&amp;gt;&amp;quot; + historique;&lt;br /&gt;
  if (historique.length() &amp;gt; 1000) historique = historique.substring(0,1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///Envoie l'état actuel au client&lt;br /&gt;
void envoyerEtat(){&lt;br /&gt;
  String etat = led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;;&lt;br /&gt;
  server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Setup&lt;br /&gt;
void setup(){&lt;br /&gt;
  //Initialisation LED et bouton&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
  pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  //WiFi AP&lt;br /&gt;
  WiFi.softAP(ssid, password);&lt;br /&gt;
  configTime(0, 0, &amp;quot;pool.ntp.org&amp;quot;, &amp;quot;time.nist.gov&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;AP créé, connectez-vous au WiFi Magasin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //Routes serveur&lt;br /&gt;
  server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/toggle&amp;quot;, [](){&lt;br /&gt;
    if (server.hasArg(&amp;quot;code&amp;quot;) &amp;amp;&amp;amp; server.arg(&amp;quot;code&amp;quot;) == accessCode){&lt;br /&gt;
      led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
      digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
      digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
      ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
      server.send(200, &amp;quot;text/plain&amp;quot;, &amp;quot;OK&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      server.send(401, &amp;quot;text/plain&amp;quot;, &amp;quot;Code invalide&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/&amp;quot;, [](){&lt;br /&gt;
    String page = &amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;html lang='fr'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta name='viewport' content='width=device-width, initial-scale=1.0'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;title&amp;gt;État du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;body {font-family: Arial; background:#f2f2f2; display:flex; justify-content:center; align-items:center; height:100vh; margin:0;}&amp;quot;&lt;br /&gt;
      &amp;quot;.card {background:white; padding:30px; border-radius:12px; box-shadow:0 4px 10px rgba(0,0,0,0.1); text-align:center; width:90%; max-width:400px;}&amp;quot;&lt;br /&gt;
      &amp;quot;h1 {margin-bottom:20px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.status {font-size:24px; font-weight:bold; padding:15px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.open {background:#d4f7d4; color:#1b7f1b;}&amp;quot;&lt;br /&gt;
      &amp;quot;.closed {background:#ffd6d6; color:#a00000;}&amp;quot;&lt;br /&gt;
      &amp;quot;input {padding:8px; width:60%; margin-bottom:10px;}&amp;quot;&lt;br /&gt;
      &amp;quot;button {padding:10px; font-size:16px; cursor:pointer;}&amp;quot;&lt;br /&gt;
      &amp;quot;.history {text-align:left; margin-top:20px; max-height:150px; overflow-y:auto; font-size:14px; background:#eee; padding:10px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='card'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;h1&amp;gt;État du magasin&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div id='etat' class='status'&amp;gt;Chargement...&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;input type='text' id='code' placeholder='Code pour changer'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;button onclick='toggleEtat()'&amp;gt;Changer état&amp;lt;/button&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='history' id='history'&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/etat').then(r=&amp;gt;r.text()).then(data=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot; const el=document.getElementById('etat');&amp;quot;&lt;br /&gt;
      &amp;quot; el.innerText=data;&amp;quot;&lt;br /&gt;
      &amp;quot; if(data.includes('Ouvert')){el.className='status open';}&amp;quot;&lt;br /&gt;
      &amp;quot; else {el.className='status closed';}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/history').then(r=&amp;gt;r.text()).then(d=&amp;gt;{document.getElementById('history').innerHTML=d;});&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;function toggleEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; const code=document.getElementById('code').value;&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/toggle?code='+code).then(r=&amp;gt;r.text()).then(d=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot; if(d=='OK'){updateEtat(); document.getElementById('code').value='';}&amp;quot;&lt;br /&gt;
      &amp;quot; else{alert('Code invalide');}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;setInterval(updateEtat, 500); updateEtat();&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/html&amp;gt;&amp;quot;;&lt;br /&gt;
    server.send(200,&amp;quot;text/html&amp;quot;,page);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/history&amp;quot;, [](){&lt;br /&gt;
    server.send(200, &amp;quot;text/html&amp;quot;, historique);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Loop&lt;br /&gt;
void loop(){&lt;br /&gt;
  server.handleClient();&lt;br /&gt;
&lt;br /&gt;
  //Lecture bouton&lt;br /&gt;
  bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
  if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH &amp;amp;&amp;amp; millis() - lastPress &amp;gt; 200){&lt;br /&gt;
    led_actuel = !led_actuel;&lt;br /&gt;
    lastPress = millis();&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
    digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
    ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  dernier_etat_bouton = etat_bouton;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///Client WiFi pour récupérer l'état du serveur&lt;br /&gt;
#define SERVEUR &amp;quot;http://192.168.4.1/etat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void setupClient(){&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connexion au WiFi&amp;quot;);&lt;br /&gt;
  while(WiFi.status() != WL_CONNECTED){&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot; connecté !&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loopClient(){&lt;br /&gt;
  if(WiFi.status() == WL_CONNECTED){&lt;br /&gt;
    HTTPClient http;&lt;br /&gt;
    http.begin(SERVEUR);&lt;br /&gt;
    int httpCode = http.GET();&lt;br /&gt;
&lt;br /&gt;
    if(httpCode == 200){&lt;br /&gt;
      String etat = http.getString();&lt;br /&gt;
      etat.trim();&lt;br /&gt;
&lt;br /&gt;
      if(etat.indexOf(&amp;quot;Ouvert&amp;quot;) &amp;gt;= 0){&lt;br /&gt;
        digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
        digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
      } else if(etat.indexOf(&amp;quot;Fermé&amp;quot;) &amp;gt;= 0){&lt;br /&gt;
        digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
        digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
      }&lt;br /&gt;
    } else {&lt;br /&gt;
      Serial.print(&amp;quot;Erreur HTTP : &amp;quot;);&lt;br /&gt;
      Serial.println(httpCode);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    http.end();&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.println(&amp;quot;WiFi déconnecté !&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(250);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est à utiliser sur la carte qui sera reliée au bouton, le code esclave peut être utilisé avec autant de LED que l'on souhaite.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36733</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36733"/>
				<updated>2026-01-20T14:54:24Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* outil et matériel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
//Librairie&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED et bouton&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
///Code d'accès pour changer l'état&lt;br /&gt;
const String accessCode = &amp;quot;1234&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
///Serveur web&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
//Variables systèmes&lt;br /&gt;
bool led_actuel = false;          // État actuel&lt;br /&gt;
bool dernier_etat_bouton = HIGH;  // Dernier état du bouton&lt;br /&gt;
unsigned long lastPress = 0;      // Dernière pression&lt;br /&gt;
String historique = &amp;quot;&amp;quot;;            // Historique des changements&lt;br /&gt;
&lt;br /&gt;
//Fonctions système&lt;br /&gt;
&lt;br /&gt;
///Ajoute un événement dans l'historique&lt;br /&gt;
void ajouterHistorique(String etat){&lt;br /&gt;
  struct tm timeinfo;&lt;br /&gt;
  if(!getLocalTime(&amp;amp;timeinfo)){&lt;br /&gt;
    Serial.println(&amp;quot;Impossible d'obtenir l'heure&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  char buffer[9];&lt;br /&gt;
  strftime(buffer, 9, &amp;quot;%H:%M:%S&amp;quot;, &amp;amp;timeinfo);&lt;br /&gt;
  String timeStr = String(buffer);&lt;br /&gt;
  historique = timeStr + &amp;quot; - &amp;quot; + etat + &amp;quot;&amp;lt;br&amp;gt;&amp;quot; + historique;&lt;br /&gt;
  if (historique.length() &amp;gt; 1000) historique = historique.substring(0,1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///Envoie l'état actuel au client&lt;br /&gt;
void envoyerEtat(){&lt;br /&gt;
  String etat = led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;;&lt;br /&gt;
  server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Setup&lt;br /&gt;
void setup(){&lt;br /&gt;
  //Initialisation LED et bouton&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
  pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  //WiFi AP&lt;br /&gt;
  WiFi.softAP(ssid, password);&lt;br /&gt;
  configTime(0, 0, &amp;quot;pool.ntp.org&amp;quot;, &amp;quot;time.nist.gov&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;AP créé, connectez-vous au WiFi Magasin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //Routes serveur&lt;br /&gt;
  server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/toggle&amp;quot;, [](){&lt;br /&gt;
    if (server.hasArg(&amp;quot;code&amp;quot;) &amp;amp;&amp;amp; server.arg(&amp;quot;code&amp;quot;) == accessCode){&lt;br /&gt;
      led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
      digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
      digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
      ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
      server.send(200, &amp;quot;text/plain&amp;quot;, &amp;quot;OK&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      server.send(401, &amp;quot;text/plain&amp;quot;, &amp;quot;Code invalide&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/&amp;quot;, [](){&lt;br /&gt;
    String page = &amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;html lang='fr'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta name='viewport' content='width=device-width, initial-scale=1.0'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;title&amp;gt;État du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;body {font-family: Arial; background:#f2f2f2; display:flex; justify-content:center; align-items:center; height:100vh; margin:0;}&amp;quot;&lt;br /&gt;
      &amp;quot;.card {background:white; padding:30px; border-radius:12px; box-shadow:0 4px 10px rgba(0,0,0,0.1); text-align:center; width:90%; max-width:400px;}&amp;quot;&lt;br /&gt;
      &amp;quot;h1 {margin-bottom:20px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.status {font-size:24px; font-weight:bold; padding:15px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.open {background:#d4f7d4; color:#1b7f1b;}&amp;quot;&lt;br /&gt;
      &amp;quot;.closed {background:#ffd6d6; color:#a00000;}&amp;quot;&lt;br /&gt;
      &amp;quot;input {padding:8px; width:60%; margin-bottom:10px;}&amp;quot;&lt;br /&gt;
      &amp;quot;button {padding:10px; font-size:16px; cursor:pointer;}&amp;quot;&lt;br /&gt;
      &amp;quot;.history {text-align:left; margin-top:20px; max-height:150px; overflow-y:auto; font-size:14px; background:#eee; padding:10px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='card'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;h1&amp;gt;État du magasin&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div id='etat' class='status'&amp;gt;Chargement...&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;input type='text' id='code' placeholder='Code pour changer'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;button onclick='toggleEtat()'&amp;gt;Changer état&amp;lt;/button&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='history' id='history'&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/etat').then(r=&amp;gt;r.text()).then(data=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot; const el=document.getElementById('etat');&amp;quot;&lt;br /&gt;
      &amp;quot; el.innerText=data;&amp;quot;&lt;br /&gt;
      &amp;quot; if(data.includes('Ouvert')){el.className='status open';}&amp;quot;&lt;br /&gt;
      &amp;quot; else {el.className='status closed';}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/history').then(r=&amp;gt;r.text()).then(d=&amp;gt;{document.getElementById('history').innerHTML=d;});&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;function toggleEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; const code=document.getElementById('code').value;&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/toggle?code='+code).then(r=&amp;gt;r.text()).then(d=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot; if(d=='OK'){updateEtat(); document.getElementById('code').value='';}&amp;quot;&lt;br /&gt;
      &amp;quot; else{alert('Code invalide');}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;setInterval(updateEtat, 500); updateEtat();&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/html&amp;gt;&amp;quot;;&lt;br /&gt;
    server.send(200,&amp;quot;text/html&amp;quot;,page);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/history&amp;quot;, [](){&lt;br /&gt;
    server.send(200, &amp;quot;text/html&amp;quot;, historique);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Loop&lt;br /&gt;
void loop(){&lt;br /&gt;
  server.handleClient();&lt;br /&gt;
&lt;br /&gt;
  //Lecture bouton&lt;br /&gt;
  bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
  if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH &amp;amp;&amp;amp; millis() - lastPress &amp;gt; 200){&lt;br /&gt;
    led_actuel = !led_actuel;&lt;br /&gt;
    lastPress = millis();&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
    digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
    ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  dernier_etat_bouton = etat_bouton;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///Client WiFi pour récupérer l'état du serveur&lt;br /&gt;
#define SERVEUR &amp;quot;http://192.168.4.1/etat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void setupClient(){&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connexion au WiFi&amp;quot;);&lt;br /&gt;
  while(WiFi.status() != WL_CONNECTED){&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot; connecté !&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loopClient(){&lt;br /&gt;
  if(WiFi.status() == WL_CONNECTED){&lt;br /&gt;
    HTTPClient http;&lt;br /&gt;
    http.begin(SERVEUR);&lt;br /&gt;
    int httpCode = http.GET();&lt;br /&gt;
&lt;br /&gt;
    if(httpCode == 200){&lt;br /&gt;
      String etat = http.getString();&lt;br /&gt;
      etat.trim();&lt;br /&gt;
&lt;br /&gt;
      if(etat.indexOf(&amp;quot;Ouvert&amp;quot;) &amp;gt;= 0){&lt;br /&gt;
        digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
        digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
      } else if(etat.indexOf(&amp;quot;Fermé&amp;quot;) &amp;gt;= 0){&lt;br /&gt;
        digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
        digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
      }&lt;br /&gt;
    } else {&lt;br /&gt;
      Serial.print(&amp;quot;Erreur HTTP : &amp;quot;);&lt;br /&gt;
      Serial.println(httpCode);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    http.end();&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.println(&amp;quot;WiFi déconnecté !&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(250);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est à utiliser sur la carte qui sera reliée au bouton, le code esclave peut être utilisé avec autant de LED que l'on souhaite.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36722</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36722"/>
				<updated>2026-01-20T14:51:30Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* fichiers à joindre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
// Librairies&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// === Configuration LED &amp;amp; Bouton ===&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
// === WiFi et accès ===&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
const String accessCode = &amp;quot;1234&amp;quot;;  // Code pour changer l'état&lt;br /&gt;
&lt;br /&gt;
// === Serveur Web ===&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
// === Variables système ===&lt;br /&gt;
bool led_actuel = false;          // État actuel du magasin&lt;br /&gt;
bool dernier_etat_bouton = HIGH;  // État précédent du bouton&lt;br /&gt;
unsigned long lastPress = 0;      // Dernière pression bouton&lt;br /&gt;
String historique = &amp;quot;&amp;quot;;            // Historique des changements&lt;br /&gt;
&lt;br /&gt;
// === Fonctions utilitaires ===&lt;br /&gt;
&lt;br /&gt;
// Ajoute une entrée à l'historique avec horodatage&lt;br /&gt;
void ajouterHistorique(String etat) {&lt;br /&gt;
  struct tm timeinfo;&lt;br /&gt;
  if(!getLocalTime(&amp;amp;timeinfo)) {&lt;br /&gt;
    Serial.println(&amp;quot;Impossible d'obtenir l'heure&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  char buffer[9];&lt;br /&gt;
  strftime(buffer, 9, &amp;quot;%H:%M:%S&amp;quot;, &amp;amp;timeinfo);&lt;br /&gt;
  String timeStr = String(buffer);&lt;br /&gt;
&lt;br /&gt;
  historique = timeStr + &amp;quot; - &amp;quot; + etat + &amp;quot;&amp;lt;br&amp;gt;&amp;quot; + historique;&lt;br /&gt;
  if (historique.length() &amp;gt; 1000) historique = historique.substring(0,1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Envoie l'état actuel du magasin au client&lt;br /&gt;
void envoyerEtat() {&lt;br /&gt;
  String etat = led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;;&lt;br /&gt;
  server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// === Setup principal ===&lt;br /&gt;
void setup() {&lt;br /&gt;
  // Initialisation des LEDs et du bouton&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
  pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  // WiFi AP&lt;br /&gt;
  WiFi.softAP(ssid, password);&lt;br /&gt;
  configTime(0, 0, &amp;quot;pool.ntp.org&amp;quot;, &amp;quot;time.nist.gov&amp;quot;); &lt;br /&gt;
  Serial.println(&amp;quot;AP créé, connectez-vous au WiFi Magasin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // Routes serveur&lt;br /&gt;
  server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/toggle&amp;quot;, [](){&lt;br /&gt;
    if (server.hasArg(&amp;quot;code&amp;quot;) &amp;amp;&amp;amp; server.arg(&amp;quot;code&amp;quot;) == accessCode) {&lt;br /&gt;
      led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
      digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
      digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
      ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
      server.send(200, &amp;quot;text/plain&amp;quot;, &amp;quot;OK&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      server.send(401, &amp;quot;text/plain&amp;quot;, &amp;quot;Code invalide&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  // Page principale HTML&lt;br /&gt;
  server.on(&amp;quot;/&amp;quot;, []() {&lt;br /&gt;
    String page = &amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;html lang='fr'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta name='viewport' content='width=device-width, initial-scale=1.0'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;title&amp;gt;État du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;body {font-family: Arial; background:#f2f2f2; display:flex; justify-content:center; align-items:center; height:100vh; margin:0;}&amp;quot;&lt;br /&gt;
      &amp;quot;.card {background:white; padding:30px; border-radius:12px; box-shadow:0 4px 10px rgba(0,0,0,0.1); text-align:center; width:90%; max-width:400px;}&amp;quot;&lt;br /&gt;
      &amp;quot;h1 {margin-bottom:20px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.status {font-size:24px; font-weight:bold; padding:15px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.open {background:#d4f7d4; color:#1b7f1b;}&amp;quot;&lt;br /&gt;
      &amp;quot;.closed {background:#ffd6d6; color:#a00000;}&amp;quot;&lt;br /&gt;
      &amp;quot;input {padding:8px; width:60%; margin-bottom:10px;}&amp;quot;&lt;br /&gt;
      &amp;quot;button {padding:10px; font-size:16px; cursor:pointer;}&amp;quot;&lt;br /&gt;
      &amp;quot;.history {text-align:left; margin-top:20px; max-height:150px; overflow-y:auto; font-size:14px; background:#eee; padding:10px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='card'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;h1&amp;gt;État du magasin&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div id='etat' class='status'&amp;gt;Chargement...&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;input type='text' id='code' placeholder='Code pour changer'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;button onclick='toggleEtat()'&amp;gt;Changer état&amp;lt;/button&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='history' id='history'&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/etat').then(r=&amp;gt;r.text()).then(data=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot;   const el=document.getElementById('etat');&amp;quot;&lt;br /&gt;
      &amp;quot;   el.innerText=data;&amp;quot;&lt;br /&gt;
      &amp;quot;   el.className='status '+(data.includes('Ouvert')?'open':'closed');&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/history').then(r=&amp;gt;r.text()).then(d=&amp;gt;{document.getElementById('history').innerHTML=d;});&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;function toggleEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; const code=document.getElementById('code').value;&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/toggle?code='+code).then(r=&amp;gt;r.text()).then(d=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot;   if(d=='OK'){updateEtat(); document.getElementById('code').value='';}&amp;quot;&lt;br /&gt;
      &amp;quot;   else{alert('Code invalide');}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;setInterval(updateEtat, 500); updateEtat();&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/html&amp;gt;&amp;quot;;&lt;br /&gt;
    server.send(200,&amp;quot;text/html&amp;quot;,page);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/history&amp;quot;, [](){&lt;br /&gt;
    server.send(200, &amp;quot;text/html&amp;quot;, historique);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// === Loop principal ===&lt;br /&gt;
void loop() {&lt;br /&gt;
  server.handleClient();&lt;br /&gt;
&lt;br /&gt;
  // Gestion du bouton physique&lt;br /&gt;
  bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
  if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH &amp;amp;&amp;amp; millis() - lastPress &amp;gt; 200) {&lt;br /&gt;
    led_actuel = !led_actuel;&lt;br /&gt;
    lastPress = millis();&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
    digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
    ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  dernier_etat_bouton = etat_bouton;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// === Client WiFi pour lire l'état depuis le serveur ===&lt;br /&gt;
#define SERVEUR &amp;quot;http://192.168.4.1/etat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void setupClient() {&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connexion au WiFi&amp;quot;);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot; connecté !&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loopClient() {&lt;br /&gt;
  if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
    HTTPClient http;&lt;br /&gt;
    http.begin(SERVEUR);&lt;br /&gt;
    int httpCode = http.GET();&lt;br /&gt;
&lt;br /&gt;
    if (httpCode == 200) {&lt;br /&gt;
      String etat = http.getString();&lt;br /&gt;
      etat.trim(); &lt;br /&gt;
&lt;br /&gt;
      if (etat.indexOf(&amp;quot;Ouvert&amp;quot;) &amp;gt;= 0) { &lt;br /&gt;
        digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
        digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
      } else if (etat.indexOf(&amp;quot;Fermé&amp;quot;) &amp;gt;= 0) {&lt;br /&gt;
        digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
        digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
      }&lt;br /&gt;
    } else {&lt;br /&gt;
      Serial.print(&amp;quot;Erreur HTTP : &amp;quot;);&lt;br /&gt;
      Serial.println(httpCode);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    http.end();&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.println(&amp;quot;WiFi déconnecté !&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(250); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est à utiliser sur la carte qui sera reliée au bouton, le code esclave peut être utilisé avec autant de LED que l'on souhaite.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36714</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36714"/>
				<updated>2026-01-20T14:49:35Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* étape 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
// Librairies&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// === Configuration LED &amp;amp; Bouton ===&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
// === WiFi et accès ===&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
const String accessCode = &amp;quot;1234&amp;quot;;  // Code pour changer l'état&lt;br /&gt;
&lt;br /&gt;
// === Serveur Web ===&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
// === Variables système ===&lt;br /&gt;
bool led_actuel = false;          // État actuel du magasin&lt;br /&gt;
bool dernier_etat_bouton = HIGH;  // État précédent du bouton&lt;br /&gt;
unsigned long lastPress = 0;      // Dernière pression bouton&lt;br /&gt;
String historique = &amp;quot;&amp;quot;;            // Historique des changements&lt;br /&gt;
&lt;br /&gt;
// === Fonctions utilitaires ===&lt;br /&gt;
&lt;br /&gt;
// Ajoute une entrée à l'historique avec horodatage&lt;br /&gt;
void ajouterHistorique(String etat) {&lt;br /&gt;
  struct tm timeinfo;&lt;br /&gt;
  if(!getLocalTime(&amp;amp;timeinfo)) {&lt;br /&gt;
    Serial.println(&amp;quot;Impossible d'obtenir l'heure&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  char buffer[9];&lt;br /&gt;
  strftime(buffer, 9, &amp;quot;%H:%M:%S&amp;quot;, &amp;amp;timeinfo);&lt;br /&gt;
  String timeStr = String(buffer);&lt;br /&gt;
&lt;br /&gt;
  historique = timeStr + &amp;quot; - &amp;quot; + etat + &amp;quot;&amp;lt;br&amp;gt;&amp;quot; + historique;&lt;br /&gt;
  if (historique.length() &amp;gt; 1000) historique = historique.substring(0,1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Envoie l'état actuel du magasin au client&lt;br /&gt;
void envoyerEtat() {&lt;br /&gt;
  String etat = led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;;&lt;br /&gt;
  server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// === Setup principal ===&lt;br /&gt;
void setup() {&lt;br /&gt;
  // Initialisation des LEDs et du bouton&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
  pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  // WiFi AP&lt;br /&gt;
  WiFi.softAP(ssid, password);&lt;br /&gt;
  configTime(0, 0, &amp;quot;pool.ntp.org&amp;quot;, &amp;quot;time.nist.gov&amp;quot;); &lt;br /&gt;
  Serial.println(&amp;quot;AP créé, connectez-vous au WiFi Magasin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // Routes serveur&lt;br /&gt;
  server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/toggle&amp;quot;, [](){&lt;br /&gt;
    if (server.hasArg(&amp;quot;code&amp;quot;) &amp;amp;&amp;amp; server.arg(&amp;quot;code&amp;quot;) == accessCode) {&lt;br /&gt;
      led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
      digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
      digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
      ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
      server.send(200, &amp;quot;text/plain&amp;quot;, &amp;quot;OK&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      server.send(401, &amp;quot;text/plain&amp;quot;, &amp;quot;Code invalide&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  // Page principale HTML&lt;br /&gt;
  server.on(&amp;quot;/&amp;quot;, []() {&lt;br /&gt;
    String page = &amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;html lang='fr'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta name='viewport' content='width=device-width, initial-scale=1.0'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;title&amp;gt;État du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;body {font-family: Arial; background:#f2f2f2; display:flex; justify-content:center; align-items:center; height:100vh; margin:0;}&amp;quot;&lt;br /&gt;
      &amp;quot;.card {background:white; padding:30px; border-radius:12px; box-shadow:0 4px 10px rgba(0,0,0,0.1); text-align:center; width:90%; max-width:400px;}&amp;quot;&lt;br /&gt;
      &amp;quot;h1 {margin-bottom:20px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.status {font-size:24px; font-weight:bold; padding:15px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.open {background:#d4f7d4; color:#1b7f1b;}&amp;quot;&lt;br /&gt;
      &amp;quot;.closed {background:#ffd6d6; color:#a00000;}&amp;quot;&lt;br /&gt;
      &amp;quot;input {padding:8px; width:60%; margin-bottom:10px;}&amp;quot;&lt;br /&gt;
      &amp;quot;button {padding:10px; font-size:16px; cursor:pointer;}&amp;quot;&lt;br /&gt;
      &amp;quot;.history {text-align:left; margin-top:20px; max-height:150px; overflow-y:auto; font-size:14px; background:#eee; padding:10px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='card'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;h1&amp;gt;État du magasin&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div id='etat' class='status'&amp;gt;Chargement...&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;input type='text' id='code' placeholder='Code pour changer'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;button onclick='toggleEtat()'&amp;gt;Changer état&amp;lt;/button&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='history' id='history'&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/etat').then(r=&amp;gt;r.text()).then(data=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot;   const el=document.getElementById('etat');&amp;quot;&lt;br /&gt;
      &amp;quot;   el.innerText=data;&amp;quot;&lt;br /&gt;
      &amp;quot;   el.className='status '+(data.includes('Ouvert')?'open':'closed');&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/history').then(r=&amp;gt;r.text()).then(d=&amp;gt;{document.getElementById('history').innerHTML=d;});&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;function toggleEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; const code=document.getElementById('code').value;&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/toggle?code='+code).then(r=&amp;gt;r.text()).then(d=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot;   if(d=='OK'){updateEtat(); document.getElementById('code').value='';}&amp;quot;&lt;br /&gt;
      &amp;quot;   else{alert('Code invalide');}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;setInterval(updateEtat, 500); updateEtat();&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/html&amp;gt;&amp;quot;;&lt;br /&gt;
    server.send(200,&amp;quot;text/html&amp;quot;,page);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/history&amp;quot;, [](){&lt;br /&gt;
    server.send(200, &amp;quot;text/html&amp;quot;, historique);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// === Loop principal ===&lt;br /&gt;
void loop() {&lt;br /&gt;
  server.handleClient();&lt;br /&gt;
&lt;br /&gt;
  // Gestion du bouton physique&lt;br /&gt;
  bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
  if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH &amp;amp;&amp;amp; millis() - lastPress &amp;gt; 200) {&lt;br /&gt;
    led_actuel = !led_actuel;&lt;br /&gt;
    lastPress = millis();&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
    digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
    ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  dernier_etat_bouton = etat_bouton;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// === Client WiFi pour lire l'état depuis le serveur ===&lt;br /&gt;
#define SERVEUR &amp;quot;http://192.168.4.1/etat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void setupClient() {&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connexion au WiFi&amp;quot;);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot; connecté !&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loopClient() {&lt;br /&gt;
  if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
    HTTPClient http;&lt;br /&gt;
    http.begin(SERVEUR);&lt;br /&gt;
    int httpCode = http.GET();&lt;br /&gt;
&lt;br /&gt;
    if (httpCode == 200) {&lt;br /&gt;
      String etat = http.getString();&lt;br /&gt;
      etat.trim(); &lt;br /&gt;
&lt;br /&gt;
      if (etat.indexOf(&amp;quot;Ouvert&amp;quot;) &amp;gt;= 0) { &lt;br /&gt;
        digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
        digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
      } else if (etat.indexOf(&amp;quot;Fermé&amp;quot;) &amp;gt;= 0) {&lt;br /&gt;
        digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
        digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
      }&lt;br /&gt;
    } else {&lt;br /&gt;
      Serial.print(&amp;quot;Erreur HTTP : &amp;quot;);&lt;br /&gt;
      Serial.println(httpCode);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    http.end();&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.println(&amp;quot;WiFi déconnecté !&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(250); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est à utiliser sur la carte qui sera reliée au bouton, le code esclave peut être utilisé avec autant de LED que l'on souhaite.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36704</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36704"/>
				<updated>2026-01-20T14:47:52Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
// Librairies&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// === Configuration LED &amp;amp; Bouton ===&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
// === WiFi et accès ===&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
const String accessCode = &amp;quot;1234&amp;quot;;  // Code pour changer l'état&lt;br /&gt;
&lt;br /&gt;
// === Serveur Web ===&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
// === Variables système ===&lt;br /&gt;
bool led_actuel = false;          // État actuel du magasin&lt;br /&gt;
bool dernier_etat_bouton = HIGH;  // État précédent du bouton&lt;br /&gt;
unsigned long lastPress = 0;      // Dernière pression bouton&lt;br /&gt;
String historique = &amp;quot;&amp;quot;;            // Historique des changements&lt;br /&gt;
&lt;br /&gt;
// === Fonctions utilitaires ===&lt;br /&gt;
&lt;br /&gt;
// Ajoute une entrée à l'historique avec horodatage&lt;br /&gt;
void ajouterHistorique(String etat) {&lt;br /&gt;
  struct tm timeinfo;&lt;br /&gt;
  if(!getLocalTime(&amp;amp;timeinfo)) {&lt;br /&gt;
    Serial.println(&amp;quot;Impossible d'obtenir l'heure&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  char buffer[9];&lt;br /&gt;
  strftime(buffer, 9, &amp;quot;%H:%M:%S&amp;quot;, &amp;amp;timeinfo);&lt;br /&gt;
  String timeStr = String(buffer);&lt;br /&gt;
&lt;br /&gt;
  historique = timeStr + &amp;quot; - &amp;quot; + etat + &amp;quot;&amp;lt;br&amp;gt;&amp;quot; + historique;&lt;br /&gt;
  if (historique.length() &amp;gt; 1000) historique = historique.substring(0,1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Envoie l'état actuel du magasin au client&lt;br /&gt;
void envoyerEtat() {&lt;br /&gt;
  String etat = led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;;&lt;br /&gt;
  server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// === Setup principal ===&lt;br /&gt;
void setup() {&lt;br /&gt;
  // Initialisation des LEDs et du bouton&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
  pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  // WiFi AP&lt;br /&gt;
  WiFi.softAP(ssid, password);&lt;br /&gt;
  configTime(0, 0, &amp;quot;pool.ntp.org&amp;quot;, &amp;quot;time.nist.gov&amp;quot;); &lt;br /&gt;
  Serial.println(&amp;quot;AP créé, connectez-vous au WiFi Magasin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // Routes serveur&lt;br /&gt;
  server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/toggle&amp;quot;, [](){&lt;br /&gt;
    if (server.hasArg(&amp;quot;code&amp;quot;) &amp;amp;&amp;amp; server.arg(&amp;quot;code&amp;quot;) == accessCode) {&lt;br /&gt;
      led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
      digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
      digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
      ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
      server.send(200, &amp;quot;text/plain&amp;quot;, &amp;quot;OK&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      server.send(401, &amp;quot;text/plain&amp;quot;, &amp;quot;Code invalide&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  // Page principale HTML&lt;br /&gt;
  server.on(&amp;quot;/&amp;quot;, []() {&lt;br /&gt;
    String page = &amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;html lang='fr'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta name='viewport' content='width=device-width, initial-scale=1.0'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;title&amp;gt;État du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;body {font-family: Arial; background:#f2f2f2; display:flex; justify-content:center; align-items:center; height:100vh; margin:0;}&amp;quot;&lt;br /&gt;
      &amp;quot;.card {background:white; padding:30px; border-radius:12px; box-shadow:0 4px 10px rgba(0,0,0,0.1); text-align:center; width:90%; max-width:400px;}&amp;quot;&lt;br /&gt;
      &amp;quot;h1 {margin-bottom:20px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.status {font-size:24px; font-weight:bold; padding:15px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.open {background:#d4f7d4; color:#1b7f1b;}&amp;quot;&lt;br /&gt;
      &amp;quot;.closed {background:#ffd6d6; color:#a00000;}&amp;quot;&lt;br /&gt;
      &amp;quot;input {padding:8px; width:60%; margin-bottom:10px;}&amp;quot;&lt;br /&gt;
      &amp;quot;button {padding:10px; font-size:16px; cursor:pointer;}&amp;quot;&lt;br /&gt;
      &amp;quot;.history {text-align:left; margin-top:20px; max-height:150px; overflow-y:auto; font-size:14px; background:#eee; padding:10px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='card'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;h1&amp;gt;État du magasin&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div id='etat' class='status'&amp;gt;Chargement...&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;input type='text' id='code' placeholder='Code pour changer'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;button onclick='toggleEtat()'&amp;gt;Changer état&amp;lt;/button&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='history' id='history'&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/etat').then(r=&amp;gt;r.text()).then(data=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot;   const el=document.getElementById('etat');&amp;quot;&lt;br /&gt;
      &amp;quot;   el.innerText=data;&amp;quot;&lt;br /&gt;
      &amp;quot;   el.className='status '+(data.includes('Ouvert')?'open':'closed');&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/history').then(r=&amp;gt;r.text()).then(d=&amp;gt;{document.getElementById('history').innerHTML=d;});&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;function toggleEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; const code=document.getElementById('code').value;&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/toggle?code='+code).then(r=&amp;gt;r.text()).then(d=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot;   if(d=='OK'){updateEtat(); document.getElementById('code').value='';}&amp;quot;&lt;br /&gt;
      &amp;quot;   else{alert('Code invalide');}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;setInterval(updateEtat, 500); updateEtat();&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/html&amp;gt;&amp;quot;;&lt;br /&gt;
    server.send(200,&amp;quot;text/html&amp;quot;,page);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/history&amp;quot;, [](){&lt;br /&gt;
    server.send(200, &amp;quot;text/html&amp;quot;, historique);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// === Loop principal ===&lt;br /&gt;
void loop() {&lt;br /&gt;
  server.handleClient();&lt;br /&gt;
&lt;br /&gt;
  // Gestion du bouton physique&lt;br /&gt;
  bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
  if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH &amp;amp;&amp;amp; millis() - lastPress &amp;gt; 200) {&lt;br /&gt;
    led_actuel = !led_actuel;&lt;br /&gt;
    lastPress = millis();&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
    digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
    ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  dernier_etat_bouton = etat_bouton;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// === Client WiFi pour lire l'état depuis le serveur ===&lt;br /&gt;
#define SERVEUR &amp;quot;http://192.168.4.1/etat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void setupClient() {&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connexion au WiFi&amp;quot;);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot; connecté !&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loopClient() {&lt;br /&gt;
  if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
    HTTPClient http;&lt;br /&gt;
    http.begin(SERVEUR);&lt;br /&gt;
    int httpCode = http.GET();&lt;br /&gt;
&lt;br /&gt;
    if (httpCode == 200) {&lt;br /&gt;
      String etat = http.getString();&lt;br /&gt;
      etat.trim(); &lt;br /&gt;
&lt;br /&gt;
      if (etat.indexOf(&amp;quot;Ouvert&amp;quot;) &amp;gt;= 0) { &lt;br /&gt;
        digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
        digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
      } else if (etat.indexOf(&amp;quot;Fermé&amp;quot;) &amp;gt;= 0) {&lt;br /&gt;
        digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
        digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
      }&lt;br /&gt;
    } else {&lt;br /&gt;
      Serial.print(&amp;quot;Erreur HTTP : &amp;quot;);&lt;br /&gt;
      Serial.println(httpCode);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    http.end();&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.println(&amp;quot;WiFi déconnecté !&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(250); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36691</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36691"/>
				<updated>2026-01-20T14:44:04Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* fichiers à joindre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
// Librairies&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// === Configuration LED &amp;amp; Bouton ===&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
// === WiFi et accès ===&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
const String accessCode = &amp;quot;1234&amp;quot;;  // Code pour changer l'état&lt;br /&gt;
&lt;br /&gt;
// === Serveur Web ===&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
// === Variables système ===&lt;br /&gt;
bool led_actuel = false;          // État actuel du magasin&lt;br /&gt;
bool dernier_etat_bouton = HIGH;  // État précédent du bouton&lt;br /&gt;
unsigned long lastPress = 0;      // Dernière pression bouton&lt;br /&gt;
String historique = &amp;quot;&amp;quot;;            // Historique des changements&lt;br /&gt;
&lt;br /&gt;
// === Fonctions utilitaires ===&lt;br /&gt;
&lt;br /&gt;
// Ajoute une entrée à l'historique avec horodatage&lt;br /&gt;
void ajouterHistorique(String etat) {&lt;br /&gt;
  struct tm timeinfo;&lt;br /&gt;
  if(!getLocalTime(&amp;amp;timeinfo)) {&lt;br /&gt;
    Serial.println(&amp;quot;Impossible d'obtenir l'heure&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  char buffer[9];&lt;br /&gt;
  strftime(buffer, 9, &amp;quot;%H:%M:%S&amp;quot;, &amp;amp;timeinfo);&lt;br /&gt;
  String timeStr = String(buffer);&lt;br /&gt;
&lt;br /&gt;
  historique = timeStr + &amp;quot; - &amp;quot; + etat + &amp;quot;&amp;lt;br&amp;gt;&amp;quot; + historique;&lt;br /&gt;
  if (historique.length() &amp;gt; 1000) historique = historique.substring(0,1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Envoie l'état actuel du magasin au client&lt;br /&gt;
void envoyerEtat() {&lt;br /&gt;
  String etat = led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;;&lt;br /&gt;
  server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// === Setup principal ===&lt;br /&gt;
void setup() {&lt;br /&gt;
  // Initialisation des LEDs et du bouton&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
  pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  // WiFi AP&lt;br /&gt;
  WiFi.softAP(ssid, password);&lt;br /&gt;
  configTime(0, 0, &amp;quot;pool.ntp.org&amp;quot;, &amp;quot;time.nist.gov&amp;quot;); &lt;br /&gt;
  Serial.println(&amp;quot;AP créé, connectez-vous au WiFi Magasin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // Routes serveur&lt;br /&gt;
  server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/toggle&amp;quot;, [](){&lt;br /&gt;
    if (server.hasArg(&amp;quot;code&amp;quot;) &amp;amp;&amp;amp; server.arg(&amp;quot;code&amp;quot;) == accessCode) {&lt;br /&gt;
      led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
      digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
      digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
      ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
      server.send(200, &amp;quot;text/plain&amp;quot;, &amp;quot;OK&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      server.send(401, &amp;quot;text/plain&amp;quot;, &amp;quot;Code invalide&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  // Page principale HTML&lt;br /&gt;
  server.on(&amp;quot;/&amp;quot;, []() {&lt;br /&gt;
    String page = &amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;html lang='fr'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta name='viewport' content='width=device-width, initial-scale=1.0'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;title&amp;gt;État du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;body {font-family: Arial; background:#f2f2f2; display:flex; justify-content:center; align-items:center; height:100vh; margin:0;}&amp;quot;&lt;br /&gt;
      &amp;quot;.card {background:white; padding:30px; border-radius:12px; box-shadow:0 4px 10px rgba(0,0,0,0.1); text-align:center; width:90%; max-width:400px;}&amp;quot;&lt;br /&gt;
      &amp;quot;h1 {margin-bottom:20px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.status {font-size:24px; font-weight:bold; padding:15px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.open {background:#d4f7d4; color:#1b7f1b;}&amp;quot;&lt;br /&gt;
      &amp;quot;.closed {background:#ffd6d6; color:#a00000;}&amp;quot;&lt;br /&gt;
      &amp;quot;input {padding:8px; width:60%; margin-bottom:10px;}&amp;quot;&lt;br /&gt;
      &amp;quot;button {padding:10px; font-size:16px; cursor:pointer;}&amp;quot;&lt;br /&gt;
      &amp;quot;.history {text-align:left; margin-top:20px; max-height:150px; overflow-y:auto; font-size:14px; background:#eee; padding:10px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='card'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;h1&amp;gt;État du magasin&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div id='etat' class='status'&amp;gt;Chargement...&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;input type='text' id='code' placeholder='Code pour changer'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;button onclick='toggleEtat()'&amp;gt;Changer état&amp;lt;/button&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='history' id='history'&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/etat').then(r=&amp;gt;r.text()).then(data=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot;   const el=document.getElementById('etat');&amp;quot;&lt;br /&gt;
      &amp;quot;   el.innerText=data;&amp;quot;&lt;br /&gt;
      &amp;quot;   el.className='status '+(data.includes('Ouvert')?'open':'closed');&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/history').then(r=&amp;gt;r.text()).then(d=&amp;gt;{document.getElementById('history').innerHTML=d;});&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;function toggleEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; const code=document.getElementById('code').value;&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/toggle?code='+code).then(r=&amp;gt;r.text()).then(d=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot;   if(d=='OK'){updateEtat(); document.getElementById('code').value='';}&amp;quot;&lt;br /&gt;
      &amp;quot;   else{alert('Code invalide');}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;setInterval(updateEtat, 500); updateEtat();&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/html&amp;gt;&amp;quot;;&lt;br /&gt;
    server.send(200,&amp;quot;text/html&amp;quot;,page);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/history&amp;quot;, [](){&lt;br /&gt;
    server.send(200, &amp;quot;text/html&amp;quot;, historique);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// === Loop principal ===&lt;br /&gt;
void loop() {&lt;br /&gt;
  server.handleClient();&lt;br /&gt;
&lt;br /&gt;
  // Gestion du bouton physique&lt;br /&gt;
  bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
  if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH &amp;amp;&amp;amp; millis() - lastPress &amp;gt; 200) {&lt;br /&gt;
    led_actuel = !led_actuel;&lt;br /&gt;
    lastPress = millis();&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
    digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
    ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  dernier_etat_bouton = etat_bouton;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// === Client WiFi pour lire l'état depuis le serveur ===&lt;br /&gt;
#define SERVEUR &amp;quot;http://192.168.4.1/etat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void setupClient() {&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connexion au WiFi&amp;quot;);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot; connecté !&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loopClient() {&lt;br /&gt;
  if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
    HTTPClient http;&lt;br /&gt;
    http.begin(SERVEUR);&lt;br /&gt;
    int httpCode = http.GET();&lt;br /&gt;
&lt;br /&gt;
    if (httpCode == 200) {&lt;br /&gt;
      String etat = http.getString();&lt;br /&gt;
      etat.trim(); &lt;br /&gt;
&lt;br /&gt;
      if (etat.indexOf(&amp;quot;Ouvert&amp;quot;) &amp;gt;= 0) { &lt;br /&gt;
        digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
        digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
      } else if (etat.indexOf(&amp;quot;Fermé&amp;quot;) &amp;gt;= 0) {&lt;br /&gt;
        digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
        digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
      }&lt;br /&gt;
    } else {&lt;br /&gt;
      Serial.print(&amp;quot;Erreur HTTP : &amp;quot;);&lt;br /&gt;
      Serial.println(httpCode);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    http.end();&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.println(&amp;quot;WiFi déconnecté !&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(250); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les broches (pins) sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer du logiciel Arduino, ainsi que des pilotes requis (CH340).&lt;br /&gt;
Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant :&lt;br /&gt;
https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur Arduino.&lt;br /&gt;
Le code maître est à utiliser sur la carte qui sera reliée au bouton.&lt;br /&gt;
Le code esclave peut être utilisé avec autant de LED que l’on souhaite.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36611</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36611"/>
				<updated>2026-01-20T14:11:31Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* Code Esclave */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const String accessCode = &amp;quot;1234&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
bool led_actuel = false;&lt;br /&gt;
bool dernier_etat_bouton = HIGH;&lt;br /&gt;
unsigned long lastPress = 0;&lt;br /&gt;
&lt;br /&gt;
String historique = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
void ajouterHistorique(String etat) {&lt;br /&gt;
  struct tm timeinfo;&lt;br /&gt;
  if(!getLocalTime(&amp;amp;timeinfo)){&lt;br /&gt;
    Serial.println(&amp;quot;Impossible d'obtenir l'heure&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  char buffer[9];&lt;br /&gt;
  strftime(buffer, 9, &amp;quot;%H:%M:%S&amp;quot;, &amp;amp;timeinfo);&lt;br /&gt;
  String timeStr = String(buffer);&lt;br /&gt;
  historique = timeStr + &amp;quot; - &amp;quot; + etat + &amp;quot;&amp;lt;br&amp;gt;&amp;quot; + historique;&lt;br /&gt;
  if (historique.length() &amp;gt; 1000) historique = historique.substring(0,1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void envoyerEtat() {&lt;br /&gt;
  String etat = led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;;&lt;br /&gt;
  server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
  pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  WiFi.softAP(ssid, password);&lt;br /&gt;
  configTime(0, 0, &amp;quot;pool.ntp.org&amp;quot;, &amp;quot;time.nist.gov&amp;quot;); &lt;br /&gt;
  Serial.println(&amp;quot;AP créé, connectez-vous au WiFi Magasin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/toggle&amp;quot;, [](){&lt;br /&gt;
    if (server.hasArg(&amp;quot;code&amp;quot;) &amp;amp;&amp;amp; server.arg(&amp;quot;code&amp;quot;) == accessCode) {&lt;br /&gt;
      led_actuel = !led_actuel;&lt;br /&gt;
      digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
      digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
      ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
      server.send(200, &amp;quot;text/plain&amp;quot;, &amp;quot;OK&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      server.send(401, &amp;quot;text/plain&amp;quot;, &amp;quot;Code invalide&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/&amp;quot;, []() {&lt;br /&gt;
    String page = &amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;html lang='fr'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta name='viewport' content='width=device-width, initial-scale=1.0'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;title&amp;gt;État du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;body {font-family: Arial; background:#f2f2f2; display:flex; justify-content:center; align-items:center; height:100vh; margin:0;}&amp;quot;&lt;br /&gt;
      &amp;quot;.card {background:white; padding:30px; border-radius:12px; box-shadow:0 4px 10px rgba(0,0,0,0.1); text-align:center; width:90%; max-width:400px;}&amp;quot;&lt;br /&gt;
      &amp;quot;h1 {margin-bottom:20px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.status {font-size:24px; font-weight:bold; padding:15px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.open {background:#d4f7d4; color:#1b7f1b;}&amp;quot;&lt;br /&gt;
      &amp;quot;.closed {background:#ffd6d6; color:#a00000;}&amp;quot;&lt;br /&gt;
      &amp;quot;input {padding:8px; width:60%; margin-bottom:10px;}&amp;quot;&lt;br /&gt;
      &amp;quot;button {padding:10px; font-size:16px; cursor:pointer;}&amp;quot;&lt;br /&gt;
      &amp;quot;.history {text-align:left; margin-top:20px; max-height:150px; overflow-y:auto; font-size:14px; background:#eee; padding:10px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='card'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;h1&amp;gt;État du magasin&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div id='etat' class='status'&amp;gt;Chargement...&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;input type='text' id='code' placeholder='Code pour changer'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;button onclick='toggleEtat()'&amp;gt;Changer état&amp;lt;/button&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='history' id='history'&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/etat').then(r=&amp;gt;r.text()).then(data=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot; const el=document.getElementById('etat');&amp;quot;&lt;br /&gt;
      &amp;quot; el.innerText=data;&amp;quot;&lt;br /&gt;
      &amp;quot; if(data.includes('Ouvert')){el.className='status open';}&amp;quot;&lt;br /&gt;
      &amp;quot; else {el.className='status closed';}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/history').then(r=&amp;gt;r.text()).then(d=&amp;gt;{document.getElementById('history').innerHTML=d;});&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;function toggleEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; const code=document.getElementById('code').value;&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/toggle?code='+code).then(r=&amp;gt;r.text()).then(d=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot;   if(d=='OK'){updateEtat(); document.getElementById('code').value='';}&amp;quot;&lt;br /&gt;
      &amp;quot;   else{alert('Code invalide');}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;setInterval(updateEtat, 500); updateEtat();&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/html&amp;gt;&amp;quot;;&lt;br /&gt;
    server.send(200,&amp;quot;text/html&amp;quot;,page);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/history&amp;quot;, [](){&lt;br /&gt;
    server.send(200, &amp;quot;text/html&amp;quot;, historique);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  server.handleClient();&lt;br /&gt;
&lt;br /&gt;
  bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
  if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH &amp;amp;&amp;amp; millis() - lastPress &amp;gt; 200) {&lt;br /&gt;
    led_actuel = !led_actuel;&lt;br /&gt;
    lastPress = millis();&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
    digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
    ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  dernier_etat_bouton = etat_bouton;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
const char* serveur = &amp;quot;http://192.168.4.1/etat&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Connexion au WiFi&amp;quot;);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot; connecté !&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
    HTTPClient http;&lt;br /&gt;
    http.begin(serveur);&lt;br /&gt;
    int httpCode = http.GET();&lt;br /&gt;
&lt;br /&gt;
    if (httpCode == 200) {&lt;br /&gt;
      String etat = http.getString();&lt;br /&gt;
      etat.trim(); &lt;br /&gt;
&lt;br /&gt;
      if (etat.indexOf(&amp;quot;Ouvert&amp;quot;) &amp;gt;= 0) { &lt;br /&gt;
        digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
        digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
      } else if (etat.indexOf(&amp;quot;Fermé&amp;quot;) &amp;gt;= 0) {&lt;br /&gt;
        digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
        digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
      }&lt;br /&gt;
    } else {&lt;br /&gt;
      Serial.print(&amp;quot;Erreur HTTP : &amp;quot;);&lt;br /&gt;
      Serial.println(httpCode);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    http.end();&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.println(&amp;quot;WiFi déconnecté !&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(250); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les broches (pins) sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer du logiciel Arduino, ainsi que des pilotes requis (CH340).&lt;br /&gt;
Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant :&lt;br /&gt;
https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur Arduino.&lt;br /&gt;
Le code maître est à utiliser sur la carte qui sera reliée au bouton.&lt;br /&gt;
Le code esclave peut être utilisé avec autant de LED que l’on souhaite.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36606</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36606"/>
				<updated>2026-01-20T14:06:41Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* Code Maître */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const String accessCode = &amp;quot;1234&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
bool led_actuel = false;&lt;br /&gt;
bool dernier_etat_bouton = HIGH;&lt;br /&gt;
unsigned long lastPress = 0;&lt;br /&gt;
&lt;br /&gt;
String historique = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
void ajouterHistorique(String etat) {&lt;br /&gt;
  struct tm timeinfo;&lt;br /&gt;
  if(!getLocalTime(&amp;amp;timeinfo)){&lt;br /&gt;
    Serial.println(&amp;quot;Impossible d'obtenir l'heure&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  char buffer[9];&lt;br /&gt;
  strftime(buffer, 9, &amp;quot;%H:%M:%S&amp;quot;, &amp;amp;timeinfo);&lt;br /&gt;
  String timeStr = String(buffer);&lt;br /&gt;
  historique = timeStr + &amp;quot; - &amp;quot; + etat + &amp;quot;&amp;lt;br&amp;gt;&amp;quot; + historique;&lt;br /&gt;
  if (historique.length() &amp;gt; 1000) historique = historique.substring(0,1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void envoyerEtat() {&lt;br /&gt;
  String etat = led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;;&lt;br /&gt;
  server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
  pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  WiFi.softAP(ssid, password);&lt;br /&gt;
  configTime(0, 0, &amp;quot;pool.ntp.org&amp;quot;, &amp;quot;time.nist.gov&amp;quot;); &lt;br /&gt;
  Serial.println(&amp;quot;AP créé, connectez-vous au WiFi Magasin&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/toggle&amp;quot;, [](){&lt;br /&gt;
    if (server.hasArg(&amp;quot;code&amp;quot;) &amp;amp;&amp;amp; server.arg(&amp;quot;code&amp;quot;) == accessCode) {&lt;br /&gt;
      led_actuel = !led_actuel;&lt;br /&gt;
      digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
      digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
      ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
      server.send(200, &amp;quot;text/plain&amp;quot;, &amp;quot;OK&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      server.send(401, &amp;quot;text/plain&amp;quot;, &amp;quot;Code invalide&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/&amp;quot;, []() {&lt;br /&gt;
    String page = &amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;html lang='fr'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta name='viewport' content='width=device-width, initial-scale=1.0'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;title&amp;gt;État du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;body {font-family: Arial; background:#f2f2f2; display:flex; justify-content:center; align-items:center; height:100vh; margin:0;}&amp;quot;&lt;br /&gt;
      &amp;quot;.card {background:white; padding:30px; border-radius:12px; box-shadow:0 4px 10px rgba(0,0,0,0.1); text-align:center; width:90%; max-width:400px;}&amp;quot;&lt;br /&gt;
      &amp;quot;h1 {margin-bottom:20px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.status {font-size:24px; font-weight:bold; padding:15px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;.open {background:#d4f7d4; color:#1b7f1b;}&amp;quot;&lt;br /&gt;
      &amp;quot;.closed {background:#ffd6d6; color:#a00000;}&amp;quot;&lt;br /&gt;
      &amp;quot;input {padding:8px; width:60%; margin-bottom:10px;}&amp;quot;&lt;br /&gt;
      &amp;quot;button {padding:10px; font-size:16px; cursor:pointer;}&amp;quot;&lt;br /&gt;
      &amp;quot;.history {text-align:left; margin-top:20px; max-height:150px; overflow-y:auto; font-size:14px; background:#eee; padding:10px; border-radius:8px;}&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/style&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='card'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;h1&amp;gt;État du magasin&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div id='etat' class='status'&amp;gt;Chargement...&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;input type='text' id='code' placeholder='Code pour changer'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;button onclick='toggleEtat()'&amp;gt;Changer état&amp;lt;/button&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;div class='history' id='history'&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/etat').then(r=&amp;gt;r.text()).then(data=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot; const el=document.getElementById('etat');&amp;quot;&lt;br /&gt;
      &amp;quot; el.innerText=data;&amp;quot;&lt;br /&gt;
      &amp;quot; if(data.includes('Ouvert')){el.className='status open';}&amp;quot;&lt;br /&gt;
      &amp;quot; else {el.className='status closed';}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/history').then(r=&amp;gt;r.text()).then(d=&amp;gt;{document.getElementById('history').innerHTML=d;});&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;function toggleEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; const code=document.getElementById('code').value;&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/toggle?code='+code).then(r=&amp;gt;r.text()).then(d=&amp;gt;{&amp;quot;&lt;br /&gt;
      &amp;quot;   if(d=='OK'){updateEtat(); document.getElementById('code').value='';}&amp;quot;&lt;br /&gt;
      &amp;quot;   else{alert('Code invalide');}&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;setInterval(updateEtat, 500); updateEtat();&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/html&amp;gt;&amp;quot;;&lt;br /&gt;
    server.send(200,&amp;quot;text/html&amp;quot;,page);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/history&amp;quot;, [](){&lt;br /&gt;
    server.send(200, &amp;quot;text/html&amp;quot;, historique);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  server.handleClient();&lt;br /&gt;
&lt;br /&gt;
  bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
  if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH &amp;amp;&amp;amp; millis() - lastPress &amp;gt; 200) {&lt;br /&gt;
    led_actuel = !led_actuel;&lt;br /&gt;
    lastPress = millis();&lt;br /&gt;
&lt;br /&gt;
    digitalWrite(LED_VERTE, led_actuel ? LOW : HIGH);&lt;br /&gt;
    digitalWrite(LED_ROUGE, led_actuel ? HIGH : LOW);&lt;br /&gt;
&lt;br /&gt;
    ajouterHistorique(led_actuel ? &amp;quot;Fermé 🔴&amp;quot; : &amp;quot;Ouvert 🟢&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  dernier_etat_bouton = etat_bouton;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
===Code Esclave===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
//Librairies&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
///Serveur maître&lt;br /&gt;
const char* serveur = &amp;quot;[http://192.168.4.1/etat](http://192.168.4.1/etat)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
//Configuration des broches&lt;br /&gt;
pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
//Connexion WiFi&lt;br /&gt;
WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
delay(500);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
HTTPClient http;&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
http.begin(serveur);&lt;br /&gt;
int httpCode = http.GET();&lt;br /&gt;
&lt;br /&gt;
if (httpCode == 200) {&lt;br /&gt;
  String etat = http.getString();&lt;br /&gt;
&lt;br /&gt;
  if (etat == &amp;quot;Le Magasin est ouvert&amp;quot;) {&lt;br /&gt;
    digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
    digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
  }&lt;br /&gt;
  else if (etat == &amp;quot;Le Magasin n'est pas ouvert&amp;quot;) {&lt;br /&gt;
    digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
    digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http.end();&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
delay(300); &lt;br /&gt;
} &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les broches (pins) sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer du logiciel Arduino, ainsi que des pilotes requis (CH340).&lt;br /&gt;
Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant :&lt;br /&gt;
https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur Arduino.&lt;br /&gt;
Le code maître est à utiliser sur la carte qui sera reliée au bouton.&lt;br /&gt;
Le code esclave peut être utilisé avec autant de LED que l’on souhaite.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36572</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36572"/>
				<updated>2026-01-20T13:36:50Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* étape 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Code Maître===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
//Librairies&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
&lt;br /&gt;
///Bouton&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Serveur Web&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
//Variables systèmes&lt;br /&gt;
bool led_actuel = false;&lt;br /&gt;
bool dernier_etat_bouton = HIGH;&lt;br /&gt;
&lt;br /&gt;
//Fonction d'envoi de l'état du magasin&lt;br /&gt;
void envoyerEtat() {&lt;br /&gt;
String etat = led_actuel ?&lt;br /&gt;
&amp;quot;Le Magasin n'est pas ouvert&amp;quot; :&lt;br /&gt;
&amp;quot;Le Magasin est ouvert&amp;quot;;&lt;br /&gt;
server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
//Configuration des broches&lt;br /&gt;
pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
//Etat initial&lt;br /&gt;
digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
//Point d'accès WiFi&lt;br /&gt;
WiFi.softAP(ssid, password);&lt;br /&gt;
&lt;br /&gt;
//Routes serveur&lt;br /&gt;
server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
server.on(&amp;quot;/&amp;quot;, []() {&lt;br /&gt;
server.send(200, &amp;quot;text/html&amp;quot;,&lt;br /&gt;
&amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;title&amp;gt;Etat du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;h1&amp;gt;Etat du magasin :&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;p id='etat'&amp;gt;Chargement...&amp;lt;/p&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
&amp;quot; fetch('/etat')&amp;quot;&lt;br /&gt;
&amp;quot; .then(r =&amp;gt; r.text())&amp;quot;&lt;br /&gt;
&amp;quot; .then(data =&amp;gt; {&amp;quot;&lt;br /&gt;
&amp;quot;   document.getElementById('etat').innerText = data;&amp;quot;&lt;br /&gt;
&amp;quot; });&amp;quot;&lt;br /&gt;
&amp;quot;}&amp;quot;&lt;br /&gt;
&amp;quot;setInterval(updateEtat, 300);&amp;quot;&lt;br /&gt;
&amp;quot;updateEtat();&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
server.onNotFound([]() {&lt;br /&gt;
server.sendHeader(&amp;quot;Location&amp;quot;, &amp;quot;[http://192.168.4.1/](http://192.168.4.1/)&amp;quot;, true);&lt;br /&gt;
server.send(302, &amp;quot;text/plain&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
server.handleClient();&lt;br /&gt;
&lt;br /&gt;
bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH) {&lt;br /&gt;
led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
if (led_actuel) {&lt;br /&gt;
  digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
  digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
} else {&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
delay(200); &lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
dernier_etat_bouton = etat_bouton;&lt;br /&gt;
} &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Code Esclave===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
//Librairies&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
///Serveur maître&lt;br /&gt;
const char* serveur = &amp;quot;[http://192.168.4.1/etat](http://192.168.4.1/etat)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
//Configuration des broches&lt;br /&gt;
pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
//Connexion WiFi&lt;br /&gt;
WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
delay(500);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
HTTPClient http;&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
http.begin(serveur);&lt;br /&gt;
int httpCode = http.GET();&lt;br /&gt;
&lt;br /&gt;
if (httpCode == 200) {&lt;br /&gt;
  String etat = http.getString();&lt;br /&gt;
&lt;br /&gt;
  if (etat == &amp;quot;Le Magasin est ouvert&amp;quot;) {&lt;br /&gt;
    digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
    digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
  }&lt;br /&gt;
  else if (etat == &amp;quot;Le Magasin n'est pas ouvert&amp;quot;) {&lt;br /&gt;
    digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
    digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http.end();&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
delay(300); &lt;br /&gt;
} &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les broches (pins) sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer du logiciel Arduino, ainsi que des pilotes requis (CH340).&lt;br /&gt;
Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant :&lt;br /&gt;
https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur Arduino.&lt;br /&gt;
Le code maître est à utiliser sur la carte qui sera reliée au bouton.&lt;br /&gt;
Le code esclave peut être utilisé avec autant de LED que l’on souhaite.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36570</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36570"/>
				<updated>2026-01-20T13:35:56Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* étape 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Code Maître===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
//Librairies&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
&lt;br /&gt;
///Bouton&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Serveur Web&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
//Variables systèmes&lt;br /&gt;
bool led_actuel = false;&lt;br /&gt;
bool dernier_etat_bouton = HIGH;&lt;br /&gt;
&lt;br /&gt;
//Fonction d'envoi de l'état du magasin&lt;br /&gt;
void envoyerEtat() {&lt;br /&gt;
String etat = led_actuel ?&lt;br /&gt;
&amp;quot;Le Magasin n'est pas ouvert&amp;quot; :&lt;br /&gt;
&amp;quot;Le Magasin est ouvert&amp;quot;;&lt;br /&gt;
server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
//Configuration des broches&lt;br /&gt;
pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
//Etat initial&lt;br /&gt;
digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
//Point d'accès WiFi&lt;br /&gt;
WiFi.softAP(ssid, password);&lt;br /&gt;
&lt;br /&gt;
//Routes serveur&lt;br /&gt;
server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
server.on(&amp;quot;/&amp;quot;, []() {&lt;br /&gt;
server.send(200, &amp;quot;text/html&amp;quot;,&lt;br /&gt;
&amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;title&amp;gt;Etat du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;h1&amp;gt;Etat du magasin :&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;p id='etat'&amp;gt;Chargement...&amp;lt;/p&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
&amp;quot; fetch('/etat')&amp;quot;&lt;br /&gt;
&amp;quot; .then(r =&amp;gt; r.text())&amp;quot;&lt;br /&gt;
&amp;quot; .then(data =&amp;gt; {&amp;quot;&lt;br /&gt;
&amp;quot;   document.getElementById('etat').innerText = data;&amp;quot;&lt;br /&gt;
&amp;quot; });&amp;quot;&lt;br /&gt;
&amp;quot;}&amp;quot;&lt;br /&gt;
&amp;quot;setInterval(updateEtat, 300);&amp;quot;&lt;br /&gt;
&amp;quot;updateEtat();&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
server.onNotFound([]() {&lt;br /&gt;
server.sendHeader(&amp;quot;Location&amp;quot;, &amp;quot;[http://192.168.4.1/](http://192.168.4.1/)&amp;quot;, true);&lt;br /&gt;
server.send(302, &amp;quot;text/plain&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
server.handleClient();&lt;br /&gt;
&lt;br /&gt;
bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH) {&lt;br /&gt;
led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
if (led_actuel) {&lt;br /&gt;
  digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
  digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
} else {&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
delay(200); &lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
dernier_etat_bouton = etat_bouton;&lt;br /&gt;
} &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Code Esclave===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
//Librairies&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
///Serveur maître&lt;br /&gt;
const char* serveur = &amp;quot;[http://192.168.4.1/etat](http://192.168.4.1/etat)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
//Configuration des broches&lt;br /&gt;
pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
//Connexion WiFi&lt;br /&gt;
WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
delay(500);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
HTTPClient http;&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
http.begin(serveur);&lt;br /&gt;
int httpCode = http.GET();&lt;br /&gt;
&lt;br /&gt;
if (httpCode == 200) {&lt;br /&gt;
  String etat = http.getString();&lt;br /&gt;
&lt;br /&gt;
  if (etat == &amp;quot;Le Magasin est ouvert&amp;quot;) {&lt;br /&gt;
    digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
    digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
  }&lt;br /&gt;
  else if (etat == &amp;quot;Le Magasin n'est pas ouvert&amp;quot;) {&lt;br /&gt;
    digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
    digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http.end();&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
delay(300); &lt;br /&gt;
} &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur Arduino.&lt;br /&gt;
Le code maître est à utiliser sur la carte qui sera reliée au bouton.&lt;br /&gt;
Le code esclave peut être utilisé avec autant de LED que l’on souhaite.&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36567</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36567"/>
				<updated>2026-01-20T13:34:16Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* Code Maître */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Code Maître===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
//Librairies&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
&lt;br /&gt;
///Bouton&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Serveur Web&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
//Variables systèmes&lt;br /&gt;
bool led_actuel = false;&lt;br /&gt;
bool dernier_etat_bouton = HIGH;&lt;br /&gt;
&lt;br /&gt;
//Fonction d'envoi de l'état du magasin&lt;br /&gt;
void envoyerEtat() {&lt;br /&gt;
String etat = led_actuel ?&lt;br /&gt;
&amp;quot;Le Magasin n'est pas ouvert&amp;quot; :&lt;br /&gt;
&amp;quot;Le Magasin est ouvert&amp;quot;;&lt;br /&gt;
server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
//Configuration des broches&lt;br /&gt;
pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
//Etat initial&lt;br /&gt;
digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
//Point d'accès WiFi&lt;br /&gt;
WiFi.softAP(ssid, password);&lt;br /&gt;
&lt;br /&gt;
//Routes serveur&lt;br /&gt;
server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
server.on(&amp;quot;/&amp;quot;, []() {&lt;br /&gt;
server.send(200, &amp;quot;text/html&amp;quot;,&lt;br /&gt;
&amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;title&amp;gt;Etat du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;h1&amp;gt;Etat du magasin :&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;p id='etat'&amp;gt;Chargement...&amp;lt;/p&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
&amp;quot; fetch('/etat')&amp;quot;&lt;br /&gt;
&amp;quot; .then(r =&amp;gt; r.text())&amp;quot;&lt;br /&gt;
&amp;quot; .then(data =&amp;gt; {&amp;quot;&lt;br /&gt;
&amp;quot;   document.getElementById('etat').innerText = data;&amp;quot;&lt;br /&gt;
&amp;quot; });&amp;quot;&lt;br /&gt;
&amp;quot;}&amp;quot;&lt;br /&gt;
&amp;quot;setInterval(updateEtat, 300);&amp;quot;&lt;br /&gt;
&amp;quot;updateEtat();&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
server.onNotFound([]() {&lt;br /&gt;
server.sendHeader(&amp;quot;Location&amp;quot;, &amp;quot;[http://192.168.4.1/](http://192.168.4.1/)&amp;quot;, true);&lt;br /&gt;
server.send(302, &amp;quot;text/plain&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
server.handleClient();&lt;br /&gt;
&lt;br /&gt;
bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH) {&lt;br /&gt;
led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
if (led_actuel) {&lt;br /&gt;
  digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
  digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
} else {&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
delay(200); &lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
dernier_etat_bouton = etat_bouton;&lt;br /&gt;
} &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Code Esclave===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
//Librairies&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
///Serveur maître&lt;br /&gt;
const char* serveur = &amp;quot;[http://192.168.4.1/etat](http://192.168.4.1/etat)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
//Configuration des broches&lt;br /&gt;
pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
//Connexion WiFi&lt;br /&gt;
WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
delay(500);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
HTTPClient http;&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
http.begin(serveur);&lt;br /&gt;
int httpCode = http.GET();&lt;br /&gt;
&lt;br /&gt;
if (httpCode == 200) {&lt;br /&gt;
  String etat = http.getString();&lt;br /&gt;
&lt;br /&gt;
  if (etat == &amp;quot;Le Magasin est ouvert&amp;quot;) {&lt;br /&gt;
    digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
    digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
  }&lt;br /&gt;
  else if (etat == &amp;quot;Le Magasin n'est pas ouvert&amp;quot;) {&lt;br /&gt;
    digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
    digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http.end();&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
delay(300); &lt;br /&gt;
} &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36562</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36562"/>
				<updated>2026-01-20T13:32:38Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* Code Maître */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Code Maître===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
//Librairies&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
&lt;br /&gt;
///Bouton&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Serveur Web&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
//Variables systèmes&lt;br /&gt;
bool led_actuel = false;&lt;br /&gt;
bool dernier_etat_bouton = HIGH;&lt;br /&gt;
&lt;br /&gt;
//Fonction d'envoi de l'état du magasin&lt;br /&gt;
void envoyerEtat() {&lt;br /&gt;
String etat = led_actuel ?&lt;br /&gt;
&amp;quot;Le Magasin n'est pas ouvert&amp;quot; :&lt;br /&gt;
&amp;quot;Le Magasin est ouvert&amp;quot;;&lt;br /&gt;
server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
//Configuration des broches&lt;br /&gt;
pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
//Etat initial&lt;br /&gt;
digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
//Point d'accès WiFi&lt;br /&gt;
WiFi.softAP(ssid, password);&lt;br /&gt;
&lt;br /&gt;
//Routes serveur&lt;br /&gt;
server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
server.on(&amp;quot;/&amp;quot;, []() {&lt;br /&gt;
server.send(200, &amp;quot;text/html&amp;quot;,&lt;br /&gt;
&amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;title&amp;gt;Etat du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;h1&amp;gt;Etat du magasin :&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;p id='etat'&amp;gt;Chargement...&amp;lt;/p&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
&amp;quot; fetch('/etat')&amp;quot;&lt;br /&gt;
&amp;quot; .then(r =&amp;gt; r.text())&amp;quot;&lt;br /&gt;
&amp;quot; .then(data =&amp;gt; {&amp;quot;&lt;br /&gt;
&amp;quot;   document.getElementById('etat').innerText = data;&amp;quot;&lt;br /&gt;
&amp;quot; });&amp;quot;&lt;br /&gt;
&amp;quot;}&amp;quot;&lt;br /&gt;
&amp;quot;setInterval(updateEtat, 300);&amp;quot;&lt;br /&gt;
&amp;quot;updateEtat();&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
server.onNotFound([]() {&lt;br /&gt;
server.sendHeader(&amp;quot;Location&amp;quot;, &amp;quot;[http://192.168.4.1/](http://192.168.4.1/)&amp;quot;, true);&lt;br /&gt;
server.send(302, &amp;quot;text/plain&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
server.handleClient();&lt;br /&gt;
&lt;br /&gt;
bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH) {&lt;br /&gt;
led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
if (led_actuel) {&lt;br /&gt;
  digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
  digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
} else {&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
delay(200); // anti-rebond simple&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
dernier_etat_bouton = etat_bouton;&lt;br /&gt;
} &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;HTTPClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
const char* serveur = &amp;quot;http://192.168.4.1/etat&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
WiFi.begin(ssid, password);&lt;br /&gt;
&lt;br /&gt;
while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
delay(500);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
if (WiFi.status() == WL_CONNECTED) {&lt;br /&gt;
HTTPClient http;&lt;br /&gt;
http.begin(serveur);&lt;br /&gt;
int httpCode = http.GET();&lt;br /&gt;
&lt;br /&gt;
if (httpCode == 200) {&lt;br /&gt;
String etat = http.getString();&lt;br /&gt;
&lt;br /&gt;
if (etat == &amp;quot;Le Magasin est ouvert&amp;quot;) {&lt;br /&gt;
digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
} else if (etat == &amp;quot;Le Magasin n'est pas ouvert&amp;quot;) {&lt;br /&gt;
digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
http.end();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
delay(300); // interrogation régulière&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36560</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36560"/>
				<updated>2026-01-20T13:32:20Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* Code Maître */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Code Maître===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
//Librairies&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
&lt;br /&gt;
///Bouton&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Serveur Web&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
//Variables systèmes&lt;br /&gt;
bool led_actuel = false;&lt;br /&gt;
bool dernier_etat_bouton = HIGH;&lt;br /&gt;
&lt;br /&gt;
//Fonction d'envoi de l'état du magasin&lt;br /&gt;
void envoyerEtat() {&lt;br /&gt;
String etat = led_actuel ?&lt;br /&gt;
&amp;quot;Le Magasin n'est pas ouvert&amp;quot; :&lt;br /&gt;
&amp;quot;Le Magasin est ouvert&amp;quot;;&lt;br /&gt;
server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
//Configuration des broches&lt;br /&gt;
pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
//Etat initial&lt;br /&gt;
digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
//Point d'accès WiFi&lt;br /&gt;
WiFi.softAP(ssid, password);&lt;br /&gt;
&lt;br /&gt;
//Routes serveur&lt;br /&gt;
server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
server.on(&amp;quot;/&amp;quot;, []() {&lt;br /&gt;
server.send(200, &amp;quot;text/html&amp;quot;,&lt;br /&gt;
&amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;title&amp;gt;Etat du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;h1&amp;gt;Etat du magasin :&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;p id='etat'&amp;gt;Chargement...&amp;lt;/p&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
&amp;quot; fetch('/etat')&amp;quot;&lt;br /&gt;
&amp;quot; .then(r =&amp;gt; r.text())&amp;quot;&lt;br /&gt;
&amp;quot; .then(data =&amp;gt; {&amp;quot;&lt;br /&gt;
&amp;quot;   document.getElementById('etat').innerText = data;&amp;quot;&lt;br /&gt;
&amp;quot; });&amp;quot;&lt;br /&gt;
&amp;quot;}&amp;quot;&lt;br /&gt;
&amp;quot;setInterval(updateEtat, 300);&amp;quot;&lt;br /&gt;
&amp;quot;updateEtat();&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
server.onNotFound([]() {&lt;br /&gt;
server.sendHeader(&amp;quot;Location&amp;quot;, &amp;quot;[http://192.168.4.1/](http://192.168.4.1/)&amp;quot;, true);&lt;br /&gt;
server.send(302, &amp;quot;text/plain&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
server.handleClient();&lt;br /&gt;
&lt;br /&gt;
bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH) {&lt;br /&gt;
led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
if (led_actuel) {&lt;br /&gt;
  digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
  digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
} else {&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
delay(200); // anti-rebond simple&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
dernier_etat_bouton = etat_bouton;&lt;br /&gt;
} &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36557</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36557"/>
				<updated>2026-01-20T13:31:55Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* Code Maître */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Code Maître===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
//Librairies&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
&lt;br /&gt;
///Bouton&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Serveur Web&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
//Variables systèmes&lt;br /&gt;
bool led_actuel = false;&lt;br /&gt;
bool dernier_etat_bouton = HIGH;&lt;br /&gt;
&lt;br /&gt;
//Fonction d'envoi de l'état du magasin&lt;br /&gt;
void envoyerEtat() {&lt;br /&gt;
String etat = led_actuel ?&lt;br /&gt;
&amp;quot;Le Magasin n'est pas ouvert&amp;quot; :&lt;br /&gt;
&amp;quot;Le Magasin est ouvert&amp;quot;;&lt;br /&gt;
server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
//Configuration des broches&lt;br /&gt;
pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
//Etat initial&lt;br /&gt;
digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
//Point d'accès WiFi&lt;br /&gt;
WiFi.softAP(ssid, password);&lt;br /&gt;
&lt;br /&gt;
//Routes serveur&lt;br /&gt;
server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
server.on(&amp;quot;/&amp;quot;, []() {&lt;br /&gt;
server.send(200, &amp;quot;text/html&amp;quot;,&lt;br /&gt;
&amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;title&amp;gt;Etat du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;h1&amp;gt;Etat du magasin :&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;p id='etat'&amp;gt;Chargement...&amp;lt;/p&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
&amp;quot; fetch('/etat')&amp;quot;&lt;br /&gt;
&amp;quot; .then(r =&amp;gt; r.text())&amp;quot;&lt;br /&gt;
&amp;quot; .then(data =&amp;gt; {&amp;quot;&lt;br /&gt;
&amp;quot;   document.getElementById('etat').innerText = data;&amp;quot;&lt;br /&gt;
&amp;quot; });&amp;quot;&lt;br /&gt;
&amp;quot;}&amp;quot;&lt;br /&gt;
&amp;quot;setInterval(updateEtat, 300);&amp;quot;&lt;br /&gt;
&amp;quot;updateEtat();&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
server.onNotFound([]() {&lt;br /&gt;
server.sendHeader(&amp;quot;Location&amp;quot;, &amp;quot;[http://192.168.4.1/](http://192.168.4.1/)&amp;quot;, true);&lt;br /&gt;
server.send(302, &amp;quot;text/plain&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
server.handleClient();&lt;br /&gt;
&lt;br /&gt;
bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH) {&lt;br /&gt;
led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
if (led_actuel) {&lt;br /&gt;
  digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
  digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
} else {&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
delay(200); // anti-rebond simple&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
===Code Esclave===&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
dernier_etat_bouton = etat_bouton;&lt;br /&gt;
} &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36556</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36556"/>
				<updated>2026-01-20T13:31:01Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* Code Maître */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Code Maître===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
//Librairies&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Configuration&lt;br /&gt;
&lt;br /&gt;
///LED&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
&lt;br /&gt;
///Bouton&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
///WiFi&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Serveur Web&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
//Variables systèmes&lt;br /&gt;
bool led_actuel = false;&lt;br /&gt;
bool dernier_etat_bouton = HIGH;&lt;br /&gt;
&lt;br /&gt;
//Fonction d'envoi de l'état du magasin&lt;br /&gt;
void envoyerEtat() {&lt;br /&gt;
String etat = led_actuel ?&lt;br /&gt;
&amp;quot;Le Magasin n'est pas ouvert&amp;quot; :&lt;br /&gt;
&amp;quot;Le Magasin est ouvert&amp;quot;;&lt;br /&gt;
server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
//Configuration des broches&lt;br /&gt;
pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
//Etat initial&lt;br /&gt;
digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
//Point d'accès WiFi&lt;br /&gt;
WiFi.softAP(ssid, password);&lt;br /&gt;
&lt;br /&gt;
//Routes serveur&lt;br /&gt;
server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
server.on(&amp;quot;/&amp;quot;, []() {&lt;br /&gt;
server.send(200, &amp;quot;text/html&amp;quot;,&lt;br /&gt;
&amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;html&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;title&amp;gt;Etat du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;h1&amp;gt;Etat du magasin :&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;p id='etat'&amp;gt;Chargement...&amp;lt;/p&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
&amp;quot; fetch('/etat')&amp;quot;&lt;br /&gt;
&amp;quot; .then(r =&amp;gt; r.text())&amp;quot;&lt;br /&gt;
&amp;quot; .then(data =&amp;gt; {&amp;quot;&lt;br /&gt;
&amp;quot;   document.getElementById('etat').innerText = data;&amp;quot;&lt;br /&gt;
&amp;quot; });&amp;quot;&lt;br /&gt;
&amp;quot;}&amp;quot;&lt;br /&gt;
&amp;quot;setInterval(updateEtat, 300);&amp;quot;&lt;br /&gt;
&amp;quot;updateEtat();&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
&amp;quot;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
server.onNotFound([]() {&lt;br /&gt;
server.sendHeader(&amp;quot;Location&amp;quot;, &amp;quot;[http://192.168.4.1/](http://192.168.4.1/)&amp;quot;, true);&lt;br /&gt;
server.send(302, &amp;quot;text/plain&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
server.handleClient();&lt;br /&gt;
&lt;br /&gt;
bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH) {&lt;br /&gt;
led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
if (led_actuel) {&lt;br /&gt;
  digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
  digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
} else {&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
delay(200); // anti-rebond simple&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
dernier_etat_bouton = etat_bouton;&lt;br /&gt;
} &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36552</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36552"/>
				<updated>2026-01-20T13:27:27Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* étapes de fabrication */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Code Maître===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
bool led_actuel = false;&lt;br /&gt;
bool dernier_etat_bouton = HIGH;&lt;br /&gt;
&lt;br /&gt;
void envoyerEtat() {&lt;br /&gt;
  String etat = led_actuel ? &lt;br /&gt;
    &amp;quot;Le Magasin n'est pas ouvert&amp;quot; : &lt;br /&gt;
    &amp;quot;Le Magasin est ouvert&amp;quot;;&lt;br /&gt;
  server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
  pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
  WiFi.softAP(ssid, password);&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/&amp;quot;, []() {&lt;br /&gt;
    server.send(200, &amp;quot;text/html&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;html&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;title&amp;gt;Etat du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;h1&amp;gt;Etat du magasin :&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;p id='etat'&amp;gt;Chargement...&amp;lt;/p&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/etat')&amp;quot;&lt;br /&gt;
      &amp;quot; .then(r =&amp;gt; r.text())&amp;quot;&lt;br /&gt;
      &amp;quot; .then(data =&amp;gt; {&amp;quot;&lt;br /&gt;
      &amp;quot;   document.getElementById('etat').innerText = data;&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;setInterval(updateEtat, 300);&amp;quot;&lt;br /&gt;
      &amp;quot;updateEtat();&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.onNotFound([]() {&lt;br /&gt;
    server.sendHeader(&amp;quot;Location&amp;quot;, &amp;quot;http://192.168.4.1/&amp;quot;, true);&lt;br /&gt;
    server.send(302, &amp;quot;text/plain&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  server.handleClient();&lt;br /&gt;
&lt;br /&gt;
  bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
  if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH) {&lt;br /&gt;
    led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
    if (led_actuel) {&lt;br /&gt;
      digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
      digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
      digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    delay(200); &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  dernier_etat_bouton = etat_bouton;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36547</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36547"/>
				<updated>2026-01-20T13:25:07Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* Mettre du code Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Code Maître===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;WebServer.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define LED_VERTE 2&lt;br /&gt;
#define LED_ROUGE 4&lt;br /&gt;
#define BOUTON 5&lt;br /&gt;
&lt;br /&gt;
const char* ssid = &amp;quot;Magasin&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
WebServer server(80);&lt;br /&gt;
&lt;br /&gt;
bool led_actuel = false;&lt;br /&gt;
bool dernier_etat_bouton = HIGH;&lt;br /&gt;
&lt;br /&gt;
void envoyerEtat() {&lt;br /&gt;
  String etat = led_actuel ? &lt;br /&gt;
    &amp;quot;Le Magasin n'est pas ouvert&amp;quot; : &lt;br /&gt;
    &amp;quot;Le Magasin est ouvert&amp;quot;;&lt;br /&gt;
  server.send(200, &amp;quot;text/plain&amp;quot;, etat);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(LED_VERTE, OUTPUT);&lt;br /&gt;
  pinMode(LED_ROUGE, OUTPUT);&lt;br /&gt;
  pinMode(BOUTON, INPUT_PULLUP);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
  digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
&lt;br /&gt;
  WiFi.softAP(ssid, password);&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/etat&amp;quot;, envoyerEtat);&lt;br /&gt;
&lt;br /&gt;
  server.on(&amp;quot;/&amp;quot;, []() {&lt;br /&gt;
    server.send(200, &amp;quot;text/html&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;!DOCTYPE html&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;html&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;meta charset='utf-8'&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;title&amp;gt;Etat du magasin&amp;lt;/title&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/head&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;h1&amp;gt;Etat du magasin :&amp;lt;/h1&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;p id='etat'&amp;gt;Chargement...&amp;lt;/p&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;function updateEtat(){&amp;quot;&lt;br /&gt;
      &amp;quot; fetch('/etat')&amp;quot;&lt;br /&gt;
      &amp;quot; .then(r =&amp;gt; r.text())&amp;quot;&lt;br /&gt;
      &amp;quot; .then(data =&amp;gt; {&amp;quot;&lt;br /&gt;
      &amp;quot;   document.getElementById('etat').innerText = data;&amp;quot;&lt;br /&gt;
      &amp;quot; });&amp;quot;&lt;br /&gt;
      &amp;quot;}&amp;quot;&lt;br /&gt;
      &amp;quot;setInterval(updateEtat, 300);&amp;quot;&lt;br /&gt;
      &amp;quot;updateEtat();&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/body&amp;gt;&amp;quot;&lt;br /&gt;
      &amp;quot;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.onNotFound([]() {&lt;br /&gt;
    server.sendHeader(&amp;quot;Location&amp;quot;, &amp;quot;http://192.168.4.1/&amp;quot;, true);&lt;br /&gt;
    server.send(302, &amp;quot;text/plain&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  server.handleClient();&lt;br /&gt;
&lt;br /&gt;
  bool etat_bouton = digitalRead(BOUTON);&lt;br /&gt;
&lt;br /&gt;
  if (etat_bouton == LOW &amp;amp;&amp;amp; dernier_etat_bouton == HIGH) {&lt;br /&gt;
    led_actuel = !led_actuel;&lt;br /&gt;
&lt;br /&gt;
    if (led_actuel) {&lt;br /&gt;
      digitalWrite(LED_VERTE, LOW);&lt;br /&gt;
      digitalWrite(LED_ROUGE, HIGH);&lt;br /&gt;
    } else {&lt;br /&gt;
      digitalWrite(LED_VERTE, HIGH);&lt;br /&gt;
      digitalWrite(LED_ROUGE, LOW);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    delay(200); &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  dernier_etat_bouton = etat_bouton;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36543</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36543"/>
				<updated>2026-01-20T13:23:31Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* outil et matériel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
-Carte esp32&lt;br /&gt;
-LED verte/rouge&lt;br /&gt;
-Résistance 220 Ohm&lt;br /&gt;
-Bouton poussoir&lt;br /&gt;
-Plaque LabTec&lt;br /&gt;
-Câble male/femelle et femelle/femelle&lt;br /&gt;
-Câble d'alimentation&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36542</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36542"/>
				<updated>2026-01-20T13:20:32Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* étape 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 9874.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_9874.jpeg&amp;diff=36540</id>
		<title>Fichier:IMG 9874.jpeg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_9874.jpeg&amp;diff=36540"/>
				<updated>2026-01-20T13:19:38Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36538</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36538"/>
				<updated>2026-01-20T13:18:19Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* étape 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 4534.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36537</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36537"/>
				<updated>2026-01-20T13:18:08Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* étape 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_4534.jpeg&amp;diff=36535</id>
		<title>Fichier:IMG 4534.jpeg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_4534.jpeg&amp;diff=36535"/>
				<updated>2026-01-20T13:17:03Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : Nathou a téléversé une nouvelle version de Fichier:IMG 4534.jpeg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36534</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36534"/>
				<updated>2026-01-20T13:14:49Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* étape 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
[[Fichier:IMG 4534.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_4534.jpeg&amp;diff=36533</id>
		<title>Fichier:IMG 4534.jpeg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_4534.jpeg&amp;diff=36533"/>
				<updated>2026-01-20T13:13:21Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36530</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36530"/>
				<updated>2026-01-20T13:10:51Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* Troubleshouting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
La principale difficulté est de transférer le code sur la carte et de connecter les cartes entres elles. Pour cela l'utilisation d'internet et/ou IA est utile.&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36527</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36527"/>
				<updated>2026-01-20T13:06:37Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* étape ... */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape 3===&lt;br /&gt;
Réaliser le câblage ci dessous pour construire le montage&lt;br /&gt;
Il est possible de fabriquer des boites en cartons ou autres afin de cacher le dispositif&lt;br /&gt;
&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36520</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36520"/>
				<updated>2026-01-20T11:28:26Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* étape 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
Copier le code fourni sur arduino.&lt;br /&gt;
Le code maitre est a utilisé sur la carte qui sera relié au bouton,le code esclave peut etre utiliser avec autant de LED que l'on souhaite&lt;br /&gt;
&lt;br /&gt;
===étape ...===&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36519</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36519"/>
				<updated>2026-01-20T11:26:49Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* étape 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
Tout d’abord, vérifiez l’état du matériel : assurez-vous que les pins sont en bon état, qu’aucun câble n’est sectionné et qu’aucune LED n’est endommagée.&lt;br /&gt;
&lt;br /&gt;
Concernant l’Arduino, il est nécessaire de connecter l’ESP32S à votre ordinateur et de disposer de l’application Arduino ainsi que des pilotes requis,CH340. Pour plus de détails sur l’installation et la configuration, vous pouvez vous référer au lien suivant : https://www.wikidebrouillard.org/wiki/Utiliser_l%27ESP32_avec_le_logiciel_Arduino&lt;br /&gt;
&lt;br /&gt;
===étape 2===&lt;br /&gt;
===étape ...===&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36208</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36208"/>
				<updated>2026-01-19T15:05:05Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:T’es là ou pas.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
===étape 2===&lt;br /&gt;
===étape ...===&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:T%E2%80%99es_l%C3%A0_ou_pas.pdf&amp;diff=36203</id>
		<title>Fichier:T’es là ou pas.pdf</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:T%E2%80%99es_l%C3%A0_ou_pas.pdf&amp;diff=36203"/>
				<updated>2026-01-19T15:03:00Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36055</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36055"/>
				<updated>2026-01-19T11:12:26Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* description (résumé) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
===étape 2===&lt;br /&gt;
===étape ...===&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36053</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36053"/>
				<updated>2026-01-19T11:10:42Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* description (résumé) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|6000px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
===étape 2===&lt;br /&gt;
===étape ...===&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Utilisateur:Nathou&amp;diff=36041</id>
		<title>Utilisateur:Nathou</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Utilisateur:Nathou&amp;diff=36041"/>
				<updated>2026-01-19T10:59:16Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le maroc a voulu volé la can&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ENIB 2026 : T'es la ou pas?]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ENIB 2026 : Sation météo]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Utilisateur:Nathou&amp;diff=36040</id>
		<title>Utilisateur:Nathou</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Utilisateur:Nathou&amp;diff=36040"/>
				<updated>2026-01-19T10:58:52Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le maroc a voulu volé la can&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ENIB 2026 : T'es la ou pas?]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ENIB 2026 : Sation météo]]&lt;br /&gt;
&lt;br /&gt;
[[ZJKFKZHZFGH]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Utilisateur:Nathou&amp;diff=36039</id>
		<title>Utilisateur:Nathou</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Utilisateur:Nathou&amp;diff=36039"/>
				<updated>2026-01-19T10:58:33Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le maroc a voulu volé la can&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ENIB 2026 : T'es la ou pas?]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ENIB 2026 : Sation météo]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Utilisateur:Nathou&amp;diff=36037</id>
		<title>Utilisateur:Nathou</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Utilisateur:Nathou&amp;diff=36037"/>
				<updated>2026-01-19T10:57:52Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le maroc a voulu volé la can&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ENIB 2026 : T'es la ou pas?]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36021</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36021"/>
				<updated>2026-01-19T10:51:22Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* description (résumé) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|600px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
===étape 2===&lt;br /&gt;
===étape ...===&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36016</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36016"/>
				<updated>2026-01-19T10:50:38Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* description (résumé) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
photo de l'équipe de gagnant&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
===étape 2===&lt;br /&gt;
===étape ...===&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36012</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36012"/>
				<updated>2026-01-19T10:49:13Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : /* description (résumé) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
éventuelle photo de l'équipe &lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMG 4306.jpeg|200px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
===étape 2===&lt;br /&gt;
===étape ...===&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_4306.jpeg&amp;diff=36010</id>
		<title>Fichier:IMG 4306.jpeg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:IMG_4306.jpeg&amp;diff=36010"/>
				<updated>2026-01-19T10:47:38Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36009</id>
		<title>ENIB 2026 : T'es la ou pas?</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2026_:_T%27es_la_ou_pas%3F&amp;diff=36009"/>
				<updated>2026-01-19T10:46:45Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : Page créée avec « Titre de la fiche expérience : ==description (résumé)== éventuelle photo de l'équipe   200px  ==Introduction==  éventu... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Titre de la fiche expérience :&lt;br /&gt;
==description (résumé)==&lt;br /&gt;
éventuelle photo de l'équipe &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Totem-maisonsDesMinerauxCrozon.JPG|200px]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
éventuelle vidéo&lt;br /&gt;
==outil et matériel==&lt;br /&gt;
&lt;br /&gt;
==fichiers à joindre==&lt;br /&gt;
code, ficher d'impression 3D, de découpe laser ou vinyle, ...&lt;br /&gt;
===Mettre du code Arduino===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt; &lt;br /&gt;
#define PIN 9&lt;br /&gt;
#include &amp;lt;Arduino_GFX_Library.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==étapes de fabrication==&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&lt;br /&gt;
&lt;br /&gt;
===étape 1===&lt;br /&gt;
===étape 2===&lt;br /&gt;
===étape ...===&lt;br /&gt;
===Troubleshouting===&lt;br /&gt;
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?&lt;br /&gt;
&lt;br /&gt;
==Sources et documentation complémentaire==&lt;br /&gt;
&lt;br /&gt;
* Rédаctiоn et illustratiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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é. &lt;br /&gt;
&lt;br /&gt;
* Prоgrammаtiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Transpаrence et dосumеntatiоn : &amp;lt;br&amp;gt;&lt;br /&gt;
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е.&lt;br /&gt;
&lt;br /&gt;
* Traçabilité : &amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Elément de présentation==&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
==ne pas modifier sous cette ligne==&lt;br /&gt;
[[Catégorie:Enib2026]]&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Utilisateur:Nathou&amp;diff=36005</id>
		<title>Utilisateur:Nathou</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Utilisateur:Nathou&amp;diff=36005"/>
				<updated>2026-01-19T10:44:37Z</updated>
		
		<summary type="html">&lt;p&gt;Nathou : Page créée avec « Le maroc a voulu volé la can »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le maroc a voulu volé la can&lt;/div&gt;</summary>
		<author><name>Nathou</name></author>	</entry>

	</feed>