Séquence pédagogique IoT ESP32 : module de 8 semaines en classe
Séquence pédagogique IoT ESP32 : tableau sur 8 semaines, réseau du lycée et partage de connexion, code serveur web Wi-Fi, sécurité, matériel, grille.
Pour construire une séquence pédagogique IoT ESP32 au lycée ou en voie professionnelle, découpe le module en quatre couches : d'abord la carte perçoit son environnement (GPIO et capteurs), ensuite elle rejoint un réseau (Wi-Fi), puis elle partage des données (serveur web, client HTTP, messages), enfin elle apprend à fonctionner sur batterie et à se protéger (deep sleep et sécurité). Avec deux heures de cours par semaine, ces quatre couches tiennent sans peine en huit semaines : deux semaines de matériel, deux de réseau et de serveur, deux d'échange de données, une d'énergie et de sécurité, et la dernière pour le projet final. À la fin, les élèves rendent un objet qui lit un capteur, affiche la mesure sur une page ouverte depuis un téléphone ou envoie un message au téléphone quand un événement se produit, dont l'autonomie est calculée et dont le mot de passe n'est pas visible en clair dans le code.
Cet article prolonge le plan du premier cours ESP32 ; l'installation, les pilotes, le bouton BOOT et la première LED y sont traités et ne sont pas repris ici. Tu trouveras ici un tableau semaine par semaine avec objectif, vrai projet BlueGrays, notion et production attendue, une trame hebdomadaire de 80 minutes, pourquoi le réseau de l'établissement laisse rarement entrer l'ESP32 et comment s'en sortir, cinq questions pour le service informatique, un code compilable de serveur web Wi-Fi, une partie sécurité et éthique, une liste de matériel pour 8 groupes et les critères du projet final. Les exemples partent de cette hypothèse : tu as 24 élèves en 8 groupes de trois et deux heures par semaine (2 × 40 minutes de travail effectif). Si ta classe est différente, adapte les durées en proportion.

