Si ya tienes Home Assistant en casa, sabes que cada sensor nuevo suele significar otra app, otra nube y otra cuenta. Con una Raspberry Pi Pico 2 W y ESPHome eso desaparece: describes en un archivo YAML lo que la placa mide y lo que controla, ESPHome compila la firmware y Home Assistant la reconoce sola en tu red local. No escribes una línea de C ni de Python.
En esta guía vas a dejar una Pico 2 W conectada a Home Assistant, leyendo la temperatura interna del chip, la señal WiFi y el tiempo encendida, y vas a encender y apagar su LED desde el panel. También vas a entender por qué la temperatura del chip marca casi 20 grados de más, qué puerto usa la Pico para las actualizaciones por WiFi y cómo dar el salto siguiente: un sensor BME280 de verdad y un relé en el mismo YAML.
Por qué ESPHome y no MicroPython
La Pico se puede conectar a Home Assistant con MicroPython, pero en ese caso todo el trabajo de fondo queda de tu lado: conectarse al WiFi, reconectarse cuando se cae, programar un cliente MQTT y publicar los mensajes de descubrimiento para que Home Assistant cree las entidades. Son decenas de líneas que no tienen nada que ver con lo que quieres medir.
ESPHome resuelve todo eso. Tú declaras qué hay conectado y obtienes un dispositivo que habla con Home Assistant por la API nativa (cifrada, sin broker MQTT de por medio) y que acepta actualizaciones por WiFi.
La regla práctica:
- ESPHome, cuando la Pico existe para alimentar a Home Assistant: sensores, relés, botones, pantallas.
- MicroPython, cuando la Pico tiene que ejecutar su propia lógica independiente o cuando el objetivo es aprender a programar.
No conviven: la firmware de ESPHome reemplaza a MicroPython completo. Si quieres volver, entras en modo BOOTSEL y copias de nuevo el archivo de MicroPython.
Qué placa sirve (y cuál no)
ESPHome nació para el ESP8266 y el ESP32, pero hoy soporta los chips de Raspberry Pi, RP2040 y RP2350, a través de la plataforma rp2. Para Home Assistant necesitas WiFi, así que la placa tiene que ser un modelo W:
- Pico 2 W (RP2350 con WiFi): la que se usa en esta guía.
- Pico W (RP2040 con WiFi): funciona igual, con menos memoria.
- Pico y Pico 2 sin W: no tienen radio. ESPHome compila para ellas, pero no se conectan a la red.
Hay un caso trampa: algunos clones que dicen "Pico W" en el nombre usan un chip de radio de Espressif en lugar del Infineon CYW43439 de la placa oficial. ESPHome no los soporta. Si compraste una placa genérica y el WiFi no levanta, revisa qué chip trae al lado del RP2040.
Si después vas a pinchar sensores en una protoboard, conviene la versión Pico 2 WH, que viene con los pines soldados.
Lo que necesitas
- Una Raspberry Pi Pico 2 W (o una Pico W).
- Un cable micro USB que transmita datos, no solo carga. Se usa una sola vez, para la primera instalación.
- Home Assistant con la app ESPHome Device Builder instalada desde Ajustes → Apps. Después de instalarla, activa "Mostrar en la barra lateral".
- Una red WiFi de 2,4 GHz a la que también llegue Home Assistant. La Pico no ve redes de 5 GHz.
Configuración: el dispositivo en el Device Builder
Crear el dispositivo
Abre ESPHome Device Builder desde la barra lateral y presiona Crear dispositivo, abajo a la derecha. En el diálogo para elegir la placa, busca "Pico": ESPHome muestra la Raspberry Pi Pico 2W con RP2350 y WiFi, la Pico W con RP2040 y algunas placas de otros fabricantes.

Después le pones un nombre. Elígelo con cuidado, porque se usa en dos lugares: es el nombre que vas a ver en Home Assistant y de él sale el nombre de host en la red. En el original el equipo de prueba se llama RPI-PICO2W-TEST, y ESPHome generó el host rpi-pico2w-test. Algo como sensor-living o pico-garaje te va a ahorrar confusiones cuando tengas cinco.

Al terminar, el Device Builder escribe la configuración base. Las credenciales del WiFi no van escritas en el archivo: se toman de los secretos wifi_ssid y wifi_password que tengas guardados en ESPHome. Así puedes compartir el YAML sin regalar la clave de tu red.
Revisar la configuración base
Con Editar se abre el editor: a la izquierda el navegador de dispositivos y a la derecha el YAML. La base ya trae placa, clave de la API, OTA y WiFi. Fíjate en el bloque rp2: con board: rpipico2w.

Si sigues una guía más antigua vas a ver rp2040: en ese lugar. Desde ESPHome 2026.7 la plataforma se llama rp2, porque cubre los dos chips. La clave vieja todavía funciona, pero está anunciado que deja de existir en 2027, así que usa la nueva desde ya.
Agregar sensores y LED
Debajo de lo que generó el Device Builder agregas los sensores y la LED. No toques la clave de la API ni las contraseñas que ya están en tu archivo:
sensor:
# Chip temperature (RP2350 internal sensor), raw value
- platform: internal_temperature
name: "Chiptemperatur roh"
update_interval: 60s
# Same sensor, calibrated against a thermometer
- platform: internal_temperature
name: "Chiptemperatur"
update_interval: 60s
filters:
- offset: -20.0
- sliding_window_moving_average:
window_size: 5
send_every: 1
- platform: wifi_signal
name: "WLAN-Signal"
update_interval: 60s
- platform: uptime
name: "Laufzeit"
output:
- platform: gpio
pin: LED # onboard LED, driven via the wireless chip on the W models
id: onboard_led
light:
- platform: binary
name: "Onboard-LED"
output: onboard_led
Los valores de name vienen del tutorial original en alemán: Chiptemperatur roh es la temperatura del chip en bruto, WLAN-Signal la señal WiFi y Laufzeit el tiempo encendida. Puedes cambiarlos por nombres en español antes de compilar; es el texto que Home Assistant muestra en el panel.
Qué hace cada bloque:
internal_temperaturelee el sensor que trae el propio chip. ESPHome lo soporta en RP2040 y RP2350. Aparece dos veces a propósito: una con el valor crudo y otra corregida con unoffsety un promedio móvil de 5 muestras (sliding_window_moving_average), que suaviza los saltos de lectura. Más abajo está por qué hace falta la corrección.wifi_signalinforma la intensidad de la señal en dBm. Sirve para decidir dónde instalar la placa: sobre -67 dBm la conexión es estable; bajo -80 dBm vas a tener cortes.uptimecuenta los segundos desde el último arranque. Si el valor vuelve a cero, la Pico se reinició, y eso suele delatar una fuente de alimentación débil.pin: LEDes un pin con nombre. En la Pico W y la Pico 2 W el LED no cuelga de un GPIO normal sino del chip de radio, y ESPHome lo maneja internamente como el pin 64. Solo funciona como salida.

Puesta en marcha
Primera instalación por USB
La primera vez la firmware entra por cable; después, todo es por WiFi. En el panel del Device Builder, presiona el ícono de instalar del dispositivo y, en las opciones avanzadas, elige Descargar el binario de la firmware. ESPHome compila y, para la Pico, entrega un archivo .uf2.

Para copiarlo:
- Mantén presionado el botón BOOTSEL y conecta la Pico al computador.
- Suelta el botón. Aparece una unidad llamada
RP2350(en la Pico W se llamaRPI-RP2). - Arrastra el
.uf2a esa unidad.
La unidad desaparece a los pocos segundos: la Pico se reinicia con ESPHome y se conecta a tu WiFi. Poco después el Device Builder la muestra como Online.

Una advertencia antes de flashear: si la Pico tenía MicroPython, el main.py y el resto de tus archivos se pierden. Respáldalos antes desde Thonny.
Agregarla a Home Assistant
Con la Pico en la red, Home Assistant normalmente la detecta solo y la muestra en Ajustes → Dispositivos y servicios como un dispositivo ESPHome nuevo. Basta con presionar Agregar.
Si no aparece, la agregas a mano: Agregar integración → ESPHome, con la IP de la Pico como host y el puerto 6053, que es el de la API nativa.

¿Te va a pedir la clave de la API? Depende de dónde corre ESPHome. Si el Device Builder es una app dentro de la misma instancia de Home Assistant, Home Assistant toma la clave por su cuenta y no pregunta nada. Si ESPHome corre aparte, por ejemplo en Docker en otro computador, el diálogo la pide: está en el YAML, bajo api: y encryption:.

Ver los datos y encender la LED
En Ajustes → Dispositivos y servicios → ESPHome encuentras la Pico con sus entidades. Home Assistant la identifica como rpipico2w de Raspberry Pi y muestra la versión de ESPHome de la firmware.
Después de once minutos encendida, la placa del autor original entregó esto:
| Entidad | Valor |
|---|---|
| Temperatura del chip, cruda | 41,7 °C |
| Temperatura del chip, corregida (todavía con offset de -13) | 28,6 °C |
| Señal WiFi | -38 dBm |
| Tiempo encendida | 661 s |
| LED de la placa | encendido y apagado |
El interruptor de la LED, en la sección de control, prende la LED verde junto al conector USB. Es la prueba más rápida de que la comunicación funciona en los dos sentidos: la Pico manda datos y recibe órdenes.

Vas a notar que todos los sensores quedan en Diagnóstico. ESPHome clasifica así la temperatura del chip, la señal WiFi y el tiempo encendida porque son datos sobre el propio equipo. Si quieres usar uno en el panel principal o en una automatización, agrégale la línea entity_category: "" a ese sensor: según la documentación de ESPHome, eso le quita la categoría por defecto.
Actualizaciones por WiFi
De aquí en adelante, cada cambio al YAML se instala con Instalar → Por red. En la Pico 2 W del original, compilar tomó unos 19 segundos y la transferencia va cifrada.
Un dato que importa si tienes la red segmentada: la Pico recibe las actualizaciones OTA por el puerto 2040, no por el 3232 que usa el ESP32. La API nativa, en cambio, va por el 6053 en ambos. Si hay un firewall entre Home Assistant y la placa, abre los dos.

Con cuatro sensores y la LED, la firmware ocupó el 15,4 % de la RAM y el 15,3 % de la flash. Queda espacio de sobra para más sensores, una pantalla o automatizaciones que corran en la propia Pico.
Por qué la temperatura del chip marca de más
Con unos 22 °C en la habitación, el valor crudo bajo ESPHome quedó casi 20 grados por encima. El día anterior, la misma placa con MicroPython marcaba 35,5 °C con 22,5 °C de ambiente: 13 grados de diferencia. Hay tres razones que se suman:
- Mide el silicio, no el aire. El sensor está dentro del RP2350 y registra la temperatura del chip.
- El WiFi calienta. Con ESPHome, la radio está activa todo el tiempo, y el chip de radio está a milímetros del procesador en la misma placa. Con MicroPython, la radio pasaba más tiempo inactiva. Eso explica que el desfase suba de 13 a 20 grados con la misma placa.
- El ADC no tiene referencia propia. El sensor entrega un voltaje que el conversor analógico digital compara con la alimentación de 3,3 V. Si esa alimentación varía unos milivoltios, la lectura se mueve con ella.
Por eso el offset vale solo para tu placa y tu firmware. Para calibrarlo, deja la Pico funcionando media hora, compara el valor crudo con un termómetro y anota la diferencia. Y si lo que quieres es la temperatura de la habitación, necesitas un sensor externo.
Solución de problemas
| Síntoma | Causa probable | Qué hacer |
|---|---|---|
| La validación falla en el WiFi | Elegiste una placa sin radio | rpipico y rpipico2 no tienen WiFi; usa rpipicow o rpipico2w |
| Clon "Pico W" que no conecta | Usa un chip de radio de Espressif en lugar del CYW43439 | ESPHome no lo soporta; usa una placa oficial |
| No se conecta después de flashear | Red de solo 5 GHz o error de tipeo en los secretos | Conéctala por USB, abre web.esphome.io en Chrome o Edge y revisa los Logs |
| Funciona, pero el Device Builder la muestra offline | mDNS (nombre.local) no cruza entre redes: WiFi de invitados, VLAN o VPN |
Agrega use_address: 192.168.x.y con la IP fija de la Pico bajo wifi: y súmala a Home Assistant por IP |
| No aparece la unidad USB | Cable solo de carga o BOOTSEL no presionado | Cambia el cable; con una firmware ya cargada, BOOTSEL debe estar presionado al conectar |
uptime vuelve a cero cada tanto |
Reinicios por alimentación débil | Prueba otra fuente o cable USB más corto |
El caso de mDNS le pasó al autor original: su placa de pruebas estaba detrás de un router de viaje con VPN. La solución con use_address funciona siempre que Home Assistant tenga permiso para llegar a esa red.
Variantes y mejoras
- Un sensor de ambiente de verdad: BME280 por I2C. Es el siguiente paso natural después de ver el error del sensor interno. El BME280 mide temperatura, humedad y presión, y se conecta con cuatro cables: 3V3, GND, SDA y SCL. En la Pico, el bus I2C0 por defecto está en GP4 (SDA) y GP5 (SCL). En el YAML agregas un bloque
i2c:con esos pines y, dentro desensor:, una entradaplatform: bme280_i2ccon sus tres mediciones. Aléjalo de la placa con unos 10 cm de cable, o el calor del WiFi que viste antes también le va a subir la lectura. - Un relé en el mismo YAML. Con un
outputde tipogpioen un pin libre (por ejemplo GP15) y unswitchencima, Home Assistant ve un interruptor más. Ojo con la lógica: la Pico entrega 3,3 V, así que usa un módulo de relé que se active con 3,3 V o uno con optoacoplador alimentado a 5 V desde el pin VBUS. Para cargas de 220 V, la caja y el cableado tienen que ser los de una instalación eléctrica, no los de una protoboard. - Un botón que dispara automatizaciones. Un pulsador entre un GPIO y GND, con el pull up interno activado, se declara como
binary_sensory sirve como interruptor de escena. En placas Pico 2 con la revisión A2 del chip, revisa la errata E9 del RP2350: conectar el botón a GND con pull up interno, como en este ejemplo, es la forma que la evita.
Personalización para Chile
En Chile consigues lo necesario para este montaje en MechatronicStore. Busca en el catálogo:
- Raspberry Pi Pico 2 W: la placa de esta guía, con RP2350 y el chip de radio CYW43439 que ESPHome soporta.
- Raspberry Pi Pico W: alternativa con RP2040, igual de compatible con ESPHome.
- Cable USB a micro USB de datos: para la primera instalación de la firmware.
- Raspberry Pi 4 o Raspberry Pi 5: si todavía no tienes dónde correr Home Assistant, cualquiera de las dos lo mueve sin problema.
Para la variante con sensor externo, busca también un sensor BME280 y un módulo relé de 1 canal. Si en el original usan el Pico 2 WH con pines soldados, la Pico 2 W con una tira de pines macho soldada cumple la misma función.
Recursos
- Tutorial original (alemán): Raspberry Pi Pico mit ESPHome: Pico 2 W in Home Assistant, de Philipp Schweizer en raspberry.tips. Esta versión está basada en él.
- Documentación de la plataforma rp2 en ESPHome: esphome.io/components/rp2040
- Sensor de temperatura interna: esphome.io/components/sensor/internal_temperature
- Actualizaciones OTA en ESPHome: esphome.io/components/ota
- Instalador y visor de logs por USB: web.esphome.io
Versión chilena con componentes que consigues en Chile.




