Ejecute un servidor web en su Raspberry Pi Pico W

Este proyecto puede considerarse el "¡Hola mundo!" del Pico W. Demuestra cómo conectarse a Wi-Fi, cómo ejecutar un servidor web HTTP en el Pico W y cómo controlar los pines GPIO.

Si estás buscando un proyecto rápido y fácil para empezar con tu Pico, ¡esto es para ti!

Pasos para hacer parpadear el LED vía WiFi en el Pico W

Hay tres temas generales para conseguirlo.

Configurar MicroPython

En primer lugar, hay que configurar MicroPython. Descargue el archivo UF2 aquí que está pensado específicamente para el Pico W.

Botón Pico W Bootsel

Mantén pulsado el botón BOOTSEL y conecta tu Pico W por USB.

Una vez montado, copie el archivo UF2 que acaba de descargar en el Pico.

Utilice Thonny para programar Pico W

Thonny facilita la programación del Pico W y viene preinstalado en el sistema operativo Raspberry Pi. También puede descárguelo para Windows, Mac y Linux aquí.

Asegúrate de que tu intérprete está configurado como MicroPython (Raspberry Pi Pico).

Thonny IDE ejecutando Micropython

Thonny se conectará a la Raspberry Pi Pico W y podrá ejecutar comandos en el shell (el segmento inferior del IDE de Thonny).

Ejecute un escaneo de la red para confirmar que la conexión inalámbrica de Pico W está funcionando

Thonny IDE ejecutando un escaneo wlan

En el Shell, puedes ejecutar este código para probar si tu chip inalámbrico está funcionando.

Utiliza este código para imprimir todas las redes inalámbricas disponibles en tu zona.

import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
print(wlan.scan())

Programar el servidor web

Crear un diccionario llamado secretos.py y utilice el siguiente contenido, sustituyendo el valor de ssid y pw por su red.

secrets = {
    'ssid': 'Replace-this-with-your-Wi-Fi-Name',
    'pw': 'Replace-this-with-your-Wi-Fi-Password'
    }

A continuación, cree main.py que albergará su código principal. Como el código es de muchas líneas, puede encontrarlo aquí en nuestro Github.

Crear la página HTML que se servirá

Servidor web Pico W

El siguiente archivo será el archivo HTML que se sirve cuando se carga la dirección IP del Pico W. Guárdelo como index.html

Es una página sencilla con dos botones que permiten encender y apagar el LED del Pico W.

<!DOCTYPE html>
<html>
    <head>
        <title>Pico W</title>
    </head>
    <body>
        <h1>Pico W</h1>
        <p>Control the onboard LED</p>
        <a href=\"?led=on\"><button>ON</button></a> 
        <a href=\"?led=off\"><button>OFF</button></a>
    </body>
</html>

Es hora de correrlo todo

Servidor web Pico W

Haga clic en el botón de ejecución en Thonny, que es un botón verde con un símbolo de juego.

Verás la dirección IP del Pico W. Cópiala en tu navegador web conectado a la misma red inalámbrica.

Haga clic en los botones y debería ver el cambio.

Puede encontrar el Repo de Github aquí que tiene todos los archivos.

Nuestro El vídeo de YouTube de este proyecto también profundiza en detalles como la explicación del código.

Y si buscas más proyectos en los que inspirarte, echa un vistazo a nuestra serie Paragon Projects aquí.

6 Comentarios

  1. Pablo el julio 13, 2022 a las 4:31 pm

    Error encontrado cuando lo pruebo

    %Run -c $EDITOR_CONTENT
    Traceback (última llamada más reciente):
    Archivo "", línea 1, en
    ImportError: no hay módulo llamado 'network'

  2. Charles el octubre 25, 2022 a las 8:51 pm

    En la línea 100 utilizas la función get_html(). Cuando ejecuto tu código obtengo un error 'get_html' isn't defined.

  3. Gunther el noviembre 28, 2022 a las 12:51 am

    La función de búsqueda por find también devuelve un valor si, por ejemplo, el referrer contiene la cadena 'led=xx'. Así que tanto led_on como led_off obtienen un valor positivo al mismo tiempo y el LED se apaga de nuevo, cuando se deseaba que se encendiera. Para superar esto, la sentencia if tiene que ser ampliada para comprobar un valor de índice pequeño (he utilizado 20 sólo como regla general):

    si (led_on > -1 y led_on -1 y led_off < 20):
    Ahora funciona como se esperaba.

    • Tonton el agosto 1, 2024 a las 4:09 pm

      J'ai résolu le problème en ajoutant la ligne :
      r = r[:50]
      vanguardia
      led_on = r.find('?led=on')
      led_off = r.find('?led=off')

      Se retiran los caracteres superfluos de la solicitud

  4. Gunther el noviembre 28, 2022 a las 12:53 am

    He intentado comentar, pero por alguna razón el comentario no sale correctamente...

Deja un comentario