Taula de continguts:

Obridor de persianes automàtic amb EV3: 6 passos
Obridor de persianes automàtic amb EV3: 6 passos

Vídeo: Obridor de persianes automàtic amb EV3: 6 passos

Vídeo: Obridor de persianes automàtic amb EV3: 6 passos
Vídeo: No one knows this HIDDEN first class 2024, De novembre
Anonim
Obridor automàtic de persianes que utilitza EV3
Obridor automàtic de persianes que utilitza EV3
Obridor de persianes automàtic mitjançant EV3
Obridor de persianes automàtic mitjançant EV3

Tinc un joc de persianes enrotllables al meu dormitori que sovint m’oblido d’obrir o tancar al matí o al vespre. Vull automatitzar l’obertura i el tancament, però amb una substitució quan per quan canviï.

Pas 1: idees o solucions potencials

Després de buscar diversos llocs com YouTube, Instructables i Thingiverse, vaig trobar que la solució més habitual era motoritzar la bobina que enrotllava i desenrotllava les persianes mitjançant un motor pas a pas o un servo. He trobat 2 opcions principals amb diversos avantatges i desavantatges.

Idea 1: mètode de la bobina on el motor i l’engranatge s’allotgen a l’interior de la bobina. Això té els avantatges que és un mètode elegant i elegant, però té els inconvenients que requereix una modificació important de la persiana, el cable ja no es pot utilitzar i el muntatge seria molt difícil d’accedir per mantenir-lo quan s’implementés.

Idea 2: mètode del cable on el motor i l’engranatge s’allotgen al cable. Això té l'avantatge que és més senzill i que es pot accedir fàcilment al muntatge. Tanmateix, té l’inconvenient que podria ser lleig i voluminós, així com el fet que s’ha d’adherir al llindar quan s’implementa.

Prefereixo el mètode del cable, ja que és una solució molt més senzilla que no inhibeix l’ús manual del cable, i la persiana no requerirà cap modificació important. Tinc previst fer-lo el més encobert i compacte possible quan faig la versió final amb un ESP8266.

Pas 2: fer l'assemblea

Fent l'Assemblea
Fent l'Assemblea
Fent l'Assemblea
Fent l'Assemblea

Vaig fer aquest projecte amb el meu Lego mindstorms EV3, que té la funcionalitat que necessito per demostrar que el projecte podria funcionar i estic familiaritzat amb el programari que definitivament va ajudar molt. Com que la persiana utilitza una cadena de boles per conduir la bobina, amb la qual els engranatges Lego són incompatibles, vaig decidir que la millor solució era dissenyar un engranatge amb l’espaiat correcte de la bola a l’exterior, amb el forat estàndard “en forma de creu” centre, on després imprimiria el disseny en 3D. En aquest punt també he fet un botó de calibratge i he connectat un sensor de llum a la finestra, així com un botó per actuar com a substitució.

Pas 3: dissenyar el Blind Gear

Dissenyant el Blind Gear
Dissenyant el Blind Gear
Dissenyant el Blind Gear
Dissenyant el Blind Gear
Dissenyant el Blind Gear
Dissenyant el Blind Gear
Dissenyant el Blind Gear
Dissenyant el Blind Gear

Vaig desmuntar la persiana per veure com es veia amb més detall la manovella. Durant el desmuntatge vaig trobar un petit engranatge de 16 dents que estava subjectat per una bobina tensada, aquesta era la part que buscava. Després de dissenyar una rèplica de l’engranatge, vaig afegir els forats necessaris compatibles amb Lego, vaig imprimir les 3 parts separades i finalment les vaig unir amb superglue. Inicialment vaig tenir problemes per fer compatible la peça Lego, en el sentit que la meva impressora 3D no tenia la resolució necessària per fer el forat "x" suficient, però no tenia problemes amb els forats circulars a banda i banda. Així que vaig substituir la "x" per un forat circular i es va imprimir bé. Després, després d’una petita quantitat de proves, vaig poder comprovar que podia suportar el parell i el pes de la persiana. Enllaçaré els meus dissenys per a l’engranatge següent o el podreu trobar a Thingiverse a:

Pas 4: Codificació dels cecs

Codificació dels cecs
Codificació dels cecs

Volia un codi que s’obrís i tancés automàticament la persiana quan arribés a un nivell de llum específic, però que també tingués un botó d’anul·lació per poder obrir o tancar la persiana quan ho desitgessin. He enllaçat el meu GitHub amb la versió final del codi aquí:

El codi del projecte vaig trigar uns quants dies a completar-se, tenia la lògica bàsica del programa que funcionava correctament amb el sensor de llum, però el botó d’anul·lació momentània no funcionava correctament. Va alterar l'estat de les persianes en ser pressionat, però no tenia la funció de "bloqueig" que significaria que la persiana es quedaria en la seva posició, és a dir, que la persiana la tornaria immediatament al que era abans. Vaig solucionar-ho mitjançant un bloc "espera fins", vinculat a una porta lògica O que llegia els valors del sensor de llum i del sensor tàctil, que explicaré a continuació.

El codi comença calibrant els motors i la persiana, començant amb la persiana completament oberta i baixant-la fins que toca el sensor tàctil a la part inferior, comptant quants quarts de volta triga per arribar al fons, que es guarda com a "Rotacions necessàries" variable. A continuació, escriu "fals" a la variable "BlindOpen" que s'utilitza per rastrejar la posició del cec. En aquest moment, el codi es divideix en 4 bucles.

Un d'aquests bucles és el bucle "Buttonstate" que publica contínuament l'estat del botó a una variable anomenada "ButtonPressed". Això elimina la necessitat de col·locar diversos blocs de botons a l'script.

El segon bucle és el "Clar o fosc" que compara contínuament el nivell de llum fora de la meva finestra, amb una constant definida anteriorment al codi. Si el resultat és inferior a aquesta constant, el bucle escriurà "false" a la variable "ItIsLight", mentre que si està per sobre del valor escriurà "true".

El tercer bucle conté una llista numèrica de 3 opcions que bàsicament indica als cecs què fer, 0 = cec cap avall, 1 = cec cap amunt, 2 = no fer res perquè el cec està al lloc correcte. El bucle comença llegint la variable "BlindShould" que especifica la tasca correcta que hauria de fer el cec, després realitza aquesta tasca, modifica la variable "BlindOpen" a l'opció correcta i després es queda inactiva fins que es canvia la variable "BlindShould" on es repeteix. Utilitza el valor "RotationsNeeded", així com una potència de +/- 100% per moure la persiana completament oberta o tancada.

El quart i últim bucle és el més complex, és el bucle "Decider" que gestiona totes les dades i decideix què fer amb cada permutació. Per fer-ho, utilitza "forquilles a la carretera" basades en la lògica on es prem "botó", "nivell de llum", "obert a cegues" són les preguntes vertaderes o falses. Totes les permutacions tenen una resposta codificada, que és 0 = cegat cap avall, 1 = cegat cap amunt o 2 = no fer res; aquest valor s'escriu a la variable "BlindShould" que després es gestiona mitjançant un bucle anterior. Algunes respostes esperaran que la variable “ItIsLight” i / o “ButtonPressed” canviï abans d’acabar l’escriptura, aquest és només el cas de les permutacions activades amb el botó, ja que en cas contrari s’intentaria immediatament corregir la seva posició, cosa que significa que tornaria la persiana. al seu estat original. Aquest procés es fa en bucle per crear un sistema automàtic robust i relativament senzill, que es pot afegir i depurar fàcilment. Uf.

Pas 5: Acabat de tocs

Tocs d'acabat
Tocs d'acabat

Després vaig decidir connectar una font d'alimentació de 9V al meu EV3 fent servir alguns cargols i tacs de fusta com a "bateries", cosa que va fer que el producte no depengués de les bateries i em va impedir haver de canviar-les cada dos dies.

Pas 6: Avaluació del projecte

Crec que el projecte ha anat bé en general, he acabat amb un prototip de treball per al muntatge de persianes automàtiques, que puc agafar tota la informació rellevant que he trobat durant el projecte i implementar-la a la versió final. He codificat correctament el dispositiu i, fins ara, no he trobat cap problema important amb el codi. M’hauria agradat fer que el dispositiu fos més atractiu visualment, però una vegada més és una prova de concepte i faré un esforç perquè quedi bé quan faci la versió final amb un ESP8266. Quan torni a fer el projecte, dissenyaré el motor per asseure’s a la persiana, ja que seria més fàcil d’amagar. La lliçó més gran que he après és depurar lògicament i pensar, documentar i provar el meu codi abans d’implementar-lo.

Recomanat: