Innehållsförteckning:

Automatisk persienn med EV3: 6 steg
Automatisk persienn med EV3: 6 steg

Video: Automatisk persienn med EV3: 6 steg

Video: Automatisk persienn med EV3: 6 steg
Video: No one knows this HIDDEN first class 2024, Juli
Anonim
Automatisk persienn med EV3
Automatisk persienn med EV3
Automatisk persienn med EV3
Automatisk persienn med EV3

Jag har en uppsättning rullgardiner i mitt sovrum som jag ofta glömmer att öppna eller stänga på morgonen eller kvällen. Jag vill automatisera öppning och stängning, men med en åsidosättning när för när jag blir förändrad.

Steg 1: Potentiella idéer eller lösningar

Efter att ha tittat på olika webbplatser som YouTube, Instructables och Thingiverse fann jag att den vanligaste lösningen var att motorisera spolen som lindade och rullade upp persiennerna med en stegmotor eller en servo. Jag hittade två huvudalternativ med olika fördelar och nackdelar.

Idé 1: Spolmetod där motorn och växeln sitter inuti spolen. Detta har fördelarna med att det är en snygg och elegant metod, men har nackdelarna att det kräver stora modifieringar av persienner, sladden är inte längre användbar och enheten skulle vara mycket svåråtkomlig för underhåll när den implementeras.

Idé 2: sladdmetod där motorn och växeln sitter på sladden. Detta har fördelen att det är enklare och monteringen kan vara lättillgänglig. Det har dock nackdelen att det kan vara fult och skrymmande, liksom det faktum att det måste fästas på tröskeln när det implementeras.

Jag föredrar sladdmetoden som en mycket enklare lösning som inte hämmar manuell användning av sladden, och blinden kommer inte att kräva någon större ändring. Jag tänker göra den så hemlig och kompakt som möjligt när jag gör den slutliga versionen med en ESP8266.

Steg 2: Gör monteringen

Gör församlingen
Gör församlingen
Gör församlingen
Gör församlingen

Jag gjorde detta projekt med min Lego minstorms EV3 som har funktionalitet jag behöver för att visa att projektet kan fungera, och jag är bekant med programvaran som definitivt hjälpte mycket. Eftersom persiennen använder en kulkedja för att driva spolen, vilket Lego-kugghjul är oförenliga med, bestämde jag mig för att den bästa lösningen var att designa ett kugghjul med rätt kulavstånd på utsidan- med standard "korsformat" hål i center, där jag sedan skulle 3D -skriva ut designen. Vid denna tidpunkt gjorde jag också en kalibreringsknapp och fäst en ljussensor i mitt fönster samt en knapp för att fungera som överstyrning.

Steg 3: Designa blindutrustningen

Designa blindutrustningen
Designa blindutrustningen
Designa blindutrustningen
Designa blindutrustningen
Designa blindutrustningen
Designa blindutrustningen
Designa blindutrustningen
Designa blindutrustningen

Jag demonterade persiennen för att se hur veven såg ut mer i detalj. Under demonteringen hittade jag en liten 16-tandad växel som hölls på plats av en spänd spole, det var den delen jag letade efter. Efter att ha konstruerat en kopia av redskapet lade jag till de nödvändiga Lego-kompatibla hålen, skrev ut de tre separata delarna och sammanfogade dem slutligen med superlim. Jag hade inledningsvis problem med att göra delen Lego kompatibel, i den meningen att min 3D -skrivare inte hade upplösningen att göra "x" -hålet tillräckligt, men det hade inga problem med de cirkulära hålen på vardera sidan av den. Så jag ersatte "x" med ett cirkulärt hål och det skrevs bra ut. Efter en liten mängd tester kunde jag se att det kunde hantera vridmomentet och vikten från persiennerna. Jag länkar mina mönster för redskapet nedan eller så hittar du det på Thingiverse på:

Steg 4: Kodning av blinda

Kodning av blinda
Kodning av blinda

Jag ville ha kod som automatiskt skulle öppna och stänga persiennen när den kom till en specifik ljusnivå, men som också hade en överstyrningsknapp så att man fortfarande kunde öppna eller stänga persiennen när de ville. Jag har länkat min GitHub till den slutliga versionen av koden här:

Koden för projektet tog mig flera dagar att slutföra, jag hade programmets grundläggande logik som fungerade korrekt med ljussensorn, men den tillfälliga överstyrningsknappen fungerade inte korrekt. Det ändrade blindtillståndet när det pressades, men det saknade funktionen "låsning" som skulle innebära att persiennen skulle stanna i positionen- vilket innebär att persiennen omedelbart skulle rulla tillbaka den till vad den var innan. Jag fixade detta med ett "vänta tills" -block, kopplat till en logisk ELLER grind som läser värdena för ljussensorn och beröringssensorn, vilket jag kommer att förklara nedan.

Koden börjar med att kalibrera motorerna och persiennen, börja med persiennen helt öppen och sänka den tills den träffar beröringssensorn i botten och räknar hur många kvarts varv det tar för att komma till botten, vilket sparas som "RotationsNeeded" variabel. Sedan skriver den "falskt" till variabeln "BlindOpen" som används för att spåra blindens position. Vid denna tidpunkt koden delas upp i 4 slingor.

En av dessa slingor är "Buttonstate" -slingan som kontinuerligt publicerar knappens tillstånd till en variabel som kallas "ButtonPressed". Detta eliminerar behovet av att flera knappblock ska placeras på skriptet.

Den andra slingan är "Ljus eller mörk" som kontinuerligt jämför ljusnivån utanför mitt fönster, till en konstant definierad tidigare i koden. Om resultatet är under den konstanten kommer slingan att skriva "falskt" till variabeln "ItIsLight", medan det är över värdet kommer det att skriva "sant".

Den tredje slingan innehåller en numerisk lista med 3 alternativ som i princip berättar för de blinda vad de ska göra, 0 = blinda ner, 1 = blinda, 2 = gör ingenting eftersom blind är på rätt plats. Slingan börjar med att läsa variabeln "BlindShould" som anger rätt uppgift blinden ska utföra, sedan utför den uppgiften, ändrar variabeln "BlindOpen" till rätt alternativ och blir sedan inaktiv tills variabeln "BlindShould" ändras där det upprepas. Den använder värdet "RotationsNeeded" samt en +/- 100% effekt för att flytta persiennen helt öppen eller stängd.

Den fjärde och sista slingan är den mest komplexa, det är "Decider" -slingan som hanterar all data och bestämmer vad som ska göras med varje permutation. Det gör detta genom att använda logikbaserade "gafflar i vägen" där "knappen trycks", "Ljusnivå", "Öppen blind" är de sanna eller falska frågorna. Alla permutationer har en hårdkodad respons, som antingen är 0 = blind down, 1 = blind up eller 2 = gör ingenting - detta värde skrivs till variabeln "BlindShould" som sedan hanteras av en tidigare loop. Vissa svar väntar sedan på att antingen "ItIsLight" och/eller "ButtonPressed" -variabeln ändras innan man avslutar manuset. Detta är bara fallet med knappaktiverade permutationer eftersom det omedelbart skulle försöka korrigera sin position vilket innebär att blinden skulle återvända till sitt ursprungliga tillstånd. Denna process loopas sedan för att skapa ett robust och relativt enkelt automatiskt system, som enkelt kan läggas till och felsökas. Puh.

Steg 5: Finisher

Finputsning
Finputsning

Jag bestämde mig efteråt för att koppla upp en 9V strömförsörjning till min EV3 med hjälp av några träpluggar och skruvar som "batterier", detta gjorde att produkten inte var beroende av batterier och hindrade mig från att behöva byta batterier varannan dag.

Steg 6: Utvärdering av projektet

Jag tycker att projektet gick bra överlag, jag slutade med en fungerande prototyp för automatiska persienner, som jag kan ta all relevant information jag hittade under projektet och implementera i den slutliga versionen. Jag har framgångsrikt kodat enheten och har hittat inga större problem med koden hittills. Jag skulle ha velat göra enheten mer visuellt tilltalande men än en gång är det ett bevis på konceptet och jag kommer att anstränga mig för att få det att se bra ut när jag gör den slutliga versionen med en ESP8266. När jag gör projektet igen kommer jag att utforma motorn för att sitta inne i persiennen eftersom det skulle vara lättare att dölja. Den största lektionen jag har lärt mig är att felsöka logiskt och tänka igenom, dokumentera och testa min kod innan jag implementerar den.

Rekommenderad: