Un relé permite que un Arduino o un ESP32 encienda una lámpara, una bomba o un calefactor que funcionan a otra tensión, incluso a 230 V. El problema es que no se puede conectar directamente a un pin y que los módulos baratos tienen detalles que confunden a casi todo el mundo. Aquí verás cómo funciona por dentro, cómo conectarlo bien y qué precauciones tomar.
En resumen
- La bobina de un relé de 5 V consume del orden de 70 mA: hace falta un transistor y un diodo flyback.
- Casi todos los módulos con optoacoplador son activos a nivel bajo:
LOWactiva el relé.- Con un ESP32 a 3,3 V, un módulo pensado para 5 V puede no apagarse; usa un transistor propio o un módulo compatible con 3,3 V.
Qué es un relé y cómo funciona
Un relé electromecánico es un interruptor movido por un electroimán. Tiene dos partes aisladas entre sí:
- La bobina: al pasar corriente crea un campo magnético que atrae una pieza metálica (la armadura).
- Los contactos: la armadura mueve una lámina que cierra o abre el circuito de la carga.
Como la bobina y los contactos no están unidos eléctricamente, una señal de 5 V puede gobernar un circuito de 12 V, 24 V o de red. Ese aislamiento es la gracia del relé.
Contactos COM, NA y NC
Los relés de los módulos para Arduino suelen ser de tipo SPDT (un circuito, dos posiciones) y tienen tres terminales de salida:
| Terminal | Nombre | Estado sin alimentar la bobina | Estado con la bobina activada |
|---|---|---|---|
| COM | Común | — | — |
| NA (NO) | Normalmente abierto | Desconectado de COM | Conectado a COM |
| NC | Normalmente cerrado | Conectado a COM | Desconectado de COM |
La regla práctica: si quieres que la carga esté apagada cuando el microcontrolador está apagado o se reinicia, usa COM y NA. NC solo tiene sentido cuando la carga debe funcionar por defecto y el relé sirve para cortarla.
Por qué no se conecta directamente a un pin
Un relé típico de 5 V para módulos tiene una bobina de unos 70 Ω, así que consume alrededor de 70 mA (5 V / 70 Ω). Comprueba el valor en la hoja de datos de tu modelo, pero rara vez baja de 50 mA.
En el Arduino Uno, cada pin tiene un máximo absoluto de 40 mA y lo recomendable es no pasar de 20 mA. El ESP32 tampoco está pensado para alimentar cargas de ese tamaño, y además trabaja a 3,3 V, insuficiente para una bobina de 5 V.
Hay un segundo problema: la bobina es una inductancia. Cuando cortas su corriente, genera un pico de tensión inversa que puede superar con facilidad decenas de voltios y destruir el pin o el transistor que la controla.
Conexión con transistor y diodo flyback
Si usas un relé suelto (sin módulo), el circuito mínimo es un transistor NPN en el lado bajo y un diodo en paralelo con la bobina:
+5 V ───────┬──────────────┐
│ │
[BOBINA] diodo 1N4007
│ (cátodo a +5 V)
├──────────────┘
│
colector
pin ─[R]─ base (NPN: 2N2222, BC337…)
emisor
│
GND ─────────┴──── GND común con Arduino/ESP32

Cálculo de la resistencia de base
Para que el transistor trabaje en saturación se usa una ganancia forzada de 10: la corriente de base será una décima parte de la corriente de la bobina.
- Corriente de bobina: 70 mA, por tanto corriente de base de 7 mA.
- Con Arduino a 5 V: R = (5 − 0,7) / 0,007 ≈ 614 Ω. Usa 560 Ω.
- Con ESP32 a 3,3 V: R = (3,3 − 0,7) / 0,007 ≈ 371 Ω. Usa 330 Ω.
La bobina sigue alimentándose a 5 V; el ESP32 solo controla la base. Por eso este montaje funciona igual de bien con 3,3 V. El BC547 admite 100 mA de colector, muy justo para 70 mA; un 2N2222 o un BC337 dan más margen. Si quieres repasar el cálculo con más detalle, está en la guía del transistor como interruptor.
El diodo de rueda libre (flyback)
El diodo se coloca en paralelo con la bobina y en inversa: cátodo (la banda) hacia +5 V, ánodo hacia el colector. En funcionamiento normal no conduce. Al apagar, la corriente de la bobina circula por él y el pico desaparece. Un 1N4007 o un 1N4148 sirven para relés pequeños.
Módulos de relé con optoacoplador
Los módulos de 1, 2, 4 u 8 canales ya incluyen transistor, diodo y LED indicador. Muchos añaden un optoacoplador (un LED y un fototransistor en el mismo encapsulado) entre el pin IN y el transistor.
Lógica activa a nivel bajo
En la mayoría de estos módulos, el LED del optoacoplador va de VCC al pin IN. Circula corriente cuando IN está a 0 V, así que:
digitalWrite(pin, LOW)→ relé activado.digitalWrite(pin, HIGH)→ relé desactivado.
Para evitar un chasquido al arrancar, escribe el nivel de reposo antes de configurar el pin como salida:
const int PIN_RELE = 7;
void setup() {
digitalWrite(PIN_RELE, HIGH); // reposo: relé apagado
pinMode(PIN_RELE, OUTPUT);
}
void loop() {
digitalWrite(PIN_RELE, LOW); // activa el relé
delay(2000);
digitalWrite(PIN_RELE, HIGH); // lo desactiva
delay(2000);
}
El jumper JD-VCC
Muchos módulos tienen tres pines junto al conector: GND, VCC y JD-VCC, con un jumper que une VCC y JD-VCC.
- Con el jumper puesto: el optoacoplador y las bobinas comparten alimentación. Es cómodo, pero no hay aislamiento real.
- Sin el jumper:
VCC(desde el Arduino) alimenta solo el LED del optoacoplador, yJD-VCCcon suGNDreciben una fuente de 5 V separada para las bobinas. Para mantener el aislamiento, no unas ese GND con el del Arduino.
Quitar el jumper es buena idea con varios relés: cuatro bobinas son cerca de 300 mA que ya no salen del regulador de la placa.
Relés de 5 V con ESP32 a 3,3 V
Este es el fallo más consultado. Con el módulo alimentado a 5 V y el ESP32 dando 3,3 V en HIGH, entre VCC e IN quedan unos 1,7 V. Según el módulo, eso basta para mantener encendido el LED del optoacoplador, y el relé no se apaga o queda en un estado dudoso. Además, el pin del ESP32 no es tolerante a 5 V.
Soluciones fiables:
- Transistor propio como en el esquema anterior: funciona con 3,3 V sin trucos.
- Módulo con jumper JD-VCC:
VCCa 3,3 V yJD-VCCa 5 V. Funciona con muchos módulos, pero depende de las resistencias que lleve; pruébalo antes de darlo por bueno. - Módulo compatible con 3,3 V o relé con bobina de 3 V.
Elige bien el pin: evita los pines de arranque del ESP32 (GPIO0, GPIO2, GPIO5, GPIO12, GPIO15) y los de la UART (GPIO1, GPIO3), porque cambian de estado al arrancar. GPIO25, GPIO26, GPIO27, GPIO32 o GPIO33 son opciones seguras en el ESP32 clásico.
Seguridad con 230 V
La tensión de red puede matar. Si no tienes formación en instalaciones eléctricas, quédate en baja tensión (12 o 24 V) o usa un enchufe inteligente homologado.
- Nunca montes la parte de 230 V en una protoboard ni con cables Dupont.
- Mete todo en una caja cerrada y aislante, con regletas atornilladas y prensaestopas.
- Corta la fase, no el neutro, y añade un fusible adecuado a la carga.
- El «10 A 250 VAC» impreso en el relé es para cargas resistivas. Las pistas de muchos módulos baratos no soportan esa corriente; deja mucho margen.
- Motores, compresores y fuentes conmutadas tienen picos de arranque muy superiores a su consumo nominal.
- Desconecta la red antes de tocar nada, aunque el relé esté «abierto».
Relés de estado sólido (SSR)
Un SSR conmuta con semiconductores en lugar de contactos: optoacoplador más triac (para alterna) o MOSFET (para continua).
| Característica | Relé electromecánico | Relé de estado sólido |
|---|---|---|
| Ruido | Clic audible | Silencioso |
| Desgaste | Contactos con vida limitada | Sin piezas móviles |
| Corriente de control | Decenas de mA (bobina) | Pocos mA (LED interno) |
| Corriente de fuga en reposo | Nula | Algunos mA |
| Caída de tensión | Casi nula | Aprox. 1–1,6 V, se calienta |
| Tipo de carga | Alterna y continua | Solo la indicada (AC o DC) |
| Conmutación rápida y PWM lento | Mala | Buena |
Detalles que conviene saber:
- Un SSR de alterna con paso por cero no sirve para continua: una vez activado, no se apaga.
- La corriente de fuga puede hacer que una bombilla LED brille débilmente con el SSR apagado.
- A partir de unos pocos amperios necesita disipador.
- Muchos SSR aceptan 3–32 V en la entrada, lo que facilita usarlos con ESP32. Comprueba la hoja de datos; hay clones con capacidades exageradas.
Errores habituales
| Error | Síntoma | Solución |
|---|---|---|
| Relé conectado directamente al pin | Arduino se reinicia o el pin se daña | Transistor o módulo |
| Sin diodo flyback | Reinicios, transistor quemado | Diodo en paralelo con la bobina |
| Lógica invertida | El relé está activado cuando debería estar apagado | El módulo es activo a nivel bajo: HIGH lo apaga |
| Módulo de 5 V con ESP32 | El relé no se apaga | Transistor propio o JD-VCC a 5 V |
| Bobinas alimentadas desde el USB | Reinicios al activar varios relés | Fuente de 5 V separada |
| Carga en NC por error | La carga funciona con el relé apagado | Usa COM y NA |
| Pin de arranque del ESP32 | El relé se activa al encender | Usa otro GPIO |