La logique du module : percevoir, connecter, partager, économiser
Un cours sur l'Internet des objets (IoT) n'enseigne pas Internet lui-même, mais la manière dont un objet parle aux autres appareils d'un réseau. Pour cela, il faut d'abord quelque chose à mesurer : une carte qui se connecte au Wi-Fi sans rien mesurer n'a rien à dire sur le réseau. C'est pourquoi les deux premières semaines se passent volontairement sans Wi-Fi : les élèves travaillent avec un bouton, une LDR et un capteur de température et d'humidité, et fixent le choix des broches et l'intervalle de mesure. En semaine trois, la carte rejoint le réseau, en semaine quatre elle devient serveur, en semaine cinq elle se transforme en client qui demande des données à un autre serveur, en semaine six elle signale un événement par un message. La semaine sept est consacrée à deux sujets que la plupart des ateliers IoT courts laissent de côté : l'autonomie et la sécurité. Chaque couche s'appuie sur la précédente, donc ne change pas l'ordre ; si la semaine Wi-Fi se passe mal, règle le problème de connexion avant d'avancer.
La séquence IoT ESP32 sur 8 semaines
Chaque projet du tableau est prêt dans BlueGrays avec son schéma, sa liste de composants et son code. Les projets des quatre premières semaines, connexion Wi-Fi et serveur web compris, sont entièrement gratuits ; les projets client HTTP, Telegram, WebSocket et deep sleep utilisés à partir de la semaine 5 sont Premium. Aucun élève n'a donc besoin de Premium le premier mois ; ce qu'il faut faire quand il devient nécessaire est expliqué à la fin de l'article.
| Semaine | Objectif | Projet BlueGrays | Notion | Production |
|---|---|---|---|---|
| 1 | Lire une entrée et piloter une sortie | ESP32 Contrôle de LED avec bouton poussoir (Push), ESP32 Contrôle de LED avec bouton (Toggle) (Gratuit) | GPIO, INPUT_PULLUP, entrée et sortie numériques, variable d'état | Une LED allumée et éteinte par bouton et la carte des broches du groupe |
| 2 | Mesurer l'environnement | Mesure de l'intensité lumineuse avec le module LDR ESP32, ESP32 DHT22 Température et humidité (avec écran LCD) (Gratuit) | Lecture analogique (12 bits, 0–4095), ADC1 et ADC2, I2C, bibliothèques, intervalle de mesure | Tableau de 10 mesures de lumière dans le moniteur série, température et humidité sur l'écran LCD |
| 3 | Connecter la carte au réseau | Connexion Wi-Fi STA ESP32 (avec écran LCD) (Gratuit) | Mode station (STA), SSID, adresse IP, RSSI (dBm), WiFi.status(), reconnexion | IP, adresse MAC et force du signal notées dans le carnet réseau |
| 4 | Faire de la carte un serveur | Serveur Web asynchrone ESP32 (avec affichage de l'adresse IP sur l'écran LCD) (Gratuit) et le code de cet article | Serveur web, requête et réponse HTTP, port 80, chemins (/, /on, /off) | Une page qui allume une LED depuis le téléphone et affiche la valeur de lumière |
| 5 | Faire de la carte un client | ESP32 HTTPClient + API météo (avec écran LCD), ESP32 : heure réelle depuis Internet via NTP (Premium) | Client HTTP, requête GET, codes d'état (200, 404), JSON, heure par NTP | Météo ou heure récupérées sur Internet ; lecture de la mesure du groupe voisin |
| 6 | Signaler un événement par message | Système d'Alarme de Mouvement ESP32 (PIR + Buzzer + LED + Telegram), Compteur ESP32 WebSocket (2 boutons + écran LCD + affichage Web en temps réel) (Premium) | Notifications, jeton du bot, HTTPS, WebSocket, idée de publication-abonnement (MQTT) | Un message sur le téléphone quand un mouvement est détecté, ou une page qui se met à jour seule |
| 7 | Fonctionner sur batterie et protéger l'objet | Mode veille profonde de l'ESP32 — Économie de batterie (OLED + compteur RAM RTC) (Premium) | Deep sleep, sources de réveil, mémoire RTC, courant moyen, mots de passe dans un fichier à part | Calcul d'autonomie et projet dont le mot de passe est déplacé dans secrets.h |
| 8 | Projet final | Choix du groupe, par exemple ESP32 DHT22 Température et humidité (avec écran LCD) avec la page web de la semaine 4 | Combiner les notions, documenter, présenter | Objet fonctionnel, présentation de 3 minutes, carnet réseau |
Trois remarques sur le tableau. D'abord, il n'existe pas de projet MQTT prêt dans l'application ; en semaine 6, présente MQTT comme une notion au tableau (les objets ne se parlent pas directement, ils publient des messages sous un sujet, ou topic, sur un serveur intermédiaire, le broker, et ceux qui sont intéressés s'abonnent à ce sujet) et fais la partie pratique avec la notification Telegram et la page WebSocket. Les détails sur Telegram se trouvent dans l'article bot Telegram avec l'ESP32. Ensuite, le projet Async Web Server de la semaine 4 demande les bibliothèques AsyncTCP et ESPAsyncWebServer ; installe-les sur chaque ordinateur avant le cours, sinon la compilation s'arrête dès la première ligne. Enfin, l'exercice avec le groupe voisin en semaine 5 ne demande pas Internet : l'ESP32 du groupe A lit l'adresse /deger du serveur que le groupe B a monté en semaine 4. Si l'établissement n'a pas d'accès Internet, cette semaine fonctionne quand même.
La trame hebdomadaire : 80 minutes
Suivre la même trame chaque semaine permet aux élèves de mettre leur énergie dans la nouvelle notion plutôt que dans une nouvelle organisation. Si tu peux placer les deux heures à la suite, le déroulé ci-dessous fonctionne d'un bloc ; sinon, en deux moitiés de 40 minutes, et dans ce cas ne démonte pas le montage à la fin de la première heure, range-le monté dans la boîte. Le carnet réseau est une fiche d'une page que tient chaque groupe : date, adresse IP de la carte, adresse MAC, force du signal, erreur rencontrée et comment elle a été résolue. À partir de la semaine 3, la moitié du débogage se fait en consultant ce carnet.
| Minutes | Étape | Que fait-on ? |
|---|---|---|
| 0–10 | Mise en route | On reprend la question de sortie de la semaine précédente, les groupes ouvrent leur carnet réseau, on distribue les boîtes. |
| 10–20 | Notion | La seule notion de la semaine est dessinée au tableau : en semaine 4, un téléphone, un ESP32 et les flèches de requête et de réponse entre eux. |
| 20–30 | Lecture du code | Le projet de la semaine est projeté, on lit ensemble le résumé et l'explication étape par étape de l'onglet Comprendre le code, les élèves prédisent le résultat. |
| 30–55 | Montage et téléversement | Les groupes montent le circuit, téléversent le code et voient la première sortie dans le moniteur série. Un groupe bloqué plus de 3 minutes reçoit un kit de rechange. |
| 55–70 | Modifier une chose | Chaque groupe modifie une seule chose : intervalle de rafraîchissement, texte de la page, seuil ou durée de sommeil. La modification est notée dans le carnet réseau. |
| 70–80 | Clôture | La question de sortie reçoit une réponse écrite, le montage est démonté ou rangé monté dans la boîte, les pièces sont comptées. |
La réalité du réseau scolaire : pourquoi l'ESP32 ne se connecte pas au Wi-Fi du lycée
La plupart des modules IoT bloquent à cause du réseau, pas du code. L'ESP32 classique ne fonctionne que sur la bande 2,4 GHz ; il ne voit jamais un point d'accès qui n'émet qu'en 5 GHz. Les réseaux des établissements n'utilisent souvent pas un mot de passe partagé comme à la maison, mais une authentification d'entreprise avec identifiant et mot de passe (WPA2-Enterprise) ; l'ESP32 peut la gérer avec du code supplémentaire, mais il faudrait alors écrire dans le code le mot de passe personnel d'un élève ou d'un enseignant, ce qui est inacceptable en classe. Les réseaux invités ouvrent après connexion une page d'acceptation dans le navigateur (portail captif) ; l'ESP32 n'a ni écran ni navigateur, ne peut pas passer cette page et semble connecté sans jamais atteindre Internet. Certains établissements n'acceptent que les appareils dont l'adresse MAC a été enregistrée à l'avance. Le dernier piège est le moins connu : les réseaux invités isolent généralement les appareils les uns des autres (isolation des clients). L'ESP32 se connecte alors et affiche même son adresse IP, mais le téléphone sur le même réseau ne peut pas l'atteindre et le serveur web de la semaine 4 ne s'ouvre jamais.
| Type de réseau | L'ESP32 se connecte ? | Pour la semaine serveur web | Remarque |
|---|---|---|---|
| Réseau 2,4 GHz avec un seul mot de passe (WPA2-PSK) | Oui | Adapté | Comme à la maison ; rarement ouvert aux élèves dans un établissement |
| Réseau qui n'émet qu'en 5 GHz | Non, il ne le voit pas | Pas adapté | S'il manque dans la liste des réseaux, vérifier d'abord la bande |
| Réseau d'entreprise avec identifiant et mot de passe (WPA2-Enterprise) | Techniquement possible avec du code en plus | Déconseillé | Un mot de passe personnel se retrouve dans le code |
| Réseau invité avec page d'acceptation (portail captif) | Se connecte mais n'accède pas à Internet | Généralement pas adapté | L'isolation des clients y est souvent active aussi |
| Partage de connexion d'un téléphone | Oui, si le 2,4 GHz est actif | Adapté | Nombre limité d'appareils en même temps |
| Routeur 2,4 GHz dédié, non relié au réseau de l'établissement | Oui | Le plus adapté | S'il faut Internet, voir le raccordement avec le service informatique |
La solution : partage de connexion du téléphone ou routeur dédié
La solution la plus rapide est le partage de connexion de ton téléphone. Sur iPhone, l'option Maximiser la compatibilité dans les réglages du Partage de connexion fait passer l'émission en 2,4 GHz ; sur Android, tu choisis la bande 2,4 GHz dans les réglages du point d'accès. Cela donne aussi Internet, mais les téléphones n'acceptent qu'un nombre limité d'appareils à la fois, et avec 8 groupes plus les téléphones des élèves la limite est vite atteinte. Règle pratique : si les 8 ESP32 se connectent au téléphone de l'enseignant, les 8 téléphones qui ouvriront le navigateur ne doivent pas se connecter à un deuxième téléphone, car le téléphone et l'ESP32 doivent être sur le même réseau. En semaines 3 et 4, connecte donc 4 groupes à un partage de connexion et les 4 autres à un second, et chaque groupe teste avec un seul téléphone.
Si tu reconduis le module chaque année, la solution durable est un routeur 2,4 GHz dédié à ce cours. Il fonctionne sans être relié au réseau de l'établissement ; les semaines 3 et 4 et l'exercice avec le groupe voisin peuvent se faire sans Internet, car l'ESP32 et le téléphone sont sur le même réseau local. Internet n'est nécessaire qu'en semaines 5 et 6 (météo, NTP, Telegram) ; pour ces deux semaines, utilise un partage de connexion ou prévois avec le service informatique le raccordement du routeur au réseau de l'établissement. Change le nom et le mot de passe du réseau chaque année et le mot de passe d'administration du routeur dès le premier jour. S'il n'y a aucun réseau physique, le nom de réseau par défaut dans le code des projets Wi-Fi de l'application est Wokwi-GUEST ; le même code peut être testé avec ce réseau dans le simulateur Wokwi, dans un navigateur. Pose ces cinq questions au service informatique au moins deux semaines avant le début :
- Existe-t-il dans l'établissement un réseau qui émet en 2,4 GHz avec un seul mot de passe partagé (WPA2-PSK), et les appareils de la classe peuvent-ils l'utiliser ?
- Le réseau invité a-t-il un portail captif et une isolation des clients ? Deux appareils du même réseau peuvent-ils se joindre ?
- Faut-il enregistrer les appareils à l'avance par leur adresse MAC ? Si oui, pour quand vous faut-il la liste des 9 cartes ?
- Le règlement de l'établissement autorise-t-il, en salle de technologie, un routeur dédié non relié au réseau ou le partage de connexion du téléphone de l'enseignant ?
- Si les ESP32 doivent accéder à Internet en semaines 5 et 6, quelles connexions le pare-feu autorise-t-il (sites web, serveurs de temps, services de messagerie) ?
Le code : un ESP32 qui rejoint le Wi-Fi et affiche une mesure sur une page
Le code ci-dessous est le cœur de la semaine 4 et n'utilise que les bibliothèques WiFi.h et WebServer.h fournies avec le paquet de cartes ESP32 ; aucune bibliothèque supplémentaire n'est nécessaire. Le montage reste celui de la semaine 2 : VCC du module LDR sur 3V3, GND sur GND, AO sur GPIO34. GPIO34 est sur l'ADC1, il reste donc lisible quand le Wi-Fi est actif. Avant de téléverser, remplace les deux marqueurs AG_ADI (nom du réseau) et AG_SIFRESI (mot de passe) par les informations de ton réseau 2,4 GHz, ou déplace ces deux lignes dans un fichier à part nommé secrets.h, comme tu le feras en semaine 7 ; si le code trouve ce fichier, il l'utilise.
1// ESP32 Wi-Fi + web sunucu: LDR değerini tarayıcıda göster / ESP32 Wi-Fi + web server: show the LDR value in a browser
2#include <WiFi.h>
3#include <WebServer.h>
4
5// Ağ bilgileri: secrets.h varsa oradan gelir / Network credentials: taken from secrets.h if it exists
6#if __has_include("secrets.h")
7#include "secrets.h"
8#else
9const char* WIFI_SSID = "AG_ADI"; // 2,4 GHz ağın adı / Name of the 2.4 GHz network
10const char* WIFI_PASS = "AG_SIFRESI"; // Ağ şifresi / Network password
11#endif
12
13const int LDR_PIN = 34; // ADC1 pini, Wi-Fi açıkken de okunur / ADC1 pin, still readable while Wi-Fi is on
14
15WebServer server(80); // 80 numaralı portta web sunucu / Web server on port 80
16
17// Ana sayfa: ölçümü HTML olarak gönder / Home page: send the reading as HTML
18void handleRoot() {
19 int raw = analogRead(LDR_PIN); // 0-4095 ham değer / Raw value 0-4095
20 int percent = map(raw, 4095, 0, 0, 100); // Modülde ışık arttıkça değer düşer / On the module the value drops as light rises
21 String html = "<!DOCTYPE html><html><head><meta charset='utf-8'>";
22 html += "<meta name='viewport' content='width=device-width'>";
23 html += "<script>setTimeout(() => location.reload(), 5000);</script>"; // 5 saniyede bir yenile / Reload every 5 s
24 html += "<title>ESP32 Grup 1</title></head><body>";
25 html += "<h1>Isik: %" + String(percent) + "</h1>";
26 html += "<p>Ham deger: " + String(raw) + "</p>";
27 html += "<p>Sinyal: " + String(WiFi.RSSI()) + " dBm</p>";
28 html += "</body></html>";
29 server.send(200, "text/html", html); // 200 = istek başarılı / 200 = request OK
30}
31
32// Yalnız sayıyı döndüren adres / Address that returns only the number
33void handleValue() {
34 server.send(200, "text/plain", String(analogRead(LDR_PIN)));
35}
36
37void setup() {
38 Serial.begin(115200);
39 analogReadResolution(12); // 12 bit: 0-4095
40 WiFi.mode(WIFI_STA); // İstasyon modu: var olan ağa katıl / Station mode: join an existing network
41 WiFi.begin(WIFI_SSID, WIFI_PASS);
42 Serial.print("Baglaniliyor / Connecting");
43 unsigned long start = millis();
44 while (WiFi.status() != WL_CONNECTED && millis() - start < 20000) { // En fazla 20 sn bekle / Wait up to 20 s
45 delay(500);
46 Serial.print(".");
47 }
48 if (WiFi.status() != WL_CONNECTED) {
49 Serial.println("\nBaglanamadi, yeniden basliyor / No connection, restarting");
50 delay(2000);
51 ESP.restart();
52 }
53 Serial.print("\nIP: ");
54 Serial.println(WiFi.localIP()); // Telefonda bu adresi aç / Open this address on the phone
55 server.on("/", handleRoot); // Ana sayfa: IP/ / Home page: IP/
56 server.on("/deger", handleValue); // Yalnız sayı: IP/deger / Number only: IP/deger
57 server.begin();
58}
59
60void loop() {
61 server.handleClient(); // Gelen istekleri karşıla / Serve incoming requests
62}Après le téléversement, ouvre le moniteur série à 115200 bauds. Quand les points s'arrêtent, la ligne IP apparaît, par exemple 192.168.43.57. Sur un téléphone connecté au même réseau que l'ESP32, ouvre le navigateur et tape cette adresse : la page affiche le pourcentage de lumière, la valeur brute et la force du signal, et se recharge toutes les 5 secondes. Cache la LDR avec la main et le pourcentage baisse. Ajoute /deger à la fin de l'adresse et seule la valeur brute s'affiche ; en semaine 5, l'ESP32 du groupe voisin lira exactement cette adresse avec un client HTTP. Si la carte ne se connecte pas en 20 secondes, elle redémarre d'elle-même, pour que personne ne croie qu'elle est figée. Si la connexion ne s'établit jamais, l'article l'ESP32 ne se connecte pas au WiFi explique le sens des codes d'état.
Sécurité et éthique : la semaine à ne pas sauter
En cours d'IoT, la sécurité ne s'enseigne pas comme un diaporama à part, mais comme une modification que les élèves font dans leur propre code. Dans ce module, ils manipulent déjà de vrais secrets à trois endroits : le mot de passe Wi-Fi, le jeton du bot de la semaine 6 et les données qu'ils mesurent. Consacre la seconde moitié de la semaine 7 à ces cinq points et demande pour chacun une modification concrète dans le projet du groupe :
- Ne pas écrire les mots de passe dans le code : Déplace le mot de passe Wi-Fi et le jeton du bot dans un fichier à part nommé secrets.h et laisse ce fichier de côté quand tu partages du code ou fais une capture d'écran. Une ligne de code au vidéoprojecteur, c'est toute la salle qui connaît le mot de passe.
- Changer les mots de passe par défaut : L'interface d'administration des routeurs, le mode point d'accès (AP) de l'ESP32 et les mots de passe des codes d'exemple sont des valeurs connues de tous. Change le mot de passe du routeur de la classe dès le premier jour et demande aux élèves de ne pas laisser de mot de passe d'exemple dans leurs projets.
- Ta page est ouverte à tout le réseau : Le serveur web de cet article n'a pas d'écran de connexion ; toute personne du même réseau qui connaît l'adresse ouvre la page et, dans un projet avec une adresse /on, allume aussi la LED. C'est pourquoi en cours on ne pilote par le web que des sorties sans danger comme des LED, des buzzers et des écrans ; aucun relais relié à la tension du secteur (230 V) n'est utilisé dans ce module.
- Données personnelles : La température et la lumière ne sont pas des données personnelles, mais un détecteur de mouvement qui enregistre quand des personnes passent dans un couloir, une caméra ou un micro peuvent en devenir. Si une idée de projet final enregistre les déplacements, la voix ou l'image de personnes, fais d'abord répondre la classe : « Qui le voit, combien de temps est-ce conservé, l'accord a-t-il été demandé ? »
- Mises à jour et responsabilité : Un objet connecté à Internet ne s'installe pas une fois pour toutes. Montre aux élèves qu'à la fin du module le routeur de la classe est éteint, les jetons des bots révoqués et les cartes réinitialisées, et discutez de qui est responsable d'un objet pendant toute sa durée de vie.
Liste de matériel : par groupe et pour 8 groupes
La liste est prévue pour 24 élèves en 8 groupes de trois ; 9 kits dont un de rechange suffisent. La plupart des pièces sont achetées pour les premières semaines et réutilisées ensuite ; l'écran LCD, par exemple, sert dans quatre projets de la semaine 2 à la semaine 5. Aucune soudure n'est nécessaire ; les modules comme l'écran LCD I2C et l'OLED se branchent avec des câbles jumper mâle-femelle. Si tu utilises une LDR seule au lieu du module, ajoute une résistance de 10 kΩ par groupe et montez ensemble le pont diviseur en semaine 2.
| Matériel | Par groupe | Pour la classe (8 groupes + 1 de rechange) | Semaines |
|---|---|---|---|
| ESP32 DevKit (30 broches, ESP32-WROOM-32) | 1 | 9 | 1–8 |
| Câble USB de données (testé) | 1 | 11 | 1–8 |
| Plaque d'essai (830 points) | 2 | 18 | 1–8 |
| Bouton-poussoir | 2 | 18 | 1, 6 |
| LED 5 mm et résistance 220 Ω | 3 + 3 | 30 + 30 | 1, 3, 4 |
| Module LDR (avec sortie AO) | 1 | 9 | 2, 4, 5 |
| Capteur de température et d'humidité DHT22 | 1 | 9 | 2, 8 |
| Écran LCD 16x2 I2C | 1 | 9 | 2–5 |
| Écran OLED SSD1306 0,96 pouce (I2C) | 1 | 9 | 7 |
| Détecteur de mouvement PIR (HC-SR501) et buzzer | 1 + 1 | 9 + 9 | 6 |
| Câbles jumper (mâle-mâle et mâle-femelle) | 20 + 10 | environ 180 + 90 | 1–8 |
| Point d'accès 2,4 GHz (téléphone en partage de connexion ou routeur dédié) | - | 2 partages de connexion ou 1 routeur | 3–8 |
| Téléphone ou tablette avec BlueGrays | 1 | 8 | 1–8 |
Évaluation : critères du projet final
Garde une règle simple pour le projet final : un capteur, une connexion Wi-Fi et un moyen de partager (page web ou message). Les groupes écrivent leur idée en une phrase à la fin de la semaine 6, établissent leur liste de matériel en semaine 7, montent pendant la première heure de la semaine 8 et présentent trois minutes chacun pendant la seconde. Note avec les six critères ci-dessous ; chacun vaut 1 à 3 points, 18 au total. Pour la logique générale de la grille, la fiche de rendu et le portfolio, tu peux reprendre tel quel le modèle de l'article grille d'évaluation pour un cours Arduino.
| Critère | 1 : Débutant | 2 : En progrès | 3 : Maîtrisé |
|---|---|---|---|
| Capteur et montage | Montage fait mais aucune valeur ou une valeur absurde | La valeur est lue, le choix de broche n'est pas justifié | Valeur lue correctement, choix d'une broche ADC1 ou numérique expliqué |
| Connexion Wi-Fi | Ne se connecte qu'avec l'aide de l'enseignant | Se connecte, mais l'objet s'arrête si la connexion tombe | Se connecte, se reconnecte après une coupure, IP et force du signal notées |
| Partage des données | Données seulement dans le moniteur série | Page ou message présent, mais à rafraîchir ou déclencher à la main | La page se rafraîchit seule ou le message part automatiquement lors de l'événement |
| Conscience énergétique | Personne ne sait combien de courant consomme l'objet | Autonomie calculée sans tenir compte du sommeil | Calcul avec sommeil et intervalle de réveil, résultat interprété |
| Sécurité et éthique | Mot de passe en clair dans le code | Mot de passe dans secrets.h, données non discutées | Mot de passe dans un fichier à part, données collectées et qui les voit consignés par écrit |
| Documentation et présentation | Carnet réseau incomplet, présentation limitée à une démo | Carnet réseau présent, erreurs rencontrées non expliquées | Carnet réseau complet, une erreur et sa solution expliquées pendant la présentation |
Questions de sortie par semaine et liste de vérification avant le module
- Semaine 1 : Sur une broche en INPUT_PULLUP, que renvoie digitalRead() quand le bouton est appuyé, et pourquoi ?
- Semaine 2 : Pourquoi un potentiomètre sur GPIO4 ne peut-il pas être lu quand le Wi-Fi est actif ? Quelles broches choisir ?
- Semaine 3 : Si WiFi.status() indique que la carte n'est pas connectée, quelles sont les deux premières choses à vérifier ?
- Semaine 4 : Pourquoi l'adresse IP tapée dans le navigateur peut-elle être différente la semaine prochaine ?
- Semaine 5 : Cette semaine, ton ESP32 était-il serveur ou client ? Que signifient les codes d'état 200 et 404 ?
- Semaine 6 : Que se passe-t-il si le jeton du bot apparaît sur une capture d'écran ? Quel est le rôle du broker dans MQTT ?
- Semaine 7 : Avec la même batterie, un ESP32 toujours allumé tient des jours et en deep sleep des mois. Qu'est-ce qui fait la différence ?
- Semaine 8 : Quelles données ton objet collecte-t-il, qui peut les voir et combien de temps sont-elles conservées ?
- Deux semaines avant le module : Poser les cinq questions au service informatique et choisir entre partage de connexion et routeur selon les réponses.
- Deux semaines avant le module : Compter les cartes et écrire l'adresse MAC de chacune sur son étiquette (donner la liste au service informatique si un enregistrement est nécessaire).
- Une semaine avant le module : Installer sur chaque ordinateur le paquet de cartes ESP32 et les bibliothèques DHT, LiquidCrystal I2C, AsyncTCP et ESPAsyncWebServer ; tester avec une carte.
- Une semaine avant le module : Régler le partage de connexion sur 2,4 GHz, changer le nom et le mot de passe, connecter un ESP32 et ouvrir sa page depuis un téléphone.
- Une semaine avant le module : Photocopier une fiche de carnet réseau par groupe, tester les capteurs et les écrans LCD et les ranger dans les boîtes.
- Avant la semaine 5 : Préparer les codes pour les projets Premium et expliquer aux élèves quelles informations les concernant sont partagées.
La place de BlueGrays dans le module
- Projets ESP32 : Dans Découvrir › Projets, utilise Filtrer pour choisir la plateforme ESP32 ; il y a environ 50 projets ESP32, de la connexion Wi-Fi au deep sleep. Chacun comporte un schéma, une liste de composants avec les quantités et un code source à copier. Copier le lien permet d'ouvrir le code sur un ordinateur.
- Comprendre le code : Les minutes 20 à 30 de chaque semaine passent par cet onglet : le résumé Que fait ce code ?, l'explication Étape par étape, Si tu bloques et la tâche À toi de jouer. Il est gratuit sur les projets des quatre premières semaines et s'ouvre avec Premium sur les projets Premium.
- Outil Brochage : Dans l'outil Brochage, chaque broche de l'ESP32 sélectionnée affiche son type et ses avertissements ; pour une broche de l'ADC2, il indique qu'aucune lecture analogique n'est possible quand le Wi-Fi est actif, pour une broche de l'ADC1, qu'elle reste lisible avec le Wi-Fi. Idéal au vidéoprojecteur pour choisir les broches en semaine 2. Brochage est un outil Premium.
- Outil Autonomie batterie : Dans l'outil Autonomie batterie, tu choisis le profil ESP32 · deep sleep ; en saisissant la capacité de la batterie, le courant et la durée d'éveil, le courant en sommeil et le cycle, il calcule la durée de fonctionnement estimée et le courant moyen. La comparaison « toujours allumé ou en sommeil » de la semaine 7 se fait sur cet écran. L'outil est Premium ; sans Premium, on voit un exemple de calcul.
- Paquets Éducateur : À partir de la semaine 5, des projets Premium sont nécessaires, donc un compte par groupe doit être Premium. Un paquet annuel de 10 codes couvre 8 groupes et l'enseignant ; c'est un paiement unique, il ne se renouvelle pas, les élèves n'ajoutent aucune carte, tu vois qui a utilisé chaque code dans Mes Codes et tu peux transférer les codes au groupe de l'année suivante. Un code mensuel de 30 jours distribué au premier cours de la semaine 5 couvre tout juste les quatre dernières semaines ; avec des vacances au milieu, il ne suffit pas. Les détails sont dans l'article codes Premium pour toute la classe.
Au bout de huit semaines, les élèves n'ont pas seulement un objet qui fonctionne : ils ont pris l'habitude de se demander comment un appareil parle sur un réseau, pourquoi il ne se connecte pas, combien d'énergie il consomme et à qui appartiennent les données qu'il collecte, et c'est exactement ce que recherche la voie professionnelle. Si tu veux parcourir avant le cours les projets, schémas et explications Comprendre le code de chaque semaine, il suffit d'ouvrir le filtre ESP32 dans l'application BlueGrays.
Questions fréquentes
Combien de semaines doit durer un cours d'IoT avec l'ESP32 ?
Avec deux heures par semaine, 8 semaines suffisent pour les notions de base de l'IoT, du capteur et du Wi-Fi au serveur web, aux notifications et au deep sleep. Si tu n'as qu'une heure par semaine, étale le même plan sur 12 à 14 semaines ou regroupe les semaines 5 et 6. Garde au moins une séance complète pour le projet final.
Peut-on faire de l'IoT avec l'ESP32 sans le Wi-Fi du lycée ?
Oui. Tant que l'ESP32 et le téléphone sont sur le même réseau local, le serveur web et les requêtes entre appareils n'ont pas besoin d'Internet ; un partage de connexion en 2,4 GHz sur le téléphone de l'enseignant ou un routeur dédié non relié au réseau de l'établissement suffit. Internet n'est nécessaire que pour des services extérieurs comme la météo, l'heure et Telegram.
Pourquoi l'ESP32 ne se connecte-t-il pas au Wi-Fi de l'établissement ?
L'ESP32 classique ne fonctionne qu'en 2,4 GHz, donc un réseau qui n'émet qu'en 5 GHz n'apparaît même pas. Les réseaux scolaires utilisent souvent une authentification d'entreprise avec identifiant et mot de passe ou un portail captif dans le navigateur, et certains n'acceptent que des adresses MAC enregistrées. Dans ces cas, le plus pratique est un partage de connexion ou un routeur dédié.
Pourquoi le serveur web de l'ESP32 ne s'ouvre-t-il pas sur le téléphone ?
Le plus souvent, le téléphone n'est pas sur le même réseau que l'ESP32 : il est en données mobiles ou sur un autre Wi-Fi. La deuxième cause est l'isolation des clients sur les réseaux invités, où les appareils d'un même réseau ne peuvent pas se joindre. Réessaie l'adresse IP du moniteur série avec le téléphone et l'ESP32 sur le même partage de connexion.
Faut-il enseigner MQTT dans un cours d'IoT ?
Ce n'est pas indispensable, mais il faut le présenter comme notion, car la plupart des systèmes IoT réels utilisent ce modèle où les appareils échangent des messages par sujet via un broker. Dans un module de 8 semaines, il suffit d'installer d'abord la relation client-serveur avec HTTP puis de présenter MQTT en sixième semaine comme l'idée de publication-abonnement.
Les projets ESP32 de BlueGrays sont-ils gratuits ?
En partie. Les projets des quatre premières semaines de ce plan, comme le bouton, la LDR, le DHT22, la connexion Wi-Fi et l'Async Web Server, sont entièrement gratuits. Les projets client HTTP, Telegram, WebSocket et deep sleep sont Premium ; pour une classe, des codes groupés sont disponibles dans Paquets Éducateur, depuis le Profil.
Projets à réaliser après cet article
Voir tous les projets
Connexion Wi-Fi STA ESP32 (avec écran LCD)
Dans ce projet, nous connectons l'ESP32 au réseau Wi-Fi domestique en mode Station (STA) de manière sécurisée et tolérante aux pannes. Nous isolons SSID/mot de passe dans un fichier secrets.h pour empêcher leur fuite sur Git, mettons en place une reconnexion automatique, et affichons le niveau RSSI et l'adresse IP sur un écran LCD I2C. La LED intégrée sert d'indicateur d'état.

