Indholdsfortegnelse:

Automatisk blindåbner ved hjælp af EV3: 6 trin
Automatisk blindåbner ved hjælp af EV3: 6 trin

Video: Automatisk blindåbner ved hjælp af EV3: 6 trin

Video: Automatisk blindåbner ved hjælp af EV3: 6 trin
Video: Molo - Automatisk (Lyrics) 2024, Juli
Anonim
Automatisk blindåbner ved hjælp af EV3
Automatisk blindåbner ved hjælp af EV3
Automatisk blindåbner ved hjælp af EV3
Automatisk blindåbner ved hjælp af EV3

Jeg har et sæt rullegardiner i mit soveværelse, som jeg ofte glemmer at åbne eller lukke om morgenen eller aftenen. Jeg vil automatisere åbning og lukning, men med en tilsidesættelse, når til når jeg bliver ændret.

Trin 1: Potentielle ideer eller løsninger

Efter at have kigget på forskellige steder som YouTube, Instructables og Thingiverse fandt jeg ud af, at den mest almindelige løsning var at motorisere spolen, der viklede og rullede persiennerne op ved hjælp af en trinmotor eller en servo. Jeg fandt 2 hovedmuligheder med forskellige fordele og ulemper.

Idé 1: Spolemetode, hvor motoren og gearet er anbragt inde i spolen. Dette har fordelene ved, at det er en pæn og elegant metode, men har ulemperne ved, at det kræver større ændringer af blinde, ledningen er ikke længere brugbar, og samlingen ville være meget vanskelig at få adgang til vedligeholdelse, når den implementeres.

Idé 2: ledningsmetode, hvor motoren og gearet er anbragt på ledningen. Dette har den fordel, at det er enklere, og samlingen kan være let tilgængelig. Det har imidlertid den ulempe, at det kan være grimt og omfangsrigt, samt det faktum, at det skal fastgøres til vindueskarmen, når det implementeres.

Jeg foretrækker ledningsmetoden, ligesom det er en meget enklere løsning, der ikke hæmmer den manuelle brug af ledningen, og blinde vil ikke kræve nogen større ændringer. Jeg planlægger at gøre det så skjult og kompakt som muligt, når jeg laver den sidste version med en ESP8266.

Trin 2: Fremstilling af forsamlingen

Gør forsamlingen
Gør forsamlingen
Gør forsamlingen
Gør forsamlingen

Jeg lavede dette projekt ved hjælp af min Lego minstorms EV3, som har funktionalitet, jeg har brug for for at vise, at projektet kunne fungere, og jeg er bekendt med softwaren, som helt sikkert hjalp meget. Da persiennen bruger en kuglekæde til at drive spolen, som Lego-gear er uforenelige med, besluttede jeg, at den bedste løsning var at designe et gear med den korrekte kugleafstand på ydersiden- med standard "krydsformet" hul i center, hvor jeg derefter ville 3D -udskrive designet. På dette tidspunkt lavede jeg også en kalibreringsknap og vedhæftede en lyssensor til mit vindue samt en knap for at fungere som tilsidesættelsen.

Trin 3: Design af blinde gear

Design af blinde gear
Design af blinde gear
Design af blinde gear
Design af blinde gear
Design af blinde gear
Design af blinde gear
Design af blinde gear
Design af blinde gear

Jeg adskilte persiennen for at se, hvordan håndsvinget så mere detaljeret ud. Under demonteringen fandt jeg et lille 16-tanders gear, som blev holdt på plads af en spændt spole, det var den del, jeg ledte efter. Efter at have designet en kopi af gearet tilføjede jeg de nødvendige Lego-kompatible huller, printede de 3 separate dele og slutteligt limede dem sammen med superlim. Jeg havde oprindeligt problemer med at gøre delen Lego kompatibel, i den forstand at min 3D -printer ikke havde tilstrækkelig opløsning til at lave “x” -hullet, men den havde ingen problemer med de cirkulære huller på hver side af den. Så jeg erstattede “x” med et cirkulært hul, og det blev trykt fint. Efter en lille mængde test kunne jeg se, at det kunne klare momentet og vægten fra blinde. Jeg vil linke mine designs til gearet herunder, eller du kan finde det på Thingiverse på:

Trin 4: Kodning af blinde

Kodning af de blinde
Kodning af de blinde

Jeg ville have kode, der automatisk ville åbne og lukke persiennen, når den nåede et bestemt lysniveau, men som også havde en overstyringsknap, så man stadig kunne åbne eller lukke persiennen, når de ville. Jeg har knyttet min GitHub til den sidste version af koden her:

Koden til projektet tog mig flere dage at fuldføre, jeg havde programmets grundlæggende logik, der fungerede korrekt med lyssensoren, men den midlertidige overstyringsknap fungerede ikke korrekt. Det ændrede blindtilstanden, når den blev presset, men den manglede "lås" -funktionen, der ville betyde, at persiennen ville blive i positionen- hvilket betyder, at persiennen straks ville rulle den tilbage til, hvad den var før. Jeg rettede dette ved hjælp af en "vent til" blok, knyttet til en logisk ELLER gate, der læste værdierne for lyssensoren og berøringssensoren, som jeg vil forklare nedenfor.

Koden starter med at kalibrere motorer og persienner, starter med persiennen helt åben og sænker den, indtil den rammer berøringsføleren i bunden, og tæller hvor mange kvart omdrejninger det tager at komme til bunden, hvilket gemmes som "RotationsNeeded" variabel. Derefter skriver den "falsk" til variablen "BlindOpen", som bruges til at spore blindens position. På dette tidspunkt deler koden sig i 4 sløjfer.

En af disse sløjfer er "Buttonstate" -sløjfen, der løbende publicerer tastens tilstand til en variabel kaldet "ButtonPressed". Dette eliminerer behovet for, at flere knapblokke placeres på scriptet.

Den anden sløjfe er "Lys eller mørk", der løbende sammenligner lysniveauet uden for mit vindue med en konstant defineret tidligere i koden. Hvis resultatet er under denne konstant, vil sløjfen skrive "falsk" til variablen "ItIsLight", hvorimod hvis den er over værdien, vil den skrive "sand".

Den tredje sløjfe indeholder en numerisk liste over 3 muligheder, som dybest set fortæller blinde, hvad de skal gøre, 0 = blinde ned, 1 = blinde op, 2 = ikke gøre noget, fordi blinde er på det rigtige sted. Sløjfen starter med at læse variablen "BlindShould", som angiver den korrekte opgave, som blinden skal udføre, derefter udfører den opgave, ændrer variablen "BlindOpen" til den korrekte mulighed og bliver derefter inaktiv, indtil varianten "BlindShould" ændres, hvor det gentages. Den bruger værdien "RotationsNeeded" samt en +/- 100% effekt til at flytte persiennen helt åben eller lukket.

Den fjerde og sidste sløjfe er den mest komplekse, det er "Decider" -sløjfen, der håndterer alle data og beslutter, hvad de skal gøre med hver permutation. Det gør det ved at bruge logikbaserede "gafler i vejen", hvor "knappen trykkes", "Lysniveau", "Blind åben" er de sande eller falske spørgsmål. Alle permutationerne har et hårdt kodet svar, som enten er 0 = blind down, 1 = blind up eller 2 = gør ingenting - denne værdi skrives til varianten "BlindShould", som derefter håndteres af en tidligere loop. Nogle svar venter derefter på, at enten "ItIsLight" og/eller "ButtonPressed" -variablen ændres, før man afslutter scriptet. Dette er kun tilfældet for de knapaktiverede permutationer, da det umiddelbart ville forsøge at rette sin position, hvilket betyder, at blinde ville vende tilbage til sin oprindelige tilstand. Denne proces sløjfes derefter for at lave et robust og relativt enkelt automatisk system, som let kan tilføjes til og debugges. Puha.

Trin 5: Efterbehandling

Efterbehandling
Efterbehandling

Jeg besluttede bagefter at tilslutte en 9V strømforsyning til min EV3 ved hjælp af nogle træpinde og skruer som "batterier", dette gjorde produktet upålideligt på batterier og forhindrede mig i at skulle skifte batterier hvert par dage.

Trin 6: Evaluering af projektet

Jeg synes, at projektet generelt gik godt, jeg endte med en fungerende prototype til automatisk persienne, som jeg kan tage alle de relevante oplysninger, jeg fandt under projektet og implementere i den endelige version. Jeg har succesfuldt kodet enheden og har senere ikke fundet nogen større problemer med koden. Jeg ville gerne have gjort enheden mere visuelt tiltalende, men igen er det et bevis på konceptet, og jeg vil gøre en indsats for at få det til at se godt ud, når jeg laver den sidste version med en ESP8266. Når jeg laver projektet igen, vil jeg designe motoren til at sidde inde i persiennen, da det ville være lettere at skjule. Den største lektion, jeg har lært, er at debug logisk og tænke igennem, dokumentere og teste min kode, før jeg implementerer den.

Anbefalede: