🛠 Faire clignoter la LED embarquée (elle est derrière la puce Wi-Fi !)
Objetivos
Descubrir la Raspberry Pi Pico W (RP2040 de doble núcleo Cortex-M0+ a 133 MHz + chip de radio Infineon CYW43439 Wi-Fi/BT) con el gran clásico: el parpadeo del LED. Pero atención, la Pico W tiene una particularidad única: el LED de usuario no está en un GPIO del RP2040, está conectado al pin WL_GPIO0 del chip Wi-Fi CYW43439. Por lo tanto, el ejemplo blink_simple del SDK no funciona en la Pico W; hay que pasar por el controlador inalámbrico (picow_blink en pico-examples). También aprenderás por qué GP23, GP24, GP25 y GP29 no son GPIO libres en esta placa.
Material
- 1 × Raspberry Pi Pico W (ref. SCO918, o Pico WH con headers soldados) — no una Pico clásica
- 1 × cable micro-USB de datos
- Para la versión C: Pico SDK 2.x con
PICO_BOARD=pico_w; para la versión MicroPython: firmware_picow(incluye el controlador cyw43)
Código completo
// picow_blink.ino-like C SDK — la LED est sur WL_GPIO0 du CYW43439
// CMake : pico_stdlib + pico_cyw43_arch_none (pas besoin du réseau ici)
#include "pico/stdlib.h"
#include "pico/cyw43_arch.h"
int main(void) {
// cyw43_arch_init alimente le CYW43439 (via GP23) et charge son firmware
if (cyw43_arch_init) {
return 1; // impossible d'initialiser la puce radio
}
while (true) {
cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 1); // LED ON (WL_GPIO0)
sleep_ms(250);
cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 0); // LED OFF
sleep_ms(750);
}
}
// Équivalent MicroPython (firmware _picow) :
// from machine import Pin; import time
// led = Pin("LED", Pin.OUT) # alias de la broche pilotée via cyw43
// >
// # (souvent cité comme GP23) n'est pas confirmé dans la quickref rp2.
Verificación esperada
El LED verde parpadea: encendido 250 ms, apagado 750 ms. Si hubieras escrito el blink «Pico clásica» con gpio_init(25), nada parpadea — y con razón: en la Pico W, GP25 está consumida internamente (chip-select del SPI que controla el CYW43439) y el LED está en otro lugar. ¡Esta es LA lección de este tutorial!
Errores frecuentes
- Reutilizar código de una Pico clásica en GP25: en la Pico W, GP23/GP24/GP25/GP29 están reservados por la parte inalámbrica (power-on, SPI data/IRQ, SPI CS, SPI CLK) — la hoja de datos los excluye de los GPIO de usuario.
- Compilar para la placa equivocada: olvidar
PICO_BOARD=pico_w(C SDK) o usar un firmware MicroPython no_picow(sin el controlador cyw43, el LED y el Wi-Fi son invisibles). - Olvidar
cyw43_arch_init: sin la inicialización del controlador,cyw43_arch_gpio_putno hace nada — el LED depende de un chip de radio apagado. - Creer que la placa está defectuosa porque
blink_simpleno parpadea: es un comportamiento documentado, el ejemplo oficial para la Pico W espicow_blink. - Tensiones: toda la lógica funciona a 3,3 V no tolerantes a 5 V, igual que en la Pico clásica.
Otros tutoriales para esta placa
- Se connecter à un réseau Wi-Fi (station, WPA2/WPA3)
- Bouton et potentiomètre sans marcher sur le sans-fil (GPIO libres & ADC)
- Servir une page web depuis la Pico W (socket TCP + HTTP)
- Client HTTP : consommer une API depuis la Pico W
- Heure exacte via NTP : l'horloge temps réel des projets connectés
- Client MQTT : télémétrie IoT légère sur la Pico W
Ejemplos de código para esta placa
clignotante.pyPythonbouton-interruption.pyPythonpwm-servo.pyPythonlecture-adc.pyPythonneopixel.pyPythonoled-i2c.pyPython