Բովանդակություն:

Ավտոմատ կույր բացիչ ՝ օգտագործելով EV3: 6 քայլ
Ավտոմատ կույր բացիչ ՝ օգտագործելով EV3: 6 քայլ

Video: Ավտոմատ կույր բացիչ ՝ օգտագործելով EV3: 6 քայլ

Video: Ավտոմատ կույր բացիչ ՝ օգտագործելով EV3: 6 քայլ
Video: Alltag und Beruf - Deutsch lernen mit Dialogen - B2 2024, Նոյեմբեր
Anonim
Ավտոմատ կույր բացիչ `օգտագործելով EV3
Ավտոմատ կույր բացիչ `օգտագործելով EV3
Ավտոմատ կույր բացիչ `օգտագործելով EV3
Ավտոմատ կույր բացիչ `օգտագործելով EV3

Իմ ննջասենյակում ունեմ մի շարք գլանափաթեթներ, որոնք հաճախ մոռանում եմ բացել կամ փակել առավոտյան կամ երեկոյան: Ես ուզում եմ ավտոմատացնել բացումն ու փակումը, բայց չեղյալ համարելով, թե երբ եմ փոխվելու:

Քայլ 1: Հնարավոր գաղափարներ կամ լուծումներ

Տարբեր կայքեր փնտրելուց հետո, ինչպիսիք են YouTube- ը, Instructables- ը և Thingiverse- ը, ես գտա, որ ամենատարածված լուծումն այն էր, որ շարժակազմը պտտեցնեին և բացեին շերտավարագույրները `օգտագործելով սահող շարժիչ կամ սերվո: Ես գտա 2 հիմնական տարբերակ ՝ տարբեր առավելություններով և թերություններով:

Գաղափար 1. Կծիկի մեթոդը, որտեղ շարժիչը և շարժակազմը տեղադրված են պտուտակի ներսում: Սա ունի առավելություններ, որ դա կոկիկ և էլեգանտ մեթոդ է, բայց ունի այն թերությունները, որ այն պահանջում է մեծ փոփոխություններ կույրերի համար, լարն այլևս օգտագործելի չէ, և հավաքման ընթացքում շատ դժվար կլինի հասնել պահպանման համար:

Գաղափար 2. Լարերի մեթոդը, որտեղ շարժիչը և շարժիչը տեղադրված են լարի վրա: Սա առավելություն ունի, որ այն ավելի պարզ է, և հավաքը կարող է հեշտությամբ հասանելի լինել: Այնուամենայնիվ, այն ունի թերություն, որ այն կարող է լինել տգեղ և զանգվածային, ինչպես նաև այն փաստը, որ այն կիրառելիս պետք է ամրացվի շեմին:

Ես նախընտրում եմ լարային մեթոդը, քանի որ շատ ավելի պարզ լուծում է, որը չի խոչընդոտում լարի ձեռքով օգտագործմանը, և կույրերը չեն պահանջում որևէ լուրջ փոփոխություն: Ես նախատեսում եմ այն հնարավորինս թաքուն և կոմպակտ դարձնել, երբ վերջնական տարբերակը պատրաստեմ ESP8266- ով:

Քայլ 2. Համագումարի պատրաստում

Համագումարի պատրաստում
Համագումարի պատրաստում
Համագումարի պատրաստում
Համագումարի պատրաստում

Ես արեցի այս նախագիծը ՝ օգտագործելով իմ Lego mindstorms EV3- ը, որն ունի ֆունկցիոնալություն: Ես պետք է ցույց տամ, որ նախագիծը կարող է աշխատել, և ես ծանոթ եմ այն ծրագրակազմին, որն անպայման շատ օգնեց: Քանի որ կույրն օգտագործում է գնդիկավոր շղթա ՝ պտուտակը քշելու համար, որի հետ անհամատեղելի են Lego- ի շարժակները, ես որոշեցի, որ լավագույն լուծումը արտաքինից գնդակի ճիշտ հեռավորությամբ հանդերձում նախագծելն է ՝ ստանդարտ «խաչաձև» անցքով: կենտրոն, որտեղ ես այնուհետև 3D տպում էի դիզայնը: Այս պահին ես պատրաստեցի նաև չափագրման կոճակ և լուսամուտի սենսոր կցեցի պատուհանիս, ինչպես նաև կոճակ `որպես անտեսման դեր:

Քայլ 3. Կույր հանդերձանքի ձևավորում

Կույր հանդերձանքի նախագծում
Կույր հանդերձանքի նախագծում
Կույր հանդերձանքի նախագծում
Կույր հանդերձանքի նախագծում
Կույր հանդերձանքի նախագծում
Կույր հանդերձանքի նախագծում
Կույր հանդերձանքի նախագծում
Կույր հանդերձանքի նախագծում

Ես ապամոնտաժեցի կույրերին, որպեսզի տեսնեմ, թե ինչպես է կռունկը ավելի մանրամասնորեն նայում: Ապամոնտաժման ժամանակ ես գտա 16 ատամանոց փոքրիկ հանդերձանք, որն ամրացված էր լարված կծիկով, սա այն մասն էր, որը ես փնտրում էի: Հագուստի կրկնօրինակը նախագծելուց հետո ես ավելացրեցի Lego- ի հետ համատեղ անհրաժեշտ անցքերը, տպեցի 3 առանձին մասերը և վերջապես դրանք միացրեցի սոսնձի հետ: Սկզբում ես խնդիրներ ունեի Lego- ի հատվածը համատեղելի դարձնելու հետ, այն իմաստով, որ իմ 3D տպիչը չուներ «x» անցքը բավարար չափով լուծելու թույլտվություն, սակայն խնդիրներ չուներ դրա երկու կողմերի շրջանաձև անցքերի հետ: Այսպիսով, ես «x» - ը փոխարինեցի շրջանաձև անցքով, և այն լավ տպվեց: Հետո, փոքր քանակությամբ փորձարկումներից հետո ես տեսա, որ այն կարող է կարգավորել ոլորող մոմենտը և քաշը կույրից: Ստորև ես կկապեմ հանդերձանքի իմ նախագծերը կամ կարող եք գտնել այն Thingiverse- ում ՝

Քայլ 4: Կույրերի կոդավորում

Կույրերի կոդավորում
Կույրերի կոդավորում

Ես ուզում էի ծածկագիր, որը կույրը ինքնաբերաբար կբացեր և կփակեր կույրը, երբ այն հասնում էր որոշակի լուսավորության մակարդակի, բայց այն նաև ուներ բաց թողնելու կոճակ, որպեսզի երբևէ ցանկացողը կարողանա բացել կամ փակել կույրը: Ես իմ GitHub- ը կապել եմ կոդի վերջնական տարբերակի հետ այստեղ ՝

Projectրագրի ծածկագիրը մի քանի օր տևեց ինձ լրացնելու համար, ես ունեի լույսի ցուցիչով ճիշտ աշխատող ծրագրի հիմնական տրամաբանությունը, սակայն վայրկենական անջատման կոճակը ճիշտ չէր գործում: Սեղմելուց հետո այն փոխեց կույրերի վիճակը, բայց այն չուներ «փակման» գործառույթը, ինչը կնշանակեր, որ կույրը կմնա իր դիրքում, այսինքն ՝ կույրը այն անմիջապես կվերադարձնի նախկինին: Ես դա շտկեցի ՝ օգտագործելով «սպասել մինչև» բլոկը ՝ կապված տրամաբանական ԿԱՄ դարպասի հետ, որը կարդում էր լույսի սենսորի և հպման տվիչի արժեքները, ինչը ես կբացատրեմ ստորև:

Կոդը սկսվում է շարժիչների և կույրերի տրամաչափմամբ ՝ սկսած կույրը լիովին բացելուց և իջեցնելուց մինչև այն դիպչի ներքևի հպման տվիչին ՝ հաշվելով, թե քանի քառորդ պտույտ է պահանջվում հատակին հասնելու համար, որը պահպանվում է որպես «Պտտումներ անհրաժեշտ»: փոփոխական: Այնուհետև այն գրում է «կեղծ» «BlindOpen» փոփոխականին, որն օգտագործվում է կույրերի դիրքը հետևելու համար: Այս պահին կոդը բաժանվում է 4 հանգույցի:

Այս օղակներից մեկը «Buttonstate» օղակն է, որն անընդհատ հրապարակում է կոճակի վիճակը «ButtonPressed» կոչվող փոփոխականի համար: Սա վերացնում է սցենարի վրա բազմաթիվ կոճակների բլոկների տեղադրման անհրաժեշտությունը:

Երկրորդ հանգույցը «Թեթև կամ մութ» է, որն անընդհատ համեմատում է լուսամուտի պատուհանից դուրս գտնվող լույսի մակարդակը ՝ ծածկագրում ավելի վաղ սահմանված հաստատունի հետ: Եթե արդյունքը այդ հաստատունից ցածր է, ապա օղակը «կեղծ» է գրում «ItIsLight» փոփոխականի վրա, իսկ եթե այն արժեքից բարձր է, գրում է «ճշմարիտ»:

Երրորդ օղակը պարունակում է 3 տարբերակների թվային ցուցակ, որը հիմնականում կույրերին ասում է, թե ինչ անել, 0 = կույր ներքև, 1 = կույր վեր, 2 = ոչինչ չանել, քանի որ կույրը ճիշտ տեղում է: Օղակը սկսվում է ՝ կարդալով «BlindShould» փոփոխականը, որը սահմանում է այն ճիշտ աշխատանքը, որը կույրը պետք է կատարի, այնուհետև կատարում է այդ առաջադրանքը, «BlindOpen» փոփոխականը փոխում է ճիշտ տարբերակի և ապա անգործուն մնում, մինչև «BlindShould» փոփոխականը փոխվի, որտեղ այն կրկնվում է: Այն օգտագործում է «RotationsNeeded» արժեքը, ինչպես նաև +/- 100% հզորություն ՝ կույրը ամբողջությամբ բաց կամ փակ տեղափոխելու համար:

Չորրորդ և վերջին հանգույցը ամենաբարդն է, դա «Որոշիչ» օղակն է, որը մշակում է բոլոր տվյալները և որոշում, թե ինչ անել յուրաքանչյուր փոխակերպման հետ: Դա անում է տրամաբանության վրա հիմնված «ճանապարհի պատառաքաղներ» օգտագործելով, որտեղ «կոճակը սեղմված է», «Լույսի մակարդակ», «Կույր բացված» են ճշմարիտ կամ կեղծ հարցերը: Բոլոր փոխարինումներն ունեն կոդավորված կոդավորված պատասխան, որը կամ 0 = կույր ներքև է, 1 = կույր վեր կամ 2 = ոչինչ չանել. Որոշ պատասխաններ այնուհետև կսպասեն, որ «ItIsLight» և/կամ «ButtonPressed» փոփոխականները փոխվեն նախքան սցենարի ավարտը, սա միայն կոճակի ակտիվացրած փոփոխությունների դեպքում է, քանի որ հակառակ դեպքում այն անմիջապես կփորձի ուղղել իր դիրքը, ինչը նշանակում է, որ կույրը կվերադառնա: իր սկզբնական վիճակին: Այս գործընթացն այնուհետև շրջափակվում է ՝ ստեղծելով հզոր և համեմատաբար պարզ ավտոմատ համակարգ, որը հեշտությամբ կարելի է ավելացնել և կարգաբերել: Ֆյու

Քայլ 5: Ավարտելով հպումները

Վերջնական հպումներ
Վերջնական հպումներ

Ես որոշեցի հետագայում միացնել 9V էլեկտրամատակարարում իմ EV3- ին ՝ օգտագործելով մի քանի փայտե աշտարակներ և պտուտակներ որպես «մարտկոցներ», ինչը ապրանքը չհամապատասխանեցրեց մարտկոցներին և թույլ չտվեց, որ ես ստիպված լինեմ մարտկոցները փոխել ամեն երկու օրը մեկ:

Քայլ 6. Նախագծի գնահատում

Կարծում եմ, որ նախագիծը ընդհանուր առմամբ լավ էր ընթանում, ես ավարտեցի աշխատանքային նախատիպը ՝ Automatic blinds հավաքման համար, որը կարող եմ վերցնել նախագծի ընթացքում գտած բոլոր համապատասխան տեղեկությունները և իրականացնել վերջնական տարբերակում: Ես հաջողությամբ կոդավորեցի սարքը, իսկ հետագայում մինչ այժմ կոդի հետ կապված լուրջ խնդիրներ չեմ գտել: Ես կցանկանայի սարքը տեսողականորեն ավելի գրավիչ դարձնել, բայց ևս մեկ անգամ դա հայեցակարգի ապացույց է, և ես որոշակի ջանքեր կգործադրեմ այն լավ տեսք ունենալու համար, երբ վերջնական տարբերակը պատրաստեմ ESP8266- ով: Երբ նորից կատարեմ նախագիծը, ես նախագծելու եմ շարժիչը, որը նստելու է կույրերի ներսում, քանի որ դա ավելի հեշտ կլինի թաքցնել: Իմ սովորած ամենամեծ դասը տրամաբանական սխալների շտկումն է և իմ ծածկագիրը մշակելուց առաջ մտածելը, փաստաթղթավորելը և փորձարկելը:

Խորհուրդ ենք տալիս: