Мазмуну:

Автоматтык сокур ачкыч EV3 колдонуу: 6 кадам
Автоматтык сокур ачкыч EV3 колдонуу: 6 кадам

Video: Автоматтык сокур ачкыч EV3 колдонуу: 6 кадам

Video: Автоматтык сокур ачкыч EV3 колдонуу: 6 кадам
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Ноябрь
Anonim
Автоматтык сокур ачкыч EV3 колдонуу
Автоматтык сокур ачкыч EV3 колдонуу
Автоматтык сокур ачкыч EV3 колдонуу
Автоматтык сокур ачкыч EV3 колдонуу

Менин уктоочу бөлмөмдө роликтин жапкан жалюзи бар, аны көбүнчө эртең менен же кечинде ачууну же жабууну унутам. Мен ачылышын жана жабылышын автоматташтыргым келет, бирок мен качан өзгөрөм.

1 -кадам: Потенциалдуу идеялар же чечимдер

YouTube, Instructables жана Thingiverse сыяктуу ар кандай сайттарды карап чыккандан кийин, эң кеңири таралган чечим - тепкич моторун же сервону колдонуу менен жалюзи жаралаган жана орогучту моторлоштуруу экенин билдим. Мен ар кандай артыкчылыктары жана кемчиликтери бар 2 негизги вариантты таптым.

Идея 1: Мотор жана тетик катушканын ичинде жайгашкан спул ыкмасы. Бул тыкан жана жарашыктуу ыкманын артыкчылыктарына ээ, бирок кемчиликтери бар, ал сокурларга чоң өзгөртүүлөрдү талап кылат, шнур мындан ары жараксыз болуп калат жана монтаж ишке ашырылганда тейлөө үчүн жетүү өтө кыйын болмок.

Идея 2: мотор жана тиштүү шнурга жайгаштырылган шнур ыкмасы. Бул артыкчылыкка ээ, ал жөнөкөй жана чогултууга оңой жетүүгө болот. Бирок, анын кемчилиги бар, ал начар жана көлөмдүү болушу мүмкүн, ошондой эле аны ишке ашырууда силлге тиркелиши керек.

Мен шнурдун ыкмасын жакшы көрөм, анткени бул жипти кол менен колдонууга тоскоол кылбайт, жана сокурлар чоң өзгөртүүлөрдү талап кылбайт. Мен ESP8266 менен акыркы версиясын чыгарганда, аны мүмкүн болушунча жашыруун жана компакт кылууну пландап жатам.

2 -кадам: Ассамблея түзүү

Ассамблея түзүү
Ассамблея түзүү
Ассамблея түзүү
Ассамблея түзүү

Мен бул долбоорду Lego mindstorms EV3 аркылуу ишке ашырдым, анын функциясы бар, мен долбоордун иштешин көрсөтүшүм керек жана мен программалык камсыздоо менен таанышмын, бул абдан жардам берди. Сокур Лего тиштери шайкеш келбеген спулду айдаш үчүн шар чынжырчасын колдонгондуктан, мен эң жакшы чечим сыртында туура шар аралыгы бар тиштүү тетикти түзүүнү чечтим- стандарттуу "крест түрүндөгү" тешик менен борбору, анда мен дизайнды 3D басып чыгармакмын. Бул учурда мен дагы калибрлөө баскычын жасап, тереземе жарык сенсорун, ошондой эле баскычты алмаштыруучу баскычты бекиттим.

3 -кадам: Blind Gear долбоорлоо

Blind Gear долбоорлоо
Blind Gear долбоорлоо
Blind Gear долбоорлоо
Blind Gear долбоорлоо
Blind Gear долбоорлоо
Blind Gear долбоорлоо
Blind Gear долбоорлоо
Blind Gear долбоорлоо

Мен сокурду дистрибьюторго бөлдүм, бул чоңураак деталдуу көрүнгөнүн көрүү үчүн. Бөлүштүрүү учурунда мен кичинекей 16 тиштүү тиштүү жабдууну таптым, бул мен издеп жүргөн бөлүк болчу. Редуктордун репликасын иштеп чыккандан кийин, мен керектүү Lego тешиктерин кошуп, 3 бөлүктү басып чыгардым жана акыры аларды superglue менен бириктирдим. Мен башында Lego бөлүгүн шайкеш келтирүү менен көйгөйлөргө туш болдум, бул менин 3D принтеримде "x" тешигин жетишерлик чечүүгө жөндөмдүү эмес болчу, бирок анын эки жагындагы тегерек тешиктер менен эч кандай көйгөй болгон эмес. Ошентип, мен "x" тегерек тешик менен алмаштырдым жана ал жакшы басылып чыкты. Андан кийин, бир аз тестирлөөдөн кийин, моментти жана сокурлардын салмагын көтөрө аларын көрдүм. Мен дизайнымды төмөндөгү тетиктерге байланыштырам же аны Thingiverseден таба аласыз:

4 -кадам: азиздерди коддоо

Сокурларды коддоо
Сокурларды коддоо

Мен белгилүү бир жарык деңгээлине келгенде сокурларды автоматтык түрдө ачып -жаба турган кодду каалачумун, бирок ошол эле учурда перделерди каалагандай ачып же жаап коюу үчүн баскычты басуу керек болчу. Мен GitHubымды коддун акыркы версиясы менен байланыштырдым:

