🛠 Se connecter au Wi-Fi 2,4 GHz avec le CYW43
Objetivos
Primer paso inalámbrico de la Pico 2 W: inicializar el chip Infineon CYW43439 (Wi-Fi 4, solo 2,4 GHz, compatible con WPA3), unirse a una red en modo estación, obtener la dirección IP mediante DHCP y leerla desde el programa. Esta es la base común para todos los tutoriales de red de esta tarjeta.
Material
- Pico 2 W (antena despejada, sin carcasa metálica)
- Punto de acceso de 2,4 GHz (el CYW43 no admite 5 GHz)
- pico-sdk con pico_cyw43_arch_lwip_threadbackground, o MicroPython >= v1.25.0
Código completo
// main.c - lien : pico_stdlib pico_cyw43_arch_lwip_threadbackground
#include "pico/stdlib.h"
#include "pico/cyw43_arch.h"
#include "lwip/ip4_addr.h"
#include "lwip/netif.h"
#define WIFI_SSID "mon_ssid"
#define WIFI_PASS "mon_mot_de_passe"
int main(void) {
stdio_init_all;
if (cyw43_arch_init) { printf("cyw43 init failed\n"); return 1; }
cyw43_arch_enable_sta_mode;
if (cyw43_arch_wifi_connect_timeout_ms(
WIFI_SSID, WIFI_PASS, CYW43_AUTH_WPA2_AES_PSK, 30000)) {
printf("connexion Wi-Fi echouee\n");
return 1;
}
printf("IP : %s\n", ip4addr_ntoa(netif_ip4_addr(netif_default)));
while (true) { sleep_ms(1000); } // lwIP tourne dans le thread cyw43
}
Equivalente en MicroPython: import network; wlan = network.WLAN; wlan.active(True); wlan.connect('ssid', 'pass') y luego wlan.ipconfig('addr4').
Verificación esperada
La consola muestra la dirección IP obtenida (típicamente 192.168.x.x) después de unos segundos; la tarjeta es accesible mediante ping desde la red local. En MicroPython, wlan.isconnected devuelve True.
Errores frecuentes
- Red de 5 GHz o WPA3 empresarial: el CYW43439 solo ve la banda de 2,4 GHz (802.11n); WPA2/WPA3 personal es compatible desde MicroPython 1.25.
- Olvidar cyw43_arch_enable_sta_mode después de cyw43_arch_init: la conexión falla sistemáticamente.
- Llamar a lwIP fuera del hilo sin cyw43_arch_lwip_begin/end (o sin cyw43_arch_poll en modo poll).
- Antena cubierta por una carcasa metálica: la zona de guarda de 14 x 9 mm debe permanecer completamente despejada.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-interruption.pyPythonpwm-servo.pyPythonlecture-adc.pyPythonneopixel.pyPythonoled-i2c.pyPython