🛠 Serveur web embarqué pour piloter une LED

ESP32-S2 · avance · Schéma : IMG-esp32-s2-avance-3-esp32-s2-serveur-web-led.svg — ESP32-S2 connectée au WiFi local, LED sur GPIO2 avec résistance de 330 Ω, un ordinateur et un smartphone affichent la page web servie par la carte avec boutons ON/OFF.

Objectifs

Héberger un serveur HTTP directement sur l'ESP32-S2 avec la bibliothèque WebServer : servir une page de contrôle, piloter une LED par requêtes GET et afficher l'état. Le S2 ne possède pas de Bluetooth : le WiFi 2,4 GHz est le seul canal réseau, ce qui rend ce serveur d'autant plus central.

Matériel

Code complet

// Serveur web de pilotage LED sur ESP32-S2
#include <WiFi.h>
#include <WebServer.h>

const char *SSID = "VOTRE_WIFI";
const char *PASS = "VOTRE_MOT_DE_PASSE";
const uint8_t LED_PIN = 2;
bool etatLed = false;
WebServer serveur(80);

const char *PAGE =
  "<!doctype html><html lang='fr'><head><meta charset='utf-8'>"
  "<meta name='viewport' content='width=device-width,initial-scale=1'>"
  "<title>ESP32-S2</title></head><body style='font-family:sans-serif;"
  "text-align:center;padding-top:40px'>"
  "<h1>LED ESP32-S2</h1><p>État : %s</p>"
  "<a href='/on'><button style='font-size:1.4em;padding:10px 24px'>ALLUMER</button></a> "
  "<a href='/off'><button style='font-size:1.4em;padding:10px 24px'>ETEINDRE</button></a>"
  "</body></html>";

void pageAccueil {
  String html; html.reserve(600);
  html.printf(PAGE, etatLed ? "ALLUMEE" : "ETEINTE");
  serveur.send(200, "text/html", html);
}

void setup {
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(115200);
  WiFi.begin(SSID, PASS);
  Serial.print("Connexion WiFi");
  while (WiFi.status != WL_CONNECTED) { delay(300); Serial.print("."); }
  Serial.printf("\nAdresse : http://%s\n", WiFi.localIP.toString.c_str);
  serveur.on("/", pageAccueil);
  serveur.on("/on", []  { etatLed = true;  digitalWrite(LED_PIN, HIGH); serveur.send(303, "text/plain", "ok"); pageAccueil; });
  serveur.on("/off", [] { etatLed = false; digitalWrite(LED_PIN, LOW);  serveur.send(303, "text/plain", "ok"); pageAccueil; });
  serveur.begin;
}

void loop { serveur.handleClient; }

Vérification attendue

La console affiche l'IP attribuée par la box (ex. http://192.168.1.42). Depuis un navigateur du même réseau, la page s'affiche avec l'état courant ; le bouton ALLUMER allume la LED physique et met la page à jour, ETEINDRE l'éteint. Le pilotage fonctionne depuis plusieurs appareils simultanément.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels