serveur-web.ino

ESP32-C3 · Archivo : serveur-web.ino · Lenguaje : Arduino · Uso : Allumer une LED depuis un navigateur sur le réseau local

El clásico conectado: la placa sirve una página HTML en la red local, dos enlaces conmutan el LED y un ADC aparece en directo. Sin infraestructura externa: el servidor corre dentro de la placa.

Hardware necesario

Una placa ESP32-C3 (RISC-V a 160 MHz, Wi-Fi + BLE 5) tipo DevKitM-1 o SuperMini, alimentada por USB (nativo en el C3). Acceso Wi-Fi 2,4 GHz (no WPA3 de empresa); potenciómetro opcional en un ADC.

Cableado

LED en GPIO2 por 330 Ω; cursor del potenciómetro en GPIO34 (solo entrada, 3,3 V máx) entre 3,3 V y GND.

Funcionamiento

WiFi.begin se une al punto de acceso, WebServer registra las rutas /, /on, /off y handleClient() atiende peticiones a medida llegan. La etiqueta refresh mantiene la página fresca cada 5 s. En el Arduino IDE (paquete esp32), elija « ESP32C3 Dev Module », active « USB CDC On Boot » si hace falta y suba. GPIO9 suele ser el botón BOOT; deje GPIO8 libre en el arranque.

Para ir más lejos

Añada una contraseña (server.authenticate), o publique los mismos valores a un broker MQTT en vez de mostrarlos.

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(); }

← Volver a la ficha