Turinys:

Automatinis žaliuzių atidarytuvas naudojant EV3: 6 žingsniai
Automatinis žaliuzių atidarytuvas naudojant EV3: 6 žingsniai

Video: Automatinis žaliuzių atidarytuvas naudojant EV3: 6 žingsniai

Video: Automatinis žaliuzių atidarytuvas naudojant EV3: 6 žingsniai
Video: Stoglangio Fakro FTS montavimo instrukcija | e-Stogdengiai.lt 2024, Lapkritis
Anonim
Automatinis žaliuzių atidarytuvas naudojant EV3
Automatinis žaliuzių atidarytuvas naudojant EV3
Automatinis žaliuzių atidarytuvas naudojant EV3
Automatinis žaliuzių atidarytuvas naudojant EV3

Mano miegamajame yra tamsių žaliuzių rinkinys, kurį dažnai pamirštu atidaryti ar uždaryti ryte arba vakare. Noriu automatizuoti atidarymą ir uždarymą, tačiau nepaisydamas kada keisiu.

1 žingsnis: galimos idėjos ar sprendimai

Peržiūrėjęs įvairias svetaines, tokias kaip „YouTube“, „Instructables“ir „Thingiverse“, radau, kad labiausiai paplitęs sprendimas buvo motorizuoti ritę, kuri suvyniodavo ir išvyniodavo žaliuzes, naudodami žingsninį variklį arba servo. Radau 2 pagrindinius variantus su įvairiais privalumais ir trūkumais.

1 idėja: ritės metodas, kai variklis ir krumpliaratis yra ritės viduje. Tai turi privalumų, nes tai yra tvarkingas ir elegantiškas metodas, tačiau turi trūkumų, kad reikia daug keisti aklas, laidas nebegali būti naudojamas, o surinkus jį būtų labai sunku prižiūrėti.

2 idėja: laido metodas, kai variklis ir krumpliaratis yra ant laido. Tai turi pranašumą, kad jis yra paprastesnis ir surinkimas gali būti lengvai prieinamas. Tačiau jo trūkumas yra tai, kad jis gali būti negražus ir didelių gabaritų, taip pat tai, kad jį reikia pritvirtinti prie slenksčio.

Man labiau patinka laido metodas, nes tai yra daug paprastesnis sprendimas, kuris netrukdo rankiniu būdu naudoti laidą, o žaliuzėms nereikės jokių didelių pakeitimų. Kurdamas galutinę versiją su ESP8266, planuoju tai padaryti kuo slapčiau ir kompaktiškiau.

2 žingsnis: Surinkite surinkimą

Asamblėjos sudarymas
Asamblėjos sudarymas
Asamblėjos sudarymas
Asamblėjos sudarymas

Aš padariau šį projektą naudodamas savo „Lego mindstorms EV3“, kurio funkcionalumas turi parodyti, kad projektas gali veikti, ir esu susipažinęs su programine įranga, kuri neabejotinai labai padėjo. Kadangi aklas naudoja ritininę grandinę, su kuria „Lego“krumpliaračiai nesuderinami, nusprendžiau, kad geriausias sprendimas būtų suprojektuoti pavarą, kurios išorinis kamuoliuko atstumas būtų tinkamas- su standartine „kryžiaus formos“skyle. centre, kur tada 3D spausdinčiau dizainą. Šiuo metu aš taip pat padariau kalibravimo mygtuką ir prie lango pritvirtinau šviesos jutiklį, taip pat mygtuką, kuris veikia kaip nepaisymas.

3 žingsnis: aklojo įrankio projektavimas

Aklųjų pavarų projektavimas
Aklųjų pavarų projektavimas
Aklųjų pavarų projektavimas
Aklųjų pavarų projektavimas
Aklųjų pavarų projektavimas
Aklųjų pavarų projektavimas
Aklųjų pavarų projektavimas
Aklųjų pavarų projektavimas

Išardžiau žaliuzę, norėdamas pamatyti, kaip alkūnė atrodo išsamiau. Išmontuojant radau nedidelę 16 dantų pavarą, kurią laikė įtempta ritė, tai buvo dalis, kurios aš ieškojau. Suprojektavęs pavarų kopiją, pridėjau reikiamas „Lego“suderinamas skyles, atspausdinau 3 atskiras dalis ir galiausiai surišau jas su superklijais. Iš pradžių turėjau problemų, kad „Lego“dalis būtų suderinama ta prasme, kad mano 3D spausdintuvas nesugebėjo pakankamai padaryti „x“skylės, tačiau neturėjo problemų su apskritomis skylėmis abiejose jos pusėse. Taigi „x“pakeičiau apskrito formos skylute ir ji buvo gerai išspausdinta. Tada, atlikęs nedidelį bandymą, pamačiau, kad jis gali valdyti aklųjų sukimo momentą ir svorį. Žemiau susiesiu savo pavarų dizainą arba jį rasite „Thingiverse“adresu:

4 žingsnis: Aklųjų kodavimas

Aklųjų kodavimas
Aklųjų kodavimas

Norėjau kodo, kuris automatiškai atidarytų ir uždarytų žaliuzę, kai pasiekia tam tikrą apšvietimo lygį, tačiau taip pat turėjo nepaisymo mygtuką, kad būtų galima atidaryti arba uždaryti žaliuzę, kai jie to nori. Savo „GitHub“susiejau su galutine kodo versija čia:

Projekto kodas užtruko kelias dienas, turėjau pagrindinę programos logiką, kuri tinkamai veikė su šviesos jutikliu, tačiau momentinis nepaisymo mygtukas veikė netinkamai. Paspaudus jis pakeitė aklo būseną, tačiau jam trūko „fiksavimo“funkcijos, kuri reikštų, kad aklas liktų tokioje padėtyje, o tai reiškia, kad aklas iškart sugrąžins jį į buvusią. Aš tai ištaisiau naudodamas bloką „palaukti“, susietą su loginiais ARBA vartais, kurie nuskaito šviesos jutiklio ir jutiklinio jutiklio vertes, kurias paaiškinsiu toliau.

Kodas pradedamas kalibruojant variklius ir žaliuzes, pradedant visiškai atidarant žaliuzę ir nuleidžiant ją tol, kol atsitrenkiama į apačioje esantį jutiklinį jutiklį, skaičiuojant, kiek ketvirčio apsisukimų reikia norint pasiekti apačią, kuri išsaugoma kaip „RotationsNeeded“kintamasis. Tada jis rašo „false“į kintamąjį „BlindOpen“, kuris naudojamas aklųjų padėčiai sekti. Šiuo metu kodas suskaidomas į 4 kilpas.

Viena iš šių kilpų yra „Buttonstate“kilpa, kuri nuolat skelbia mygtuko būseną kintamajam „ButtonPressed“. Tai nereikalauja, kad scenarijuje būtų dedami keli mygtukų blokai.

Antroji kilpa yra „Šviesa arba tamsa“, kuri nuolat lygina šviesos lygį už mano lango su konstanta, apibrėžta anksčiau kode. Jei rezultatas yra mažesnis už tą konstantą, kilpa į kintamąjį „ItIsLight“įrašys „false“, o jei jis yra didesnis už vertę, parašys „true“.

Trečiojoje kilpoje yra 3 variantų skaitinis sąrašas, kuriame iš esmės nurodoma akliesiems, ką daryti, 0 = apakinti, 1 = apakinti, 2 = nieko nedaryti, nes aklas yra tinkamoje vietoje. Ciklas prasideda skaitant kintamąjį „BlindShould“, kuris nurodo teisingą užduotį, kurią aklas turėtų atlikti, tada atlieka tą užduotį, pakeičia kintamąjį „BlindOpen“į teisingą parinktį ir tada neveikia, kol kintamasis „BlindShould“bus pakeistas tai kartojasi. Jis naudoja „RotationsNeeded“vertę ir +/- 100% galią, kad žaliuzės būtų visiškai atidarytos arba uždarytos.

Ketvirta ir paskutinė kilpa yra pati sudėtingiausia, tai yra „Sprendimo“kilpa, kuri tvarko visus duomenis ir nusprendžia, ką daryti su kiekviena permutacija. Tai daroma naudojant logika pagrįstas „kelio šakutes“, kuriose „paspaudžiamas mygtukas“, „Šviesos lygis“, „Aklas atidarytas“yra teisingi ar klaidingi klausimai. Visos permutacijos turi griežtai užkoduotą atsakymą, kuris yra 0 = apakimas, 1 = apakimas arba 2 = nieko nedarymas - ši vertė įrašoma į kintamąjį „BlindShould“, kurį vėliau tvarko ankstesnė kilpa. Tada kai kurie atsakymai prieš baigdami scenarijų palauks, kol pasikeis kintamasis „ItIsLight“ir (arba) „ButtonPressed“, taip yra tik su mygtuku suaktyvintomis permutacijomis, nes priešingu atveju jis iš karto bandys ištaisyti savo padėtį, o tai reiškia, kad aklasis grįš į pradinę būseną. Tada šis procesas kartojamas, kad būtų sukurta tvirta ir palyginti paprasta automatinė sistema, kurią būtų galima lengvai pridėti ir derinti. Fau.

5 žingsnis: Apdailos darbai

Apdailos darbai
Apdailos darbai

Vėliau nusprendžiau prijungti 9 V maitinimo šaltinį prie savo EV3, naudodamas kai kuriuos medinius kaiščius ir varžtus kaip „baterijas“, todėl gaminys nepasitikėjo baterijomis ir neleido man keisti baterijų kas porą dienų.

6 žingsnis: projekto įvertinimas

Manau, kad projektas apskritai pavyko gerai, aš gavau veikiančią automatinių žaliuzių surinkimo prototipą, kurį galiu panaudoti visą svarbią informaciją, kurią radau projekto metu, ir įdiegti į galutinę versiją. Sėkmingai užkodavau įrenginį ir vėliau iki šiol neradau jokių didelių problemų su kodu. Aš norėčiau padaryti prietaisą vizualiai patrauklesnį, tačiau tai dar kartą yra koncepcijos įrodymas, ir aš įdėsiu šiek tiek pastangų, kad jis atrodytų gerai, kai kuriu galutinę versiją su ESP8266. Kai dar kartą atliksiu projektą, suprojektuosiu variklį, kad jis sėdėtų užuolaidų viduje, nes tai būtų lengviau nuslėpti. Didžiausia pamoka, kurią išmokau, yra loginė derinimas ir apgalvojimas, dokumentacija ir testavimas prieš įdiegiant kodą.

Rekomenduojamas: