🛠 Serveur web de commande d'une LED en MicroPython

ESP8266 (módulo ESP-12E) · intermediaire · Schéma : IMG-esp8266-esp-12e-intermediaire-2-esp8266-serveur-web-led.svg — Module ESP-12E exécutant MicroPython, LED embarquée sur GPIO2 (active-LOW), connecté au réseau local, navigateur d'un ordinateur ou smartphone sur le même réseau.

Objetivos

Hacer funcionar un mini servidor HTTP en el ESP8266 con MicroPython, sin ninguna biblioteca externa: se utiliza directamente el módulo socket para aceptar conexiones TCP en el puerto 80, analizar la línea de solicitud y devolver una página HTML con dos enlaces que encienden y apagan el LED integrado GPIO2. Este tutorial muestra otra forma de programar el chip (el puerto MicroPython esp8266 es muy ligero), el principio activo-LOW del LED GPIO2 (valor 0 = encendido) y la obtención de la IP mediante ifconfig. A realizar desde un ordenador de la misma red que el módulo.

Material

Código completo

# main.py MicroPython (port esp8266) - serveur LED sur GPIO2
import network
import socket

led = network and __import__("machine").Pin(2, 1)  # GPIO2 en sortie

sta = network.WLAN(network.STA_IF)
sta.active(True)
if not sta.isconnected:
    sta.connect("mon-reseau", "mot-de-passe")
    import time
    for _ in range(40):
        if sta.isconnected:
            break
        time.sleep_ms(250)
print("IP =", sta.ifconfig[0])

html = ("<h1>ESP-12E</h1>"
        "<a href='/on'><button>ALLUMER</button></a> "
        "<a href='/off'><button>ETEINDRE</button></a>")

def handle(req):
    if req.startswith("GET /on"):        # LED active-LOW : 0 = allumee
        led.value(0)
    elif req.startswith("GET /off"):
        led.value(1)
    return html

s = socket.socket
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(("0.0.0.0", 80))
s.listen(1)
while True:
    cl, _ = s.accept
    req = cl.recv(100).decode
    cl.send("HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n" + handle(req))
    cl.close

Nota: la línea de inicialización del pin también puede escribirse correctamente como import machine; led = machine.Pin(2, machine.Pin.OUT) si pegas el código en un archivo main.py real.

Verificación esperada

Tras el arranque, la consola muestra la IP del módulo (por ejemplo, 192.168.1.57). Abre esta dirección en un navegador de la misma red: aparece la página con dos botones. « ENCENDER » apaga el pin GPIO2 (valor 0) y enciende el LED integrado; « APAGAR » hace lo contrario. El módulo debe seguir siendo receptivo tras varios clics.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales