IoT : piloter une LED en Wi-Fi avec l'ESP8266
22/10/25
Projet de groupe : programmation d'un microcontrôleur ESP8266 pour le connecter au Wi-Fi, y héberger un petit serveur web et allumer ou éteindre sa LED depuis une page web.
ESP8266
Arduino (C++)
Wi-Fi
Serveur web
JSON
JavaScript
Contexte
TP de découverte de l'Internet des objets réalisé en groupe en octobre 2025. En partant du programme d'exemple « blink », qui fait clignoter une LED, il fallait faire évoluer le microcontrôleur ESP8266 jusqu'à pouvoir le commander à distance depuis un navigateur.
Objectifs
- Comprendre le fonctionnement d'un microcontrôleur et pourquoi la fonction
delay() bloque tout le programme - Connecter l'ESP8266 à un réseau Wi-Fi et récupérer ses informations réseau
- Héberger un serveur web sur l'ESP8266
- Créer des adresses pour allumer et éteindre la LED, et renvoyer son état en JSON
- Piloter la LED depuis une page web grâce à l'API Fetch en JavaScript
Réalisation
- Microcontrôleur : étude de l'ESP8266 (un seul processeur) et de la limite de
delay(), avec une approche non bloquante basée sur millis() - Wi-Fi : connexion de l'ESP8266 via le partage de connexion d'un téléphone (le Wi-Fi de l'école ne permettant pas de joindre les autres appareils), affichage de son adresse IP, MAC, masque, passerelle et force du signal, puis test avec
ping - Réseau : réflexion sur le choix entre DHCP et adresse IP fixe pour un objet connecté
- Serveur web : page d'accueil servie par l'ESP8266, et adresses
/on et /off qui allument et éteignent la LED en répondant au format JSON - Interface : page HTML avec deux boutons intégrée directement dans le programme de l'ESP8266
Compétences mobilisées
- Répondre aux incidents et aux demandes : contournement des limites du réseau de l'école et débogage via le moniteur série
- Mettre à disposition un service informatique : un objet connecté qui expose un service web simple
- Travailler en mode projet : TP réalisé en groupe, étape par étape
- Organiser son développement professionnel : première approche de l'IoT, de la programmation embarquée et des échanges en JSON
Captures d'écran
À compléter : ajouter ici les captures du projet (dossier src/screen projets).
Bilan
Ce TP m'a fait découvrir la programmation embarquée et ses contraintes : sur un microcontrôleur, un simple delay() bloque tout le reste. C'était aussi concret de voir un objet physique réagir à une requête web.
Nous n'avons pas terminé toutes les étapes : il resterait à finaliser le clignotement non bloquant, à ajouter l'adresse /state qui renvoie l'état de la LED, et à relier les boutons de la page à l'ESP8266 avec fetch pour piloter la LED sans changer de page.