Guides · 17 min de lecture

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.

Photorésistance LDR pour mesurer la lumière en cours d'IoT avec l'ESP32
Le capteur commun du module : la LDR lue en semaine 2 apparaît en semaine 4 sur une page web ouverte depuis un téléphone.

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.

Prérequis : avant le début du module, chaque groupe doit avoir téléversé au moins une fois du code sur un ESP32. Si ta classe n'en est pas encore là, commence par le premier cours ESP32 ; garder les problèmes de pilote, de paquet de cartes et de port hors de la semaine Wi-Fi est le plus gros gain de temps de tout le module.

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.

SemaineObjectifProjet BlueGraysNotionProduction
1Lire une entrée et piloter une sortieESP32 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'étatUne LED allumée et éteinte par bouton et la carte des broches du groupe
2Mesurer l'environnementMesure 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 mesureTableau de 10 mesures de lumière dans le moniteur série, température et humidité sur l'écran LCD
3Connecter la carte au réseauConnexion Wi-Fi STA ESP32 (avec écran LCD) (Gratuit)Mode station (STA), SSID, adresse IP, RSSI (dBm), WiFi.status(), reconnexionIP, adresse MAC et force du signal notées dans le carnet réseau
4Faire de la carte un serveurServeur Web asynchrone ESP32 (avec affichage de l'adresse IP sur l'écran LCD) (Gratuit) et le code de cet articleServeur 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
5Faire de la carte un clientESP32 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 NTPMétéo ou heure récupérées sur Internet ; lecture de la mesure du groupe voisin
6Signaler un événement par messageSystè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
7Fonctionner sur batterie et protéger l'objetMode 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 à partCalcul d'autonomie et projet dont le mot de passe est déplacé dans secrets.h
8Projet finalChoix du groupe, par exemple ESP32 DHT22 Température et humidité (avec écran LCD) avec la page web de la semaine 4Combiner les notions, documenter, présenterObjet 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.

En choisissant la broche du capteur en semaine 2, pense déjà aux semaines Wi-Fi. Les broches de l'ESP32 reliées à l'ADC2 (GPIO0, 2, 4, 12–15 et 25–27) ne peuvent pas faire de lecture analogique quand le Wi-Fi est actif ; un potentiomètre qui marche très bien sur GPIO4 en semaine 2 renverra toujours la même valeur fausse en semaine 4. Branche les capteurs analogiques sur des broches ADC1 (GPIO32–39) dès le départ ; c'est aussi pour cela que le projet LDR de l'application utilise GPIO34.

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ÉtapeQue fait-on ?
0–10Mise en routeOn reprend la question de sortie de la semaine précédente, les groupes ouvrent leur carnet réseau, on distribue les boîtes.
10–20NotionLa 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–30Lecture du codeLe 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–55Montage et téléversementLes 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–70Modifier une choseChaque 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–80ClôtureLa 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éseauL'ESP32 se connecte ?Pour la semaine serveur webRemarque
Réseau 2,4 GHz avec un seul mot de passe (WPA2-PSK)OuiAdaptéComme à la maison ; rarement ouvert aux élèves dans un établissement
Réseau qui n'émet qu'en 5 GHzNon, il ne le voit pasPas 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 plusDé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 à InternetGénéralement pas adaptéL'isolation des clients y est souvent active aussi
Partage de connexion d'un téléphoneOui, si le 2,4 GHz est actifAdaptéNombre limité d'appareils en même temps
Routeur 2,4 GHz dédié, non relié au réseau de l'établissementOuiLe 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 :

  1. 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 ?
  2. 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 ?
  3. Faut-il enregistrer les appareils à l'avance par leur adresse MAC ? Si oui, pour quand vous faut-il la liste des 9 cartes ?
  4. 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 ?
  5. 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.

C++ (Arduino IDE)
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.