Serveur Web asynchrone ESP32 (avec affichage de l'adresse IP sur l'écran LCD)
Dans ce projet, nous transformons l'ESP32 en un serveur web asynchrone que vous pouvez contrôler depuis votre téléphone ou votre ordinateur connecté au même réseau Wi-Fi. Grâce à la bibliothèque ESPAsyncWebServer, le serveur peut traiter plusieurs requêtes simultanément (contrairement au classique WebServer.h qui se bloque sur une seule requête). Depuis votre navigateur, vous pourrez vous connecter à l'adresse IP de l'ESP32, puis allumer et éteindre la LED co

ESP32 Contrôle de LED avec bouton poussoir (Push)
La LED s'allume lorsque le bouton est enfoncé et s'éteint lorsqu'il est relâché. Montre comment la broche d'entrée numérique de l'ESP32 et la résistance pull-up interne sont utilisées. Grâce au mode INPUT_PULLUP, aucune résistance externe n'est nécessaire.

Mesure de l'intensité lumineuse avec le module LDR ESP32
Suivi en temps réel sur le moniteur série de la valeur brute de l'ADC du module LDR et du pourcentage relatif de luminosité calculé à partir de références dans l'obscurité et à la lumière. Ce pourcentage n'est pas une mesure en lux. Permet de comprendre le principe de calibrage du module. Il est préférable de réaliser cet exercice avant le projet 10, car il sert à déterminer la valeur seuil.

