Por qué el módulo relé es la pieza puente
La Raspberry Pi Pico (igual que el ESP32, Arduino, etc.) trabaja con 3.3 V y unos pocos miliamperes por GPIO. Conectarle directamente una lámpara, una bomba de agua o cualquier cosa que enchufes al muro es directamente un puente al cementerio del microcontrolador. El relé es el componente que rompe esa brecha eléctrica: el lado de bajo voltaje recibe la orden del GPIO (3.3 V, microamperes), y eso mueve un electroimán que cierra/abre un contacto físico capaz de manejar corriente alta. 10 A a 250 V AC, típicamente.
Si dominaste prender un LED con la Pico (Pin.value(1)), ya sabes programar un relé. El control desde código es idéntico: HIGH para activar, LOW para desactivar. La complejidad real está en el circuito de potencia y la seguridad eléctrica del lado caliente del relé, no en el firmware.
Lo que vas a saber al final:
- Cómo leer el pinout de un módulo relé típico (1, 2, 4 u 8 canales)
- La diferencia entre conexión Normally Open (NO) y Normally Closed (NC), y cuándo usar cada una
- Cómo cablear el módulo a la Pi Pico y a una carga DC de 12 V
- Cómo controlar el relé con MicroPython desde un loop básico
- Cómo extender el proyecto a un sistema de riego automatizado con MQTT (sección de variantes)

Anatomía del módulo relé
Un módulo relé comercial chino (que es lo que vas a encontrar en cualquier tienda de electrónica) ya integra todo lo necesario: el relé mecánico, un transistor de driver, un optoacoplador para aislar el microcontrolador, un LED indicador y diodos flyback para proteger contra el back EMF del electroimán. Tú solo tienes que conectar las señales correctas.

Los módulos vienen en 1, 2, 4, 8 o hasta 16 canales. el número de relés independientes que puedes controlar. Para este tutorial nos basta uno de 1 o 2 canales. Si vas a controlar varias luces o varios circuitos por separado, sumas canales.
Lado de alta tensión: NO, COM, NC

Cada canal del relé tiene tres bornes de tornillo:
- COM (Común): el borne central. Aquí llega la corriente que querés conmutar.
- NC (Normally Closed): por defecto está conectado al COM. Cuando le mandás señal HIGH al IN, se DESCONECTA del COM. Útil para circuitos que querés que estén encendidos por defecto (ej. luz de seguridad nocturna que se apague solo cuando algo activa el relé).
- NO (Normally Open): por defecto está DESCONECTADO del COM. Cuando le mandás señal HIGH (o LOW, según el módulo), se CONECTA. Es la configuración típica para "encender algo on demand": bomba de agua, lámpara, ventilador.
En este tutorial usamos NO porque queremos que la lámpara esté apagada por defecto y solo se prenda cuando la Pico decida.
Lado de baja tensión: pines de control

- VCC: alimentación del módulo. Típicamente 5 V (el
VBUSde la Pico al USB), aunque hay módulos 3.3 V (3V3(OUT)de la Pico). - GND: tierra común con la Pico.
- IN1, IN2, ...: una entrada por canal. Aquí va el GPIO de la Pico que controla ese relé.
Lógica de los pines IN: la mayoría de los módulos comerciales son "active LOW" (el relé se activa con señal LOW). Otros son "active HIGH". Lo descubres rápido: si al hacer Pin.value(1) el LED del módulo NO se enciende y al Pin.value(0) sí, es active LOW. invierte la lógica en tu código.
Configuración del jumper VCC/JD VCC

Los módulos buenos tienen un jumper (capucha amarilla normalmente) que une los pines VCC y JD VCC. Con el jumper puesto, el electroimán se alimenta del mismo VCC que la lógica. más simple, pero NO hay aislamiento galvánico real entre la Pico y el relé.
Si lo sacas y alimentas JD VCC con una fuente independiente (otra fuente 5 V dedicada), el optoacoplador aísla físicamente la Pico del circuito del electroimán. Recomendado para cualquier proyecto que controle red eléctrica.
Hardware necesario
- 1× Raspberry Pi Pico (Pico W, Pico 2 o Pico 2 W. todas funcionan)
- 1× Módulo Relé 5 V de 1 o 2 canales con optoacoplador
- 1× Lámpara LED 12 V o bomba DC 12 V (la carga de prueba)
- 1× Fuente DC 12 V o adaptador a jack DC para alimentar la carga
- Cables Dupont (jumpers macho hembra) para conectar Pico ↔ módulo relé
- Cable Micro USB para programar la Pico desde el PC
⚠️ Aviso de seguridad: si vas a controlar 220 V AC (la red eléctrica chilena), hazlo bajo supervisión de alguien con experiencia eléctrica. Para el tutorial usamos 12 V DC porque es educacionalmente más seguro y muestra el mismo principio. NO conectes ni desconectes nada del lado de alta tensión con el circuito energizado.
Paso 1: Firmware MicroPython en la Pico
Necesitas tener MicroPython flasheado en la Pico y Thonny IDE instalado en tu PC. Si nunca lo hiciste:
- Descarga el firmware MicroPython más reciente para tu modelo desde micropython.org/download/RPI_PICO (o Pico 2 si corresponde).
- Aprieta el botón BOOTSEL de la Pico mientras la conectas al USB.
- Aparece como una pendrive llamada RPI RP2. Arrastra el archivo
.uf2descargado adentro. - La Pico se reinicia con MicroPython corriendo.
- Abre Thonny → menú Run → Configure Interpreter → "MicroPython (Raspberry Pi Pico)" → puerto USB.
Paso 2: Cableado

Lado de baja tensión (Pico → módulo relé):
- Relé
IN1→ PicoGPIO 0 - Relé
GND→ PicoGND - Relé
VCC→ PicoVBUS(5 V cuando la Pico está enchufada por USB)
Si tu módulo es 3.3 V, conecta VCC al pin 3V3(OUT) de la Pico en vez de VBUS.
Lado de alta tensión (carga + fuente 12 V):

- Borne (+) del jack DC 12 V → relé
COM - Relé
NO→ terminal 1 de la lámpara - Terminal 2 de la lámpara → borne (-) del jack DC 12 V
Resultado: cuando el relé está abierto (LOW si es active LOW), no fluye corriente. Cuando el relé cierra el contacto NO COM, la lámpara prende.
Paso 3: Código MicroPython
Este script enciende el relé 10 segundos, lo apaga 10 segundos y repite. Es la versión mínima para probar que el hardware funciona; en la sección de variantes lo extendemos a algo útil de verdad.
# Rui Santos & Sara Santos - Random Nerd Tutorials
# Complete project details at https://RandomNerdTutorials.com/raspberry-pi-pico-relay-micropython/
from machine import Pin
from time import sleep
relay = Pin(0, Pin.OUT)
while True:
relay.value(1)
sleep(10)
relay.value(0)
sleep(10)
Sube el archivo a la Pico (Save As → MicroPython device → main.py) y reinicia. La lámpara debería empezar a parpadear cada 10 segundos.
Qué hace el código línea a línea
from machine import Pin
from time import sleep
machine es el módulo de MicroPython para hablar con periféricos del SoC. Pin controla los GPIOs. sleep pausa la ejecución.
relay = Pin(0, Pin.OUT)
Configuramos GPIO 0 como salida. Esa misma línea controlando un LED en vez del relé sería idéntica. el código no se entera de qué hay del otro lado.
while True:
relay.value(1) # activa el relé (o lo desactiva si tu módulo es active LOW)
sleep(10)
relay.value(0)
sleep(10)
Si el LED del módulo prende cuando value(1) y apaga cuando value(0), tu relé es active HIGH y el código funciona literal. Si es al revés, invierte (relay.value(0) para activar, relay.value(1) para apagar).
Variantes y mejoras
El loop básico cumple para validar el hardware, pero un relé que parpadea cada 10 s no resuelve nada útil. Estas extensiones convierten el proyecto en algo que puedes dejar montado en serio:
Sistema de riego automatizado con timer + bomba (re angulación principal de este tutorial): reemplaza la lámpara 12 V por una bomba sumergible 12 V dentro de un balde con agua, dirigida a una maceta. Usa un timer real con el RTC interno de la Pico para activar la bomba 5 minutos cada mañana a las 7:00. por ejemplo. Combinas el relé con un sensor de humedad de suelo capacitivo y solo riegas si la humedad está bajo cierto umbral.
Pseudocódigo:
Pythonif humedad_suelo() < UMBRAL_SECO: relay.value(1) sleep(300) # 5 minutos relay.value(0)Publicación por MQTT a Home Assistant: usando la Pico W o Pico 2 W (con WiFi nativo), publica el estado del relé a un broker MQTT. Te quedan dos cosas: control remoto desde Home Assistant ("¿está prendida la luz del jardín ahora mismo?") y triggers automáticos ("cuando llueve afuera, no riegues mañana"). La librería
umqtt.simpleviene con MicroPython.Pulsador físico local + control remoto: agrega un botón push en GPIO 1 para que puedas activar/desactivar el relé manualmente sin pasar por el celular. Con esto el sistema sigue siendo usable aunque caiga el WiFi.
Alimentación 100% solar: para uso en jardín o terraza sin enchufe cercano, un panel solar 6 V 1 W + módulo TP4056 + batería 18650 alimenta la Pico W y el módulo relé. La bomba 12 V necesita su propia fuente o batería más grande.
Personalización para Chile
Componentes disponibles en MechatronicStore (busca por estos nombres):
- Raspberry Pi Pico W o Raspberry Pi Pico 2 W. recomiendo W (con WiFi) para que después puedas conectarlo a Home Assistant o MQTT
- Módulo Relé 5V de 2 canales con optoacoplador. el dual te deja extender a una segunda salida sin volver a comprar nada
- Cable USB-A a Micro USB. para programar la Pico
- Cables Dupont macho hembra 20cm. para Pico ↔ módulo relé
- Bornera de 2 pines 5mm o jack DC hembra. para conectar la fuente 12 V de forma prolija
- Protoboard 830 puntos. opcional, para prototipar antes de soldar en perma protoboard
No vendido en catálogo (consíguelo aparte): fuente DC 12 V (en electrónica casera basta una vieja fuente de router) y la lámpara LED 12 V o bomba 12 V según tu caso.
Equivalencias respecto al tutorial original: Random Nerd usa la Pi Pico básica (sin WiFi). Para los upgrades de MQTT/Home Assistant que sugerimos en variantes, vas a querer Pico W o Pico 2 W. la diferencia de costo es mínima y vale la pena.
Recursos
- Tutorial original: Raspberry Pi Pico with Relay Module (MicroPython) (Random Nerd Tutorials)
- Pinout y guía GPIOs Pi Pico: Raspberry Pi Pico and Pico W Pinout Guide
- Firmware MicroPython para Pico: micropython.org/download/RPI_PICO
- Thonny IDE: thonny.org
- Librería umqtt.simple (para variante MQTT): docs.micropython.org/en/latest/library/umqtt.simple.html
Versión chilena con componentes en stock local en MechatronicStore, basada en el tutorial original de Random Nerd Tutorials.




