Автоматизируем шторы — и всё-таки они крутятся

Опубликовал | 11.04.2018
Сделал я тут себе моторизированный привод для рулонных оконных штор. Получилось, как мне кажется, вполне неплохо. Решил рассказать о процессе создания и поделиться наработками в разделе DIY сообщества. Процесс создания, творческие муки, готовые рецепты, чудеса криворукости и лютый DIY. Надеюсь, будет интересно.

Этот обзор я обещал в комментах ещё месяца три назад, но… короче прошу прощения.

Идея родилась очень давно и долго дозревала. Всё началось с переезда в другую квартиру, окна которой выходят на восток. Зимой ещё ничего, а вот летом наглое солнце встаёт, когда я только уснул или ещё даже не ложился. Ярко светит прямо в глаза, говорит чтобы я лето не проспал. Оно, конечно, право, не дело спать летом, но совсем не спать как-то пока не получается. От солнца уже очень давно придумали занавески, и они даже есть у меня. Довольно плотные. Но недостаточно. Яркий свет их насквозь пробивает, не прямые лучи, но всё равно ярко. А главное их надо не забыть закрыть с вечера, открыть днём, когда проснулся. Кто-то у себя делает умный дом, кто-то — полоумный. Ну а у меня вот дом ленивый, весь в меня. Хозяин не должен утруждать себя таким тяжким трудом, как двигание штор аж дважды в сутки. Пусть шторы плавно открываются за некоторое время до будильника (или даже вместо него). Солнце должно будить моё величество, но не мешать ему спать, так ведь?

Спойлер:

Начал я думу думать, как это дело автоматизировать. Первая мысль очевидная, тросик, двигатель и навесить это всё на шторы. Пока продумывал, как это реализовать, закрепить, как датчики концевые приделать, то сё, пока пытался побороть лень и сделать, прошло года три всего. Но так и не сделал. И это хорошо. Потому что к тому времени до меня доползла другая мысль. Чем двигать шторы, которые двигаются не так уж легко и недостаточно блокируют свет, лучше использовать жалюзи. Ну а когда полез гуглить про них, узнал о такой классной штуке, как рулонные шторы. Как-то раньше не сталкивался с ними.


Рулонные шторы — среднее между жалюзи и шторой. Кусок ткани, который, когда не нужно, сворачивается в рулон в верхней части. Вешаются они на каждой окно отдельно. На открывающиеся — прямо на створку, можно открывать при любом положении шторы. Конечно бывают разных цветов, узоров и светопропускаемости. И, что мне и надо, есть варианты «blackout», то есть блокирующие свет почти полностью. В обычном варианте управляются свисающей петлей веревочкой-цепочкой. Шириной бывают разные, но если нужно, то можно и урезать по месту. Цены тоже разные, где-то от 600 рублей (~$10). Вот, для примера, в Леруа. Если нужны простые, без изысков, то вполне приемлемо, как мне кажется.

Купил, повесил — отлично! Осталось только автоматизировать. С двигателем проблем нет, штора достаточно лёгкая, ничего мощного не нужно. Ручное управление шнурком я решил убрать. Без него вал мотора можно жестко соединить с бобиной. Это упрощает конструкцию. Корпус, при наличии 3D- принтера, из проблемы превращается в вопрос дизайна. А вот электроника… Тут вариантов решения задачи много. Детальный разбор, почему я выбрал такой, спрячу под спойлер.

Варианты, мысли, компромиссы
Для начала надо решить, хотим мы управлять шторами с кнопки, пульта, смартфона, ещё как. Или сразу по всякому. И напрямую или интегрировать в какой-либо ленивый дом. Если интегрировать, то каким образом связать, проводами, вай-фаем, блютусом, радиоканалом или ещё каким извращением. Тут у каждого свои предпочтения. Я выбрал Wi-Fi, как довольно универсальный вариант. Плодить провода — излишне. ИК/радио пульты нет смысла, лучше иметь одно кольцо, чтоб править всеми, ой, то есть один смартфон для всей домашней автоматики. Тем более, при желании, перенаправить команды из чего угодно в Wi-Fi довольно просто. У меня ИК приемник в компе, гашу свет и управляю музыкой пультом от ТВ. Надо будет (и если найду ещё одну незанятую кнопку) — будет и с него управление шторами.

Ну а раз Wi-Fi, то конечно ESP8266. Модули, построенные на этом микроконтроллере, стоят недорого и вполне подходят под задачу. Я знаю про ESP32 (почти то же самое, но поновее и ещё и с bluetooth), но пока не применял.

И тут назревает компромисс, на который придётся пойти. Питание тащить проводами. Потому что крутить моторчик пару раз в сутки — аккумулятора, например 18650, хватит надолго. А вот непрерывно кормить ESP8266 — нет.

По беглым прикидкам двигатель потребляет в районе 220мА, берем аккум 18650 на 2500мАч, получаем из него 5 вольт повышайкой, 2500*3.6/5*80%=1440мАч, значит крутить его можно 1440/220=~6.5 часов. Поднять или закрыть занимает около 2 минут (от высоты окна и скорости зависит). Около 90-100 циклов «туда+обратно» на одном заряде. На 3 месяца хватило бы. А если использовать 2 аккумулятора, да повышенной ёмкости — более полугода. Приемлемо. Но помимо двигателя есть электроника.

У ESP8266 есть несколько режимов энергосбережения на такие случаи. Но если мы хотим (а мы ведь хотим), чтобы команду на открытие-закрытие шторы можно было отправить в любое время, то Wi-Fi отключать нельзя, а без этого сильно сэкономить не выйдет. Мои эксперименты ни к чему не привели, по крайней мере. Среднее потребление оставалось где-то 5-10мА, что явно много для автономного питания. Хуже того, у меня esp’шка периодически переставала экономить энергию, стоило только её пропинговать раз 10. Хз что за глюк, разбираться не стал. Ну пусть я криворукий, может реально выжать 2-3мА, все равно не вариант. Менять аккумуляторы раз в месяц (а это ещё в хорошем случае) — слишком. Включать вай-фай изредка только для синхронизации расписания, не вариант. Мало ли когда нужно закрыть шторы, вдруг кино днём посмотреть захочется, а яркий свет солнца мешает. Значит питание тянем проводом. Питание низковольтное, токи небольшие, легко проложить между рамой и створкой, за оконным плинтусом, со стороны балкона или ещё как замаскировать. Зато один раз сделал и забыл, а не аккумуляторы меняешь каждый раз. На аккумуляторы можно перейти, если достаточно только работы по расписанию + ручное управление проводной кнопкой. Я о таком варианте подумаю для дачи. Либо менять Wi-Fi на BT, RF, IR или ещё что-нибудь двухбуквенное маложрущее. К слову, беглый гуглинг говорит что есть в продаже (даже прям у нас, у продавцов этих штор) и аккумуляторные приводы с дистанционным пультом, кому надо. А я буду колхозить как мне удобно. С проводами. Спрятать их реально.

Ещё вопрос встаёт, вот есть у нас рядом 2-3 (ну у меня конкретно по 2) окна (имею ввиду отдельные стёкла. Глухие, открывающиеся или балконная дверь, в одном оконном проёме) в комнате, штор надо столько же, двигателей тоже, а сколько «мозгов»? Вообще, конечно, вычислительной мощности ESP’шки хватит более чем, у нас тут не rocket science намечается. Но, с другой стороны, тогда помимо питания, потребуется проложить провода и для управления моторчиками, для шаговых это 4 пина, если напрямую. У самых распространенных и дешевых китайских платок на ESP ещё и количество выводов ограничено. А если запихнуть эти платки прямо к моторам, по одной на каждый, то всё упрощается. Так что я решил, если пушка и снаряды стоят копейки, то можно и из неё по воробьям стрелять. Простое, модульное, легко ремонтируемое, компактное решение перевешивает экономию на спичках. Сломается электроника у одного привода, так второй позволит открыть окно и я не умру от недостатка освещения (да, я тот ещё овощ).

Обычно, делая ленивую автоматику, обязательно надо продумать резервные варианты управления, так как она обязательно когда-нибудь сломается. А если не сломается, то свет отключат. Или вай-фай повиснет. От механического ручного управления я отказался, цепочка у окна не болтается. Значит при проблемах с питанием мы ничего поделать со шторами не сможем. Ладно, как-то переживём. Можно запитать от бесперебойника или сделать бесперебойник на 5 вольт. Другое дело если всё работает, но упал Wi-Fi. На плате есть свободный пин, куда можно прилепить кнопку для ручного запуска шторы. Привод высоко, кнопку можно спустить вниз болтаться на шнурке. Но я этого не делал. Роутер у меня питается от UPS’а, не глючит, аптайм по году и больше, ребутится только при обновлении прошивки и замене аккумуляторов. И в случае пожара в доме, как недавно было. Горел подъездный кабельный канал, света не было пару часов, бесперебойник быстро сдался. Но это редкость. Вообще, кому-то кнопка может быть удобной как ещё один канал управления.

Теперь перейдем к деталям, во всех смыслах.

Двигатель. Тут для меня выбор был очевиден. Широкораспространенный 28BYJ-48. Цена 1.5-3 бакса, в зависимости от количества, комплектации платой драйвера и жадности продавца. Продаются на каждом углу китайского интернета. Есть на 5 и 12 вольт, я использовал самые распространенные, пятивольтовые. Представляет собой шаговый двигатель (т.е. его можно крутить небольшими «шагами» на нужный угол или нужное число оборотов) совмещенный с редуктором. За счет этого, при очень скромных весе (~30 г) и габаритах (~3х3х2 см), он развивает неплохую мощность, порядка 300 грамм-силы на сантиметр. Это не так много, но вполне достаточно для наматывания шторы. Редуктор также обеспечивает эффективное торможение вала при отсутствии питания. Прокрутить его рукой можно, но с приличным усилием, больше рабочего. Так что штора самопроизвольно не размотается при отключении питания. И ещё плюс — он очень тихий. Его почти не слышно уже в метре от уха. При креплении к твердой поверхности вибрации при работе немного увеличивают шум, его становится слегка слышно в тихой комнате, но разбудить кого-либо он вряд ли способен. Меня уж точно. Вообще, как я понял, они часто применяются для управления шторкой кондиционеров. А она может всю ночь двигаться в swing-режиме (я не знаю как оно по-русски, короче когды махает туды-сюды). Редуктор пластиковый, но тут недостатком не считаю, нагрузка небольшая, износ вряд ли скажется при «шторном» пробеге, в кондее же он живет как-то? Кто-то вообще на таких мини 3D-принтеры делал, а там безостановочное движение. Главное не слишком часто крутить его за вал, вот это может его легко убить. Ещё у него есть довольно значительный люфт вала, как осевой, так и радиальный. Довольно существенные. Но опять же, в данном применении это вообще не играет значения и не имеет роли. Так что минус у него, я считаю, только один, опять же следствие редуктора, мотор медленный. 15-25 RPM, т.е. один оборот за 3-4 секунды. Медленнее можно, быстрее — нет. Но шторы дело такое, спешка не требуется, наоборот, нужно их поднимать медленно и величественно. Так что подходит.

Двигатель может повернуть шторы на заданное число оборотов. Но это всё, по-эйнштейновски, относительно. А нам нужна, по-архимедовски, точка опоры, от которой вести отсчёт. Если иметь две такие контрольные точки, сверху и снизу, то можно вообще использовать обычный двигатель и крутить «до упора». Но снизу это делать неудобно, а вот сверху можно поставить микрик. (Видел в интернете реализацию вообще без концевиков, штора обучалась при первом включении. Но это не мой путь, положение может сброситься при отключении питания, если не сохранять его каждый раз во флеш-память, насилуя её. Двигатель может по каким-то причинам пропустить шаги. Мало ли.) Микропереключатель будет нажиматься полностью поднятой шторой, а вниз мы будем разматывать на заданную при настройке длину. На самом деле было бы пожалуй даже лучше использовать геркон и магнитик в нижней части шторы. Но я до этого не додумался. Мне камрад bonki подсказал, когда обсуждали эту тему в обзоре умных штор от Xiaomi. Я оставил микрики, но ничто не мешает использовать герконы, при желании. Микрики стоят чуть более бакса за пучок. Искать по словам micro limit switch, вот для примера. Нужны самые мелкие, 13х6мм, лучше без ролика. Хотя ролику всегда мона обрезание сделать.

По механике остаётся корпус и пару винтиков М3, чтобы собрать воедино. Корпус нарисуем, будем жить печатать. Корпус в идеале сделать наиболее компактным, из эстетических соображений. Да и чего лишний пластик тратить. Значит делаем плату вначале, по ней уже корпус.

Электроника.

Значит сердцем… хотя нет, мозгами, у нас будет ESP8266. Этот микроконтроллер требует для работы внешнюю память, антенну и прочую труднопаяемую в домашних условиях мелочевку. Так что берем готовую платку. Их много разных вариантов, от совсем мелких до почти ардуино-подобных. Мой выбор — ESP-07. Один из самых компактных вариантов, с керамической антенной. Есть даже разъем под внешнюю антенну, но в пределах квартиры она не нужна. ESP-12 чуть больше из-за «нарисованной» на плате антенны. Цена — 2 бакса, плюс-минус как сторгуетесь.

Управлять двигателем эти мозги напрямую не могут. Надорвутся. Не помню сколько точно допускается ток пина у ESP, кажется 12 мА, а нужно в районе 200-300. Нужны транзисторы для усиления. Проще всего взять микросхемку с ключами, ULN2003. В ней заодно есть и все необходимые для управления индуктивной нагрузкой диоды. Часто платы с этой микросхемкой продаются в комплекте к моторчику. Только там она в DIP корпусе, который излишне громоздкий. Такие платки хорошо иметь для макетирования проводами, а в готовое изделие поставить ULN2003ADR в корпусе SO-16. Стоит даже в розничном Чип и Дипе всего 19 рублей, на Али вообще меньше доллара за десяток.

Двигатель требует питания 5 вольт, мозгам нужно 3.3. Значит ставим микросхему-стабилизатор. Тут выбор огромный. Я взял самое попсовое — AMS1117-3.3 в корпусе SOT-223. Цена доллар за десяток, за $3 пришлют сразу сотню. Для питания ESP’шек от лития они не годятся, падение напряжения около 1 вольта, а вот от 5В питать в самый раз. Я их часто использую, для esp и STM32.

Ещё нужны резисторы 0805 номиналом 10КОм, плюс-минус. Тройка конденсаторов, тоже 0805, номинал 1мкФ или больше. Меньше не желательно, может глючить. И штырьки для подключения всего, чтобы не припаивать намертво. Самые обычные, однорядные прямые, шаг 2.54. Цвет по вкусу.

Питание от 5 вольт источника. Ток потребления до 0.4А на штору. Честного 1 амперного блока должно хватить на две шторы. Если не поднимать их одновременно, то даже 0.5А хватит, вероятно. Но лучше не рисковать. При возможности, лучше блок питания разогнать на 6 вольт, это компенсирует падение на проводах и ключах драйвера мотора. Особенно для широких тяжелых штор.

Для первоначальной прошивки ещё понадобится USB-TTL адаптер. Любой. В качестве него можно использовать любую Ардуинку с USB портом. Адаптер стоит копейки, но можно и попросить у кого-то на время, дальнейшее обновление прошивки, при необходимости, уже можно будет делать по воздуху.

Плата.

Схема простая, подключение типовое. Рисовал и потом разводил плату в DipTrace.

Вот развести плату оказалось чуть сложнее. Хотелось сделать максимально компактно, но не отказываясь от 0805 мелочевки, как самой распространенной и достаточно комфортной для пайки. И дорожки 0.4мм, вполне приемлемо для изготовления ЛУТом. Плата двухсторонняя. Можно было ещё на миллиметр или даже два уменьшить длину, выкинув необязательный резистор R5 между DTR и GPIO0, но я об этом поздновато подумал.
Платы можно и в китае заказать. На JLCPCB вроде ещё действует акция с бесплатной доставкой на первый заказ. Тогда 2 usd за десяток (или даже гораздо больше, если потом опиливать вручную). С доставкой уже хуже, за десятку переваливает. Но можно поискать варианты, их много. Я сам пока ни разу не заказывал, фоторезистом обхожусь.

Корпус.

В процессе работы корпус прошёл длинный эволюционный путь, начав с простой скобы-кронштейна для двигателя.

Некоторое время я ломал голову, как закрепить микрик и чем его нажимать. Пробовал варианты прикрепления к нему вилки, между зубьев которой пропускал штору, так, чтобы утяжелитель в нижней части шторы нажимал эту вилку при подъёме. Всё это было неэстетично и непрактично. Но красивое решение в итоге нашлось. Нужно всего лишь чуть выдвинуть пластиковую планку-утяжелитель, чтобы она упиралась в корпус привода. Нижнюю стенку корпуса сделать гибкой, а микрик спрятать внутрь.

Выдвинутый кончик планки можно закрыть вертикальным П-образным профилем, наклеенным на оконную раму. Тогда штора будет прилегать к стеклу даже на откидывающихся окнах. Для симметричности планка режется пополам и выдвигается с обеих сторон.

Корпус рассчитан на крепление в основание, которое идёт в комплекте к шторам. Там довольно богатый выбор способов крепления, на форточку за край, на скотч, шурупами. Глупо отказываться. Для других штор размер планки крепления может отличаться, модель придется править. Но это не сложно, рисовал я в OpenSCAD, ну как рисовал, там всё текстом задаётся. Так что и поправить должно выйти не сложно, несколько чисел поменять. Но сходу там может быть сложно в моём говнокоде разобраться. Кому нужно будет — подскажу где и как.

Печатаем. Задание принтеру я готовлю в Slic3r’е. Стараюсь подогнать так, чтобы печаталось только периметрами, без заполнения. Количество верхних и нижних слоёв ставлю так, чтобы нижняя (при печати) стенка была полностью залита.

Мои настройки такие. Печать слоем 0.25 мм, первый слой 0.3 мм, 3 периметра (для крышки лучше побольше периметров поставить, 5-6), сплошные слои: 4 верхних, 4 нижних. Я печатал и ABS’ом (немного трудновато печатается, лучше печатать с защитным периметром во всю высоту) и PLA. Но остановился на PETG, им проще всего. На печать корпуса уходит 17 грамм, на крышку — около 6. Время печати — 45-50 минут и 15 минут, соответственно.

После печати можно обработать шкуркой и растворителем для получения глянцевой поверхности, но мне лень, поэтому я решил что [s]и так сойдет[/s] издалека не видно.

Ещё печатаем переходник на ось. Его тоже надо подогнать под конкретную штору, если у неё отличается посадочный диаметр. У моих он 15-16 мм.

Паяем.

Я обычно делаю платы фоторезистом. У меня это выходит чуть дольше ЛУТа, но немного лучше по качеству и меньше брака.

Чем плохо изготовление плат дома, в переходные отверстия придётся впаять перемычки. На заводских платах отверстия внутри покрываются металлом и это обеспечивает контакт между сторонами платы. Ну а я делаю перемычки из жилки многопроволочного провода. Плату кладу на наковаленку, вставляю жилу, откусываю в миллиметре над платой и шмякаю молотком. Плату перед ударом лучше чуть приподнять, чтобы расклепалось и сверху и снизу равномерно. Получается довольно надежно, а если потом ещё и залудить — вообще отлично. И не торчит ничего, можно переходные делать прямо под микросхемами.

Припаиваем детальки. Обратите внимание, если вдруг будете повторять. Резистор R5 — 300 Ом (обозначение 301), а не 10К (103), как остальные. Не перепутать. Он вообще необязательный, можно запаять перемычку. Он на всякий случай, чтобы не попалить линию DTR при экспериментах с прошивкой. С обратной стороны тоже есть необязательный резистор R7 (на фото выше), туда вообще ничего не паять, это для экспериментов с глубоким сном только.

Некоторые пины тоже выполняют роль межслойных перемычек. Так что паять их нужно с двух сторон. Вначале запаиваем снизу, потом приподнимаем пластиковую юбку и аккуратно, используя не слишком много припоя, пропаиваем сверху. В идеале юбка садится почти на место, в ней есть небольшое углубление. Паяю я так себе, не обращайте внимания. Я вообще мастер на все кривые руки.

Первоначальная прошивка.

Тут скучно, можно не читать.
Если у вас уже установлена Arduino IDE, то проще всего прошить из неё. Если ещё не ставили пакет для поддержки ESP8266, то нужно его добавить (Tools — Board — Boards manager, esp8266 by ESP8266 Community — Install, версия 2.4.1, на данный момент. В 2.3.0 у меня были глюки и тормоза). Далее выставляем параметры.

Чтобы не ставить Arduino IDE, можно воспользоваться бесплатной утилитой от Espressif, разработчика этого чипа. Скачиваем Flash Download Tools и запускаем. В настройках ставим всё как на скриншоте, в первой строке только выбираем свой путь к скачаной bin-прошивке. В адресе «0x0000» это икс, а не ха, если что. И, важно, выбираем правильный размер памяти. Для ESP07 обычно 8 Мбит (=1Мбайт). Для других плат может быть 32 Мбита (=4 Мбайта). Иначе ошибка при прошивке будет.

В обеих случаях нужно выбрать правильный COM-порт для своего usb-ttl адаптера. Посмотреть его можно в диспетчере устройств, в винде. А линуксоводы сами разберутся. Скорость порта можно поставить любую, но лучше начинать со 115200, для надежности.

Подключаем следующим образом.
Плата — USB-TTL
gnd — gnd
RX — TX
TX — RX
На плате соединяем DTR и GND (тот, что для концевика потом используется, он пока свободен). Это нужно чтобы во время подачи питания на плату esp8266 перешёл в режим прошивки. Потом, для обычной работы, DTR нужно будет отключить, иначе так и будет висеть, ожидая прошивки.

Ну и в последнюю очередь подаём питание 5 вольт на контакты в углу платы, gnd (минус) и VIN (плюс). И не перепутать. Всё готово, жмём start или upload. Если всё получается с первого раза — бросаем всё и бежим покупать лотерейные билеты. Иначе проверяем всё заново, чаще всего проблема с выбором com-порта или перепутанных RX-TX (можно попробовать поменять их местами). Проверяем пайку, молимся Ктулху, пробуем заново.

После успешной прошивки отключаем DTR и адаптер, остаётся только питание. Отключаем, включаем заново. Потребление должно быть около 80 мА, это так, для контроля (в режиме прошивки или неправильной записи потребление, обычно, меньше). Даём плате секунд 5 на запуск и смотрим имеющиеся Wi-Fi сети. Должна появиться новая незапароленная сеть.

Подключаемся и заходим на адрес http://192.168.4.1/. Должны увидеть что-то похожее на интерфейс. Лезем в [Settings] и настраиваем.

В настройках можно выбрать русский язык, если английский не устраивает. Я в технических вещах предпочитаю английский. Но, подозреваю, не все разделяют мои вкусы и, чтобы не было обвинений меня в ненависти к родному языку (хотя в школе я его действительно очень не любил и получал трояки), решил предоставить выбор владельцу.

Я прошивку ещё допиливаю, на данный момент версия 0.02 beta ещё много чего не поддерживает. К примеру нельзя выставить статический IP, только автомат по DHCP. Для начала стоит придумать сетевое имя и указать свою Wi-Fi сеть. Желательно указать NTP сервер для получения точного времени. После перезагрузки выяснить у роутера, какой IP он выдал нашему приводу. При желании закрепить его, чтобы не менялся. С мобилы, по идее, можно зайти браузером по тому имени, который указали в настройках. С компа так может не прокатить, например в Win7 по умолчанию нет mDNS клиента. Можно поставить Bonjoure от Apple, а может он уже и стоит, если вы яблочный фанат. Но это уже отдельная тема.

Дальнейшее обновление прошивка поддерживает по воздуху. Как из Arduino IDE напрямую (нужна поддержка mDNS в системе), так и прямой заливкой bin-файла по адресу httр://IP/update (логин-пароль admin:admin, пока что меняется только в прошивке, потом может вынесу в настройки).

IoTВообще, сразу хочу сказать, прошивка написана в соответствии со всеми стандартами безопасности, принятыми в IoT (интернете вещей). Т.е. как попало. Впрочем, если кто-то подключился к этому устройству, то пароль от вашей беспроводной сети он уже знает, а навредить может разве что подвигав шторы туда-сюда. Тем не менее, как минимум не стоит давать на роутере доступ к шторам из глобальной сети напрямую. В дальнейшем может и приделаю парольный доступ, хотя пока смысла в этом не вижу.

Касательно написания прошивки, было бы не честно не выразить благодарность камраду sav13 и его коту за их заметки про esp8266, которые помогли разобраться с этим чипом. И за его прошивку для SonoffLED, из исходников которой я многое почерпнул. Так что, Алексей, спасибо!

Итак, запустили, сеть настроили, можно собрать воедино. Припаиваем проводочки к микрику, обжимаем разъём. Или берем два проводочка с разъёмом и паяем их. Паять надо к крайним выводам, нормально замкнутым. Если вдруг концевик отвалится от платы, это будет эквивалентно постоянно нажатому состоянию, меньше шансов убить движок.

Прикручиваем мотор к корпусу. Вставляем микрик. Для надежности лучше закрепить его каплей термоклея со стороны контактов. Подключаем к плате и утрамбовываем внутрь. Провода от мотора я не укорачивал, мне, конечно же, было лень. Просто смотал и запихнул внутрь. Оправдал это тем, что так проще будет менять, если вдруг понадобится. Плата входит плотненько, если правильно отпилена. Подточить при необходимости. Крепить не понадобилось, сидит надежно. Провода питания можно пропихнуть в щель над креплением, тогда их и невидно будет. Защёлкиваем крышку. Не получается. Уплотняем провода, пробуем ещё раз. У меня получилось. Раза с третьего. Вариант сервировки:

Блок питания с Али, б.у.шный из какой-то техники, довольно приличный, насколько я могу судить со своим образованием (окончил курсы повышения квалификации в обзорах от kirich’а). Заявлено 10 ватт на 5 вольт, нам столько мощности не нужно, так что с большим запасом. Я только чуть поднял выходное напряжение, на полвольта где-то, изменив резистор. При необходимости меняем выходные конденсаторы на большее напряжение. Установлен БП будет на остекленном балконе, почти под потолком, но всё-таки запихнул его в распаечную коробку IP55, со шнайдеровским брендом. Нравятся они мне. Подключение проводов на подделках под wago, но токи небольшие, на линию балкона у меня вообще стоит автомат C6, если что (не хочу провоцировать wago-срач в комментах).

Прокладываем провода питания по внутренней стороне створки. Делаем петлю в том месте, где оно поворачивается, чтобы не сильно перегибался. И подключаем к блоку питания.

Время настроить мотор. Для шагового мотора важно, в какой последовательности включать обмотки. При неверном подключении он будет крутиться в обратном направлении или вообще дергаться как обессилевший эпилептик. Я вроде когда делал плату и писал софт, закладывал прямой порядок. Но, видимо, где-то накосячил, как всегда. В итоге в настройках сделал выбор любого варианта подключения, чтобы не париться в дальнейшем. Вдруг китайцы на разъёме двигателя поменяют распиновку. Мне подходит вариант «A-B-D-C». Пробуем разные, жмём кнопки Test. Выбираем направление прямое или обратное, так, чтобы «тест вверх» сматывал штору. Можно поэкспериментировать со скоростью. По умолчанию 1500, это микросекунд на шаг. Чем меньше число, тем выше скорость. У меня работает где-то до 900, на 800 уже перестает крутить. Лучше оставить запас. Можно замедлить ещё сильнее, возможно чуть снизить шум от вибрации, если где-то резонанс проявляется на определенной скорости.

Настроив мотор, нужно настроить длину шторы. Поднимаем полностью вверх, до срабатывания датчика, затем опускаем вниз до нужной длины. Можно кнопкой тест, а можно выставляя значение длины шторы, постепенно его увеличивая. Узнав нужную длину, сохраняем.

Готово! Можно открывать и закрывать окна через браузер с любого устройства. Работает тихо, плавно, неспешно (глаз такое движение даже и не сразу ловит, ну то есть от неожиданного резкого движения вы не подскакиваете). У меня в балконной двери стекло в полный рост, штора до низа около фута не достаёт, но там не так много света, балкон экранирует. Можно штору наростить, мне без надобности. Так вот полная длина 1.70м проходит минуты за 2.5 при скорости в настройках 1500.

Веб версткой я не занимался давным давно, с тех пор многое изменилось, например, оказалось что таблицами уже не верстают. И ещё надо как-то сделать, чтобы на мобильных устройствах прилично смотрелось. Получилось так себе, но жить можно.

Интеграция с чем-то умным.

А вот тут будет кратко.
Уже сейчас можно управлять по сети простым запросом по HTTP.
httр://ip-address/open
httр://ip-address/close
Также есть служебный линк, его удобно использовать с ajax
httр://ip-address/test?up=1&reversed=0&pinout=2&delay=1500&steps=300
Все параметры опциональны, возвращает, после завершения операции, текущую позицию шторы.

Куда забивать эти http-линки, зависит от того, какой системой умного дома пользуетесь. У меня своя собственная, на базе того, что я делал по работе для более серьезных вещей. Но я уверен, что прикрутить можно к чему угодно без больших усилий. Найти примеры можно в интернете.

Протокол MQTT можно прикрутить. Вероятно добавлю в следующих версиях прошивки.

Вот чего пока не знаю как лучше решить — синхронизация с будильником. Не нашёл как в AndroidAPI это сделать. Так чтобы выставил будильник на 14 часов утра, а шторы получили команду на открытие в 13:50. Можно использовать альтернативный будильник, как вариант.

Если кого-то именно эта часть интересовала больше всего — я прошу прощения. Но тема слишком обширная. Тут и Tasker под Андроид с голосовым управлением, и Сири, и Домотиксы с Бродлинками и Ми-шными устройствами. Всё это можно применить, а вот описать в одном обзоре — нет. Я и так байтов текста потратил больше чем за последние года три.

Другой вариант исполнения.

Ну что, есть у кого желание повторить себе аналогичное? Если повторить хочется, но печатать корпус не на чем, травить плату нет желания, паяльник одолжил знакомый криптоаналитик, то есть у меня для вас рецепт из кубиков.

Ищем в китае любую отладочную плату на esp8266, так чтобы с припаяными пинами и usb разъемом. Там всякие WeMos, NodeMCU и тому подобное, на свой вкус и подешевле. Оно не сильно дороже голой esp07, на самом деле. Дальше соединяем это с платой драйвера, которая идёт в комплекте с моторчиком (иногда не идёт, ищите нужные лоты). Прошиваем по USB кабелю, также, как написано ранее. Только копка flash есть на плате или даже само сработает. Всё, готово. Дел на 5 минут, реально. Вот как потом мотор крепить конкретно к вашей шторе — это уже не мои проблемы :)

Подключение простое. 4 входа на плате драйвера (IN1-IN4) соединяем с пинами D1, D2, D6, D7 (они могут быть подписаны как у esp, GPIO4, GPIO5, GPIO12, GPIO13). Соединяем строго как попало. Потом в настройках выставим как надо. Плюс и минус драйвера коннектим к VIN (м.б. обозначено как 5V) и gnd соответственно. Тут уже, если перепутать, в софте не поправить. Всё.

Планы.
Для начала допилить прошивку. Этот процесс вечный, так что тянуть с обзором дальше не стал. В планах добавить MQTT, статический IP, автономную работу по расписанию. Ещё что-то, уже не помню. Потом есть мысли для дачи сделать автономное питание, там можно тупо по расписанию восхода-захода солнца работать. Или по фотодатчику. Также есть мысль адаптировать разработку для экрана проектора. Более мощный мотор нужен будет.

Но результатом я уже доволен. Надеюсь, кому-то ещё пригодится. О многом, наверняка, забыл написать. Так что в комментах постараюсь ответить.

Ссылки: GitHub, тут скоро будет ссылка на Thingiverse.

Добавить в избранное +4 +6

(c) 2017 Источник материала

Рекламные ссылки