Innholdsfortegnelse:

Automatisk blindåpner ved bruk av EV3: 6 trinn
Automatisk blindåpner ved bruk av EV3: 6 trinn

Video: Automatisk blindåpner ved bruk av EV3: 6 trinn

Video: Automatisk blindåpner ved bruk av EV3: 6 trinn
Video: Molo - Automatisk (Lyrics) 2024, Juli
Anonim
Automatisk persienne med EV3
Automatisk persienne med EV3
Automatisk blindåpner ved bruk av EV3
Automatisk blindåpner ved bruk av EV3

Jeg har et sett med rullegardiner på soverommet mitt, som jeg ofte glemmer å åpne eller stenge om morgenen eller kvelden. Jeg vil automatisere åpning og lukking, men med en overstyring når jeg skal endre meg.

Trinn 1: Potensielle ideer eller løsninger

Etter å ha sett på forskjellige nettsteder som YouTube, Instructables og Thingiverse fant jeg ut at den vanligste løsningen var å motorisere spolen som viklet og rullet persiennene ved hjelp av en trinnmotor eller en servo. Jeg fant to hovedalternativer med forskjellige fordeler og ulemper.

Idé 1: Snellemetode der motoren og giret er plassert inne i spolen. Dette har fordelene med at det er en ryddig og elegant metode, men har ulempene at det krever store modifikasjoner for blinde, ledningen er ikke lenger brukbar, og enheten vil være svært vanskelig å få tilgang til vedlikehold når den implementeres.

Idé 2: ledningsmetode der motoren og giret er plassert på ledningen. Dette har fordelen av at det er enklere og at monteringen kan være lett tilgjengelig. Det har imidlertid den ulempen at den kan være stygg og klumpete, samt at den må festes til terskelen når den er implementert.

Jeg foretrekker ledningsmetoden som en mye enklere løsning som ikke hemmer manuell bruk av ledningen, og persienner vil ikke kreve noen større endringer. Jeg planlegger å gjøre den så skjult og kompakt som mulig når jeg lager den siste versjonen med en ESP8266.

Trinn 2: Gjør forsamlingen

Gjør forsamlingen
Gjør forsamlingen
Gjør forsamlingen
Gjør forsamlingen

Jeg gjorde dette prosjektet ved hjelp av min Lego minstorms EV3 som har funksjonalitet jeg trenger for å vise at prosjektet kan fungere, og jeg er kjent med programvaren som definitivt hjalp mye. Siden persiennen bruker en ballkjede til å drive spolen, som Lego-tannhjulene er uforenlige med, bestemte jeg meg for at den beste løsningen var å designe et utstyr med riktig kuleavstand på utsiden- med standard "tverrformet" hull i sentrum, hvor jeg deretter ville 3D -skrive ut designet. På dette tidspunktet laget jeg også en kalibreringsknapp og festet en lyssensor til vinduet mitt samt en knapp for å fungere som overstyring.

Trinn 3: Designe blinde utstyr

Design av blinde utstyr
Design av blinde utstyr
Design av blinde utstyr
Design av blinde utstyr
Design av blinde utstyr
Design av blinde utstyr
Design av blinde utstyr
Design av blinde utstyr

Jeg demonterte persiennen for å se hvordan sveiven så ut mer detaljert. Under demonteringen fant jeg et lite 16-tannhjul som ble holdt på plass av en strammet spole, dette var delen jeg lette etter. Etter å ha designet en kopi av utstyret, la jeg til de nødvendige Lego-kompatible hullene, skrev ut de 3 separate delene og limte dem sammen med superlim. Jeg hadde i utgangspunktet problemer med å gjøre Lego -delen kompatibel, i den forstand at 3D -skriveren min ikke hadde oppløsningen til å gjøre "x" -hullet tilstrekkelig, men det hadde ingen problemer med de sirkulære hullene på hver side av det. Så jeg erstattet "x" med et sirkulært hull og det trykte fint. Etter en liten mengde testing kunne jeg se at den kunne håndtere dreiemomentet og vekten fra persienner. Jeg vil koble designene mine til utstyret nedenfor, eller du kan finne det på Thingiverse på:

Trinn 4: Koding av blinde

Koding av blinde
Koding av blinde

Jeg ville ha kode som automatisk åpnet og lukket persiennen når den kom til et bestemt lysnivå, men som også hadde en overstyringsknapp, slik at man fortsatt kunne åpne eller stenge persiennen når de ville. Jeg har koblet GitHub til den endelige versjonen av koden her:

Koden for prosjektet tok meg flere dager å fullføre. Jeg hadde den grunnleggende logikken i programmet som fungerte riktig med lyssensoren, men den midlertidige overstyringsknappen fungerte ikke som den skal. Det endret blindtilstanden når den ble presset, men den manglet "låsing" -funksjonen som ville bety at persiennen ville bli i posisjonen, noe som betyr at persiennen umiddelbart ville rulle den tilbake til den den var før. Jeg fikset dette ved hjelp av en "vent til" -blokk, koblet til en logisk ELLER port som leser verdiene til lyssensoren og berøringssensoren, som jeg vil forklare nedenfor.

Koden starter med å kalibrere motorer og persienner, starter med persiennen helt åpen og senker den til den treffer berøringssensoren nederst, og teller hvor mange kvart omdreininger det tar å komme til bunnen, som lagres som "RotationsNeeded" variabel. Deretter skriver den "false" til "BlindOpen" -variabelen som brukes til å spore blindens posisjon. På dette tidspunktet deler koden seg i 4 sløyfer.

En av disse løkkene er "Buttonstate" -løkken som kontinuerlig publiserer knappens tilstand til en variabel kalt "ButtonPressed". Dette eliminerer behovet for at flere knappeblokker plasseres på skriptet.

Den andre sløyfen er "Lys eller mørk" som kontinuerlig sammenligner lysnivået utenfor vinduet mitt, med en konstant definert tidligere i koden. Hvis resultatet er under denne konstanten, vil sløyfen skrive "usant" til "ItIsLight" -variabelen, mens hvis den er over verdien, vil den skrive "sann".

Den tredje sløyfen inneholder en numerisk liste over 3 alternativer som i utgangspunktet forteller blinde hva de skal gjøre, 0 = blind ned, 1 = blinde opp, 2 = ikke gjøre noe fordi blind er på riktig sted. Sløyfen starter med å lese "BlindShould" -variabelen som angir riktig oppgave blinden skal utføre, deretter utfører den oppgaven, endrer "BlindOpen" -variabelen til det riktige alternativet og blir deretter inaktiv til "BlindShould" -variabelen endres der gjentar det seg. Den bruker verdien "RotationsNeeded" samt en +/- 100% effekt for å flytte persiennen helt åpen eller lukket.

Den fjerde og siste løkken er den mest komplekse, det er "Decider" -sløyfen som håndterer alle dataene og bestemmer hva de skal gjøre med hver permutasjon. Det gjør dette ved å bruke logikkbaserte "gafler i veien" der "knappen trykkes", "Lysnivå", "Blind åpen" er de sanne eller falske spørsmålene. Alle permutasjonene har en hardkodet respons, som enten er 0 = blind ned, 1 = blind up eller 2 = gjør ingenting - denne verdien skrives til "BlindShould" -variabelen som deretter håndteres av en tidligere sløyfe. Noen svar vil deretter vente på at enten "ItIsLight" og/eller "ButtonPressed" -variabelen endres før man fullfører skriptet. Dette er bare tilfellet for knappaktiverte permutasjoner, da det umiddelbart ville prøve å korrigere posisjonen sin, noe som betyr at blinde ville komme tilbake til sin opprinnelige tilstand. Denne prosessen sløyfes deretter for å lage et robust og relativt enkelt automatisk system, som enkelt kan legges til og feilsøkes. Puh.

Trinn 5: Etterbehandling

Finpuss
Finpuss

Jeg bestemte meg etterpå for å koble til en 9V strømforsyning til min EV3 ved hjelp av noen tre plugger og skruer som "batterier", dette gjorde produktet upålitelig for batterier og forhindret meg i å måtte bytte batterier hvert par dager.

Trinn 6: Evaluering av prosjektet

Jeg synes at prosjektet gikk bra totalt sett, jeg endte opp med en fungerende prototype for automatisk persienne, som jeg kan ta med all relevant informasjon jeg fant under prosjektet og implementere i den endelige versjonen. Jeg har vellykket kodet enheten, og har senere ikke funnet noen store problemer med koden. Jeg ville gjerne gjort enheten mer visuelt tiltalende, men nok en gang er det et bevis på konseptet, og jeg vil gjøre en innsats for å få det til å se bra ut når jeg lager den siste versjonen med en ESP8266. Når jeg gjør prosjektet igjen, vil jeg designe motoren for å sitte inne i persiennen, da det ville være lettere å skjule. Den største leksjonen jeg har lært er å feilsøke logisk og tenke gjennom, dokumentere og teste koden min før jeg implementerer den.

Anbefalt: