- Components necessaris per construir persianes automatitzades Arduino
- Control de persianes amb Arduino
- Dissenyar i construir l’aparell de persiana
- Impressió 3D del suport del motor i de l'engranatge cec
- Diagrama de circuits per al control de persianes Arduino
- Aplicació Blynk per al control de persianes Arduino
- Programació de NodeMCU per controlar persianes mitjançant Blynk
- Control de les persianes amb l'Assistent de Google
- Control automàtic de persianes basat en Arduino: demostració
"Bon dia. Són les 7 del matí. El temps a Malibú és de 72 graus… ”aquestes van ser les primeres paraules de JARVIS quan es va introduir a l’univers Marvel Cinematics. La majoria dels aficionats a Iron Man haurien de poder recordar aquesta escena i recordar que JARVIS va poder obrir una finestra (tipus) al matí i donar actualitzacions sobre temps i temps. A la pel·lícula, els vidres de la finestra realment estaven fets amb pantalles tàctils transparents i, per tant, JARVIS va ser capaç de fer que passés de negre a transparent i també mostrar-hi estadístiques meteorològiques. Però, en realitat, estem lluny de les pantalles tàctils transparents i, com més a prop podem controlar, és automàtic controlar les persianes o les restriccions.
Per tant, en aquest projecte, construirem exactament això, construirem una persiana motoritzada automatitzada que s’obriria i es tancaria automàticament en moments predefinits. Anteriorment, hem construït molts projectes domòtics en què automatitzavem llums, motors, etc. Podeu consultar-los si us interessa. Per tant, en tornar, aquestes persianes controlades per Arduino també poden rebre ordres de l’assistent de Google perquè pugueu obrir o tancar les persianes de manera remota mitjançant ordres de veu. Intrigant? Llavors, anem a construir-lo.
Components necessaris per construir persianes automatitzades Arduino
El projecte és relativament senzill i no calen molts components. Només heu de reunir els elements que s'enumeren a continuació.
- NodeMCU
- Motor pas a pas - 28BYJ-48
- Mòdul de controlador de motor pas a pas
- LM117-3,3V
- Condensadors (10uf, 1uf)
- Adaptador de 12V CC
- Perf Board
- Kit de soldadura
- Impressora 3D
Control de persianes amb Arduino
Ara hi ha molts tipus de persianes al mercat, però el més utilitzat té una corda amb cordons (com es mostra a continuació) que es pot estirar per obrir o tancar les persianes.

Quan estirem aquesta corda circular en el sentit de les agulles del rellotge, s’obriran les persianes de les finestres i quan estirem aquesta corda en sentit antihorari es tancaran les persianes de les finestres. Per tant, si haguéssim d’automatitzar aquest procés, tot el que hem de fer és utilitzar un motor per estirar aquesta corda en el sentit de les agulles del rellotge o antihorari i ja ho farem. De fet, això és el que farem en aquest projecte; utilitzarem el motor pas a pas 28BYJ-48 juntament amb un NodeMCU per estirar la corda de comptes.
Dissenyar i construir l’aparell de persiana
La part electrònica d’aquest projecte era bastant senzilla i directa, la part més difícil consistia a construir el Blind Gear que pogués estirar la corda de perles. Comencem doncs aquest article amb el disseny de l’engranatge cec, no vaig a entrar en detalls sobre com dissenyar l’engranatge, però aquesta idea bàsica us hauria d’ajudar. A continuació es mostra una imatge de la corda amb els comptes.

De nou, hi ha molts tipus de cordes, però les cordes més utilitzades són la distància de centre a centre de cada cordó és de 6 mm i el diàmetre de cada cordó és de 4 mm. Mitjançant aquesta informació, podem iniciar el disseny del nostre equip. Si la corda de les persianes té les mateixes dimensions que les comentades, només podeu saltar aquest pas i descarregar el fitxer STL que es proporciona en aquest article i imprimir l’engranatge. Si la vostra corda té una disposició de cordons diferent, és així com heu de tornar a dissenyar l’engranatge cec.

Vaig decidir tenir 24 comptes a l’engranatge per obtenir una mida òptima de la roda dentada. Podeu seleccionar qualsevol número proper a aquest perquè la vostra roda dentada sigui gran o petita. Ara sabem que la distància entre cada cordó és de 6 mm i que necessitem 24 comptes al nostre equip. Multiplicant tots dos es donarà la circumferència de la roda dentada. Amb aquestes dades, podeu calcular el radi de la roda dentada. Com podeu veure a la imatge anterior, el diàmetre de la meva roda dentada es va calcular al voltant dels 46 mm. Però recordeu, aquest no és el diàmetre real de l’engranatge, ja que no hem tingut en compte el diàmetre del cordó que és de 4 mm. Per tant, el diàmetre real de la roda dentada serà de 42 mm. Vaig imprimir i provar moltes rodes dentades abans de trobar la que millor funcionés. Si no us interessa els dissenys,només heu de descarregar i imprimir els fitxers STL del següent paràgraf i continuar amb el vostre projecte.

Impressió 3D del suport del motor i de l'engranatge cec
Juntament amb l’engranatge, també necessitarem una petita carcassa que es pugui perforar a la paret i mantenir el motor pas a pas en posició, tant la carcassa com l’engranatge utilitzat en aquest projecte es mostren a continuació.

Podeu trobar fitxers de disseny complets i fitxers STL a la pàgina Aringui Thingiverse de Arduino Blind Control. Només podeu descarregar i imprimir la caixa del motor i l'engranatge cec.
Descarregueu fitxers STL per Blind Gear i Motor Case
Diagrama de circuits per al control de persianes Arduino
Un cop estigueu a punt amb l’engranatge i el muntatge, és fàcil procedir amb la part electrònica i de programari. A continuació es mostra l’esquema de circuits complet del projecte de control IoT Blind.

Hem utilitzat un adaptador de 12 V per alimentar tota la configuració; el regulador LM1117-3.3V converteix el 12V a 3.3V que es pot utilitzar per alimentar la placa NodeMCU. El mòdul del controlador del motor pas a pas s’alimenta directament des de l’adaptador de 12 V. Vaig provar de fer funcionar el motor pas a pas a 5V, però després no va proporcionar el parell suficient per tirar de les persianes, així que assegureu-vos que també feu servir 12V.
A part d’això, el circuit és bastant senzill, si no sou nous en els motors pas a pas, consulteu els conceptes bàsics de l’article sobre motor pas a pas per entendre com funciona i com es pot utilitzar amb un microcontrolador.
Aplicació Blynk per al control de persianes Arduino
Abans d’entrar al programa Arduino per al control de persianes, podem obrir l’aplicació blynk i crear uns botons amb els quals podem obrir o tancar les persianes. També ho necessitarem més endavant per controlar des de Google Home.

Acabo d'afegir dos botons per obrir i tancar les persianes i una sola vegada per obrir les persianes a les 10:00 del matí cada dia. Podeu afegir diversos temporitzadors per obrir o tancar les persianes a diferents intervals del dia. Bàsicament, quan hem de tancar les persianes, hem d’activar el pin virtual V1 i, quan hem d’obrir les persianes, hem d’activar el pin virtual V2. El programa per controlar el motor pas a pas basat en el botó que es prem aquí s’escriurà a l’IDE Arduino, el mateix es descriu a continuació.
Programació de NodeMCU per controlar persianes mitjançant Blynk
El codi ESP8266 complet d’aquest Projecte de control de persianes es troba a la part inferior d’aquesta pàgina. El nostre programa ha d’esperar a una ordre de l’aplicació blynk i, en funció d’aquesta ordre, hem de girar el motor pas a pas en sentit horari o en sentit antihorari. A continuació, es detallen els segments importants del codi.
Segons el nostre diagrama de circuits, hem utilitzat els pins digitals 1, 2, 3 i 4 del nodemcu per controlar el motor pas a pas. Per tant, hem de crear una instància anomenada stepper utilitzant aquests pins com es mostra a continuació. Fixeu-vos que hem definit els pins per ordre 1, 3, 2 i 4. Es va fer deliberadament i no és un error; hem de canviar els passadors 2 i 3 perquè el motor funcioni correctament.
// creeu una instància de la classe stepper mitjançant els passos i pins Stepper stepper (STEPS, D1, D3, D2, D4);
Al següent pas, hem de compartir el testimoni d’autenticació de l’aplicació blynk i les credencials de Wi-Fi a les quals s’ha de connectar el nostre controlador IoT Blind. Si no esteu segur de com obtenir aquest testimoni d'autorització Blynk, consulteu el projecte Blynk LED Control per conèixer els conceptes bàsics de l'aplicació blynk i com utilitzar-lo.
// Hauríeu d'obtenir Auth Token a l'aplicació Blynk. // Aneu a la configuració del projecte (icona de nou). char auth = "l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx"; // Les vostres credencials de WiFi. // Estableix la contrasenya a "" per a xarxes obertes. char ssid = "CircuitDigest"; char pass = "dummy123";
Seguint amb el nostre codi, després de la funció de configuració, hem definit dos mètodes per a blynk. Com s'ha esmentat anteriorment, hem de definir què haurien de fer els pins virtuals V1 i V2. A continuació es dóna el codi del mateix.
BLYNK_WRITE (V1) // TANCAR LES PERSIANES {Serial.println ("Tancar les persianes"); if (obert == true) {for (int c_val = 0; c_val <= 130; c_val ++) // gira en sentit antihorari per tancar {stepper.step (c_val); rendiment (); } tancat = cert; obert = fals; disable_motor (); // sempre es poden desactivar motors pas a pas després d'utilitzar-los per reduir el consum d'energia i la calefacció}} BLYNK_WRITE (V2) // OBRIR LES PERSIANES {Serial.println ("Obrir les persianes"); if (tancat == true) {for (int cc_val = 0; cc_val> = -130; cc_val--) // gira en sentit horari per obrir {stepper.step (cc_val); rendiment (); } obert = cert; tancat = fals; } disable_motor (); // sempre es poden utilitzar motors pas a pas després d’utilitzar-los per reduir el consum d’energia i la calefacció}
Com podeu veure, V1 s'utilitza per tancar les persianes i el V2 s'utilitza per obrir les persianes. Un bucle for s'utilitza per girar els motors en sentit horari o antihorari durant 130 passos. Vaig experimentar amb les meves persianes per trobar que amb 130 passos puc obrir i tancar completament les persianes. El vostre número pot variar. A continuació es mostra el bucle for per girar el motor pas a pas en sentit horari i antihorari.
for (int c_val = 0; c_val <= 130; c_val ++) // gira a la dreta en sentit antihorari per tancar {stepper.step (c_val); rendiment (); } per a (int cc_val = 0; cc_val> = -130; cc_val--) // gira en sentit horari per obrir {stepper.step (cc_val); rendiment (); }
També podeu notar dues variables booleanes "obertes" i "tancades" al nostre programa. Aquestes dues variables s’utilitzen per evitar que el motor obri o tanqui dues vegades les persianes. És a dir, les persianes només s’obriran quan estigui prèviament tancada i només es tancarà quan s’hagi obert prèviament.
Com augmentar la velocitat del motor pas a pas 28BJY-48?
L’inconvenient de l’ús del motor pas a pas 28BJY-48 és que és molt lent. Aquests motors es van fabricar originalment per utilitzar-los en aplicacions de baixa velocitat d'alta precisió, així que no espereu que aquests motors girin a gran velocitat. Si voleu augmentar la velocitat del motor pas a pas mitjançant Arduino, hi ha dos paràmetres que podeu canviar. Un és el #define STEPS 64, he trobat que quan es defineixen els passos com a 64, el motor era relativament més ràpid. Un altre paràmetre és un stepper.setSpeed (500); de nou, vaig trobar que 500 era un valor òptim, res més que realment fa que el motor pas a pas sigui més lent.
Coneixeu alguna altra manera d’augmentar la velocitat d’aquests motors? Si és així, deixeu-los a la secció de comentaris següent.
Com evitar que el motor pas a pas es sobreescalfi?
Els motors pas a pas sempre s’han de desactivar quan no s’utilitzen per evitar el sobreescalfament. Desactivar un motor pas a pas és molt senzill; només cal que canvieu a baix l'estat dels pins de tots els quatre pins GPIO que controlen el motor pas a pas. Això és molt important, en cas contrari, el motor pot escalfar-se a + 12V i es pot danyar permanentment. A continuació es mostra el programa per desactivar el motor pas a pas.
void disable_motor () // apagueu el motor quan hàgiu acabat per evitar l'escalfament {digitalWrite (D1, LOW); digitalWrite (D2, BAIX); digitalWrite (D3, BAIX); digitalWrite (D4, BAIX); }
Control de les persianes amb l'Assistent de Google
Utilitzarem l'API de blynk per controlar les persianes a través de l'Assistent de Google, serà similar al nostre projecte de domòtica controlada per veu, així que comproveu-ho si esteu interessat. Bàsicament, hem d'activar l'enllaç següent quan diem una frase predefinida a l'Assistent de Google.
//http://188.166.206.43/l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx/update/V1?value=1 /
Assegureu-vos de canviar el testimoni d’autenticació pel que proporciona la vostra aplicació blynk. Fins i tot podeu provar aquest enllaç al navegador Chrome per veure si funciona com s’esperava. Ara que l'enllaç està a punt, simplement hem de passar a IFTTT i crear dos applets que puguin activar el pin virtual V1 i V2 quan demanem que tanquem i obrim les persianes. De nou, no estic aprofundint en els detalls, perquè ho hem fet moltes vegades. Si necessiteu més ajuda, consulteu aquest projecte de ràdio FM controlada per veu. Només heu de substituir els serveis adafruit per webhooks. També comparteixo una captura de pantalla del meu fragment com a referència.

Control automàtic de persianes basat en Arduino: demostració
Quan el circuit i els recintes impresos en 3D estiguin a punt, només cal que ensembleu el dispositiu a la paret perforant dos forats a la paret. La configuració de muntatge es mostra a les imatges següents.

Després d'això, assegureu-vos que les persianes estiguin obertes i, a continuació, enceneu el circuit. Ara podeu provar de tancar les persianes des de l'aplicació blynk o mitjançant l'Assistent de Google i hauria de funcionar. També podeu configurar temporitzadors a l’aplicació blynk per obrir i tancar automàticament la persiana a una hora concreta del dia.

El funcionament complet del projecte es pot trobar al vídeo que es mostra a continuació; si teniu cap pregunta, no dubteu a escriure-les a la secció de comentaris a continuació. A més, podeu utilitzar els nostres fòrums per a altres discussions tècniques.
