- Komponentai, reikalingi „Arduino“ automatinėms žaliuzėms sukurti
- Roletų valdymas naudojant „Arduino“
- Suprojektuokite ir pastatykite langų roletus
- 3D variklio laikiklio ir žaliuzės spausdinimas
- „Arduino“ žaliuzių valdymo grandinės schema
- „Blynk“ programa „Arduino Blind Control“
- NodeMCU programavimas žaliuzėms valdyti naudojant Blynk
- Langų žaliuzių valdymas naudojant „Google“ padėjėją
- „Arduino“ pagrįstas automatinis langų žaliuzių valdymas - demonstravimas
"Labas rytas. 7 val. Malibu oras yra 72 laipsnių… “- tai buvo pirmieji JARVIS žodžiai, kai jie buvo pristatyti„ Marvel Cinematics Universe “. Daugelis „Iron Man“ gerbėjų turėtų sugebėti prisiminti šią sceną ir prisiminti, kad JARVIS sugebėjo atidaryti langą (natūra) ryte ir pranešti apie laiką ir orą. Filme langų stiklai iš tikrųjų buvo pagaminti iš permatomų lietimui jautrių ekranų, todėl JARVIS sugebėjo priversti jį paversti juodu į skaidrų ir rodyti orų statistiką. Tačiau iš tikrųjų mes esame labai toli nuo permatomų jutiklinių ekranų, o kuo arčiau galime pasiekti, tai automatiškai valdyti langų žaliuzes ar apribojimus.
Taigi, šiame projekte ketiname pastatyti būtent tai, sukursime automatizuotą motorizuotą žaliuzę, kuri automatiškai atsidarys ir užsidarys iš anksto nustatytu laiku. Anksčiau mes sukūrėme daug namų automatikos projektų, kuriuose mes automatizavome žibintus, variklius ir kt. Jei norite, galite juos patikrinti. Taigi, grįžę, šios „ Arduino“ valdomos žaliuzės taip pat gali priimti komandas iš „Google“ padėjėjo, kad galėtumėte atidaryti arba uždaryti langų žaliuzes nuotoliniu būdu naudodamiesi balso komandomis. Intriguoja? Tada pastatykime jį.
Komponentai, reikalingi „Arduino“ automatinėms žaliuzėms sukurti
Projektas yra gana paprastas ir nereikia daug komponentų. Tiesiog surinkite toliau išvardytus daiktus.
- „NodeMCU“
- Žingsninis variklis - 28BYJ-48
- Žingsninio variklio tvarkyklės modulis
- LM117-3.3V
- Kondensatoriai (10uf, 1uf)
- 12 V nuolatinės srovės adapteris
- Perf Board
- Litavimo rinkinys
- 3D spausdintuvas
Roletų valdymas naudojant „Arduino“
Dabar rinkoje yra daugybė žaliuzių rūšių, tačiau dažniausiai naudojama virvė su karoliukais (kaip parodyta žemiau), kurią galima traukti žaliuzėms atidaryti ar uždaryti.
Patraukus šią apskritą virvę pagal laikrodžio rodyklę, langų žaliuzės atsidarys, o traukiant šią virvę prieš laikrodžio rodyklę, langų žaliuzės užsidarys. Taigi, jei norėtume automatizuoti šį procesą, viskas, ką turime padaryti, tai naudoti variklį, kad šią virvę patrauktumėte pagal laikrodžio rodyklę arba prieš laikrodžio rodyklę, ir mums viskas bus padaryta. Tiesą sakant, tai ir padarysime šiame projekte; Mes naudosime 28BYJ-48 žingsninį variklį kartu su „NodeMCU“, kad ištrauktume karoliuotą virvę.
Suprojektuokite ir pastatykite langų roletus
Šio projekto elektronikos dalis buvo gana paprasta ir tiesi į priekį, iššūkis buvo statant „Blind Gear“, kuris galėtų traukti karoliukų virvę. Taigi pradėkime šį straipsnį nuo aklųjų pavarų konstrukcijos, nesigilinsiu į detales, kaip suprojektuoti pavarą, tačiau ši pagrindinė idėja turėtų jums padėti. Virvės vaizdas su karoliukais parodytas žemiau.
Vėlgi, yra daugybė lynų tipų, tačiau dažniausiai naudojami lynai yra kiekvieno profilio atstumas nuo centro iki centro ir 6 mm, o kiekvieno apvado skersmuo yra 4 mm. Naudodamiesi šia informacija galime pradėti kurti savo pavarą. Jei jūsų žaliuzės lyno matmenys yra tokie patys, kaip aptarta, galite tiesiog praleisti šį veiksmą ir atsisiųsti šiame straipsnyje pateiktą STL failą ir atsispausdinti pavarą. Jei jūsų virvė turi skirtingą karoliukų išdėstymą, tada turėtumėte iš naujo suprojektuoti žaliuzės pavarą.
Aš nusprendžiau ant savo pavaros turėti 24 karoliukus, kad gautumėte optimalų pavarų rato dydį. Galite pasirinkti bet kurį numerį, artimą tam, kad jūsų pavarų ratas būtų didelis ar mažas. Taigi dabar mes žinome, kad atstumas tarp kiekvieno apvado yra 6 mm, o ant mūsų įrankio reikia 24 karoliukų. Padauginus abu gausime krumpliaračio apimtį. Turėdami šiuos duomenis, galite apskaičiuoti krumpliaračio spindulį. Kaip matote aukščiau esančiame paveikslėlyje, mano pavarų rato skersmuo buvo apskaičiuotas maždaug 46 mm. Tačiau atminkite, kad tai nėra tikrasis krumpliaračio skersmuo, nes mes neatsižvelgėme į 4 mm bordiūrų skersmenį. Taigi tikrasis pavarų rato skersmuo bus 42 mm, prieš išspausdindamas geriausiai veikiantį ratą išspausdinau ir išbandžiau daugybę pavarų ratų. Jei nesidomite dizainais,tiesiog atsisiųskite ir atsispausdinkite STL failus iš kitos pastraipos ir tęskite savo projektą.
3D variklio laikiklio ir žaliuzės spausdinimas
Kartu su pavara mums taip pat reikės mažo korpuso, kurį galima išgręžti ant sienos ir laikyti žingsninį variklį savo padėtyje. Žemiau parodytas šiame projekte naudojamas korpusas ir pavara.
Išsamius dizaino failus ir STL failus galite rasti toliau pateiktame „Arduino Blind Control Thingiverse“ puslapyje. Galite tiesiog atsisiųsti ir atsispausdinti žaliuzės pavarą ir variklio dėklą.
Atsisiųskite „Blind Gear“ ir „Motor Case“ STL failus
„Arduino“ žaliuzių valdymo grandinės schema
Kai būsite pasirengę su reduktoriumi ir surinkimu, lengva tęsti elektronikos ir programinės įrangos dalį. Visa IoT Blind valdymo projekto schema parodyta žemiau.
Mes naudojome 12 V adapterį, kad galėtume maitinti visą sąranką; „LM1117-3.3V“ reguliatorius 12 V paverčia 3.3 V įtampa, kuris gali būti naudojamas „NodeMCU“ plokštės maitinimui. Žingsninio variklio tvarkyklės modulis tiesiogiai maitinamas iš 12 V adapterio. Aš bandžiau paleisti žingsninį variklį 5 V įtampa, bet tada jis nesuteikė pakankamai sukimo momento, kad ištrauktų žaliuzes, todėl įsitikinkite, kad naudojate ir 12 V įtampą.
Be to, grandinė yra gana paprasta, jei jūs esate naujokas stepper varikliuose, pasidomėkite žingsninių variklių straipsnio pagrindais, kad suprastumėte, kaip jis veikia ir kaip jį galima naudoti su mikrovaldikliu.
„Blynk“ programa „Arduino Blind Control“
Prieš patekdami į „Arduino“ žaliuzių valdymo programą, leidžia atidaryti „blynk“ programą ir sukurti keletą mygtukų, kuriais galime atidaryti arba uždaryti žaliuzes. To mums taip pat prireiks vėliau, kad galėtume valdyti iš „Google“ namų.
Ką tik pridėjau du mygtukus žaliuzėms atidaryti ir uždaryti, o vienkartinį - žaliuzių atidarymui kiekvieną dieną 10:00. Galite pridėti kelis laikmačius, kad atidarytumėte arba uždarytumėte žaliuzes skirtingais dienos intervalais. Iš esmės, kai turime uždaryti žaliuzes, turime suaktyvinti virtualų kaištį V1 ir, kai atidaryti žaliuzes, turime suveikti virtualų kaištį V2. Programa, leidžianti valdyti žingsninį variklį pagal čia paspaustą mygtuką, bus parašyta „Arduino IDE“, tas pats aptariamas toliau.
NodeMCU programavimas žaliuzėms valdyti naudojant Blynk
Visą šio aklųjų valdymo projekto ESP8266 kodą galite rasti šio puslapio apačioje. Mūsų programa turi laukti komandos iš „blynk“ komandos ir, remdamiesi ta komanda, žingsninį variklį turime pasukti pagal laikrodžio rodyklę arba prieš laikrodžio rodyklę. Svarbūs kodo segmentai aptariami toliau.
Pagal mūsų grandinės schemą, mes naudojome skaitmeninius 1, 2, 3 ir 4 kaiščius nodemcu, kad valdytume mūsų žingsninį variklį. Taigi, mes turime sukurti egzempliorių, vadinamą „stepper“, naudodami šiuos kaiščius, kaip parodyta žemiau. Atkreipkite dėmesį, kad kaiščius apibrėžėme 1, 3, 2 ir 4 eilės tvarka. Tai buvo padaryta sąmoningai ir nėra klaida; kad variklis veiktų tinkamai, turime sukeisti 2 ir 3 kaiščius.
// sukurkite stepper klasės egzempliorių naudodamiesi žingsniais ir smeigtukais Stepper stepper (STEPS, D1, D3, D2, D4);
Kitame etape turime pasidalinti savo „blynk“ programos autentifikavimo žetonu ir „Wi-Fi“ kredencialais, prie kurių turi būti prijungtas „IoT Blind“ valdiklis. Jei nesate tikri, kaip gauti šį „Blynk“ autentifikavimo ženklą, skaitykite „Blynk LED Control“ projektą, kad suprastumėte „blynk“ programos pagrindus ir kaip ją naudoti.
// „Blynk“ programoje turėtumėte gauti „Auth Token“. // Eikite į projekto nustatymus (veržlės piktograma). char auth = "l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx"; // Jūsų „WiFi“ prisijungimo duomenys. // Nustatykite "" slaptažodį atviriems tinklams. char ssid = "CircuitDigest"; char pass = "manekenas123";
Po sąrankos funkcijos mes nustatėme du blynk metodus. Kaip minėta anksčiau, turime apibrėžti, ką turėtų daryti virtualūs kaiščiai V1 ir V2. To paties kodas pateiktas žemiau.
BLYNK_WRITE (V1) // UŽDARYKITE ŽALIUOKLES {Serial.println ("Žaliuzių uždarymas"); jei (atidarytas == tiesa) {for (int c_val = 0; c_val <= 130; c_val ++) // pasukti prieš laikrodžio rodyklę, kad uždarytumėte {stepper.step (c_val); derlius (); } uždaryta = tiesa; atidarytas = klaidingas; išjungti_motorą (); // po naudojimo visada norimi žingsniniai varikliai, siekiant sumažinti energijos suvartojimą ir šildymą}} BLYNK_WRITE (V2) // ATIDARYKITE ŽALIATUS {Serial.println ("Žaliuzių atidarymas"); if (uždaryta == tiesa) {for (int cc_val = 0; cc_val> = -130; cc_val--) // pasukti pagal laikrodžio rodyklę, kad atidarytumėte {stepper.step (cc_val); derlius (); } atidarytas = tiesa; uždaras = klaidingas; } išjungti_motorą (); // visada naudingi žingsniniai varikliai po naudojimo, siekiant sumažinti energijos sąnaudas ir šildymą}
Kaip matote, V1 naudojamas žaliuzėms uždaryti, o V2 - žaliuzėms atidaryti. A for loop naudojamas varikliams pasukti pagal laikrodžio rodyklę arba prieš laikrodžio rodyklę 130 žingsnių. Aš eksperimentavau su savo žaliuzėmis ir sužinojau, kad su 130 žingsnių aš galiu visiškai atidaryti ir uždaryti savo žaliuzes. Jūsų skaičius gali skirtis. Žemiau parodyta „ for“ kilpa, skirta žingsninį variklį pasukti pagal laikrodžio rodyklę ir prieš laikrodžio rodyklę.
for (int c_val = 0; c_val <= 130; c_val ++) // pasukite prieš laikrodžio rodyklę, kad uždarytumėte {stepper.step (c_val); derlius (); } for (int cc_val = 0; cc_val> = -130; cc_val--) // pasukti pagal laikrodžio rodyklę, kad atidarytumėte {stepper.step (cc_val); derlius (); }
Taip pat mūsų programoje galite pastebėti du „Boolean“ kintamuosius, kurie yra „atidaryti“ ir „uždaryti“. Šie du kintamieji naudojami siekiant užkirsti kelią varikliui du kartus atidaryti arba uždaryti žaliuzes. Reiškia, žaliuzės atsidarys tik tada, kai jos bus anksčiau uždarytos, ir jos užsidarys tik tada, kai anksčiau buvo atidarytos.
Kaip padidinti 28BJY-48 Stepper variklio greitį?
Vienas 28BJY-48 žingsninio variklio naudojimo trūkumas yra tai, kad jis yra labai lėtas. Šie varikliai iš pradžių buvo gaminami naudoti didelio tikslumo mažo greičio programose, todėl nesitikėkite, kad šie varikliai sukasi dideliu greičiu. Jei norite padidinti žingsninio variklio greitį naudodami „Arduino“, yra du parametrai, kuriuos galite pakeisti. Vienas iš jų yra #define STEPS 64, nustatiau, kad kai žingsniai apibrėžiami kaip 64, variklis buvo palyginti greitesnis. Kitas parametras yra stepper.setSpeed (500); vėl radau, kad 500 yra optimali vertė, bet kas daugiau, nei tai, kas daro žingsninį variklį lėtesnį.
Ar žinote kokį nors kitą būdą padidinti šių variklių greitį? Jei taip, palikite juos komentarų skiltyje žemiau.
Kaip išvengti žingsninio variklio perkaitimo?
Žingsniniai varikliai, kai jie nenaudojami, visada turėtų būti išjungti, kad būtų išvengta perkaitimo. Išjungti žingsninį variklį yra labai paprasta; tiesiog pakeiskite visų keturių GPIO kaiščių, kurie valdo žingsninį variklį, kaiščių būseną. Tai labai svarbu, kitaip jūsų variklis gali labai įkaisti esant + 12 V įtampai ir visam laikui sugadinti save. Žemiau pateikiama žingsninio variklio išjungimo programa.
void disable_motor () // išjunkite variklį, kai tai bus padaryta, kad būtų išvengta šildymo {digitalWrite (D1, LOW); „digitalWrite“ (D2, LOW); „digitalWrite“ (D3, LOW); „digitalWrite“ (D4, LOW); }
Langų žaliuzių valdymas naudojant „Google“ padėjėją
Mes naudosime „blynk“ API, kad valdytume žaliuzes per „Google“ padėjėją, ji bus panaši į mūsų „Voice Controlled Home“ automatikos projektą, todėl patikrinkite, ar susidomėjote. Iš esmės mes turime suaktyvinti žemiau esančią nuorodą, kai sakome iš anksto apibrėžtą frazę „Google“ padėjėjui.
//http://188.166.206.43/l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx/update/V1?value=1 /
Įsitikinkite, kad pakeitėte autentifikavimo prieigos raktą į tą, kurį pateikia jūsų „blynk“ programa. Jūs netgi galite išbandyti šią nuorodą savo „Chrome“ naršyklėje, kad sužinotumėte, ar ji veikia taip, kaip tikėtasi. Dabar, kai nuoroda yra paruošta, mes tiesiog turime pereiti prie IFTTT ir sukurti dvi programėles, kurios gali suaktyvinti virtualius kaiščius V1 ir V2, kai paprašysime uždaryti ir atidaryti žaliuzes. Vėlgi, nesigilinu į tai, nes tai darėme daug kartų. Jei jums reikia daugiau pagalbos, perskaitykite šį balsu valdomo FM radijo projektą, tiesiog pakeiskite „Adafruit“ paslaugas internetiniais kabliukais. Taip pat dalinuosi savo fragmento ekrano kopija.
„Arduino“ pagrįstas automatinis langų žaliuzių valdymas - demonstravimas
Paruošę grandinę ir 3D spausdintus gaubtus, tiesiog surinkite prietaisą ant sienos, išgręždami dvi skylutes ant sienos. Mano montavimo sąranka parodyta toliau pateiktose nuotraukose.
Po to įsitikinkite, kad žaliuzės yra atviros, tada įjunkite grandinę. Dabar galite pabandyti uždaryti žaliuzes iš programos „blynk“ arba per „Google“ padėjėją, ir tai turėtų veikti. Programoje „blynk“ taip pat galite nustatyti laikmačius, kad jie tam tikru dienos metu automatiškai atidarytų ir uždarytų žaliuzes.
Išsamų projekto darbą galite rasti toliau pateiktame vaizdo įraše; jei turite klausimų, rašykite juos žemiau esančiame komentarų skyriuje. Be to, mūsų forumus galite naudoti kitoms techninėms diskusijoms.