🛠 Serveur web embarqué : piloter la matrice depuis le navigateur
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
- 1 Arduino UNO R4 WiFi conectada a la misma red que el PC (ver tutorial estación WiFi)
- Un navegador en la misma red local
- Credenciales WiFi en el sketch (nunca en un repositorio público).
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
- Olvidar
client.stop: la conexión permanece abierta, el navegador recarga indefinidamente y la placa se satura. - Leer toda la solicitud con un
whilebloqueante sin timeout: un cliente que no cierra la conexión congela el bucle; de ahí la lectura de una sola línea. - El navegador también envía una solicitud /favicon.ico: tu analizador debe ignorar las rutas desconocidas (aquí, todo lo que no sea led=on apaga — aceptable, pero trata el caso).
Otros tutoriales para esta placa
- Premier Blink sur la UNO R4 WiFi : la première UNO 32 bits
- Apprivoiser la matrice LED 12x8 intégrée
- Toucher capacitif : touchRead sans composant
- Se connecter au WiFi et lire l'heure NTP (WiFiS3)
- Inclinomètre sur la matrice : l'IMU LSM6DSV16X en I²C
- Horloge persistante : RTC à pile + resynchronisation NTP
Ejemplos de código para esta placa
clignotante.inoArduinobouton-poussoir.inoArduinodac-analogique.inoArduinoentree-analogique.inoArduinopwm-respiration.inoArduinoservo-balayage.inoArduino