Si l'adresse IP apparaît dans le moniteur série mais que le téléphone n'ouvre pas la page, le problème vient presque toujours du réseau, pas du code. Le téléphone est peut-être en données mobiles ou sur un autre réseau, ou l'isolation des clients est active. Vérifie d'abord que le Wi-Fi du téléphone est sur le même réseau que l'ESP32 ; si c'est le cas et que la page ne s'ouvre toujours pas, passe sur un partage de connexion.

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érielPar groupePour la classe (8 groupes + 1 de rechange)Semaines
ESP32 DevKit (30 broches, ESP32-WROOM-32)191–8
Câble USB de données (testé)1111–8
Plaque d'essai (830 points)2181–8
Bouton-poussoir2181, 6
LED 5 mm et résistance 220 Ω3 + 330 + 301, 3, 4
Module LDR (avec sortie AO)192, 4, 5
Capteur de température et d'humidité DHT22192, 8
Écran LCD 16x2 I2C192–5
Écran OLED SSD1306 0,96 pouce (I2C)197
Détecteur de mouvement PIR (HC-SR501) et buzzer1 + 19 + 96
Câbles jumper (mâle-mâle et mâle-femelle)20 + 10environ 180 + 901–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 routeur3–8
Téléphone ou tablette avec BlueGrays181–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ère1 : Débutant2 : En progrès3 : Maîtrisé
Capteur et montageMontage fait mais aucune valeur ou une valeur absurdeLa 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-FiNe se connecte qu'avec l'aide de l'enseignantSe connecte, mais l'objet s'arrête si la connexion tombeSe connecte, se reconnecte après une coupure, IP et force du signal notées
Partage des donnéesDonnées seulement dans le moniteur sériePage ou message présent, mais à rafraîchir ou déclencher à la mainLa page se rafraîchit seule ou le message part automatiquement lors de l'événement
Conscience énergétiquePersonne ne sait combien de courant consomme l'objetAutonomie calculée sans tenir compte du sommeilCalcul avec sommeil et intervalle de réveil, résultat interprété
Sécurité et éthiqueMot de passe en clair dans le codeMot de passe dans secrets.h, données non discutéesMot de passe dans un fichier à part, données collectées et qui les voit consignés par écrit
Documentation et présentationCarnet réseau incomplet, présentation limitée à une démoCarnet réseau présent, erreurs rencontrées non expliquéesCarnet 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

  1. Semaine 1 : Sur une broche en INPUT_PULLUP, que renvoie digitalRead() quand le bouton est appuyé, et pourquoi ?
  2. Semaine 2 : Pourquoi un potentiomètre sur GPIO4 ne peut-il pas être lu quand le Wi-Fi est actif ? Quelles broches choisir ?
  3. Semaine 3 : Si WiFi.status() indique que la carte n'est pas connectée, quelles sont les deux premières choses à vérifier ?
  4. Semaine 4 : Pourquoi l'adresse IP tapée dans le navigateur peut-elle être différente la semaine prochaine ?
  5. Semaine 5 : Cette semaine, ton ESP32 était-il serveur ou client ? Que signifient les codes d'état 200 et 404 ?
  6. 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 ?
  7. 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 ?
  8. 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.

Voir tous les projets
Connexion Wi-Fi STA ESP32 (avec écran LCD)
#127Avancé

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.

4.4(21)
34
Serveur Web asynchrone ESP32 (avec affichage de l'adresse IP sur l'écran LCD)
#129Avancé

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

4.8(16)
26
ESP32 Contrôle de LED avec bouton poussoir (Push)
#104Débutant

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.

4.6(36)
55
Mesure de l'intensité lumineuse avec le module LDR ESP32
#113Débutant

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.

4.6(36)
55
ESP32 DHT22 Température et humidité (avec écran LCD)
#117Intermédiaire

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.

4.8(38)
56
ESP32 HTTPClient + API météo (avec écran LCD)
#133Avancé
Premium

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

4.7(13)
20
Système d'Alarme de Mouvement ESP32 (PIR + Buzzer + LED + Telegram)
#145Avancé
Premium

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

0.0(0)
9
Mode veille profonde de l'ESP32 — Économie de batterie (OLED + compteur RAM RTC)
#135Avancé
Premium

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

4.3(10)
16