serveur-web.ino

ESP32 (original, classe ESP32-WROOM-32) · Fichier : serveur-web.ino · Langage : Arduino · Usage : Allumer une LED depuis un navigateur sur le réseau local

Le grand classique connecté : la carte sert une page HTML sur le réseau local, deux liens allument la LED, et un ADC apparaît en direct. Aucune infrastructure externe — le serveur tourne dans la carte.

Matériel requis

Une carte ESP32 classique (module ESP32-WROOM-32, double cœur Xtensa 240 MHz, Wi-Fi + Bluetooth) type DevKitC / DOIT V1, alimentée par micro-USB. Accès Wi-Fi 2,4 GHz (pas de WPA3 d'entreprise) ; potentiomètre optionnel sur un ADC.

Branchement

LED sur GPIO2 via 330 Ω ; potentiomètre curseur sur GPIO34 (entrée seule, 3,3 V max) entre 3,3 V et GND.

Fonctionnement

WiFi.begin rejoint le point d'accès, WebServer enregistre les routes /, /on, /off et handleClient() traite les requêtes au fil de l'eau. La balise refresh garde la page fraîche toutes les 5 s. Dans l'Arduino IDE, installez le paquet « esp32 » (Gestionnaire de cartes), choisissez « Dev Module », le port, puis Téléverser (maintenez BOOT si la détection échoue). GPIO34-39 sont entrées seules ; évitez GPIO6-11 et GPIO12.

Pour aller plus loin

Ajouter un mot de passe (server.authenticate), ou publier les mêmes valeurs vers un broker MQTT au lieu de les afficher.

serveur-web.ino

// Serveur web embarque : page de controle LED GPIO2 + etat analogique.
#include <WiFi.h>
#include <WebServer.h>

const char *SSID = "votre-wifi";
const char *CLE  = "votre-cle";
const int LED = 2;

WebServer serveur(80);

void page() {
  String h = "<h1>ESP32 locale</h1>"
    "<p><a href=on>LED ON</a> | <a href=off>LED OFF</a></p>"
    "<p>GPIO34 : " + String(analogRead(34)) + "</p>"
    "<meta http-equiv=refresh content=5>";
  serveur.send(200, "text/html", h);
}

void setup() {
  pinMode(LED, OUTPUT);
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(SSID, CLE);
  while (WiFi.status() != WL_CONNECTED) { delay(300); Serial.print("."); }
  Serial.printf("\nhttp://%s/\n", WiFi.localIP().toString().c_str());
  serveur.on("/", page);
  serveur.on("/on", []() { digitalWrite(LED, HIGH); page(); });
  serveur.on("/off", []() { digitalWrite(LED, LOW); page(); });
  serveur.begin();
}

void loop() { serveur.handleClient(); }

← Retour à la fiche