- Komponenter som kreves for å bygge Arduino automatiserte persienner
- Kontroll av rullegardiner ved hjelp av Arduino
- Design og bygg vindusgardinet
- 3D-utskrift av motorholder og persienner
- Kretsdiagram for Arduino persiennekontroll
- Blynk Application for Arduino Blind Control
- Programmering av NodeMCU for å kontrollere persienner ved hjelp av Blynk
- Kontrollere persienner ved hjelp av Google Assistant
- Arduino-basert automatisk vindusgardinkontroll - demonstrasjon
"God morgen. Klokka er 07:00. Været i Malibu er 72 grader… ”dette var de første ordene til JARVIS da de ble introdusert i Marvel Cinematics Universe. De fleste Iron Man-fans burde kunne huske denne scenen og huske at JARVIS var i stand til å åpne et vindu (slags) om morgenen og gi oppdateringer om tid og vær. I filmen var vinduet Glasses faktisk laget av gjennomsiktige berøringsskjermer, og JARVIS klarte dermed å få det til å bli fra svart til gjennomsiktig og også vise værstatistikk på det. Men i virkeligheten er vi langt borte fra gjennomsiktige berøringsskjermbilder, og jo nærmere vi kan komme er å kontrollere persienner eller begrensninger automatisk.
Så i dette prosjektet skal vi bygge akkurat det, vi vil bygge en automatisert motorisert persienn som automatisk åpnes og lukkes på forhåndsdefinerte tider. Tidligere har vi bygget mange hjemmeautomatiseringsprosjekter der vi automatiserte lysene, motorene osv. Du kan sjekke dem ut hvis du er interessert. Så når de kommer tilbake, kan disse Arduino-kontrollerte persiennene også ta kommandoer fra Google-assistenten, slik at du kan åpne eller lukke vindus persienner eksternt gjennom talekommandoer. Fascinerende? La oss få den bygget.
Komponenter som kreves for å bygge Arduino automatiserte persienner
Prosjektet er relativt enkelt, og det er ikke mange komponenter som kreves. Bare samle elementene som er oppført nedenfor.
- NodeMCU
- Stepper Motor - 28BYJ-48
- Stepper Motor Driver Module
- LM117-3.3V
- Kondensatorer (10uf, 1uf)
- 12V DC-adapter
- Perf Board
- Loddesett
- 3D-skriver
Kontroll av rullegardiner ved hjelp av Arduino
Nå er det mange typer persienner i markedet, men den mest brukte har et tau med perler (som vist nedenfor) som kan trekkes for å åpne eller lukke persiennene.
Når vi trekker dette sirkulære tauet med urviseren, åpnes persiennene, og når vi trekker dette tauet mot urviseren, lukkes persiennene. Så hvis vi skulle automatisere denne prosessen, er alt vi trenger å gjøre å bruke en motor for å trekke dette tauet med eller mot urviseren, og vi vil være ferdige med det. Det er faktisk dette vi skal gjøre i dette prosjektet; vi skal bruke trinnmotoren 28BYJ-48 sammen med en NodeMCU for å trekke det perletauet.
Design og bygg vindusgardinet
Elektronikkdelen av dette prosjektet var ganske enkel og rett frem, den utfordrende delen var å bygge Blind Gear som kunne trekke det perletauet. Så la oss starte denne artikkelen med blindgirdesignet, jeg kommer ikke til å komme inn på detaljer om hvordan du designer utstyret, men denne grunnleggende ideen skal hjelpe deg. Et bilde av tauet med perlene på er vist nedenfor.
Igjen, det er mange typer tauverk, men de mest brukte tauene er sentrum-til-senter-avstanden til hver beading er 6mm og diameteren på hver beading er 4mm. Ved å bruke denne informasjonen kan vi starte utformingen av utstyret vårt. Hvis tauet på persiennene dine har de samme dimensjonene som diskutert, kan du ganske enkelt hoppe over dette trinnet og laste ned STL-filen som er gitt i denne artikkelen og skrive ut utstyret. Hvis tauet ditt har en annen beading-ordning, så må du omforme blindutstyret på nytt.
Jeg bestemte meg for å ha 24 perler på utstyret mitt for å få optimal girhjulstørrelse. Du kan velge hvilket som helst tall i nærheten av dette for at tannhjulet ditt skal være stort eller lite. Så nå vet vi at avstanden mellom hver perle er 6 mm, og vi trenger 24 perler på utstyret vårt. Ved å multiplisere begge gir girhjulet omkrets. Med disse dataene kan du beregne radiusen på tannhjulet. Som du kan se i bildet ovenfor, ble diameteren på tannhjulet mitt beregnet til å være rundt 46 mm. Men husk, dette er ikke den faktiske diameteren på giret fordi vi ikke har tatt høyde for diameteren på perlene som er 4 mm. Så den faktiske diameteren på tannhjulet vil være 42 mm, jeg trykte og testet mange tannhjul før jeg fant den som fungerer best. Hvis du ikke er interessert i design,bare last ned og skriv ut STL-filene fra neste avsnitt og fortsett med prosjektet.
3D-utskrift av motorholder og persienner
Sammen med giret trenger vi også et lite foringsrør som kan bores på veggen og holder trinnmotoren på plass, både foringsrøret og giret som er brukt i dette prosjektet er vist nedenfor.
Du finner komplette designfiler og STL-filer på siden Arduino Blind Control Thingiverse gitt nedenfor. Du kan bare laste ned og skrive ut blindutstyr og motorveske.
Last ned STL-filer for Blind Gear and Motor Case
Kretsdiagram for Arduino persiennekontroll
Når du er klar med utstyr og montering, er det enkelt å fortsette med elektronikk- og programvaredelen. Det komplette kretsskjemaet for IoT Blind-kontrollprosjektet er vist nedenfor.
Vi har brukt en 12V adapter for å drive hele oppsettet; LM1117-3.3V-regulatoren konverterer 12V til 3.3V som kan brukes til å drive NodeMCU-kortet. Steppermotordrivermodulen får direkte strøm fra 12V-adapteren. Jeg prøvde å kjøre trinnmotoren på 5V, men da ga den ikke nok dreiemoment til å trekke persiennene, så sørg for at du også bruker 12V.
Bortsett fra det, er kretsen ganske enkel. Hvis du er nybegynner med trinnmotorer, kan du se på det grunnleggende i trinnmotorartikkelen for å forstå hvordan den fungerer og hvordan den kan brukes med en mikrokontroller.
Blynk Application for Arduino Blind Control
Før vi går inn i Arduino-programmet for styring av persienner, kan vi åpne blynk-applikasjonen og lage noen knapper der vi kan åpne eller lukke persiennene. Vi trenger også dette senere for å kontrollere fra Google hjemme.
Jeg har nettopp lagt til to knapper for å åpne og lukke persiennene og engangsutløseren for å åpne persiennene kl 10:00 hver dag. Du kan legge til flere tidtakere for å åpne eller lukke persienner med forskjellige intervaller på dagen. I utgangspunktet, når vi må lukke persiennene, må vi utløse virtuell pinne V1, og når vi må åpne persiennene, må vi utløse virtuell pinne V2. Programmet for å kontrollere trinnmotoren basert på knappen som trykkes her, vil bli skrevet på Arduino IDE, det samme blir diskutert nedenfor.
Programmering av NodeMCU for å kontrollere persienner ved hjelp av Blynk
Den komplette ESP8266-koden for dette Blind Control Project finner du nederst på denne siden. Programmet vårt må vente på en kommando fra blynk-applikasjonen, og basert på den kommandoen må vi rotere trinnmotoren enten med urviseren eller mot urviseren. De viktige delene av koden er diskutert nedenfor.
I følge kretsskjemaet vårt har vi brukt digitale pinner 1, 2, 3 og 4 på nodemcu for å kontrollere trinnmotoren vår. Så vi må lage en forekomst kalt stepper ved hjelp av disse pinnene som vist nedenfor. Legg merke til at vi har definert pinnene i rekkefølge 1, 3, 2 og 4. Det ble gjort bevisst og er ikke en feil; vi må bytte pinne 2 og 3 for at motoren skal fungere skikkelig.
// lage en forekomst av trinnklassen ved hjelp av trinn og pinner Stepper stepper (STEPS, D1, D3, D2, D4);
I neste trinn må vi dele godkjenningstokenet for blynk-applikasjonen og Wi-Fi-legitimasjonen som vår IoT Blind-kontroller må kobles til. Hvis du ikke er sikker på hvordan du får tak i dette Blynk-godkjenningstokenet, kan du se i Blynk LED Control-prosjektet for å forstå det grunnleggende i blynk-applikasjonen og hvordan du bruker den.
// Du bør få Auth Token i Blynk-appen. // Gå til Prosjektinnstillinger (mutterikon). char auth = "l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx"; // Din WiFi-legitimasjon. // Sett passord til "" for åpne nettverk. char ssid = "CircuitDigest"; char pass = "dummy123";
Fortsetter med koden vår, etter oppsettfunksjonen, har vi definert to metoder for blynk. Som nevnt tidligere, må vi definere hva virtuelle pinner V1 og V2 skal gjøre. Koden for det samme er gitt nedenfor.
BLYNK_WRITE (V1) // STENG BLINDENE {Serial.println ("Closing Blinds"); hvis (åpnet == sann) {for (int c_val = 0; c_val <= 130; c_val ++) // roterer mot klokken for å lukke {stepper.step (c_val); utbytte(); } lukket = sant; åpnet = falsk; deaktivere_motor (); // alltid ønskelige trinnmotorer etter bruk for å redusere strømforbruk og oppvarming}} BLYNK_WRITE (V2) // ÅPNE BLINDENE {Serial.println ("Åpne persienner"); hvis (lukket == sann) {for (int cc_val = 0; cc_val> = -130; cc_val--) // roter med urviseren for å åpne {stepper.step (cc_val); utbytte(); } åpnet = sant; lukket = falsk; } deaktiver_motor (); // alltid ønskelige trinnmotorer etter bruk for å redusere strømforbruk og oppvarming}
Som du kan se, brukes V1 til å lukke persiennene, og V2 brukes til å åpne persiennene. A for loop brukes til å rotere motorene med eller mot urviseren i 130 trinn. Jeg eksperimenterte med persiennene mine for å finne ut at jeg med 130 trinn kunne åpne og lukke persiennene. Nummeret ditt kan variere. Den for sløyfen for å rotere trinnmotor i en medurs og moturs retning, er vist nedenfor.
for (int c_val = 0; c_val <= 130; c_val ++) // roter mot klokken for å lukke {stepper.step (c_val); utbytte(); } for (int cc_val = 0; cc_val> = -130; cc_val--) // roter med urviseren for å åpne {stepper.step (cc_val); utbytte(); }
Du kan også merke to boolske variabler “åpnet” og “lukket” i programmet vårt. Disse to variablene brukes til å forhindre at motoren åpner eller lukker persiennene to ganger. Betydning, persiennene åpnes bare når den tidligere er lukket, og den lukkes bare når den tidligere er åpnet.
Hvordan øke hastigheten på 28BJY-48 trinnmotor?
En ulempe med å bruke trinnmotoren 28BJY-48 er at den er veldig treg. Disse motorene ble opprinnelig produsert for å brukes i høypresisjons applikasjoner med lav hastighet, så ikke forvent at disse motorene skal rotere med høy hastighet. Hvis du vil øke hastigheten på trinnmotoren ved hjelp av Arduino, er det to parametere du kan endre. Den ene er #define STEPS 64, jeg fant ut at når trinn er definert som 64, var motoren relativt raskere. En annen parameter er en stepper.setSpeed (500); igjen fant jeg 500 for å være en optimal verdi, noe mer enn det som faktisk gjør trinnmotoren tregere.
Kjenner du noen annen måte å øke hastigheten på disse motorene? Hvis ja, la dem være i kommentarseksjonen nedenfor.
Hvordan forhindre trinnmotoren i å bli overopphetet?
Steppermotorer bør alltid være deaktivert når de ikke er i bruk for å forhindre overoppheting. Deaktivering av trinnmotor er veldig enkelt; bare endre pin-statusen til alle de fire GPIO-pinnene som styrer trinnmotoren til lav. Dette er veldig viktig, ellers kan motoren din bli veldig varm ved + 12V og skade seg selv permanent. Programmet for å deaktivere trinnmotoren er gitt nedenfor.
ugyldig disable_motor () // slå av motoren når du er ferdig for å unngå oppvarming {digitalWrite (D1, LOW); digitalWrite (D2, LOW); digitalWrite (D3, LOW); digitalWrite (D4, LOW); }
Kontrollere persienner ved hjelp av Google Assistant
Vi skal bruke blynk API for å kontrollere persiennene via Google-assistenten. Det vil være lik vårt stemmestyrte hjemmeautomatiseringsprosjekt, så sjekk det hvis du er interessert. I utgangspunktet må vi utløse lenken nedenfor når vi sier en forhåndsdefinert setning til Google Assistant.
//http://188.166.206.43/l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx/update/V1?value=1 /
Forsikre deg om at du endrer godkjenningstokenet til det som ble gitt av blynk-applikasjonen. Du kan til og med teste denne lenken i kromleseren din for å se om den fungerer som forventet. Nå som lenken er klar, må vi rett og slett komme oss over til IFTTT og lage to appletter som kan utløse virtuell pin V1 og V2 når vi ber om å lukke og åpne persiennene. Igjen kommer jeg ikke inn på detaljene i dette fordi vi har gjort dette mange ganger. Hvis du trenger mer hjelp, se dette stemmekontrollerte FM-radioprosjektet, bare bytt ut adafruit-tjenestene med webhooks. Jeg deler også et skjermbilde av utdraget mitt som referanse.
Arduino-basert automatisk vindusgardinkontroll - demonstrasjon
Etter at kretsløpet og de 3D-trykte kabinettene er klare, er det bare å montere enheten på veggen ved å bore to hull på veggen. Mitt monteringsoppsett er vist på bildene nedenfor.
Etter det, sørg for at persiennene dine er i åpen tilstand og slå deretter på kretsen. Nå kan du prøve å lukke blinds fra blynk-applikasjonen eller gjennom Google Assistant, og det skal fungere. Du kan også stille timere på blynk-applikasjonen for automatisk å åpne og lukke blinde på et bestemt tidspunkt på dagen.
Fullstendig bearbeiding av prosjektet finner du i videoen gitt nedenfor; hvis du har spørsmål, er du velkommen til å skrive dem i kommentarfeltet nedenfor. Du kan også bruke forumene våre til andre tekniske diskusjoner.