Долбоордун кодун толтуруу үчүн бир нече күн талап кылынды, менде программанын негизги логикасы жарык сенсору менен туура иштечү, бирок көз ирмемдик жокко чыгаруу баскычы туура иштебей турган. Бул басылганда сокурлардын абалын өзгөрткөн, бирок сокур абалында калат дегенди билдирүүчү "кармоочу" функциясы жок болчу- сокур дароо мурунку абалына кайтарат. Мен муну жарык сенсорунун жана тийүү сенсорунун маанилерин окуган логикалык ЖЕ дарбазасы менен байланыштырылган "күтө тур" блогунун жардамы менен чечтим, мен муну төмөндө түшүндүрөм.

Код моторлорду жана сокурларды калибрлөөдөн башталат, сокурдан баштап толугу менен ачылып, ылдыйдагы сенсорго тийгенге чейин түшүрүп, түбүнө жетүү үчүн канча чейрек бурулуш керек экенин эсептеп, "RotationsNeeded" деп сакталат. өзгөрмө Андан кийин сокурлардын абалын көзөмөлдөө үчүн колдонулган "BlindOpen" өзгөрмөсүнө "жалган" деп жазат. Бул учурда код 4 циклге бөлүнөт.

Бул циклдердин бири - "Buttonstate" цикли, ал баскычтын абалын дайыма "ButtonPressed" деп аталган өзгөрмөгө жарыялайт. Бул скриптке бир нече баскыч блокторун коюу зарылчылыгын жок кылат.

Экинчи цикл - бул "Жарык же караңгы", ал менин тереземдин сыртындагы жарыктын деңгээлин коддо мурда аныкталган туруктуу менен салыштырып турат. Эгерде натыйжа ошол туруктуудан төмөн болсо, цикл "ItIsLight" өзгөрмөсүнө "жалган" деп жазат, ал эми мааниден жогору болсо "чыныгы" деп жазат.

Үчүнчү цикл 3 варианттын сандык тизмесин камтыйт, алар негизинен сокурларга эмне кылуу керектигин айтып турат, 0 = сокур, 1 = сокур, 2 = эч нерсе кылба, анткени сокур туура жерде. Укурук "BlindShould" өзгөрмөсүн окуудан башталат, анда сокур кандай туура тапшырманы көрсөтөт, андан кийин ошол тапшырманы аткарат, "BlindOpen" өзгөрмөсүн туура вариантка өзгөртөт жана андан кийин "BlindShould" өзгөрмөсү өзгөрмөйүнчө бош турат. ал кайталанат. Бул "RotationsNeeded" маанисин, ошондой эле +/- 100% күчүн колдонуп, сокурду толугу менен ачык же жабык түрдө жылдырат.

Төртүнчү жана акыркы цикл эң татаал, бул "Decider" цикли, ал бардык маалыматтарды иштетет жана ар бир алмаштыруу менен эмне кылууну чечет. Бул логикага негизделген "жолдогу айрыларды" колдонуу менен жасайт, мында "баскыч басылат", "Жарык деңгээли", "Сокурлар ачык" - бул чын же жалган суроолор. Бардык алмаштырууларда катуу коддуу жооп бар, же 0 = сокур, 1 = сокур же 2 = эч нерсе кылбаңыз - бул маани "BlindShould" өзгөрмөсүнө жазылат, ал мурунку цикл тарабынан иштелип чыгат. Кээ бир жооптор сценарийди бүтүрүүдөн мурун "ItIsLight" жана/же "ButtonPressed" өзгөрмөлөрүнүн өзгөрүшүн күтүшөт, бул баскычтын активдештирилген алмаштыруулары үчүн гана болот, антпесе ал ошол замат позициясын оңдоого аракет кылат, сокур кайтып келет баштапкы абалына. Бул процесс андан кийин оңой -олтоң оңдоло турган оңой жана оңой автоматтык системаны түзүү үчүн айландырылат. Пфх.

5 -кадам: Тийиштерди бүтүрүү

Тийиштерди бүтүрүү
Тийиштерди бүтүрүү

Кийинчерээк мен EV3кө 9В кубаттуулукту "жыгач дублер" менен бурамаларды "батарейкалар" аркылуу өткөрүүнү чечтим, бул продуктту батарейкаларга ишеничсиз кылып, батарейкаларды эки күндө бир алмаштырып турууга жол бербеди.

6 -кадам: Долбоорду баалоо

Мен ойлойм, бул долбоор жалпысынан жакшы өттү, мен автоматтык жалюзи чогултуунун жумушчу прототиби менен аяктадым, аны мен долбоор учурунда тапкан бардык тиешелүү маалыматымды алып, акыркы вариантка киргизе алам. Мен түзмөктү ийгиликтүү коддодым, кийинчерээк код менен эч кандай олуттуу көйгөйлөрдү тапкан жокмун. Мен түзмөктү визуалдык жактан жагымдуу кылгым келет, бирок бул дагы бир жолу концепциянын далили жана мен ESP8266 менен акыркы версиясын жасаганда жакшы көрүнүшү үчүн бир аз күч жумшайм. Мен кайра долбоорду ишке ашырганда, моторду сокурдун ичине отургузам, анткени аны жашыруу оңой болмок. Мен үйрөнгөн эң чоң сабак - логиканы оңдоо жана ойлонуу, документтештирүү жана кодумду сынап көрүүдөн мурун.

Сунушталууда: