INHOUDSOPGAWE:

Outomatiese blindopener met behulp van EV3: 6 stappe
Outomatiese blindopener met behulp van EV3: 6 stappe

Video: Outomatiese blindopener met behulp van EV3: 6 stappe

Video: Outomatiese blindopener met behulp van EV3: 6 stappe
Video: Leren schakelen met behulp van de toerenteller 2024, Julie
Anonim
Outomatiese blindopener met behulp van EV3
Outomatiese blindopener met behulp van EV3
Outomatiese blindopener met behulp van EV3
Outomatiese blindopener met behulp van EV3

Ek het 'n stel rolblindings in my slaapkamer wat ek gereeld vergeet om soggens of saans oop of toe te maak. Ek wil die opening en sluiting outomatiseer, maar met 'n oorheersing wanneer ek verander.

Stap 1: Potensiële idees of oplossings

Nadat ek op verskeie webwerwe, soos YouTube, Instructables en Thingiverse, gekyk het, het ek gevind dat die mees algemene oplossing was om die spoel wat die blindings opgedraai en afgewikkel het, te motoriseer met 'n stepper motor of 'n servo. Ek het twee hoofopsies gevind met verskillende voordele en nadele.

Idee 1: Spoelmetode waar die motor en ratkas in die spoel gehuisves word. Dit het die voordele dat dit 'n netjiese en elegante metode is, maar het die nadele dat dit 'n groot verandering aan blindes vereis, die koord nie meer bruikbaar is nie, en dit sal baie moeilik wees om dit te onderhou as dit geïmplementeer word.

Idee 2: koordmetode waar die motor en ratkas op die koord gehuisves word. Dit het die voordeel dat dit eenvoudiger is en die samestelling maklik toeganklik is. Dit het egter die nadeel dat dit lelik en omvangryk kan wees, sowel as die feit dat dit aan die vensterbank geheg moet word wanneer dit geïmplementeer word.

Ek verkies die koordmetode, net soos 'n baie eenvoudiger oplossing wat nie die handmatige gebruik van die koord belemmer nie, en blindes sal nie 'n groot aanpassing benodig nie. Ek is van plan om dit so verborge en kompak as moontlik te maak as ek die finale weergawe met 'n ESP8266 maak.

Stap 2: Maak die vergadering

Die maak van die vergadering
Die maak van die vergadering
Die maak van die vergadering
Die maak van die vergadering

Ek het hierdie projek gedoen met my Lego minstorms EV3 met funksies wat ek nodig het om te wys dat die projek kan werk, en ek is vertroud met die sagteware wat beslis baie gehelp het. Aangesien die blinde 'n balketting gebruik om die spoel aan te dryf, waarmee Lego-ratte nie versoenbaar is nie, het ek besluit dat die beste oplossing was om 'n rat met die regte kogelafstand aan die buitekant te ontwerp- met die standaard 'kruisvormige' gat in die sentrum, waar ek die ontwerp dan in 3D sou druk. Op hierdie stadium het ek ook 'n kalibrasie -knoppie gemaak en 'n ligsensor aan my venster sowel as 'n knoppie geheg om as die oorheersing op te tree.

Stap 3: Ontwerp die blinde rat

Ontwerp van die blinde rat
Ontwerp van die blinde rat
Ontwerp van die blinde rat
Ontwerp van die blinde rat
Ontwerp van die blinde rat
Ontwerp van die blinde rat
Ontwerp van die blinde rat
Ontwerp van die blinde rat

Ek het die blindes uitmekaar gehaal om te sien hoe die kruk in meer detail lyk. Tydens die demontage het ek 'n klein 16-tandrat gevind wat deur 'n gespanne spoel vasgehou is; dit was die deel waarna ek gesoek het. Nadat ek 'n replika van die rat ontwerp het, het ek die nodige Lego-versoenbare gate bygevoeg, die 3 afsonderlike dele gedruk en dit uiteindelik met superlijm vasgemaak. Ek het aanvanklik probleme gehad om die deel Lego versoenbaar te maak, in die sin dat my 3D -drukker nie die resolusie gehad het om die "x" gat voldoende te maak nie, maar dit het geen probleme gehad met die sirkelvormige gate weerskante daarvan nie. Ek vervang die 'x' met 'n sirkelvormige gaatjie en dit druk fyn. Na 'n klein hoeveelheid toetsing kon ek sien dat dit die wringkrag en die gewig van die blindes kan hanteer. Ek sal my ontwerpe vir die onderstaande toerusting koppel, of u kan dit op Thingiverse vind by:

Stap 4: Kodering van die blindes

Kodering van die blindes
Kodering van die blindes

Ek wou kode hê wat die blindings outomaties sou oopmaak en toemaak as dit op 'n spesifieke ligvlak kom, maar dit het ook 'n oorheersingsknoppie, sodat 'n mens die blind sou kon oopmaak of toemaak wanneer hulle wou. Ek het my GitHub gekoppel aan die finale weergawe van die kode hier:

Die kode vir die projek het my 'n paar dae geneem om te voltooi; ek het die basiese logika van die program korrek met die ligsensor, maar die kortstondige oorheersingsknoppie werk nie korrek nie. Dit het wel die toestand van die blinde verander toe dit ingedruk is, maar dit ontbreek aan die 'grendel'-funksie, wat beteken dat die blinde in die posisie sou bly- wat beteken dat die blinde dit onmiddellik sou terugrol na wat dit voorheen was. Ek het dit reggemaak met 'n "wag tot" blok, gekoppel aan 'n logiese OF hek wat die waardes van die ligsensor en aanraaksensor lees, wat ek hieronder sal verduidelik.

Die kode begin deur die motors en blindes te kalibreer, begin met die blindings heeltemal oop en laat sak totdat dit die aanraaksensor onderaan raak, en tel hoeveel kwartdraaie dit neem om onder te kom, wat gestoor word as die "RotationsNeeded" veranderlike. Dan skryf dit 'onwaar' aan die veranderlike 'BlindOpen' wat gebruik word om die posisie van blindes op te spoor. Op hierdie punt verdeel die kode in 4 lusse.

Een van hierdie lusse is die "Buttonstate" -lus wat die toestand van die knoppie voortdurend publiseer in 'n veranderlike genaamd "ButtonPressed". Dit elimineer die noodsaaklikheid dat verskeie knoppieblokke op die script geplaas moet word.

Die tweede lus is die 'Lig of donker' wat die ligvlak buite my venster voortdurend vergelyk met 'n konstante wat vroeër in die kode gedefinieer is. As die resultaat onder die konstante is, skryf die lus 'onwaar' na die 'ItIsLight' veranderlike, terwyl dit 'waar' is as dit bo die waarde is.

Die derde lus bevat 'n numeriese lys van 3 opsies wat basies vir blindes vertel wat hulle moet doen, 0 = blind, 1 = blind, 2 = niks doen nie, want blind is op die regte plek. Die lus begin deur die veranderlike "BlindShould" te lees wat die korrekte taak spesifiseer wat die blinde moet uitvoer, voer dan die taak uit, verander die veranderlike "BlindOpen" na die korrekte opsie en word dan ledig totdat die veranderlike "BlindShould" verander word waar dit herhaal. Dit gebruik die 'RotationsNeeded'-waarde sowel as 'n +/- 100% krag om die blindings heeltemal oop of toe te beweeg.

Die vierde en laaste lus is die mees komplekse; dit is die "Decider" -lus wat al die data hanteer en besluit wat met elke permutasie gedoen moet word. Dit word gedoen deur 'logies gebaseerde' vurke in die pad 'te gebruik, waar' knoppie ',' Ligvlak ',' Blind oop 'die ware of onwaar vrae is. Al die permutasies het 'n hardgekodeerde reaksie, wat óf 0 = blind down, 1 = blind up of 2 = niks is nie - hierdie waarde word na die veranderlike "BlindShould" geskryf, wat dan deur 'n vorige lus hanteer word. Sommige antwoorde sal dan wag totdat die veranderlike “ItIsLight” en/of “ButtonPressed” verander voordat die script voltooi word; dit is slegs die geval met die knoppie geaktiveerde permutasies, anders sou dit onmiddellik probeer om sy posisie reg te stel, wat beteken dat die blinde sou terugkeer tot sy oorspronklike toestand. Hierdie proses word dan gebruik om 'n robuuste en relatief eenvoudige outomatiese stelsel te maak, wat maklik bygevoeg en ontfout kan word. Sjoe.

Stap 5: afwerking

Afwerking
Afwerking

Ek het daarna besluit om 'n 9V -kragtoevoer na my EV3 aan te sluit deur 'n paar houtpennetjies en skroewe as 'batterye' te gebruik.

Stap 6: Evaluering van die projek

Ek dink dat die projek in die algemeen goed verloop het; ek het uiteindelik 'n werkende prototipe vir die outomatiese blindings, wat ek al die relevante inligting wat ek tydens die projek gevind het, kan neem en in die finale weergawe kan implementeer. Ek het die toestel suksesvol gekodeer en het tot dusver geen groot probleme met die kode gevind nie. Ek sou die toestel meer visueel aantrekliker wou maak, maar dit is weereens 'n bewys van die konsep, en ek sal moeite doen om dit goed te laat lyk as ek die finale weergawe met 'n ESP8266 maak. As ek weer die projek doen, sal ek die motor ontwerp om binne -in die blindings te sit, aangesien dit makliker sou kon wegsteek. Die grootste les wat ek geleer het, is om logies te ontfout en my kode deur te dink, te dokumenteer en te toets voordat ek dit implementeer.

Aanbeveel: