Introducción
Una de las operaciones más comunes que encontramos cuando desarrollamos software para dispositivos IoT es conectarnos a la red WiFi. En este tutorial te mostraremos cómo conectarse a una red WiFi con MicroPython corriendo en una Raspberry Pi Pico W.
La Raspberry Pi Pico W viene con el chip del fabricante Infineon modelo CYW43439 que contiene un radio de 2.4 GHz que funciona con el protocolo 802.11n (WiFi). Este hardware es accesible desde el API estándar de MicroPython, por lo que podremos conectarnos a redes WiFi con facilidad.
El objetivo de esta página es ayudarte con la programación inicial del módulo de WiFi con código probado que puedas incluir en tus desarrollos.
Material
- Raspberry Pi Pico W
- Cable USB A - Micro B
- Punto de acceso o router WiFi
¿Cómo funciona el WiFi en Raspberry Pi Pico W?
Con la Raspberry Pi Pico es posible usar su interfaz inalámbrica en dos modos, dependiendo del tipo de programa que estemos desarrollando puede ser conveniente usar alguno de los dos. Los modos disponibles son:
- Estación (STA)
- Access Point (AP)
A continuación te explicamos las diferencias entre los modos de WiFi en la Raspberry Pi pico.
Modo estación (STAtion)
En este modo nuestra Raspberry Pi Pico funcionará como lo hace una computadora o un celular que se conectan al router de la empresa de telecomunicaciones. Con esta configuración es posible acceder a la conexión de internet de nuestro router y usar cualquier servicio que se encuentre en internet.
Los ejemplos que escribiremos en esta página se centran en el uso del modo estación, ya que es el que normalmente utilizaremos para conectarnos a internet.

Modo de punto de acceso (AP- Access Point)
En este modo la Raspberry Pi Pico funcionará como el Access Point de la empresa de telecomunicaciones, con la excepción de que no tendrá acceso a internet, solamente podremos acceder a los servicios de red que provea nuestra tarjeta de desarrollo.
Este modo es útil por ejemplo si deseamos implementar un servidor web local mediante el cual se puedan controlar salidas o visualizar datos de sensores sin requerir de un router u otra infraestructura de red.

¿Cómo conectarse a Red WiFi con Raspberry Pi Pico W?
Para conectarnos a una red WiFi podemos optar por usar una configuración de red automática o manual, el proceso para unirnos a la red es muy similar en ambos casos.
Conectarse en modo STAtion a un Access Point con configuración IP automática
Para conectarnos a una red WiFi existente con Raspberry Pi Pico W y obtener la dirección IP y otra configuraciones de red de forma automática mediante DHCP utilizaremos el siguiente código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | # GEEK FACTORY - Dale vuelo a tus proyectos # https://www.geekfactory.mx # # Ejemplo para conectarse a una red WiFi en modo estación (STA) usando # MicroPython. Este programa puede colocarse en el archivo boot.py en el # sistema de archivos de la Raspberry Pi Pico W. De esta forma al ejecutar # el archivo main.py ya tendremos activa la interfaz inalámbrica. # # importar los módulos de python usados por este programa import network, time, sys # variables que almacenan el nombre de la red inalámrica (SSID) # y la contraseña que usaremos para autenticarnos netssid = 'geek-ejemplos' netpass = 'geekfactorymx' # creamos el objeto que nos permitirá acceder a las funcionalidades # de la interfaz inalámbrica. Usamos el parámetro network.STA_IF para indicar que # la interfaz WiFI se utilizará en módo STATION para conectarnos a un router wlan = network.WLAN(network.STA_IF) # activamos el hardware de la interfaz WiFi wlan.active(True) print(f'Conectando a WiFi {netssid} password {netpass} ',end='') # damos la instrucción de conexión al access point que tenemos configurado wlan.connect(netssid, netpass) # intentar conecter por 30 segundos connectstart = time.time(); # inciamos un ciclo en el que revisamos cada segundo si se logró la conexión while not wlan.isconnected() and time.time() - connectstart < 30: print('.',end='') time.sleep(1) # llamada a print() para saltar a la siguiente linea print() # revisar si estamos conectados e imprimir la configuración IP que le asignó el router # a nuestra tarjeta de desarrollo Raspberry Pi Pico if wlan.isconnected(): print('Conectado a AP WiFi'), print(wlan.ifconfig()) else: print(f'No se puede conectar al AP WiFi {netssid}') # en caso de que no logremos conectarnos podemos esperar unos segundos time.sleep(10) # y posteriormente realizar un "soft reset" para intentarlo de nuevo sys.exit() # o quizá también funcione realizar un "hard reset" # machine.reset() |
Conectarse en modo STAtion a un Access Point con configuración IP manual
En algunos contextos puede ser útil configurar una dirección IP estática en nuestra tarjeta de desarrollo. El siguiente código permite asignar manualmente la configuración de red que utilizaremos para intercambiar datos.
Como se puede observar el código es muy similar al anterior y solamente cambia en una línea en la cual le indicamos la configuración de direccionamiento IP al objeto mediante el cual accedemos a la interfaz inalámbrica.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | # GEEK FACTORY - Dale vuelo a tus proyectos # https://www.geekfactory.mx # # Ejemplo para conectarse a una red WiFi en modo estación (STA) usando # MicroPython. Este programa puede colocarse en el archivo boot.py en el # sistema de archivos de la Raspberry Pi Pico W. De esta forma al ejecutar # el archivo main.py ya tendremos activa la interfaz inalámbrica. # # En este ejemplo nos conectamos al AP utilizando una dirección IP estática. # # importar los módulos de python usados por este programa import network, time, sys # variables que almacenan el nombre de la red inalámrica (SSID) # y la contraseña que usaremos para autenticarnos netssid = 'geek-ejemplos' netpass = 'geekfactorymx' # creamos una tupla para almacenar la configuración manual de red # el orden de los elementos es el siguiente: # dirección IP # mascara de subred # gateway # servidor DNS ipconfig =('192.168.1.5','255.255.255.0','192.168.1.1','8.8.8.8') # creamos el objeto que nos permitirá acceder a las funcionalidades # de la interfaz inalámbrica. Usamos el parámetro network.STA_IF para indicar que # la interfaz WiFI se utilizará en módo STATION para conectarnos a un router wlan = network.WLAN(network.STA_IF) # activamos el hardware de la interfaz WiFi wlan.active(True) print(f'Usando config estática IP: {ipconfig[0]} Mascara: {ipconfig[1]} Gateway: {ipconfig[2]} DNS: {ipconfig[3]}') print(f'Conectando a WiFi {netssid} password {netpass} ',end='') #configurar direccionamiento ip en la interfaz inalámbrica wlan.ifconfig(ipconfig) # damos la instrucción de conexión al access point que tenemos configurado wlan.connect(netssid, netpass) # intentar conecter por 30 segundos connectstart = time.time(); # inciamos un ciclo en el que revisamos cada segundo si se logró la conexión while not wlan.isconnected() and time.time() - connectstart < 30: print('.',end='') time.sleep(1) # llamada a print() para saltar a la siguiente linea print() # revisar si estamos conectados e imprimir la configuración IP que le asignó el router # a nuestra tarjeta de desarrollo Raspberry Pi Pico if wlan.isconnected(): print('Conectado a AP WiFi'), print(wlan.ifconfig()) else: print(f'No se puede conectar al AP WiFi {netssid}') # en caso de que no logremos conectarnos podemos esperar unos segundos time.sleep(10) # y posteriormente realizar un "soft reset" para intentarlo de nuevo sys.exit() # o quizá también funcione realizar un "hard reset" # machine.reset() |
Lecturas recomendadas
- Iniciando con Raspberry Pi Pico W
- Documentación de la clase WLAN
- Instalar MicroPython en Raspberry Pi Pico
Conclusión
- En esta entrada pudimos conocer los modos de funcionamiento del módulo WiFi de la tarjeta de desarrollo Raspberry Pi Pico.
- Aprendimos a conectarnos a una red WiFi usando los parámetros automáticos proporcionados por el servidor DHCP de nuestra red o bien asignando una dirección IP estática en nuestro programa.
- Revisamos como conectarnos tanto a redes con seguridad como a redes abiertas.
- Revisamos algunos de los métodos más importantes de la clase WLAN y dejamos la referencia a la documentación de esta clase que nos permite manipular nuestra interfaz inalámbrica.







