🛠 Se connecter au Wi-Fi 2,4 GHz avec le CYW43
Objectifs
Premier pas sans-fil de la Pico 2 W : initialiser la puce Infineon CYW43439 (Wi-Fi 4, 2,4 GHz uniquement, WPA3 accepte), rejoindre un réseau en mode station, récupérer l'adresse IP par DHCP et la lire depuis le programme. C'est la base commune a tous les tutoriels réseau de cette carte.
Matériel
- Pico 2 W (antenne degagee, pas de boitier metal)
- Point d'acces 2,4 GHz (le 5 GHz n'est pas supporte par le CYW43)
- pico-sdk avec pico_cyw43_arch_lwip_threadbackground, ou MicroPython >= v1.25.0
Code complet
// 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
}
Equivalent MicroPython : import network; wlan = network.WLAN; wlan.active(True); wlan.connect('ssid', 'pass') puis wlan.ipconfig('addr4').
Vérification attendue
La console affiche l'adresse IP obtenue (typiquement 192.168.x.x) après quelques secondes ; la carte est pingable depuis le réseau local. En MicroPython, wlan.isconnected renvoie True.
Erreurs fréquentes
- Reseau 5 GHz ou WPA3 d'entreprise : le CYW43439 ne voit que le 2,4 GHz (802.11n) ; WPA2/WPA3 personnel est accepte depuis MicroPython 1.25.
- Oublier cyw43_arch_enable_sta_mode après cyw43_arch_init : la connexion échoue systématiquement.
- Appeler du lwIP hors du thread sans cyw43_arch_lwip_begin/end (ou sans cyw43_arch_poll en mode poll).
- Antenne noyee dans un boitier metal : la zone de garde de 14 x 9 mm doit rester completement degagee.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-interruption.pyPythonpwm-servo.pyPythonlecture-adc.pyPythonneopixel.pyPythonoled-i2c.pyPython