🛠 Serveur web embarqué pour piloter une LED

Arduino GIGA R1 WiFi · intermediaire · Schéma : IMG-giga-r1-wifi-intermediaire-6-serveur-web-led.svg — Navigateur web sur un téléphone se connectant à l'adresse IP de la GIGA R1 WiFi qui héberge une page avec boutons ON/OFF pour une LED

Objetivos

Transformar la GIGA R1 WiFi en un servidor web embarcado: la placa escucha en el puerto 80 de la red local y sirve una minipágina HTML con dos enlaces que encienden y apagan un LED. Es la variante local de los ejemplos oficiales SimpleWebServerWiFi incluidos con la biblioteca WiFi del core. Aprenderás a analizar una petición HTTP GET y a devolver una respuesta correcta.

Materiales

Código completo

// GIGA R1 WiFi — mini serveur web LED (inspiré de SimpleWebServerWiFi du core)
#include <WiFi.h>

const char SSID[] = "your-ssid";
const char PASS[] = "your-pass";
const int LED_PIN = 5;                       // LED + 330 ohms vers GND

WiFiServer serveur(80);

void setup {
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
  WiFi.begin(SSID, PASS);
  while (WiFi.status != WL_CONNECTED) { Serial.print("."); delay(200); }
  Serial.print("Ouvez http://"); Serial.println(WiFi.localIP);
  serveur.begin;
}

void loop {
  if (WiFi.status != WL_CONNECTED) { WiFi.reconnect; delay(2000); return; }
  WiFiClient client = serveur.available;   // attend une connexion entrante
  if (!client) return;

  String requete = "";
  unsigned long debut = millis;
  while (client.connected && millis - debut < 3000) {
    while (client.available) {
      char c = client.read;
      if (requete.length < 200) requete += c;   // on ne garde que la 1re ligne utile
    }
    if (requete.indexOf('\r\n\r\n') >= 0) break;  // fin des en-tetes recues
  }

  if (requete.startsWith("GET /on"))  { digitalWrite(LED_PIN, HIGH); Serial.println("LED ON"); }
  if (requete.startsWith("GET /off")) { digitalWrite(LED_PIN, LOW);  Serial.println("LED OFF"); }

  client.print("HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\n");
  client.print("Connection: close\r\n\r\n");
  client.print("<html><body style='font-family:sans-serif'>");
  client.print("<h2>GIGA R1 WiFi — LED broche 5</h2>");
  client.print("<a href='/on'><button>OUI</button></a> ");
  client.print("<a href='/off'><button>NON</button></a></body></html>");
  client.stop;                             // ferme la socket proprement
}

Verificación esperada

El monitor muestra « Ouvrez http://192.168.x.x ». Desde un teléfono conectado al mismo WiFi, esta URL muestra una página con dos botones; una pulsación imprime « LED ON » / « LED OFF » en la placa y enciende/apaga realmente el LED. El botón del navegador recarga la página en cada pulsación, lo cual es normal en este diseño sin JavaScript.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales