En este artículo, exploraremos cómo utilizar MicroPython para crear un módulo de relé con ESP32/ESP8266. Aprenderemos a seguir instrucciones paso a paso para configurar el servidor web y controlar el relé de forma remota. ¡Descubre cómo aprovechar al máximo estas poderosas herramientas de Internet de las cosas!
Usar un relé con ESP32 o ESP8266 es una excelente manera de controlar remotamente electrodomésticos de CA. Este tutorial explica cómo controlar un módulo de relé con ESP32 o ESP8266 usando el firmware MicroPython.
Veremos cómo funciona un módulo de relé, cómo conectar el relé a las placas ESP32 o ESP8266 y cómo construir un servidor web para controlar un relé de forma remota.
Tenemos guías similares sobre el uso de Arduino IDE:
- Instrucciones para el módulo de relé ESP32 con Arduino IDE – Control de aire acondicionado + ejemplo de servidor web
- Instrucciones para el módulo de relé ESP8266 con Arduino IDE – Control de aire acondicionado + ejemplo de servidor web
requisitos
Para seguir este tutorial, debe tener instalado el firmware MicroPython en sus placas ESP32 o ESP8266. También necesitarás un IDE para escribir el código y subirlo a tu placa. Recomendamos utilizar Thonny IDE o uPyCraft IDE:
- IDE de Thonny:
- Instalación y primeros pasos con Thonny IDE
- Actualización del firmware MicroPython usando esptool.py
- IDE de UpyCraft:
- Comenzando con uPyCraft IDE
- Instale uPyCraft IDE (Windows, Mac OS X, Linux)
- Flashear/cargar firmware MicroPython a ESP32 y ESP8266
Obtenga más información sobre MicroPython: Programación de MicroPython con ESP32 y ESP8266 eBook.
Introducción a los relés
Un relé es un interruptor operado eléctricamente y, como cualquier otro interruptor, se puede encender o apagar, permitiendo que la corriente fluya o no a través de él. Se puede controlar con voltajes bajos, como los 3.3V que proporcionan los GPIO ESP32/ESP8266, y nos permite controlar voltajes altos como 12V, 24V o tensión de red (230V en Europa y 120V en ESTADOS UNIDOS).
Módulos de relé de 1, 2, 4, 8, 16 canales
Existen diferentes módulos de relés con diferente número de canales. Puedes encontrar módulos de relés de uno, dos, cuatro, ocho e incluso dieciséis canales. El número de canales determina el número de salidas que podemos controlar.
Existen módulos de relé cuyo electroimán se puede alimentar con 5V y 3,3V. Ambos se pueden usar con ESP32 o ESP8266; puede usar el pin VIN (que suministra 5 V) o el pin de 3,3 V.
Algunos también tienen optoacopladores incorporados que brindan una capa adicional de protección y aíslan ópticamente las placas ESP del circuito del relé.
Obtenga un módulo de relé:
- Módulo de relé de 2 canales de 5 V (con optoacoplador)
- Módulo de relé de 1 canal de 5 V (con optoacoplador)
- Módulo de relé de 5 V y 8 canales. (con optoacoplador)
- Módulo de relé de 5 V y 16 canales. (con optoacoplador)
- Módulo de relé de 1 canal de 3,3 V. (con optoacoplador)
Distribución de pines del relé
Para fines de demostración, veamos la distribución de pines de un módulo de relé de 2 canales. Usar un módulo de relé con un número diferente de canales es similar.
En el lado izquierdo hay dos juegos de tres enchufes cada uno para conectar voltajes altos, y los pines en el lado derecho (bajo voltaje) están conectados a los GPIO ESP.
Conexiones de tensión de red
El módulo de relé que se muestra en la foto anterior tiene dos conectores, cada uno con tres enchufes: común (COM), Normalmente cerrado (CAROLINA DEL NORTE) y normalmente abierto (NO).
- COM: Conecte la alimentación que desea controlar (tensión de red).
- NC (normalmente cerrado): La configuración normalmente cerrada se utiliza cuando se desea que el relé esté cerrado de forma predeterminada. Los pines NC y COM están conectados, lo que significa que la corriente fluirá a menos que envíe una señal desde el ESP al módulo de relé para abrir el circuito y detener el flujo de corriente.
- NO (Normalmente abierto): La configuración normalmente abierta funciona a la inversa: no hay conexión entre los pines NO y COM, por lo que el circuito está abierto a menos que envíe una señal desde el ESP para cerrar el circuito.
Pasadores de control
El lado de bajo voltaje tiene un conjunto de cuatro pines y un conjunto de tres pines. La primera frase consiste en VCC Y Dimensiones para encender el módulo, e ingrese 1 (EN 1) y entrada 2 (EN 2) para controlar el relé inferior o superior.
Si su módulo de relé solo tiene un canal, solo tiene un pin IN. Si tienes cuatro canales, tienes cuatro pines IN y así sucesivamente.
La señal que envía a los pines IN determina si el relé está activo o no. El relé se activa cuando la entrada cae por debajo de aproximadamente 2 V. Esto significa que tiene los siguientes escenarios:
- Configuración normalmente cerrada (NC):
- Señal ALTA: la corriente fluye
- Señal BAJA: la corriente está encendida no con fluidez
- Configuración normalmente abierta (NO):
- Señal ALTA: la corriente está encendida no con fluidez
- Señal BAJA: la corriente fluye
Debe utilizar una configuración normalmente cerrada si la energía debe fluir la mayor parte del tiempo y solo desea interrumpirla ocasionalmente.
Utilice una configuración normalmente abierta si desea que la energía fluya ocasionalmente (por ejemplo, para encender una lámpara ocasionalmente).
Selección de fuente de alimentación
El segundo conjunto de pines consta de Dimensiones, VCCY JD-VCC Lápices. El JD-VCC El pin suministra energía al electroimán del relé. Tenga en cuenta que el módulo tiene una tapa de puente que conecta los pines VCC y JD-VCC. El que se muestra aquí es amarillo, pero el tuyo puede ser de un color diferente.
Con la tapa puente en el VCC Y JD-VCC Los pines están conectados. Esto significa que el solenoide del relé se alimenta directamente desde el pin de alimentación del ESP, por lo que el módulo de relé y los circuitos del ESP no están físicamente aislados entre sí.
Sin la tapa del puente, necesitará proporcionar una fuente de alimentación independiente para alimentar el solenoide del relé a través del JD-VCC Código PIN. Esta configuración aísla físicamente los relés del ESP mediante el optoacoplador integrado en el módulo, evitando daños al ESP en caso de picos de voltaje.
Cableado de un módulo de relé al ESP32/ESP8266
Advertencia: Este ejemplo trata sobre la tensión de red. El mal uso puede provocar lesiones graves. Si no sabes nada sobre el voltaje de la red eléctrica, pídele ayuda a alguien que sí lo sepa. Al programar el ESP o cablear su circuito, asegúrese de que todo esté desconectado de la tensión de red.
Alternativamente, puede utilizar una fuente de alimentación de 12 V para controlar dispositivos de 12 V.
Diagrama esquemático ESP32
Conecte el módulo de relé al ESP32 como se muestra en el siguiente diagrama. El diagrama muestra el cableado de un módulo de relé de 2 canales, el cableado de un número diferente de canales es similar.
En este ejemplo controlamos una lámpara. Sólo queremos encender la lámpara de vez en cuando, por lo que es mejor utilizar una configuración normalmente abierta.
Conectamos el pin IN1 a GPIO26Puede utilizar cualquier otro GPIO adecuado. Consulte el Manual de referencia de ESP32 GPIO.
ESP8266 Diagrama esquemático
Siga el siguiente esquema si está utilizando un ESP8266.
Conectamos el pin IN1 al GPIO 5, pero también puedes usar cualquier otro GPIO adecuado. Consulte el Manual de referencia de ESP8266 GPIO.
Los mejores pines ESP8266 para usar con relés son: GPIO 5, GPIO 4, GPIO 14, GPIO 12 y GPIO 13.
Control de un módulo de relé: código MicroPython (script)
El código para controlar un relé con ESP32 o ESP8266 es tan simple como controlar un LED u otra salida. Dado que en este ejemplo utilizamos una configuración normalmente abierta, necesitamos enviar una señal BAJA para permitir el flujo de corriente y una señal ALTA para detener el flujo de corriente.
Copie el siguiente código en el principal.py Archiva y súbelo a tu tablero. Su lámpara se encenderá durante 10 segundos y se apagará durante otros 10 segundos.
# Complete project details at https://RandomNerdTutorials.com
from machine import Pin
from time import sleep
# ESP32 GPIO 26
relay = Pin(26, Pin.OUT)
# ESP8266 GPIO 5
#relay = Pin(5, Pin.OUT)
while True:
# RELAY ON
relay.value(0)
sleep(10)
# RELAY OFF
relay.value(1)
sleep(10)
Así es como funciona el código
Importar el Bolígrafo clase de la máquina Módulo para interactuar con los GPIO. También los importamos dormir() método de la Tiempo Módulo para agregar retrasos.
from machine import Pin
from time import sleep
Entonces definimos uno Bolígrafo Objeto nombrado relé En 26 (si usa un ESP32) y defínalo como salida.
# ESP32 GPIO 26
relay = Pin(26, Pin.OUT)
Si está utilizando un ESP8266, utilice GPIO5 En su lugar, comente la línea anterior y descomente la siguiente.
# ESP8266 GPIO 5
#relay = Pin(5, Pin.OUT)
En el bucle while, envíe una señal BAJA para mantener la lámpara encendida durante 10 segundos.
# RELAY ON
relay.value(0)
sleep(10)
Si está utilizando una configuración normalmente cerrada, envíe una señal ALTA para encender la lámpara.
Detenga el flujo de corriente enviando una señal ALTA al pin del relé. Si utiliza una configuración normalmente cerrada, envíe una señal BAJA para detener el flujo de corriente.
# RELAY OFF
relay.value(1)
sleep(10)
Módulo de relé de control con servidor web MicroPython
En esta sección, hemos creado un ejemplo de servidor web que le permite controlar remotamente un relé a través de un servidor web.
arranque.py
Copie el siguiente código en su arranque.py Archivo.
# Complete project details at https://RandomNerdTutorials.com
try:
import usocket as socket
except:
import socket
from machine import Pin
import network
import esp
esp.osdebug(None)
import gc
gc.collect()
ssid = 'REPLACE_WITH_YOUR_SSID'
password = 'REPLACE_WITH_YOUR_PASSWORD'
station = network.WLAN(network.STA_IF)
station.active(True)
station.connect(ssid, password)
while station.isconnected() == False:
pass
print('Connection successful')
print(station.ifconfig())
# ESP32 GPIO 26
relay = Pin(26, Pin.OUT)
# ESP8266 GPIO 5
#relay = Pin(5, Pin.OUT)
Incluya sus credenciales de red en las siguientes variables:
ssid = 'REPLACE_WITH_YOUR_SSID'
password = 'REPLACE_WITH_YOUR_PASSWORD'
Dependiendo del tablero que esté utilizando, descomente una de las siguientes líneas. La configuración predeterminada es utilizar el GPIO ESP32.
# ESP32 GPIO 26
relay = Pin(26, Pin.OUT)
# ESP8266 GPIO 5
#relay = Pin(5, Pin.OUT)
principal.py
Copie lo siguiente en su principal.py Archivo.
# Complete project details at https://RandomNerdTutorials.com
def web_page():
if relay.value() == 1:
relay_state=""
else:
relay_state="checked"
html = """<html><head><meta name="viewport" content="width=device-width, initial-scale=1"><style>
body{font-family:Arial; text-align: center; margin: 0px auto; padding-top:30px;}
.switch{position:relative;display:inline-block;width:120px;height:68px}.switch input{display:none}
.slider{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#ccc;border-radius:34px}
.slider:before{position:absolute;content:"";height:52px;width:52px;left:8px;bottom:8px;background-color:#fff;-webkit-transition:.4s;transition:.4s;border-radius:68px}
input:checked+.slider{background-color:#2196F3}
input:checked+.slider:before{-webkit-transform:translateX(52px);-ms-transform:translateX(52px);transform:translateX(52px)}
</style><script>function toggleCheckbox(element) { var xhr = new XMLHttpRequest(); if(element.checked){ xhr.open("GET", "/?relay=on", true); }
else { xhr.open("GET", "/?relay=off", true); } xhr.send(); }</script></head><body>
<h1>ESP Relay Web Server</h1><label class="switch"><input type="checkbox" onchange="toggleCheckbox(this)" %s><span class="slider">
</span></label></body></html>""" % (relay_state)
return html
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(5)
while True:
try:
if gc.mem_free() < 102000:
gc.collect()
conn, addr = s.accept()
conn.settimeout(3.0)
print('Got a connection from %s' % str(addr))
request = conn.recv(1024)
conn.settimeout(None)
request = str(request)
print('Content = %s' % request)
relay_on = request.find('/?relay=on')
relay_off = request.find('/?relay=off')
if relay_on == 6:
print('RELAY ON')
relay.value(0)
if relay_off == 6:
print('RELAY OFF')
relay.value(1)
response = web_page()
conn.send('HTTP/1.1 200 OKn')
conn.send('Content-Type: text/htmln')
conn.send('Connection: closenn')
conn.sendall(response)
conn.close()
except OSError as e:
conn.close()
print('Connection closed')
No explicaremos cómo funciona este código porque ya tenemos un tutorial muy similar con una explicación detallada de cada línea de código. Lea el siguiente proyecto:
- Servidor web ESP32/ESP8266 MicroPython: salidas de control
demostración
Después de realizar los cambios necesarios, cargue el arranque.py Y principal.py archivos a su tablero. Presione la tecla EN/RST y en el shell debería obtener la dirección IP de ESP.
Luego abra un navegador en su red local e ingrese la dirección IP de ESP para obtener acceso al servidor web.
Debería recibir una página web con un botón de alternancia que le permita controlar remotamente su relé desde su teléfono inteligente o computadora.
Vivienda para la seguridad
Para un proyecto final, asegúrese de colocar su módulo de relé y ESP en un gabinete para evitar exponer los pines de CA.
Envolver
En este tutorial, aprendió a controlar relés con ESP32 o ESP8266 usando MicroPython. Tenemos guías similares para Arduino IDE:
- [Arduino IDE] Instrucciones para controlar un módulo de relé con el ESP32
- [Arduino IDE] Instrucciones para controlar un módulo de relé con ESP8266
Controlar un relé con ESP32 o ESP8266 es tan fácil como controlar cualquier otra salida. Todo lo que necesitas hacer es enviar señales ALTAS y BAJAS como lo harías para controlar un LED.
Puede utilizar nuestros ejemplos de servidor web que controlan salidas para controlar relés. Sólo debes prestar atención a la configuración que utilizas. Si está utilizando una configuración normalmente abierta, el relé funciona con lógica invertida. Puede utilizar los siguientes ejemplos de servidor web para controlar su retransmisión:
- Servidor web ESP32 – IDE de Arduino
- Servidor web ESP32 con SPIFFS (salidas de control)
- Servidor web ESP32/ESP8266 MicroPython: salidas de control
Obtenga más información sobre MicroPython con ESP32 y ESP8266 con nuestros recursos:
- Programación MicroPython con ESP32 y ESP8266 (libro electrónico)
- Más proyectos y tutoriales de MicroPython…
Gracias por leer.
MicroPython: Módulo de relé con ESP32/ESP8266
Usar un relé con el ESP32 o ESP8266 es una excelente manera de controlar electrodomésticos de corriente alterna de forma remota. Este tutorial explica cómo controlar un módulo de relé con el ESP32 o ESP8266 utilizando el firmware de MicroPython.
Preguntas Frecuentes
-
¿Qué es un relé?
Un relé es un interruptor operado eléctricamente que puede encenderse o apagarse, permitiendo que la corriente pase o se detenga. Puede ser controlado con bajos voltajes, como los 3.3V proporcionados por los GPIOs del ESP32/ESP8266, y nos permite controlar voltajes altos como 12V, 24V o el voltaje de la red eléctrica (230V en Europa y 120V en EE. UU.).
-
¿Cuántos canales pueden tener los módulos de relé?
Existen módulos de relé con diferentes números de canales. Puedes encontrar módulos de un canal, dos canales, cuatro canales, ocho canales e incluso dieciséis canales. El número de canales determina la cantidad de salidas que podremos controlar.
-
¿Cómo se conecta un módulo de relé al ESP32/ESP8266?
Para conectar un módulo de relé al ESP32, siga el diagrama esquemático correspondiente. Para el ESP8266, utilice el diagrama esquemático adecuado para ese microcontrolador.
-
¿Cómo puedo controlar un relé de forma remota?
Para controlar un relé de forma remota, puede utilizar un servidor web creado con MicroPython. El código necesario para esta funcionalidad se proporciona en el tutorial, junto con instrucciones detalladas para su implementación.
-
¿Se necesita un IDE especial para trabajar con MicroPython en el ESP32/ESP8266?
Sí, se recomienda utilizar IDEs como Thonny IDE o uPyCraft IDE para escribir y subir el código a la placa. Ambos IDEs tienen tutoriales de instalación disponibles en la web.
En resumen, el uso de un módulo de relé con el ESP32 o el ESP8266 en conjunción con MicroPython es una forma efectiva de controlar dispositivos de forma remota. Sigue los pasos detallados en este tutorial para llevar a cabo esta configuración y disfrutar de las ventajas que ofrece esta funcionalidad.
¡Muy interesante! Ahora tengo más claro cómo funcionar con los módulos de relé. Gracias por la ayuda. 🙌🔌
¡Me encantó este tutorial! Muy útil y fácil de entender. ¡Gracias por compartir! 💡👏