🛠 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

Objectifs

Transformer la GIGA R1 WiFi en serveur web embarqué : la carte écoute sur le port 80 du réseau local et sert une mini-page HTML avec deux liens qui allument et éteignent une LED. C'est la variante locale des exemples officiels SimpleWebServerWiFi livrés avec la bibliothèque WiFi du core. Vous apprendrez à parser une requête HTTP GET et à renvoyer une réponse correcte.

Matériel

Code complet

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

  if (requête.startsWith("GET /on"))  { digitalWrite(LED_PIN, HIGH); Serial.println("LED ON"); }
  if (requête.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
}

Vérification attendue

Le moniteur affiche « Ouvrez http://192.168.x.x ». Depuis un téléphone connecté au même WiFi, cette URL affiche une page avec deux boutons ; un appui imprime « LED ON » / « LED OFF » côté carte et allume/éteint réellement la LED. Le bouton du navigateur recharge la page à chaque appui, ce qui est normal pour ce design sans JavaScript.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels