Съдържание:

Автоматично отваряне на щори с EV3: 6 стъпки
Автоматично отваряне на щори с EV3: 6 стъпки

Видео: Автоматично отваряне на щори с EV3: 6 стъпки

Видео: Автоматично отваряне на щори с EV3: 6 стъпки
Видео: No one knows this HIDDEN first class 2024, Юли
Anonim
Автоматично отваряне на щори с помощта на EV3
Автоматично отваряне на щори с помощта на EV3
Автоматично отваряне на щори с помощта на EV3
Автоматично отваряне на щори с помощта на EV3

В спалнята има комплект ролетни щори, които често забравям да отварям или затварям сутрин или вечер. Искам да автоматизирам отварянето и затварянето, но с отмяна, когато за кога се сменям.

Стъпка 1: Потенциални идеи или решения

След като разгледах различни сайтове като YouTube, Instructables и Thingiverse, открих, че най -често срещаното решение е да моторизираме макарата, която навива и размотава щорите с помощта на стъпков двигател или серво. Открих 2 основни варианта с различни предимства и недостатъци.

Идея 1: Метод на макарата, при който двигателят и зъбното колело са разположени вътре в макарата. Това има предимствата, че е чист и елегантен метод, но има недостатъците, че изисква значителна модификация на щорите, кабелът вече не може да се използва и монтажът би бил много труден за поддръжка, когато се приложи.

Идея 2: метод на кабела, при който двигателят и предавката са поставени върху кабела. Това има предимството, че е по -просто и монтажът може да бъде лесно достъпен. Той обаче има недостатъка, че може да бъде грозен и обемист, както и факта, че трябва да бъде прикрепен към перваза, когато е приложен.

Предпочитам метода на кабела, тъй като е много по -просто решение, което не възпрепятства ръчното използване на кабела и щората няма да изисква големи промени. Планирам да го направя възможно най -скрит и компактен, когато правя окончателната версия с ESP8266.

Стъпка 2: Извършване на монтажа

Изготвяне на асамблеята
Изготвяне на асамблеята
Изготвяне на асамблеята
Изготвяне на асамблеята

Направих този проект с помощта на моя Lego mindstorms EV3, който има функционалност, от която се нуждая, за да покажа, че проектът може да работи, и съм запознат със софтуера, който определено помогна много. Тъй като щората използва сачмена верига за задвижване на макарата, с която зъбните колела на Lego са несъвместими, реших, че най-доброто решение е да се проектира зъбно колело с правилното разстояние на топката отвън- със стандартния „кръстосан“отвор в център, където след това щях да отпечатам 3D дизайна. В този момент също направих бутон за калибриране и прикрепих сензор за светлина към прозореца си, както и бутон, който да действа като замяна.

Стъпка 3: Проектиране на Blind Gear

Проектиране на Blind Gear
Проектиране на Blind Gear
Проектиране на Blind Gear
Проектиране на Blind Gear
Проектиране на Blind Gear
Проектиране на Blind Gear
Проектиране на Blind Gear
Проектиране на Blind Gear

Разглобих щората, за да видя как манивелата изглежда по -подробно. По време на разглобяването открих малка 16-зъбна предавка, която беше закрепена от обтегната бобина, това беше частта, която търсех. След като проектирах копие на съоръжението, добавих необходимите отвори, съвместими с Lego, отпечатах 3-те отделни части и накрая ги залепих със суперлепило. Първоначално имах проблеми с това да направя частта Lego съвместима, в смисъл, че моят 3D принтер нямаше резолюцията да направи достатъчно дупката „x“, но нямаше проблеми с кръговите отвори от двете страни на нея. Затова замених „x“с кръгъл отвор и той се отпечата добре. След това, след малко тестване, видях, че може да се справи с въртящия момент и теглото на щорите. Ще свържа моите дизайни за оборудването по -долу или можете да го намерите в Thingiverse на:

Стъпка 4: Кодиране на слепите

Кодиране на слепите
Кодиране на слепите

Исках код, който автоматично да отваря и затваря щората, когато стигне до определено ниво на осветеност, но също така имаше бутон за отмяна, така че човек все още да може да отваря или затваря щората, когато пожелае. Свързах моя GitHub с крайната версия на кода тук:

Кодът за проекта ми отне няколко дни, за да завърша, имах основната логика на програмата, която работеше правилно със светлинния сензор, но бутонът за моментно замяна не работеше правилно. Той промени състоянието на щората след натискане, но липсваше функцията „затваряне“, която би означавала, че щората ще остане в позицията- което означава, че щората веднага ще я върне обратно към това, което е била преди. Поправих това с помощта на блок „изчакайте до“, свързан с логическа ИЛИ порта, която отчита стойностите на сензора за светлина и сензора за докосване, което ще обясня по -долу.

Кодът започва с калибриране на двигателите и щорите, като се започне с напълно отворена щора и се спуска, докато удари сензора за докосване в долната част, като се брои колко четвърти оборота са необходими, за да се стигне до дъното, което се записва като „RotationsNeeded“променлива. След това той записва „false“към променливата „BlindOpen“, която се използва за проследяване на позицията на блайнда. В този момент кодът се разделя на 4 цикъла.

Един от тези цикли е цикълът „Buttonstate“, който непрекъснато публикува състоянието на бутона към променлива, наречена „ButtonPressed“. Това елиминира необходимостта от поставяне на няколко блока от бутони в скрипта.

Вторият цикъл е „Светъл или тъмен“, който непрекъснато сравнява нивото на светлината извън прозореца ми, с константа, определена по -рано в кода. Ако резултатът е под тази константа, цикълът ще запише „false“към променливата „ItIsLight“, докато ако е над стойността, ще напише „true“.

Третият цикъл съдържа цифров списък от 3 опции, които основно казват на слепите какво да правят, 0 = затваряне, 1 = затваряне, 2 = не прави нищо, защото щората е на правилното място. Цикълът започва с четене на променливата „BlindShould“, която определя правилната задача, която слепият трябва да изпълнява, след което изпълнява тази задача, променя променливата „BlindOpen“до правилната опция и след това става бездействаща, докато променливата „BlindShould“не се промени, където повтаря се. Той използва стойността „RotationsNeeded“, както и +/- 100% мощност за преместване на щората напълно отворена или затворена.

Четвъртият и последен цикъл е най -сложният, той е цикълът „Decider“, който обработва всички данни и решава какво да прави с всяка пермутация. Той прави това, като използва логически базирани „разклонения на пътя“, където „бутонът е натиснат“, „Ниво на светлината“, „Сляпо отворено“са верните или неверните въпроси. Всички пермутации имат твърдо кодиран отговор, който е или 0 = затваряне, 1 = затваряне или 2 = нищо не прави - тази стойност се записва в променливата “BlindShould”, която след това се обработва от предишен цикъл. След това някои отговори ще изчакат промяната на „ItIsLight“и/или „ButtonPressed“, преди да завърши скрипта, това важи само за бутоните, активирали пермутации, тъй като в противен случай веднага ще се опита да коригира позицията си, което означава, че слепият ще се върне до първоначалното си състояние. След това този процес се затваря, за да се направи здрава и сравнително проста автоматична система, която лесно може да се добавя и отстранява грешки. Фу.

Стъпка 5: Довършителни щрихи

Довършителни щрихи
Довършителни щрихи

Впоследствие реших да свържа 9V захранване към моя EV3, като използвам някои дървени дюбели и винтове като "батерии", това направи продукта непостоянен към батериите и ми попречи да сменя батериите на всеки няколко дни.

Стъпка 6: Оценка на проекта

Мисля, че проектът мина добре като цяло, в крайна сметка получих работещ прототип за сглобяване на автоматични щори, който мога да взема цялата необходима информация, която открих по време на проекта, и да го внедря в окончателната версия. Успешно кодирах устройството и по -късно не открих сериозни проблеми с кода досега. Бих искал да направя устройството по -визуално привлекателно, но за пореден път това е доказателство за концепцията и ще положа малко усилия, за да изглежда добре, когато направя окончателната версия с ESP8266. Когато направя проекта отново, ще проектирам двигателя да седи вътре в щората, тъй като това би било по -лесно да се скрие. Най -големият урок, който научих, е да отстраня грешки логически и да обмислям, документирам и тествам кода си, преди да го внедря.

Препоръчано: