Tabla de contenido
resumen
En este proyecto, construiremos un relé IoT utilizando Raspberry Pi Pico W WiFi y controlaremos el relé a través de un servidor web. Utilice el IDE de Thonny para programar su Raspberry Pi Pico W utilizando código MicroPython. Esta es una excelente manera de construir un interruptor Wi-Fi para encender y apagar dispositivos eléctricos con poco dinero.
Basado en el módulo WiFi + Bluetooth Raspberry Pico Pico W, este relé IoT DIY se puede utilizar para controlar dispositivos de alta potencia como bombas de agua, aires acondicionados, calentadores y otras cargas de amperios altos. Lo mejor de este relé IoT es que se puede controlar de forma remota en una red local utilizando tecnología WiFi. Puede utilizar su teléfono móvil o cualquier aplicación web para acceder al servidor web. Puede usar la página web para encender o apagar sus electrodomésticos.
Lista de materiales
Para controlar los relés mediante el servidor web Raspberry Pi Pico W, necesita los siguientes componentes: Puede comprar desde el siguiente enlace.
Módulo de relé y relé
Un módulo de relé es un interruptor eléctrico operado por un electroimán. El electroimán es accionado por otra señal de baja potencia del microcontrolador. Cuando se activa, el electroimán tira para abrir y cerrar el circuito eléctrico.
El relé se puede activar a través de un microcontrolador como el Raspberry Pico Pico W 3.3V o 5V. Esto le permite controlar aparatos que funcionan a 12V, 24V, 110V o 220V CA.
Hay relés monocanal o multicanal en el mercado. Los relés multicanal incluyen 1, 2, 4, 8 y 16 canales.
Algunos módulos de relé incluyen un optoacoplador que aísla ópticamente la placa del microcontrolador del circuito del relé y protege el microcontrolador.
La mayoría de los módulos de relé tienen 6 pines, 3 en cada lado. VCC, GND y pines de entrada se utilizan en el microcontrolador. NO, Common & NC se utiliza en aparatos de alto voltaje.
Número de PIN | Nombre del PIN | descripción |
1 | Disparador de relé | Entrada para activar el relé |
2 | tierra | Referencia 0V |
3 | Teletipo | Entrada de alimentación para alimentar la bobina del relé |
4 | Normalmente abierto | Terminal de relé normalmente abierto |
5 | común | Terminales comunes de relés |
6 | Normalmente cerca | Contactos normalmente cerrados de relés |
Esquemas y conexiones
Veamos cómo conectar un módulo de relé de un solo canal a una Raspberry Pi Pico W. El diagrama de conexión es bastante simple.
Conecte los VCC, GND y pines de entrada del relé a los 3.3V, GND, GP18 del Pi Pico W y conecte dispositivos como ventiladores y bombillas a la salida del módulo de relé. Los aparatos eléctricos funcionan a 110/220V.
En este ejemplo, estamos controlando una rampa y recomendamos usar la configuración normalmente abierta como se muestra en la imagen de arriba.
Proyecto PCB Gerber File & PCB Ordering Online
Si no desea ensamblar circuitos en una placa de pruebas y desea una PCB para su proyecto, aquí está la PCB. Primero utilicé EasyEDA para dibujar el esquema.
Luego convertí el esquema a una PCB. La placa PCB para este proyecto se ve así:
El archivo Gerber de la PCB se muestra a continuación. Simplemente descargue el archivo Gerber y solicite la PCB. Todas las placas de circuito impreso Y $1$ Solamente.
Puede usar este archivo Gerber para solicitar una PCB de alta calidad para este proyecto. Para ello, Todas las placas de circuito impreso Visite el sitio web oficial haga clic aquí: https://www.allpcb.com/.
Con esto[今すぐ引用]Puede seleccionar una opción para cargar su archivo Gerber. De estas opciones, puede seleccionar el tipo de material, las dimensiones, la cantidad, el grosor, el color de la máscara de soldadura y otros parámetros requeridos.
Una vez que haya ingresado todos los detalles, seleccione su país y método de envío. Finalmente, puede realizar un pedido.
Puede ensamblar los componentes en la placa PCB.
Código micropython para controlar módulos de relé
El siguiente código se utiliza para controlar el relé en la Raspberry Pico W. Es tan simple como controlar los LED y otras salidas. Utilice la configuración normalmente abierta.
Envía una señal baja a GP18 y el relé se encenderá. Del mismo modo, enviar una señal ALTA a la GP18 apagará el relé.
remitente máquina importación anclar importación Youtime relé=anclar(18,anclar.fuera) mientras verdadero: relé.valor(1) #Setリレーをオンにする Youtime.dormir(5) relé.valor(0) Desactiva el #Set de relé Youtime.dormir(5) |
Cuando ejecuta el código, el relé se enciende y apaga cada 5 segundos.
Código micropython para controlar módulos de relé a través del servidor web
En este código MicroPython, creé un script de servidor web que le permite controlar de forma remota el relé utilizando la dirección IP local y la página web de Raspberry Pi Pico W.
Antes de ejecutar el código, cambie el SSID WiFi y la contraseña de las siguientes líneas:
LAN inalámbrica.conectar(“***********”,“***********”) # SSID, Contraseña |
Guarde el código en la memoria de Raspberry Pico W y asígnele un nombre similar main.py.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | remitente máquina importación anclar importación red importación Hora probar: importación enchufe como enchufe exceptuar: importación enchufe relé=anclar(18,anclar.fuera) LAN inalámbrica = red.Teletipo(red.STA_IF) LAN inalámbrica.activo(verdadero) LAN inalámbrica.conectar(“***********”,“***********”) # SSID, Contraseña # Conectarse a una red esperar = 10 mientras esperar > 0: Si LAN inalámbrica.posición() < 0 o LAN inalámbrica.posición() >= 3: quebrar esperar -= 1 Impresión(‘Esperando la conexión…’) Hora.dormir(1) # Manejo de errores de conexión Si LAN inalámbrica.posición() != 3: levantar Errores de tiempo de ejecución(“Error de conexión LAN inalámbrica”) de otra manera: Impresión(“Conectado”) Dirección IP=LAN inalámbrica.ifconfig()[0] Impresión(«IP: », Dirección IP)
Def web_server(): Si relé.valor() == 1: relay_state = ” de otra manera: relay_state = ‘comprobado’ …html = “”“<html><head><meta name=”ViewportContenido=”Ancho=dispositivo–Ancho, inicial–escama=1“>< estilo> cuerpo{Familia de fuentes:Arial; Alineación de texto: centro; cuarto: 0 píxeles Automático; Acolchado superior:30px;} 。 interruptor{posición:pariente;Monitor:Bloques en línea;Ancho:120 píxeles;altura:68px}.Switch Entrada{Monitor:ninguno} 。 slider{posición:Absolutamente;Ir a la parte superior:0;Izquierda:0;Derecha:0;fondo:0;Color de fondo:#ccc;Radio del borde:34 px} Control deslizante: Anterior[suraido:furu[すらいーど:ふぉる{posición:Absolutamente;contenido:“”;altura:52px;Ancho:52px;Izquierda:8px;fondo:8px;Color de fondo:#fff;– Webkit – Transiciones:.4s;transición:.4s;Radio del borde:68px} Entrada: Marcado + Slider{Color de fondo:#2196F3} Entrada: Marcada + Control deslizante: Anterior[Jun:Hoy[じゅん:きょう{– Webkit – Convertir:Traducción X(52px);-ms-conversión:Traducción X(52px);transformar:Traducción X(52px)} </Estilo >< guión>función Alternar casilla de verificación(elemento) { variable Teletipo = Novedades XMLHttpRequest(); Si(elemento.comprobar){ Teletipo.abrir(“Obtener”, “/?relay=on”, verdadero); } de otra manera { Teletipo.abrir(“Obtener”, “/?relay=off”, verdadero); } Teletipo.Transmisión(); }</Script ></Cabeza >< cuerpo> <h1>Pico W IoT Relay Control</h1><label class=”interruptor“>< tipo de entrada=”Casilla de verificación” onchange=”Alternar casilla de verificación(Éste)” %s><span class=”slider“> </span></label></body></html>”“” % (relay_state) devolución …html s = enchufe.enchufe(enchufe.AF_INET, enchufe.SOCK_STREAM) s.atar((”, 80)) s.escuchar(5) mientras verdadero: probar: Contra, dirección = s.aceptar() Contra.Establecer tiempo de espera(3.0) Impresión(‘conectado desde %s’ % Teletipo(dirección)) pedir = Contra.Ruina(1024) Contra.Establecer tiempo de espera(ninguno) pedir = Teletipo(pedir) Impresión(‘contenido = %s’ % pedir) relay_on = pedir.encontrar(‘/?relay=on’) relay_off = pedir.encontrar(‘/?relay=off’) Si relay_on == 6: Impresión(“Relé encendido”) relé.valor(0) Si relay_off == 6: Impresión(“Relé”) relé.valor(1) respuesta = web_server() Contra.Transmisión(‘HTTP/1.1 200 OK\n’) Contra.Transmisión(‘Tipo de contenido: texto/html\n’) Contra.Transmisión(‘Conectar: Cierre\n\n’) Contra.Remitente(respuesta) Contra.cerrar() exceptuar Error del sistema operativo o como e: Contra.cerrar() Impresión(“Conexión cerrada”) |
Prueba de IoT Relay con Raspberry Pico W Web Server
Después de ejecutar el código, Thonny Shell mostrará la dirección IP local de la Raspberry Pi Pico W.
Copie la dirección IP y péguela en cualquier navegador web. Debería ver una página similar a la siguiente:
Deslice el interruptor desde la posición de apagado en la página web y el relé se encenderá inmediatamente. En este caso, está realizando una solicitud HTTP GET /?relay=on Dirección HTTP/1-IP/activado. Esta solicitud devuelve una página Web que contiene el estado GP16 modificado.
Deslice el interruptor de la posición ON a la posición OFF nuevamente para volver a apagar el relé. En este caso. ¿Está realizando una solicitud en la dirección IP de Pico W seguida de /? El LED GET /?relay=off se apaga y se actualiza el estado de GP16.
El siguiente mensaje aparece en la ventana de Thonny Shell:
Esta es la forma más fácil de controlar electrodomésticos a través de un módulo de relé utilizando el servidor web Raspberry Pico W.