🛠 Servir une page web depuis la Pico W (socket TCP + HTTP)

Raspberry Pi Pico W · intermediaire · Schéma : IMG-pico-w-intermediaire-1-picow-serveur-web.svg — Pico W connectee au routeur, un navigateur web sur laptop affichant la page servie par l'IP de la carte, fleches de requete HTTP aller-retour, terminal serie affichant la requete recue

Objetivos

Una vez conectada al Wi-Fi (tuto de conexión), la Pico W es un nodo de red completo: sabe escuchar un puerto TCP y responder en HTTP. Vas a escribir un mini-servidor web con el módulo socket de MicroPython — el mismo principio que el ejemplo oficial picow_httpd del repositorio pico-examples (carpeta pico_w/wifi/), pero mucho más corto. La página mostrada podrá incluir más adelante botones para controlar GPIOs: es la base de cualquier interfaz de control embebida.

Material

Código completo

# webserver.py — mini serveur HTTP sur la Pico W (MicroPython)
import machine, network, socket, time

def do_connect:
    wlan = network.WLAN
    wlan.active(True)
    if not wlan.isconnected:
        wlan.connect('my_ssid', 'my_password')
        while not wlan.isconnected:
            machine.idle
    print('IP :', wlan.ipconfig('addr4'))

do_connect

addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
s = socket.socket
s.bind(addr)
s.listen(1)
print('ecoute sur port 80')
while True:
    cl, remote = s.accept
    req = cl.recv(100)                        # lit la requête HTTP
    print('recu:', req[:40])
    page = (b'HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n'
            b'<h1>Bonjour depuis ma Pico W</h1>'
            b'<p>Rafrichis-moi !</p>')
    cl.write(page)
    cl.close

Verificación esperada

La consola serie muestra la IP (por ejemplo, 192.168.1.42). Al apuntar el navegador a http://192.168.1.42/, la página se muestra y cada recarga hace que la solicitud recibida aparezca en la consola. El CYW43439 también puede funcionar como punto de acceso (SoftAP) con hasta 4 clientes — en este modo, es la propia Pico W la que distribuye la red (límite documentado del chip).

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales