- Komponenter som krävs för att bygga Arduino automatiserade persienner
- Styrning av rullgardiner med Arduino
- Designa och bygg fönstret
- 3D-utskrift av motorhållare och persienner
- Kretsdiagram för Arduino persienner
- Blynk-applikation för Arduino Blind Control
- Programmering av NodeMCU för att kontrollera persienner med Blynk
- Kontroll av persienner med Google Assistant
- Arduino-baserad automatisk fönsterblindkontroll - demonstration
"God morgon. Klockan är 7 Vädret i Malibu är 72 grader… ”det här var de första orden från JARVIS när de introducerades i Marvel Cinematics Universe. De flesta Iron Man-fans borde kunna komma ihåg den här scenen och komma ihåg att JARVIS kunde öppna ett fönster (typ av) på morgonen och ge uppdateringar om tid och väder. I filmen var fönstret Glasögon faktiskt gjorda av genomskinliga beröringsskärmar och därmed kunde JARVIS få det att bli från svart till transparent och också visa väderstatistik på det. Men i själva verket är vi långt borta från genomskinliga pekskärmar, och ju närmare vi kan komma är att kontrollera persienner eller begränsningar automatiskt.
Så i det här projektet ska vi bygga exakt det, vi kommer att bygga en automatiserad motoriserad persienn som öppnas och stängs automatiskt vid fördefinierade tider. Tidigare har vi byggt många hemautomationsprojekt där vi automatiserade lamporna, motorerna etc. Du kan kolla in dem om du är intresserad. Så när vi kommer tillbaka kan dessa Arduino-styrda persienner också ta kommandon från Google-assistenten så att du kan öppna eller stänga dina persienner på distans genom röstkommandon. Fängslande? Låt oss sedan bygga det.
Komponenter som krävs för att bygga Arduino automatiserade persienner
Projektet är relativt enkelt och det krävs inte många komponenter. Samla bara artiklarna nedan.
- NodeMCU
- Stegmotor - 28BYJ-48
- Stegmotormotormodul
- LM117-3.3V
- Kondensatorer (10uf, 1uf)
- 12V DC-adapter
- Perf Board
- Lödkit
- 3d skrivare
Styrning av rullgardiner med Arduino
Nu finns det många typer av persienner på marknaden, men den som oftast används har ett rep med pärlor (som visas nedan) som kan dras för att öppna eller stänga persiennerna.
När vi drar det cirkulära repet medurs öppnas fönsterluckorna och när vi drar det moturs stängs fönsterluckorna. Så om vi skulle automatisera denna process är allt vi behöver göra att använda en motor för att dra detta rep medurs eller moturs och vi kommer att vara klara med det. Det är faktiskt vad vi ska göra i det här projektet; vi kommer att använda stegmotorn 28BYJ-48 tillsammans med en NodeMCU för att dra det pärlstav.
Designa och bygg fönstret
Elektronikdelen av detta projekt var ganska enkel och rakt fram, den utmanande delen var att bygga Blind Gear som kunde dra det pärlstav. Så låt oss börja den här artikeln med blindväxeldesignen, jag kommer inte att gå in på detaljer om hur man utformar redskapet, men den här grundidén borde hjälpa dig. En bild av repet med pärlorna på visas nedan.
Återigen finns det många typer av rep men de vanligaste repen är mitt-till-centrum-avståndet för varje pärla är 6 mm och diametern på varje pärla är 4 mm. Med hjälp av denna information kan vi starta utformningen av vår utrustning. Om linan på dina persienner har samma dimensioner som diskuterats, kan du helt enkelt hoppa över det här steget och ladda ner STL-filen i den här artikeln och skriva ut redskapet. Om ditt rep har ett annat pärlarrangemang, så ska du omforma blindutrustningen.
Jag bestämde mig för att ha 24 pärlor på mitt redskap för att få en optimal kugghjulstorlek, du kan välja vilket nummer som helst nära detta för att ditt kugghjul ska vara stort eller litet. Så nu vet vi att avståndet mellan varje pärla är 6 mm och vi behöver 24 pärlor på vårt redskap. Att multiplicera båda ger kugghjulets omkrets. Med dessa data kan du beräkna kugghjulets radie. Som du kan se i bilden ovan beräknades kugghjulets diameter till cirka 46 mm. Men kom ihåg att detta inte är kugghjulets faktiska diameter eftersom vi inte har redogjort för pärlens diameter som är 4 mm. Så kugghjulets faktiska diameter kommer att vara 42 mm, jag skrev ut och testade många kugghjul innan jag hittade den som fungerar bäst. Om du inte gillar design,Ladda bara ner och skriv ut STL-filerna från nästa stycke och fortsätt med ditt projekt.
3D-utskrift av motorhållare och persienner
Tillsammans med växeln behöver vi också ett litet hölje som kan borras på väggen och hålla stegmotorn på plats, både höljet och växeln som används i detta projekt visas nedan.
Du hittar kompletta designfiler och STL-filer på Arduino Blind Control Thingiverse-sidan nedan. Du kan bara ladda ner och skriva ut din blindutrustning och motorväska.
Ladda ner STL-filer för Blind Gear och Motor Case
Kretsdiagram för Arduino persienner
När du är redo med redskap och montering är det enkelt att fortsätta med elektronik- och programvarudelen. Det fullständiga kretsschemat för IoT Blind-kontrollprojektet visas nedan.
Vi har använt en 12V adapter för att driva hela installationen; LM1117-3.3V-regulatorn omvandlar 12V till 3.3V som kan användas för att driva NodeMCU-kortet. Stegmotorns drivmodul drivs direkt från 12V-adaptern. Jag försökte köra stegmotorn på 5V, men då gav den inte tillräckligt med vridmoment för att dra i persiennerna, så se till att du också använder 12V.
Bortsett från det är kretsen ganska enkel, om du är ny på stegmotorer, kolla in grunderna i stegmotorartikeln för att förstå hur den fungerar och hur den kan användas med en mikrokontroller.
Blynk-applikation för Arduino Blind Control
Innan vi går in i Arduino-programmet för styrning av persienner, kan vi öppna blynk-applikationen och skapa några knappar med vilka vi kan öppna eller stänga våra persienner. Vi kommer också att behöva detta senare för att kontrollera från Google hem.
Jag har precis lagt till två knappar för att öppna och stänga persiennerna och en timer för att öppna persiennerna klockan 10:00 varje dag. Du kan lägga till flera timers för att öppna eller stänga persiennerna med olika intervall på dagen. I grund och botten, när vi måste stänga persiennerna, måste vi utlösa virtuell stift V1 och när vi måste öppna persiennerna måste vi utlösa virtuell stift V2. Programmet för att styra stegmotorn baserat på knappen som trycks här kommer att skrivas på Arduino IDE, detsamma diskuteras nedan.
Programmering av NodeMCU för att kontrollera persienner med Blynk
Den kompletta ESP8266-koden för detta Blind Control Project finns längst ner på denna sida. Vårt program måste vänta på ett kommando från blynk-applikationen och baserat på det kommandot måste vi rotera stegmotorn antingen medurs eller moturs. De viktiga delarna av koden diskuteras nedan.
Enligt vårt kretsschema har vi använt digitala stift 1, 2, 3 och 4 på nodemcu för att styra vår stegmotor. Så vi måste skapa en instans som heter stepper med hjälp av dessa stift som visas nedan. Lägg märke till att vi har definierat stiften i ordning 1, 3, 2 och 4. Det gjordes medvetet och är inte ett misstag; vi måste byta stift 2 och 3 för att motorn ska fungera ordentligt.
// skapa en instans av stegklassen med hjälp av stegen och stiften Stepper stepper (STEPS, D1, D3, D2, D4);
I nästa steg måste vi dela vår blynk-applikationsautentiseringstoken och Wi-Fi-referenser som vår IoT Blind-kontroller måste anslutas till. Om du inte är säker på hur du får detta Blynk-autent-token, se Blynk LED-kontrollprojektet för att förstå grunderna i blynk-applikationen och hur du använder den.
// Du ska få Auth Token i Blynk-appen. // Gå till Project Settings (mutterikon). char auth = "l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx"; // Dina WiFi-referenser. // Ställ lösenordet till "" för öppna nätverk. char ssid = "CircuitDigest"; char pass = "dummy123";
Vi fortsätter med vår kod efter installationsfunktionen och vi har definierat två metoder för blynk. Som tidigare nämnts måste vi definiera vad virtuella stift V1 och V2 ska göra. Koden för detsamma ges nedan.
BLYNK_WRITE (V1) // STÄNG BLINDS {Serial.println ("Closing Blinds"); om (öppnat == true) {för (int c_val = 0; c_val <= 130; c_val ++) // rotera moturs för att stänga {stepper.step (c_val); avkastning(); } closed = true; öppnat = falskt; inaktivera_motor (); // önskar alltid stegmotorer efter användning för att minska energiförbrukningen och uppvärmningen}} BLYNK_WRITE (V2) // ÖPPNA BLINDARNA {Serial.println ("Öppningsgardiner"); if (closed == true) {for (int cc_val = 0; cc_val> = -130; cc_val--) // rotera medurs för att öppna {stepper.step (cc_val); avkastning(); } öppnat = sant; stängd = falsk; } inaktivera_motor (); // alltid önskvärda stegmotorer efter användning för att minska energiförbrukningen och uppvärmningen}
Som du kan se används V1 för att stänga persiennerna och V2 används för att öppna persiennerna. En för slinga används för att rotera motorerna medurs eller moturs i 130 steg. Jag experimenterade med mina persienner för att upptäcka att jag med 130 steg kan öppna och stänga mina persienner helt. Ditt nummer kan variera. Den för slingan att rotera stegmotorn i en medurs och moturs riktning visas nedan.
för (int c_val = 0; c_val <= 130; c_val ++) // rotera moturs för att stänga {stepper.step (c_val); avkastning(); } för (int cc_val = 0; cc_val> = -130; cc_val--) // rotera medurs för att öppna {stepper.step (cc_val); avkastning(); }
Du kan också se två booleska variabler "öppnade" och "stängda" i vårt program. Dessa två variabler används för att förhindra att motorn öppnar eller stänger persiennerna två gånger. Det betyder att persiennerna endast öppnas när den tidigare är stängd och den stängs endast när den tidigare har öppnats.
Hur ökar jag hastigheten på stegmotorn 28BJY-48?
En nackdel med att använda stegmotorn 28BJY-48 är att den är mycket långsam. Dessa motorer tillverkades ursprungligen för att användas i högprecisions låghastighetsapplikationer, så förvänta dig inte att dessa motorer roterar med hög hastighet. Om du vill öka stegmotorns hastighet med Arduino finns det två parametrar som du kan ändra. En är #define STEPS 64, jag fann att när steg definieras som 64 var motorn relativt snabbare. En annan parameter är en stepper.setSpeed (500); igen fann jag att 500 var ett optimalt värde, något mer än det som faktiskt gör stegmotorn långsammare.
Känner du till något annat sätt att öka hastigheten på dessa motorer? Om ja, lämna dem i kommentarfältet nedan.
Hur kan man förhindra att stegmotorn överhettas?
Stegmotorer ska alltid inaktiveras när de inte används för att förhindra överhettning. Att stänga av en stegmotor är väldigt enkelt; ändra bara stiftstatusen för alla fyra GPIO-stift som styr stegmotorn till låg. Detta är mycket viktigt, annars kan din motor bli mycket varm vid + 12V och skada sig själv permanent. Programmet för att avaktivera stegmotorn ges nedan.
ogiltig disable_motor () // stäng av motorn när du är klar för att undvika uppvärmning {digitalWrite (D1, LOW); digitalWrite (D2, LOW); digitalWrite (D3, LOW); digitalWrite (D4, LOW); }
Kontroll av persienner med Google Assistant
Vi ska använda blynk API för att styra persiennerna via Googles assistent, det kommer att likna vårt röststyrda hemautomationsprojekt, så kontrollera det om du är intresserad. I grund och botten måste vi utlösa länken nedan när vi säger en fördefinierad fras till Google Assistant.
//http://188.166.206.43/l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx/update/V1?value=1 /
Se till att du ändrar autentiseringstoken till den som tillhandahålls av din blynk-applikation. Du kan även testa den här länken i din Chrome-webbläsare för att se om den fungerar som förväntat. Nu när länken är klar måste vi helt enkelt komma över till IFTTT och skapa två applets som kan utlösa virtuell stift V1 och V2 när vi ber att stänga och öppna persiennerna. Återigen går jag inte in på detaljerna för detta eftersom vi har gjort det många gånger. Om du behöver mer hjälp, se detta röststyrda FM-radioprojekt, byt bara ut adafruit-tjänsterna med webbhooks. Jag delar också en skärmdump av mitt utdrag som referens.
Arduino-baserad automatisk fönsterblindkontroll - demonstration
När kretsloppet och de 3D-utskrivna höljena är klara, montera bara enheten på väggen genom att borra två hål på väggen. Min monteringsinställning visas på bilderna nedan.
Efter det, se till att dina persienner är i ett öppet skick och slå sedan på kretsen. Nu kan du försöka stänga persiennerna från blynk-applikationen eller via Google Assistant och det ska fungera. Du kan också ställa in timers i blynk-applikationen för att automatiskt öppna och stänga mörken vid en viss tid på dagen.
Det fullständiga arbetet med projektet finns i videon nedan; om du har några frågor är du välkommen att skriva dem i kommentarfältet nedan. Du kan också använda våra forum för andra tekniska diskussioner.