ESP32 DHT22 Température et humidité (avec écran LCD)
Il s'agit d'un projet permettant de mesurer la température ambiante et le taux d'humidité à l'aide d'un capteur DHT22 et d'afficher ces données en temps réel sur un écran LCD I2C 16x2. Les données du capteur sont lues à l'aide du protocole one-wire grâce à la bibliothèque Adafruit DHT. Ce projet constitue la base des stations météo IoT, de la domotique ou des systèmes de surveillance de l'environnement dans les serres.

ESP32 HTTPClient + API météo (avec écran LCD)
Dans ce projet, nous effectuons un appel REST à l'API météo (wttr.in) via Internet à l'aide de l'ESP32 et de la bibliothèque HTTPClient.h. À l’aide d’ArduinoJson v7, nous analysons la réponse JSON renvoyée et affichons les informations relatives à la ville, à la température, à l’humidité, à la météo et au vent sur un écran LCD I2C, en turc et en anglais. wttr.in est gratuit et ne nécessite pas de clé API : il suffit de saisir le nom d’une ville pour obtenir les conditions météo en temps réel d

Système d'Alarme de Mouvement ESP32 (PIR + Buzzer + LED + Telegram)
Un système d'alarme de sécurité intelligent qui active le buzzer et la LED lorsque le capteur PIR détecte un mouvement, tout en envoyant une notification instantanée au propriétaire via Telegram. Il intègre un délai d'attente de 30 secondes pour limiter la fréquence des alarmes répétées ; ce mécanisme ne vérifie pas la validité des détections du capteur PIR et n'élimine pas les faux déclenchements. Idéal pour la sécurité domestique, la surveillance de garage, d'entrepôts ou de bureaux. Avec l'ES

Mode veille profonde de l'ESP32 — Économie de batterie (OLED + compteur RAM RTC)
Le mode « Deep Sleep » de l'ESP32 réduit la consommation de courant à environ 10 µA en désactivant le processeur et la plupart des périphériques, ce qui revêt une importance cruciale pour les appareils IoT fonctionnant sur batterie. Dans ce projet, nous utilisons trois sources de réveil différentes : une minuterie (timer, 15 s), une broche externe (EXT0 — bouton GPIO 33) et un capteur tactile (T0/GPIO 4). Les variables marquées avec RTC_DATA_ATTR sont conservées pendant le mode Deep Sleep — le
Autres articles
Application BlueGrays
Réalise ce montage pas à pas sur ton téléphone
Schéma, code et liste des composants sur un seul écran. Plus de 200 projets Arduino, ESP32 et Pico à réaliser.
Scanne avec ton téléphone
Pointe l’appareil photo vers le code : la boutique d’applications de ton téléphone s’ouvre.
ou ouvre la boutique

