Tabla de contenido:

Abridor automático de persianas con EV3: 6 pasos
Abridor automático de persianas con EV3: 6 pasos

Video: Abridor automático de persianas con EV3: 6 pasos

Video: Abridor automático de persianas con EV3: 6 pasos
Video: CORTINAS INTELIGENTES CON ESTE ROBOT | SwitchBot Curtain 🔴 2024, Mes de julio
Anonim
Abridor automático de persianas con EV3
Abridor automático de persianas con EV3
Abridor automático de persianas con EV3
Abridor automático de persianas con EV3

Tengo un juego de persianas opacas enrollables en mi habitación que a menudo olvido abrir o cerrar por la mañana o por la noche. Quiero automatizar la apertura y el cierre, pero con una anulación de cuándo y cuándo me voy a cambiar.

Paso 1: posibles ideas o soluciones

Después de buscar en varios sitios como YouTube, Instructables y Thingiverse, descubrí que la solución más común era motorizar el carrete que enrolla y desenrolla las persianas usando un motor paso a paso o un servo. Encontré 2 opciones principales con varias ventajas y desventajas.

Idea 1: Método de carrete donde el motor y el engranaje se alojan dentro del carrete. Esto tiene las ventajas de que es un método limpio y elegante, pero tiene las desventajas de que requiere una modificación importante de la persiana, el cordón ya no se puede utilizar y el conjunto sería muy difícil de acceder para su mantenimiento cuando se implementara.

Idea 2: método de cable donde el motor y el engranaje se alojan en el cable. Esto tiene la ventaja de que es más sencillo y se puede acceder fácilmente al montaje. Sin embargo, tiene la desventaja de que podría ser feo y voluminoso, así como el hecho de que debe fijarse al alféizar cuando se implemente.

Prefiero el método del cordón, ya que es una solución mucho más simple que no inhibe el uso manual del cordón, y los ciegos no requerirán ninguna modificación importante. Planeo hacerlo lo más encubierto y compacto posible cuando haga la versión final con un ESP8266.

Paso 2: Hacer el ensamblaje

Haciendo el montaje
Haciendo el montaje
Haciendo el montaje
Haciendo el montaje

Hice este proyecto usando mi Lego Mindstorms EV3, que tiene la funcionalidad que necesito para mostrar que el proyecto podría funcionar, y estoy familiarizado con el software que definitivamente ayudó mucho. Dado que la persiana usa una cadena de bolas para impulsar el carrete, con lo que los engranajes de Lego son incompatibles, decidí que la mejor solución era diseñar un engranaje con el espacio de bolas correcto en el exterior, con el orificio estándar en forma de cruz en el center, donde luego imprimiría el diseño en 3D. En este punto también hice un botón de calibración y adjunté un sensor de luz a mi ventana, así como un botón para actuar como anulación.

Paso 3: diseño del equipo ciego

Diseñando el equipo ciego
Diseñando el equipo ciego
Diseñando el equipo ciego
Diseñando el equipo ciego
Diseñando el equipo ciego
Diseñando el equipo ciego
Diseñando el equipo ciego
Diseñando el equipo ciego

Desmonté la persiana para ver cómo se veía la manivela con más detalle. Durante el desmontaje encontré un pequeño engranaje de 16 dientes que se mantenía en su lugar mediante una bobina tensada, esta era la pieza que estaba buscando. Después de diseñar una réplica del equipo, agregué los orificios requeridos compatibles con Lego, imprimí las 3 partes separadas y finalmente las pegué con superglue. Inicialmente tuve problemas para hacer compatible la pieza con Lego, en el sentido de que mi impresora 3D no tenía la resolución para hacer el orificio "x" lo suficiente, sin embargo, no tuvo problemas con los orificios circulares a ambos lados. Así que reemplacé la "x" con un agujero circular y se imprimió bien. Luego, después de una pequeña cantidad de pruebas, pude ver que podía soportar el par y el peso de la persiana. Vincularé mis diseños para el equipo a continuación o puede encontrarlo en Thingiverse en:

Paso 4: codificar a los ciegos

Codificando a los ciegos
Codificando a los ciegos

Quería un código que abriera y cerrara automáticamente la persiana cuando llegara a un nivel de luz específico, pero que también tuviera un botón de anulación para que uno pudiera abrir o cerrar la persiana cuando quisiera. He vinculado mi GitHub con la versión final del código aquí:

Me tomó varios días completar el código del proyecto, tenía la lógica básica del programa funcionando correctamente con el sensor de luz, sin embargo, el botón de anulación momentánea no funcionaba correctamente. Alteraba el estado de la persiana al presionarla, pero carecía de la función de "pestillo" que significaría que la persiana permanecería en la posición, lo que significa que la persiana la volvería a enrollar inmediatamente a lo que estaba antes. Arreglé esto usando un bloque "esperar hasta", vinculado a una puerta lógica OR que lee los valores del sensor de luz y el sensor táctil, que explicaré a continuación.

El código comienza calibrando los motores y la persiana, comenzando con la persiana completamente abierta y bajándola hasta que golpea el sensor táctil en la parte inferior, contando cuántos cuartos de vuelta se necesitan para llegar a la parte inferior, que se guarda como "Rotaciones necesarias". variable. Luego escribe "falso" en la variable "BlindOpen" que se utiliza para rastrear la posición de la persiana. En este punto, el código se divide en 4 bucles.

Uno de estos bucles es el bucle "Buttonstate" que publica continuamente el estado del botón en una variable llamada "ButtonPressed". Esto elimina la necesidad de colocar varios bloques de botones en el script.

El segundo ciclo es el "Claro u oscuro" que compara continuamente el nivel de luz fuera de mi ventana, con una constante definida anteriormente en el código. Si el resultado está por debajo de esa constante, el ciclo escribirá "falso" en la variable "ItIsLight", mientras que si está por encima del valor, escribirá "verdadero".

El tercer ciclo contiene una lista numérica de 3 opciones que básicamente le dice al ciego qué hacer, 0 = ciego hacia abajo, 1 = ciego hacia arriba, 2 = no hacer nada porque el ciego está en el lugar correcto. El ciclo comienza leyendo la variable "BlindShould" que especifica la tarea correcta que el ciego debería estar haciendo, luego lleva a cabo esa tarea, altera la variable "BlindOpen" a la opción correcta y luego queda inactiva hasta que la variable "BlindShould" se cambia donde repite. Utiliza el valor de "Rotaciones necesarias", así como una potencia de +/- 100% para abrir o cerrar completamente la persiana.

El cuarto y último ciclo es el más complejo, es el ciclo “Decididor” el que maneja todos los datos y decide qué hacer con cada permutación. Para ello, utiliza "bifurcaciones en el camino" basadas en la lógica, donde "se presiona el botón", "Nivel de luz", "Persiana abierta" son las preguntas verdaderas o falsas. Todas las permutaciones tienen una respuesta codificada, que es 0 = ciego hacia abajo, 1 = ciego hacia arriba o 2 = no hacer nada; este valor se escribe en la variable "BlindShould" que luego es manejada por un ciclo anterior. Algunas respuestas esperarán a que cambie la variable "ItIsLight" y / o "ButtonPressed" antes de finalizar el script, este es solo el caso de las permutaciones activadas por botón, ya que de lo contrario, intentaría corregir inmediatamente su posición, lo que significa que la persiana volvería. a su estado original. Luego, este proceso se enlaza para crear un sistema automático robusto y relativamente simple, que se puede agregar y depurar fácilmente. Uf.

Paso 5: Toques finales

Últimos retoques
Últimos retoques

Luego decidí conectar una fuente de alimentación de 9V a mi EV3 usando algunos tacos de madera y tornillos como "baterías", esto hizo que el producto no dependiera de las baterías y me impidió tener que cambiar las baterías cada dos días.

Paso 6: Evaluación del proyecto

Creo que el proyecto salió bien en general, terminé con un prototipo funcional para el ensamblaje de persianas automáticas, que puedo tomar toda la información relevante que encontré durante el proyecto e implementar en la versión final. Codifiqué correctamente el dispositivo y, hasta ahora, no he encontrado problemas importantes con el código. Me hubiera gustado hacer que el dispositivo fuera más atractivo visualmente, pero una vez más es una prueba de concepto y haré un esfuerzo para que se vea bien cuando haga la versión final con un ESP8266. Cuando vuelva a hacer el proyecto, diseñaré el motor para que se siente dentro de la persiana, ya que sería más fácil de ocultar. La lección más importante que he aprendido es depurar de forma lógica y pensar, documentar y probar mi código antes de implementarlo.

Recomendado: