serveur-web-led.ino
La MKR WiFi 1010 se convierte en objeto conectado: aloja una página HTML ligera con dos enlaces que encienden o apagan un LED en el pin 6. Sin infraestructura cloud; la página se abre desde cualquier aparato de la red local, móvil incluido.
Hardware
Una Arduino MKR WiFi 1010 (microcontrolador SAMD21, módulo Wi-Fi WINC1500, sin Bluetooth, alimentación USB o LiPo en J6). MKR WiFi 1010, LED + resistencia de 330 Ω en el pin 6, la misma red WiFi que el teléfono.
Cableado
LED (+) → resistencia 330 Ω → pin 6, cátodo a GND; la IP impresa por serie se abre en el navegador.
Funcionamiento
WiFiServer escucha en el puerto 80; cada petición HTTP se lee hasta la primera línea, se compara con /on o /off y se devuelve una página mínima. El refresco muestra el estado actual.
Ejecución
Instala Arduino SAMD Boards y la librería WiFi101, selecciona la placa y carga. El Wi-Fi funciona solo en 2,4 GHz: comprueba que tu punto de acceso no sea solo de 5 GHz.
Variantes
Añade parámetros (?valor=512) para un potenciómetro digital o una etiqueta meta refresh para un estado que se actualice solo.
serveur-web-led.ino
// Serveur web MKR WiFi 1010 : /on et /off pilotent la LED broche 6.
#include <SPI.h>
#include <WiFi101.h>
const char SSID[] = "MonReseau";
const char PASS[] = "motdepassewifi";
WiFiServer serveur(80);
const int LED = 6;
void setup() {
Serial.begin(9600);
pinMode(LED, OUTPUT);
WiFi.begin(WPA_PASS_PHRASE, SSID, PASS);
while (WiFi.status() != WL_CONNECTED) delay(100); // IP via DHCP
Serial.println(WiFi.localIP()); // a ouvrir dans le navigateur
serveur.begin();
}
void loop() {
WiFiClient client = serveur.available();
if (!client) return;
String requete = client.readStringUntil('
'); // ligne GET /...
if (requete.startsWith("GET /on")) digitalWrite(LED, HIGH);
if (requete.startsWith("GET /off")) digitalWrite(LED, LOW);
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html\r\n");
client.println("<a href='/on'>ALLUMER</a><br>");
client.println("<a href='/off'>ETEINDRE</a><br>");
client.println(digitalRead(LED) ? "LED : ON" : "LED : OFF");
delay(10);
client.stop();
}