🛠 Serveur web embarqué : piloter la matrice depuis le navigateur

Arduino UNO R4 WiFi · intermediaire · Schéma : IMG-uno-r4-wifi-intermediaire-3-ur4wifi-webserver-matrice.svg — UNO R4 WiFi reliée en WiFi à une box, un navigateur affichant un bouton ON/OFF, flèche HTTP GET /led=on vers la carte, matrice LED allumée ou éteinte.

Objetivos

Transformar la placa en un servidor web: la biblioteca WiFiS3 proporciona WiFiServer para escuchar en el puerto 80, recibir una solicitud HTTP de un navegador y devolver una página HTML. Controlarás la matriz LED mediante simples enlaces GET — la base de cualquier interfaz de control embebida.

Material

Código completo

#include <WiFiS3.h>
#include "Arduino_LED_Matrix.h"

ArduinoLEDMatrix matrix;
WiFiServer server(80);

const char* SSID = "votre-reseau";
const char* PASS = "votre-cle";

void setup {
  Serial.begin(115200);
  WiFi.begin(SSID, PASS);
  while (WiFi.status != WL_CONNECTED) { delay(200); }
  Serial.print(F("Ouvrir http://")); Serial.println(WiFi.localIP);
  matrix.begin;
  server.begin;
}

void loop {
  WiFiClient client = server.available;
  if (!client) { return; }

  String requete = "";
  while (client.connected && !requete.endsWith("\r\n")) {
    if (client.available) {
      requete = client.readStringUntil('\r');   // 1re ligne = GET /chemin HTTP/1.1
      break;
    }
  }

  bool on = requete.indexOf("led=on") >= 0;
  matrix.beginFrame;
  for (uint8_t c = 0; c < 12; c++) matrix.setColumn(c, on ? B11111111 : 0);
  matrix.show;

  client.println(F("HTTP/1.1 200 OK"));
  client.println(F("Content-Type: text/html"));
  client.println(F("Connection: close"));
  client.println;
  client.println(F("<html><body style='font-family:sans-serif'>"));
  client.println(on ? F("<h2>Matrice ALLUMEE</h2>") : F("<h2>Matrice ETEINTE</h2>"));
  client.println(F("<a href='/led=on'><button>ON</button></a> "));
  client.println(F("<a href='/led=off'><button>OFF</button></a>"));
  client.println(F("</body></html>"));
  client.stop;   // indispensable, sinon le navigateur tourne en boucle
}

Verificación esperada

El Monitor Serie muestra una URL http://192.168.x.x ; al abrirla en el navegador, muestra dos botones. Un clic en ON enciende los 96 LED, OFF los apaga. Cada clic genera una solicitud visible si muestras requete en el Monitor Serie.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales