- Komponenter, der kræves til at bygge Arduino automatiserede persienner
- Styring af rullegardiner ved hjælp af Arduino
- Design og bygg vinduesgardinet
- 3D-udskrivning af motorholder og blinde gear
- Kredsløbsdiagram til Arduino Blinds Control
- Blynk ansøgning om Arduino blind kontrol
- Programmering af NodeMCU til kontrol af blinds ved hjælp af Blynk
- Kontrol af persienner ved hjælp af Google Assistent
- Arduino-baseret automatisk vinduesblindkontrol - demonstration
"God morgen. Klokken er 7 om morgenen Vejret i Malibu er 72 grader… ”dette var de første ord fra JARVIS, da de blev introduceret i Marvel Cinematics Universe. De fleste Iron Man-fans skal kunne huske denne scene og huske, at JARVIS var i stand til at åbne et vindue (slags) om morgenen og give opdateringer om tid og vejr. I filmen var vinduet Glasses faktisk lavet af gennemsigtige berøringsskærme, og derfor var JARVIS i stand til at få det til at blive fra sort til gennemsigtig og også vise vejrstatistikker på det. Men i virkeligheden er vi langt væk fra gennemsigtige berøringsskærme, og jo tættere vi kan komme på er at kontrollere vinduesgardiner eller begrænsninger automatisk.
Så i dette projekt skal vi bygge nøjagtigt det, vi vil bygge en automatiseret motoriseret persienne, der automatisk åbner og lukkes på foruddefinerede tidspunkter. Tidligere har vi bygget mange hjemmeautomationsprojekter, hvor vi automatiserede lys, motorer osv. Du kan tjekke dem ud, hvis du er interesseret. Så når de kommer tilbage, kan disse Arduino-styrede persienner også tage kommandoer fra Google-assistenten, så du kan åbne eller lukke dine persienner eksternt via stemmekommandoer. Spændende? Lad os så få det bygget.
Komponenter, der kræves til at bygge Arduino automatiserede persienner
Projektet er relativt simpelt, og der kræves ikke mange komponenter. Saml bare de emner, der er anført nedenfor.
- NodeMCU
- Trinmotor - 28BYJ-48
- Stepper Motor Driver Module
- LM117-3.3V
- Kondensatorer (10uf, 1uf)
- 12V jævnstrømsadapter
- Perf Board
- Loddesæt
- 3D-printer
Styring af rullegardiner ved hjælp af Arduino
Nu er der mange typer persienner på markedet, men den mest anvendte har et reb med perler (som vist nedenfor), der kan trækkes for at åbne eller lukke persiennerne.
Når vi trækker dette cirkulære reb med uret, åbnes persiennerne, og når vi trækker dette reb mod urets retning, lukkes persiennerne. Så hvis vi skulle automatisere denne proces, er alt, hvad vi skal gøre, at bruge en motor til at trække dette reb med uret eller mod uret, og vi er færdige med det. Faktisk er det, hvad vi skal gøre i dette projekt; vi bruger 28BYJ-48 stepmotoren sammen med en NodeMCU til at trække det perleformede reb.
Design og bygg vinduesgardinet
Elektronikdelen af dette projekt var temmelig enkel og ligetil, den udfordrende del var at bygge Blind Gear, der kunne trække det perleformede reb. Så lad os starte denne artikel med design af blinde gear, jeg vil ikke komme i detaljer om, hvordan du designer gearet, men denne grundlæggende idé skal hjælpe dig. Et billede af rebet med perlerne er vist nedenfor.
Igen er der mange typer reb, men de mest anvendte reb er center-til-center afstanden for hver perle er 6 mm, og diameteren af hver perle er 4 mm. Ved hjælp af disse oplysninger kan vi starte designet af vores udstyr. Hvis rebet på dine persienner har de samme dimensioner som diskuteret, kan du bare springe dette trin over og downloade STL-filen, der er angivet i denne artikel, og udskrive gearet. Hvis dit reb har et andet perlearrangement, så skal du omforme blindeudstyret.
Jeg besluttede at have 24 perler på mit gear for at få en optimal tandhjulsstørrelse. Du kan vælge et hvilket som helst tal tæt på dette for at dit tandhjul skal være stort eller lille. Så nu ved vi, at afstanden mellem hver perle er 6 mm, og vi har brug for 24 perler på vores gear. Multiplikation af begge giver tandhjulets omkreds. Med disse data kan du beregne tandhjulets radius. Som du kan se i billedet ovenfor, blev diameteren på mit tandhjul beregnet til at være omkring 46 mm. Men husk, dette er ikke gearets faktiske diameter, fordi vi ikke har taget højde for diameteren på perlen, der er 4 mm. Så den faktiske diameter på tandhjulet vil være 42 mm, jeg udskrev og testede mange tandhjul, før jeg fandt den der fungerer bedst. Hvis du ikke er i design,bare download og udskriv STL-filerne fra næste afsnit og fortsæt med dit projekt.
3D-udskrivning af motorholder og blinde gear
Sammen med gearet har vi også brug for et lille hus, der kan bores på væggen og holde trinmotoren på plads, både huset og det udstyr, der anvendes i dette projekt, er vist nedenfor.
Du kan finde komplette designfiler og STL-filer på Arduino Blind Control Thingiverse-siden nedenfor. Du kan bare downloade og udskrive dit blinde gear og motorkuffert.
Download STL-filer til Blind Gear og Motor Case
Kredsløbsdiagram til Arduino Blinds Control
Når du er klar med gear og samling, er det let at fortsætte med elektronik- og softwaredelen. Det komplette kredsløbsdiagram for IoT Blind-kontrolprojektet er vist nedenfor.
Vi har brugt en 12V adapter til at drive hele opsætningen; LM1117-3.3V regulatoren konverterer 12V til 3.3V, som kan bruges til at drive NodeMCU-kortet. Stepper motor driver-modulet får direkte strøm fra 12V adapteren. Jeg prøvede at køre trinmotoren på 5V, men så gav den ikke nok moment til at trække persiennerne, så sørg for at du også bruger 12V.
Bortset fra det er kredsløbet ret simpelt. Hvis du er ny på trinmotorer, skal du kigge på det grundlæggende i trinmotorartiklen for at forstå, hvordan det fungerer, og hvordan det kan bruges med en mikrokontroller.
Blynk ansøgning om Arduino blind kontrol
Før vi går ind i Arduino-programmet til styring af persienner, kan vi åbne blynk-applikationen og oprette nogle knapper, hvor vi kan åbne eller lukke vores persienner. Vi har også brug for dette senere for at kontrollere fra Google hjem.
Jeg har lige tilføjet to knapper til at åbne og lukke persiennerne og en-timer til at åbne persiennerne kl. 10.00 hver dag. Du kan tilføje flere timere for at åbne eller lukke blinds med forskellige intervaller på dagen. Dybest set, når vi skal lukke blinds, skal vi udløse virtuel pin V1, og når vi skal åbne blinds, skal vi udløse virtual pin V2. Programmet til styring af trinmotor baseret på knappen, der trykkes her, vil blive skrevet på Arduino IDE, det samme diskuteres nedenfor.
Programmering af NodeMCU til kontrol af blinds ved hjælp af Blynk
Den komplette ESP8266-kode til dette Blind Control Project kan findes nederst på denne side. Vores program skal vente på en kommando fra blynk-applikationen og baseret på denne kommando skal vi dreje trinmotoren enten med uret eller mod uret. De vigtige dele af koden diskuteres nedenfor.
Ifølge vores kredsløbsdiagram har vi brugt digitale ben 1, 2, 3 og 4 på nodemcu til at styre vores trinmotor. Så vi er nødt til at oprette en instans kaldet stepper ved hjælp af disse ben som vist nedenfor. Bemærk, at vi har defineret stifterne i rækkefølge 1, 3, 2 og 4. Det blev gjort bevidst og er ikke en fejltagelse; vi er nødt til at bytte ben 2 og 3 for at motoren fungerer korrekt.
// Opret en forekomst af stepperklassen ved hjælp af trin og stifter Stepper Stepper (STEPS, D1, D3, D2, D4);
I det næste trin skal vi dele vores blynk-applikationsgodkendelsestoken og de Wi-Fi-legitimationsoplysninger, som vores IoT Blind-controller skal tilsluttes. Hvis du ikke er sikker på, hvordan du får dette Blynk auth-token, skal du se i Blynk LED Control-projektet for at forstå det grundlæggende i blynk-applikationen, og hvordan man bruger det.
// Du skal få Auth Token i Blynk App. // Gå til Projektindstillinger (møtrikikon). char auth = "l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx"; // Dine WiFi-legitimationsoplysninger. // Indstil adgangskoden til "" for åbne netværk. char ssid = "CircuitDigest"; char pass = "dummy123";
Når vi fortsætter med vores kode efter installationsfunktionen, har vi defineret to metoder til blynk. Som tidligere nævnt skal vi definere, hvad virtuelle ben V1 og V2 skal gøre. Koden for det samme er angivet nedenfor.
BLYNK_WRITE (V1) // LUK BLINDERNE {Serial.println ("Closing Blinds"); hvis (åbnet == sand) {for (int c_val = 0; c_val <= 130; c_val ++) // roteres mod uret for at lukke {stepper.step (c_val); udbytte(); } lukket = sandt; åbnet = falsk; deaktiver_motor (); // altid ønskelige trinmotorer efter brug for at reducere strømforbrug og opvarmning}} BLYNK_WRITE (V2) // ÅBN BLINDERNE {Serial.println ("Åbning af persienner"); hvis (lukket == sand) {for (int cc_val = 0; cc_val> = -130; cc_val--) // roter med uret for at åbne {stepper.step (cc_val); udbytte(); } åbnet = sandt; lukket = falsk; } deaktiver_motor (); // altid ønskelige trinmotorer efter brug for at reducere strømforbrug og opvarmning}
Som du kan se, bruges V1 til at lukke persiennerne, og V2 bruges til at åbne persiennerne. En for-sløjfe bruges til at rotere motorerne med eller mod uret i 130 trin. Jeg eksperimenterede med mine persienner for at finde ud af, at jeg med 130 trin kan åbne og lukke mine persienner fuldt ud. Dit nummer kan variere. For- sløjfen til at rotere trinmotor i retning med og mod uret er vist nedenfor.
for (int c_val = 0; c_val <= 130; c_val ++) // roter mod uret for at lukke {stepper.step (c_val); udbytte(); } for (int cc_val = 0; cc_val> = -130; cc_val--) // roter med uret for at åbne {stepper.step (cc_val); udbytte(); }
Du kan også bemærke to Boolske variabler “åbnet” og “lukket” i vores program. Disse to variabler bruges til at forhindre motoren i at åbne eller lukke persiennerne to gange. Det betyder, at persiennerne kun åbner, når de tidligere er lukket, og de lukker kun, når de tidligere er åbnet.
Hvordan øges hastigheden på 28BJY-48 trinmotor?
En ulempe ved at bruge trinmotoren 28BJY-48 er, at den er meget langsom. Disse motorer blev oprindeligt fremstillet til brug i højpræcisions applikationer med lav hastighed, så forvent ikke, at disse motorer roterer ved høj hastighed. Hvis du vil øge hastigheden på trinmotoren ved hjælp af Arduino, er der to parametre, som du kan ændre. Den ene er #define STEPS 64, jeg fandt ud af, at når trin defineres som 64, var motoren forholdsvis hurtigere. En anden parameter er en stepper.setSpeed (500); igen fandt jeg, at 500 var en optimal værdi, noget mere end det, der faktisk gør trinmotoren langsommere.
Kender du nogen anden måde at øge hastigheden på disse motorer på? Hvis ja, skal du lade dem være i kommentarfeltet nedenfor.
Hvordan kan man forhindre, at trinmotoren overophedes?
Trinmotorer skal altid deaktiveres, når de ikke er i brug for at forhindre overophedning. Deaktivering af en stepper motor er meget enkel; skift bare pin-status for alle de fire GPIO-ben, der styrer trinmotoren til lav. Dette er meget vigtigt, ellers kan din motor blive meget varm ved + 12V og beskadige sig selv permanent. Programmet til deaktivering af trinmotoren er angivet nedenfor.
ugyldig disable_motor () // sluk for motoren, når du er færdig for at undgå opvarmning {digitalWrite (D1, LOW); digitalWrite (D2, LOW); digitalWrite (D3, LOW); digitalWrite (D4, LOW); }
Kontrol af persienner ved hjælp af Google Assistent
Vi skal bruge blynk API til at kontrollere blinds via Google-assistent, det ligner vores stemmestyrede hjemmeautomatiseringsprojekt, så kontroller det, hvis du er interesseret. Dybest set er vi nødt til at udløse nedenstående link, når vi siger en foruddefineret sætning til Google Assistant.
//http://188.166.206.43/l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx/update/V1?value=1 /
Sørg for at ændre godkendelsestokenet til det, der leveres af din blynk-applikation. Du kan endda teste dette link i din Chrome-browser for at se, om det fungerer som forventet. Nu hvor linket er klar, er vi simpelthen nødt til at komme over til IFTTT og oprette to applets, der kan udløse virtuel pin V1 og V2, når vi beder om at lukke og åbne blinds. Igen kommer jeg ikke ind på detaljerne i dette, fordi vi har gjort det mange gange. Hvis du har brug for mere hjælp, se dette stemmestyrede FM-radioprojekt, bare udskift adafruit-tjenesterne med webhooks. Jeg deler også et screenshot af mit uddrag til reference.
Arduino-baseret automatisk vinduesblindkontrol - demonstration
Når kredsløb og 3D-udskrevne kabinetter er klar, skal du bare samle enheden på væggen ved at bore to huller på væggen. Min monteringsopsætning er vist på nedenstående billeder.
Derefter skal du sørge for, at dine persienner er i åben tilstand, og tænd derefter for kredsløbet. Nu kan du prøve at lukke blinds fra blynk-applikationen eller via Google Assistant, og det skal fungere. Du kan også indstille timere på blynk-applikationen til automatisk at åbne og lukke blinde på et bestemt tidspunkt på dagen.
Den komplette bearbejdning af projektet kan findes i videoen nedenfor: hvis du har spørgsmål, er du velkommen til at skrive dem i kommentarfeltet nedenfor. Du kan også bruge vores fora til andre tekniske diskussioner.