- Componentes necesarios para construir persianas automatizadas Arduino
- Controlar las persianas enrollables con Arduino
- Diseñar y construir el equipo para persianas
- Impresión 3D del soporte del motor y el engranaje ciego
- Diagrama de circuito para el control de persianas Arduino
- Aplicación Blynk para Arduino Blind Control
- Programando NodeMCU para controlar persianas usando Blynk
- Controlar las persianas de las ventanas con el Asistente de Google
- Control automático de persianas de ventana basado en Arduino - Demostración
"Buenos días. Son las 7 de la mañana. El clima en Malibú es de 72 grados… ”estas fueron las primeras palabras de JARVIS cuando se introdujo en Marvel Cinematics Universe. La mayoría de los fanáticos de Iron Man deberían poder recordar esta escena y recordar que JARVIS pudo abrir una ventana (más o menos) por la mañana y brindar actualizaciones sobre la hora y el clima. En la película, las gafas de ventana estaban hechas de pantallas táctiles transparentes y, por lo tanto, JARVIS pudo hacer que cambiara de negro a transparente y también mostrar estadísticas meteorológicas en ellas. Pero, en realidad, estamos lejos de las pantallas táctiles transparentes, y cuanto más nos acercamos es a controlar las persianas o las restricciones de las ventanas automáticamente.
Entonces, en este proyecto, vamos a construir exactamente eso, construiremos una persiana motorizada automatizada que se abriría y cerraría automáticamente en momentos predefinidos. Anteriormente, hemos construido muchos proyectos de domótica en los que automatizamos las luces, motores, etc. Puedes consultarlos si estás interesado. Entonces, volviendo, estas persianas controladas por Arduino también pueden recibir comandos del asistente de Google para que pueda abrir o cerrar las persianas de las ventanas de forma remota a través de comandos de voz. ¿Intrigante? Entonces, hagámoslo construido.
Componentes necesarios para construir persianas automatizadas Arduino
El proyecto es relativamente simple y no se requieren muchos componentes. Simplemente reúna los elementos que se enumeran a continuación.
- NodeMCU
- Motor paso a paso - 28BYJ-48
- Módulo controlador de motor paso a paso
- LM117-3,3V
- Condensadores (10 uf, 1 uf)
- Adaptador de 12V DC
- Tablero de Perf
- Kit de soldadura
- impresora 3d
Controlar las persianas enrollables con Arduino
Ahora hay muchos tipos de persianas en el mercado, pero la más utilizada tiene una cuerda con listones (como se muestra a continuación) que se puede tirar para abrir o cerrar las persianas.
Cuando tiramos de esta cuerda circular en el sentido de las agujas del reloj, las persianas de las ventanas se abrirán y cuando tiramos de esta cuerda en el sentido contrario a las agujas del reloj, las persianas de las ventanas se cerrarán. Entonces, si tuviéramos que automatizar este proceso, todo lo que tenemos que hacer es usar un motor para tirar de esta cuerda en sentido horario o antihorario y habremos terminado. De hecho, esto es lo que vamos a hacer en este proyecto; Usaremos el motor paso a paso 28BYJ-48 junto con un NodeMCU para tirar de la cuerda con cuentas.
Diseñar y construir el equipo para persianas
La parte electrónica de este proyecto fue bastante simple y directa, la parte desafiante fue construir el Blind Gear que pudiera tirar de la cuerda de cuentas. Así que comencemos este artículo con el diseño del engranaje ciego, no voy a entrar en detalles sobre cómo diseñar el equipo, pero esta idea básica debería ayudarlo. A continuación se muestra una imagen de la cuerda con las cuentas.
Una vez más, hay muchos tipos de cuerdas, pero las cuerdas más comúnmente utilizadas son la distancia de centro a centro de cada cordón es de 6 mm y el diámetro de cada cordón es de 4 mm. Con esta información, podemos iniciar el diseño de nuestro equipo. Si la cuerda de sus persianas tiene las mismas dimensiones que las discutidas, simplemente puede omitir este paso y descargar el archivo STL proporcionado en este artículo e imprimir el equipo. Si su cuerda tiene una disposición de cuentas diferente, entonces así es como debe rediseñar el engranaje ciego.
Decidí tener 24 cuentas en mi equipo para obtener un tamaño de rueda de engranaje óptimo, puede seleccionar cualquier número cercano a este para que su rueda de engranaje sea grande o pequeña. Entonces, ahora sabemos que la distancia entre cada cordón es de 6 mm y necesitamos 24 cordones en nuestro equipo. Multiplicar ambos dará la circunferencia de la rueda dentada. Con estos datos, puede calcular el radio de la rueda dentada. Como puede ver en la imagen de arriba, el diámetro de mi rueda dentada se calculó en alrededor de 46 mm. Pero recuerde, este no es el diámetro real del engranaje porque no hemos tenido en cuenta el diámetro del reborde, que es de 4 mm. Entonces, el diámetro real de la rueda dentada será de 42 mm, imprimí y probé muchas ruedas dentadas antes de encontrar la que funciona mejor. Si no te gustan los diseños,simplemente descargue e imprima los archivos STL del siguiente párrafo y continúe con su proyecto.
Impresión 3D del soporte del motor y el engranaje ciego
Junto con el engranaje, también necesitaremos una pequeña carcasa que se pueda perforar en la pared y mantener el motor paso a paso en su posición, tanto la carcasa como el engranaje utilizado en este proyecto se muestran a continuación.
Puede encontrar archivos de diseño completos y archivos STL en la página Arduino Blind Control Thingiverse que se muestra a continuación. Puede descargar e imprimir su engranaje ciego y la carcasa del motor.
Descargar archivos STL para Blind Gear y Motor Case
Diagrama de circuito para el control de persianas Arduino
Una vez que esté listo con el equipo y el ensamblaje, es fácil continuar con la parte electrónica y el software. A continuación se muestra el diagrama de circuito completo para el proyecto de control de persianas de IoT.
Hemos utilizado un adaptador de 12 V para alimentar toda la configuración; el regulador LM1117-3.3V convierte los 12V a 3.3V que se pueden usar para alimentar la placa NodeMCU. El módulo del controlador del motor paso a paso se alimenta directamente desde el adaptador de 12V. Intenté hacer funcionar el motor paso a paso a 5V, pero luego no proporcionó suficiente par para tirar de las persianas, así que asegúrese de que también esté usando 12V.
Aparte de eso, el circuito es bastante simple, si es nuevo en los motores paso a paso, consulte los conceptos básicos del artículo sobre motores paso a paso para comprender cómo funciona y cómo se puede usar con un microcontrolador.
Aplicación Blynk para Arduino Blind Control
Antes de entrar en el programa Arduino para Control de Persianas, abramos la aplicación blynk y creemos algunos botones con los que podemos abrir o cerrar nuestras persianas. También lo necesitaremos más adelante para controlarlo desde la casa de Google.
Acabo de agregar dos botones para abrir y cerrar las persianas y un temporizador para abrir las persianas a las 10:00 am todos los días. Puede agregar varios temporizadores para abrir o cerrar las persianas en diferentes intervalos del día. Básicamente, cuando tenemos que cerrar las persianas, tenemos que activar el pin virtual V1 y cuando tenemos que abrir las persianas, tenemos que activar el pin virtual V2. El programa para controlar el motor paso a paso basado en el botón presionado aquí se escribirá en el IDE de Arduino, lo mismo se comenta a continuación.
Programando NodeMCU para controlar persianas usando Blynk
El código ESP8266 completo para este proyecto de control de ciegos se puede encontrar en la parte inferior de esta página. Nuestro programa tiene que esperar un comando de la aplicación blynk y, en base a ese comando, tenemos que girar el motor paso a paso en sentido horario o antihorario. Los segmentos importantes del código se analizan a continuación.
De acuerdo con nuestro diagrama de circuito, hemos utilizado los pines digitales 1, 2, 3 y 4 en nodemcu para controlar nuestro motor paso a paso. Entonces, tenemos que crear una instancia llamada paso a paso usando estos pines como se muestra a continuación. Observe que hemos definido los pines en orden 1, 3, 2 y 4. Se hizo deliberadamente y no es un error; tenemos que intercambiar los pines 2 y 3 para que el motor funcione correctamente.
// crea una instancia de la clase stepper usando los pasos y pines Stepper stepper (STEPS, D1, D3, D2, D4);
En el siguiente paso, tenemos que compartir nuestro token de autenticación de la aplicación blynk y las credenciales de Wi-Fi a las que se debe conectar nuestro controlador IoT Blind. Si no está seguro de cómo obtener este token de autenticación de Blynk, consulte el proyecto de control de LED de Blynk para comprender los conceptos básicos de la aplicación blynk y cómo usarla.
// Debería obtener el token de autenticación en la aplicación Blynk. // Vaya a Configuración del proyecto (icono de tuerca). char auth = "l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx"; // Tus credenciales WiFi. // Establezca la contraseña en "" para redes abiertas. char ssid = "CircuitDigest"; char pass = "dummy123";
Continuando con nuestro código, después de la función de configuración, hemos definido dos métodos para blynk. Como se mencionó anteriormente, tenemos que definir qué deben hacer los pines virtuales V1 y V2. El código para el mismo se da a continuación.
BLYNK_WRITE (V1) // CERRAR las PERSIANAS {Serial.println ("Cerrar persianas"); if (open == true) {for (int c_val = 0; c_val <= 130; c_val ++) // rotar en sentido antihorario para cerrar {stepper.step (c_val); rendimiento(); } cerrado = verdadero; abierto = falso; disable_motor (); // siempre desactive los motores paso a paso después de su uso para reducir el consumo de energía y la calefacción}} BLYNK_WRITE (V2) // ABRIR las PERSIANAS {Serial.println ("Abrir persianas"); if (cerrado == verdadero) {for (int cc_val = 0; cc_val> = -130; cc_val--) // rotar en sentido horario para abrir {stepper.step (cc_val); rendimiento(); } abierto = verdadero; cerrado = falso; } disable_motor (); // siempre se desactiven los motores paso a paso después de su uso para reducir el consumo de energía y la calefacción}
Como puede ver, V1 se usa para cerrar las persianas y V2 se usa para abrir las persianas. Un bucle for se utiliza para girar los motores en sentido horario o antihorario durante 130 pasos. Experimenté con mis persianas y descubrí que con 130 pasos, puedo abrir y cerrar completamente mis persianas. Tu número puede variar. A continuación se muestra el bucle for para girar el motor paso a paso en sentido horario y antihorario.
for (int c_val = 0; c_val <= 130; c_val ++) // girar en sentido antihorario para cerrar {stepper.step (c_val); rendimiento(); } for (int cc_val = 0; cc_val> = -130; cc_val--) // gira en sentido horario para abrir {stepper.step (cc_val); rendimiento(); }
También puede notar dos variables booleanas "abiertas" y "cerradas" en nuestro programa. Estas dos variables se utilizan para evitar que el motor abra o cierre las persianas dos veces. Es decir, las persianas se abrirán solo cuando se haya cerrado previamente y se cerrarán solo cuando se haya abierto previamente.
¿Cómo aumentar la velocidad del motor paso a paso 28BJY-48?
Un inconveniente de utilizar el motor paso a paso 28BJY-48 es que es muy lento. Estos motores se fabricaron originalmente para usarse en aplicaciones de baja velocidad de alta precisión, por lo que no espere que estos motores giren a alta velocidad. Si desea aumentar la velocidad del motor paso a paso usando Arduino, hay dos parámetros que puede cambiar. Uno es el #define STEPS 64, encontré que cuando los pasos se definen como 64, el motor era comparativamente más rápido. Otro parámetro es un stepper.setSpeed (500); de nuevo, descubrí que 500 es un valor óptimo, algo más que eso hace que el motor paso a paso sea más lento.
¿Conoces alguna otra forma de aumentar la velocidad de estos motores? Si es así, déjelos en la sección de comentarios a continuación.
¿Cómo evitar que el motor paso a paso se sobrecaliente?
Los motores paso a paso siempre deben desactivarse cuando no estén en uso para evitar el sobrecalentamiento. Desactivar un motor paso a paso es muy sencillo; simplemente cambie el estado de los pines de los cuatro pines GPIO que controlan el motor paso a paso a bajo. Esto es muy importante, de lo contrario su motor podría calentarse mucho a + 12V y dañarse permanentemente. El programa para deshabilitar el motor paso a paso se muestra a continuación.
void disable_motor () // apaga el motor cuando termine para evitar que se caliente {digitalWrite (D1, LOW); escritura digital (D2, BAJA); escritura digital (D3, BAJA); escritura digital (D4, BAJA); }
Controlar las persianas de las ventanas con el Asistente de Google
Vamos a utilizar la API de blynk para controlar las persianas a través del asistente de Google, será similar a nuestro proyecto de automatización del hogar controlado por voz, así que verifíquelo si está interesado. Básicamente, tenemos que activar el enlace a continuación cuando decimos una frase predefinida al Asistente de Google.
//http://188.166.206.43/l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx/update/V1?value=1 /
Asegúrese de cambiar el token de autenticación por el proporcionado por su aplicación blynk. Incluso puede probar este enlace en su navegador Chrome para ver si funciona como se esperaba. Ahora que el enlace está listo, simplemente tenemos que pasar a IFTTT y crear dos applets que puedan activar los pines virtuales V1 y V2 cuando solicitamos cerrar y abrir las persianas. Una vez más, no voy a entrar en los detalles de esto porque lo hemos hecho muchas veces. Si necesita más ayuda, consulte este proyecto de radio FM controlada por voz, simplemente reemplace los servicios de adafruit con webhooks. También estoy compartiendo una captura de pantalla de mi fragmento como referencia.
Control automático de persianas de ventana basado en Arduino - Demostración
Una vez que el circuito y los recintos impresos en 3D estén listos, simplemente monte el dispositivo en la pared perforando dos orificios en la pared. Mi configuración de montaje se muestra en las imágenes a continuación.
Después de eso, asegúrese de que sus persianas estén abiertas y luego encienda el circuito. Ahora, puede intentar cerrar las persianas desde la aplicación blynk o mediante el Asistente de Google y debería funcionar. También puede configurar temporizadores en la aplicación blynk para abrir y cerrar automáticamente la persiana en un momento particular del día.
El funcionamiento completo del proyecto se puede encontrar en el video que se muestra a continuación; Si tiene alguna pregunta, no dude en escribirla en la sección de comentarios a continuación. Además, puede utilizar nuestros foros para otras discusiones técnicas.