🛠 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

Objectifs

Une fois connectée au Wi-Fi (tuto connexion), la Pico W est un nœud réseau complet : elle sait écouter un port TCP et répondre en HTTP. Tu vas écrire un mini-serveur web avec le module socket de MicroPython — le même principe que l'exemple officiel picow_httpd du dépôt pico-examples (dossier pico_w/wifi/), en beaucoup plus court. La page affichée pourra plus tard porter des boutons pour piloter des GPIO : c'est la base de toute interface de contrôle embarquée.

Matériel

Code complet

# 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

Vérification attendue

La console série affiche l'IP (par ex. 192.168.1.42). En pointant le navigateur sur http://192.168.1.42/, la page s'affiche et chaque rechargement fait défiler la requête reçue dans la console. Le CYW43439 peut aussi servir de point d'accès (SoftAP) jusqu'à 4 clients — dans ce mode, c'est la Pico W elle-même qui distribue le réseau (limite documentée de la puce).

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels