RSS блога
Подписка
Автоматизируем шторы - и всё-таки они крутятся
Сделал я тут себе моторизированный привод для рулонных оконных штор. Получилось, как мне кажется, вполне неплохо. Решил рассказать о процессе создания и поделиться наработками в разделе DIY сообщества. Процесс создания, творческие муки, готовые рецепты, чудеса криворукости и лютый DIY. Надеюсь, будет интересно.
Этот обзор я обещал в комментах ещё месяца три назад, но… короче прошу прощения.
Идея родилась очень давно и долго дозревала. Всё началось с переезда в другую квартиру, окна которой выходят на восток. Зимой ещё ничего, а вот летом наглое солнце встаёт, когда я только уснул или ещё даже не ложился. Ярко светит прямо в глаза, говорит чтобы я лето не проспал. Оно, конечно, право, не дело спать летом, но совсем не спать как-то пока не получается. От солнца уже очень давно придумали занавески, и они даже есть у меня. Довольно плотные. Но недостаточно. Яркий свет их насквозь пробивает, не прямые лучи, но всё равно ярко. А главное их надо не забыть закрыть с вечера, открыть днём, когда проснулся. Кто-то у себя делает умный дом, кто-то — полоумный. Ну а у меня вот дом ленивый, весь в меня. Хозяин не должен утруждать себя таким тяжким трудом, как двигание штор аж дважды в сутки. Пусть шторы плавно открываются за некоторое время до будильника (или даже вместо него). Солнце должно будить моё величество, но не мешать ему спать, так ведь?
Спойлер:
Начал я думу думать, как это дело автоматизировать. Первая мысль очевидная, тросик, двигатель и навесить это всё на шторы. Пока продумывал, как это реализовать, закрепить, как датчики концевые приделать, то сё, пока пытался побороть лень и сделать, прошло года три всего. Но так и не сделал. И это хорошо. Потому что к тому времени до меня доползла другая мысль. Чем двигать шторы, которые двигаются не так уж легко и недостаточно блокируют свет, лучше использовать жалюзи. Ну а когда полез гуглить про них, узнал о такой классной штуке, как рулонные шторы. Как-то раньше не сталкивался с ними.
Рулонные шторы — среднее между жалюзи и шторой. Кусок ткани, который, когда не нужно, сворачивается в рулон в верхней части. Вешаются они на каждой окно отдельно. На открывающиеся — прямо на створку, можно открывать при любом положении шторы. Конечно бывают разных цветов, узоров и светопропускаемости. И, что мне и надо, есть варианты «blackout», то есть блокирующие свет почти полностью. В обычном варианте управляются свисающей петлей веревочкой-цепочкой. Шириной бывают разные, но если нужно, то можно и урезать по месту. Цены тоже разные, где-то от 600 рублей (~$10). Вот, для примера, в Леруа. Если нужны простые, без изысков, то вполне приемлемо, как мне кажется.
Купил, повесил — отлично! Осталось только автоматизировать. С двигателем проблем нет, штора достаточно лёгкая, ничего мощного не нужно. Ручное управление шнурком я решил убрать. Без него вал мотора можно жестко соединить с бобиной. Это упрощает конструкцию. Корпус, при наличии 3D- принтера, из проблемы превращается в вопрос дизайна. А вот электроника… Тут вариантов решения задачи много. Детальный разбор, почему я выбрал такой, спрячу под спойлер.
Двигатель. Тут для меня выбор был очевиден. Широкораспространенный 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, чтобы собрать воедино. Корпус нарисуем, будемжить печатать. Корпус в идеале сделать наиболее компактным, из эстетических соображений. Да и чего лишний пластик тратить. Значит делаем плату вначале, по ней уже корпус.
Управлять двигателем эти мозги напрямую не могут. Надорвутся. Не помню сколько точно допускается ток пина у 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 напрямую (нужна поддержка mDNS в системе), так и прямой заливкой bin-файла по адресу httр://IP/update (логин-пароль admin:admin, пока что меняется только в прошивке, потом может вынесу в настройки).
Вообще, сразу хочу сказать, прошивка написана в соответствии со всеми стандартами безопасности, принятыми в 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.
Скучное видео. Снимал на мобильник, резкость постоянно уплывала, но лучше не могу :(
UPDATE. С момента публикации прошивка была значительно доработана. Исходники и бинарники по-прежнему доступны на GitHube. Постепенно допиливается отдельный сайтик. Кто очень хочет, может приобрести у меня готовые блоки.
Этот обзор я обещал в комментах ещё месяца три назад, но… короче прошу прощения.
Идея родилась очень давно и долго дозревала. Всё началось с переезда в другую квартиру, окна которой выходят на восток. Зимой ещё ничего, а вот летом наглое солнце встаёт, когда я только уснул или ещё даже не ложился. Ярко светит прямо в глаза, говорит чтобы я лето не проспал. Оно, конечно, право, не дело спать летом, но совсем не спать как-то пока не получается. От солнца уже очень давно придумали занавески, и они даже есть у меня. Довольно плотные. Но недостаточно. Яркий свет их насквозь пробивает, не прямые лучи, но всё равно ярко. А главное их надо не забыть закрыть с вечера, открыть днём, когда проснулся. Кто-то у себя делает умный дом, кто-то — полоумный. Ну а у меня вот дом ленивый, весь в меня. Хозяин не должен утруждать себя таким тяжким трудом, как двигание штор аж дважды в сутки. Пусть шторы плавно открываются за некоторое время до будильника (или даже вместо него). Солнце должно будить моё величество, но не мешать ему спать, так ведь?
Спойлер:
Начал я думу думать, как это дело автоматизировать. Первая мысль очевидная, тросик, двигатель и навесить это всё на шторы. Пока продумывал, как это реализовать, закрепить, как датчики концевые приделать, то сё, пока пытался побороть лень и сделать, прошло года три всего. Но так и не сделал. И это хорошо. Потому что к тому времени до меня доползла другая мысль. Чем двигать шторы, которые двигаются не так уж легко и недостаточно блокируют свет, лучше использовать жалюзи. Ну а когда полез гуглить про них, узнал о такой классной штуке, как рулонные шторы. Как-то раньше не сталкивался с ними.
Рулонные шторы — среднее между жалюзи и шторой. Кусок ткани, который, когда не нужно, сворачивается в рулон в верхней части. Вешаются они на каждой окно отдельно. На открывающиеся — прямо на створку, можно открывать при любом положении шторы. Конечно бывают разных цветов, узоров и светопропускаемости. И, что мне и надо, есть варианты «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’а, не глючит, аптайм по году и больше, ребутится только при обновлении прошивки и замене аккумуляторов. И в случае пожара в доме, как недавно было. Горел подъездный кабельный канал, света не было пару часов, бесперебойник быстро сдался. Но это редкость. Вообще, кому-то кнопка может быть удобной как ещё один канал управления.
Ну а раз 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, можно воспользоваться бесплатной утилитой от 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 (интернете вещей). Т.е. как попало. Впрочем, если кто-то подключился к этому устройству, то пароль от вашей беспроводной сети он уже знает, а навредить может разве что подвигав шторы туда-сюда. Тем не менее, как минимум не стоит давать на роутере доступ к шторам из глобальной сети напрямую. В дальнейшем может и приделаю парольный доступ, хотя пока смысла в этом не вижу.
Касательно написания прошивки, было бы не честно не выразить благодарность камраду 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.
Скучное видео. Снимал на мобильник, резкость постоянно уплывала, но лучше не могу :(
UPDATE. С момента публикации прошивка была значительно доработана. Исходники и бинарники по-прежнему доступны на GitHube. Постепенно допиливается отдельный сайтик. Кто очень хочет, может приобрести у меня готовые блоки.
Самые обсуждаемые обзоры
+73 |
3651
145
|
+53 |
3845
69
|
+34 |
2925
55
|
мне нравится MindWave
neurosky.com/biosensors/eeg-sensor/biosensors/
а вообще вот неплохой обзор, можно найти дешевле 50 долларофф
habrahabr.ru/company/neuronspace/blog/262357/
Аааа… Тогда, наверное, никто.
Спасибо.
Для рукожопых — не забудьте про обещание обзора лайт варианта для дачи)
чур я первый ))
реально подумал бы, если была бы возможность кит приобрести )
может автор подумает на тему массовой продукции.
А у меня вот вопрос откуда столько розеток свободных добыть. это ж у каждого окна по блоку питания будет.
Один БП с достаточной мощностью и напряжением, требуемым устройством, желательно с подстройкой напряжения. Если много конечных устройств- к каждой группе (этаж, комната, и т.п.). Кабели к каждому устройству. БП расположить так, чтобы кабели к потребителям по возможности имели равную длину (при равном сечении, само собой). Подстроечником выставляем требуемую напругу на вводе в устройство. Меньше железа- больше надёжность.
Вариант 2.
Один или несколько БП (на группу) с напряжением 24V. Далее как в варианте 1, но добавляем в коробочку DC-DC понижайку, а также не паримся с равной длиной провода к потребителю. Преимущества перед вариантом 1: универсальность питания, не привязанную к напруге конкретного потребителя. Меньшие потери, поскольку напряжение выше.
На стадии ремонта детализируем хотелки, переносим на бумагу, и не жмёмся закладывать каналы с протяжкой под возможную модернизацию. В том числе под низковольтное оборудование.
Одно замечание — я решил, что микрики — это ненадёжно. Лучше датчик Холла и вшитый к нижней планке шторы мелкий неодимовый магнит. Датчик его отлично бесконтактно учует.
прочитайте маркировку и найдете dstasheet.
— на размыкание — микро переключатель
— на замыкание — магнитный датчик
Я бы подбросил FRAM и писал бы в неё после каждого шага… Или журнал…
Двигатель, если вал заблокировать, жужжит, но не ломается, всё нормально.
В крайнем случае тоже беды не вижу. Благо все детали копеечные по отдельности, есть в запасе, замена — дело 5 минут. По результатам эксплуатации можно будет и проапгрейдить на магнитные концевики, если что.
А обзор хорош.
Смакует каждый миг и наблюдает,
Как спит ребёнок, молится старик,
Как дождь идёт и как снежинки тают.
© Омар Хайям
Для кругозора: есть практически аналогичное по элементной безе решение, заточенное под икеевские /блэкаут/ шторы.
www.thingiverse.com/thing:2065722
Но там автор не заморачиваться контролем нуля, всецело веруя в непогрешимость шаговиков.
А насчёт компактности вопрос открытый: блок управления можно куда-нибудь спрятать, оставив на обозрение только корпус с шаговиком, подключенный каким-нить ПВС 4x0,75.
byj (для 4x) естественно придется переделать в биполярник, но это так и так желательно с точки зрения крутящего момента.
Жду движки для подобной затеи. Но штора у меня двухметровая (по совместительству — экран проектора) и, боюсь, шаговиков в конструкции будет два, синхронно работающих с двух сторон.
Вот у меня по сути корпус с шаговиком и получился. Плата добавляет всего несколько миллиметров в высоту. Зато больше ничего, кроме общего на все блока питания. Впрочем, повторяюсь, в обзоре уже расписывал свои доводы.
Более того, для штор на [подвижных] створках окна ваш подход предпочтительней.
штора то белая или на крайний случай светлая…
покрасить квадратик сбоку черным фломастером и повесить датчик.
открывать и закрывать до точки.
датчик сзади. ничего не видно, механически ничего нет.
Цена копеечная, есть возможность экспериментировать с высотой
Управлять прозрачностью напряжением…
Включил и темно ) Автоматом щелкнул — светло
( говорят, что если в 350 включить, спецэффекты как в аватаре будут )
А промышленные решения стартуют от 500$ за м^2
Если все ещё интересно — google(смарт стекло)
Легко модифицировать под любые blockout рулонные шторы :)
Десятка полтора кабинетов.
Высоченные потолки, тяжеленные шторы на приличного размера окнах.
В 1976 году.
Правда, без вайфая и веб-управления :)
А вообще спасибо за проект. Свой описать у меня пока нет сил)
Мотор лучше не переделывать т.к. он дешевый и готовый.
Я сдуру разобрал 35BYJ46, когда переделал — понял, что можно было не разбирать.
вы посылаете mqtt-клиентом команду для штор, брокер её хранит, а esp просыпается из deepsleep раз в N минут, цепляется к вайфаю, получает сообщения от брокера, реагирует и снова уходит в deepsleep.
интервал просыпаний в 1-2 минуту вполне отвечает запросу «днём посмотреть кино».
Обзор понравился, плюс ушел.
У меня сейчас в квартире сделана автоматизация света на ПЛК, выключатели возвратные, на всех поддерживаются множественные и длительные нажатия. Но чтобы ПЛК мог корректно определить двойное нажатие, после первого нажатия он выдерживает паузу в 0,5 секунды чтобы проверить, не был ли выключатель нажат ещё раз. Ещё пол секунды добавляет диммер, т.к. у него есть неотключаемое плавное нарастание яркости до заданного уровня, а светодиодные диммируемые лампы загораются только при достижении примерно 20-30% мощности. В итоге от момента нажатия на кнопку до включения проходит не меньше секунды и привыкание к этому заняло определённое время. Но осталась проблема с гостями, которые идя, скажем, в санузел, тыкают выключатели по несколько раз, т.к. после первого нажатия просто не успевают дождаться реакции, поскольку привыкли к мгновенному включению.
В общем, 1-2 секунды это уже может быть много, а 1-2 минуты — это только для автоматизации без триггеров со стороны человека.
Проснуться от дипслипа, отослать показания и уйти в спячку на пол-часа".
Батарейки выгорают за три месяца…
посоветую среду программирования нормальную
Проверка и загрузка скетча после удачной компиляции, можно с гитхаба прямо работать…
Ошибки, подсказки по коду… Нотпад для гуру конечно )))
На uln мощность мотора будет недоиспользованна ровно наполовину
Недоиспользована? И что? Куда её девать? Тряпку прилепить, чтобы заодно окно мыло?
Делать не лень, ибо это хобби и интересно.
Когда сделали — коптер снялся с зарядной станции, долетел до мусорной корзины, захватил мешок с мусором, долетел до окна — окно открылось при приближении, вылетел на улицу, спустился вниз с уровня хрен знает какого этажа, нашел мусорный контейнер и сбросил туда пакет с мусором.
После чего вернулся на зярядную станцию, не забыв закрыть за собой окно.
Проект обошелся в несколько десятков штук баксов.
Причина разработки — постоянно выясняли, чья очередь выносить мусор и им это надоело.
А вы говорите…
))))
Но при всем при этом, дешевой альтернативы нет.
За обзор огромный +
Стучат боковые.
В Леруа и многих других есть дополнялка к рулонкам в виде П-образного профиля. Клеится по периметру шторы и:
1. Не дает ей колобродить.
2. Убирает боковую засветку.
Я у себя такие в мастерской поставил: заглушаю свет при работе с фоторезистом.
Вот с этого момента одна из штор стоит на окне.)
Все никак не сделаю блок управления на esp 8266) а так работают отлично. Материал штор серебристый.
И не только к окну.
Учтите важные моменты:
— надо не просто тянуть, а ещё заложить в месте выхода распаячную коробку. Здоровую! Потому что ESP32 + БП + релешки = внезапно неслабый объём
— места расположения распаяк надо обдумывать. Например, чтобы потом иметь возможность рулить кондиционером, напротив него в прямой видимости должна быть распаячная коробка, куда вы вкрутите ESP32 с ИК-диодом. Лучший способ — рисовать план квартиры в Microsoft VISIO и всю эту слаботочку «умного дома» положить в отдельный слой
— впрочем, всего не предусмотрите. Я вот сообразил только потом, что мне в штукатурку по раме окна надо было спрятать провода к герконам — чтобы автомат не начинал опускать штору, когда форточка открыта и не включал кондиционер. Придётся поверху делать.
— стройка это грязно, работяги относятся к витухе наплевательски, перебиваются жилы. Контролируйте!
— лучшу купить бухту побольше, но оставить запас хвостов провода. Паяться к 10-см. хвосту в подрозетнике на окне на вису — то ещё удовольствие
— тащить питание по POE — плохая идея, напряжение просаживается, да и тому же шаговому мотору может не хватить. Тащите и 220.
По поводу проекта — напрашивается еще датчик освещения + температуры (летом в жару при ярком солнце автоматическое закрывание) ну и в идеале — автономное питание (требуется внедрение энергосбережения — тут видимо придется отключать wifi и ставить кнопку или пульт).
Сейчас работаю над очень похожим проектом — необходимо синхронно открывать/закрывать ламели восьми жалюзи на лоджии. Пошел таким путем:
а) двигатели использовать той же серии, только на 12 вольт (они меньше в диаметре и помещаются в корпус жалюзи).
б) питать двигатели через повышающий импульсный преобразователь, коммутация через ту же ULN2003 (две в параллель)
в) в качестве МК использовать Ардуино ПроМини, с режимами энергосбережения, питание от 18650 (один или два в параллель)
г) управление по нажатию кнопки на корпусе, или с пульта ИК (цифры 0-9 будут соответствовать степени открытия 0-100%), а также авто закрытие если температура и освещенность на лоджии превысят заданный порог.
д) для определения положения считать шаги движка. Проблемы перезагрузки МК нет, т.к. питание автономние
д) Поскольку 8 двигателей включенных в параллель даже работая кратковременно будут прилично высаживать аккумулятор, в качестве подпитки установить небольшую солнечную панель прямо на стекло (на али стоит копейки).
Думаю через месяц-два будет обзор всего этого дела)
А я может быть, когда-нибудь, сделаю себе снятие показаний со счётчиков воды. Они у меня в квартире, мне проще, но всё равно автоматизировать, а, заодно, снимать логи, чтобы знать, на что сколько воды уходит, любопытно. Ну и от протечек сигнализация тоже. На esp и батарейном питании.
На gsm мысли тоже были. В гараж, как сигналка и мониторить напряжение на аккумуляторе машины. У меня зимой частая проблема, машина долго стоит и аккум садится. У кого-то охрана машины это делает, у меня, увы, нету, как и автозапуска. Обзор буду ждать, я такие вещи не пропускаю :)
Но мне кажется что с солнечной панелью может и сработать.
Двигатель (беру тот, что в обзоре) потребляет 220мА. Работает 4 минуты в сутки. Итого потребление 0.220*5=1.1 Вт. За 4 минуты это 1.1*4/60=74мВтч расхода. В сутки. Это довольно мало. Реально компенсировать.
А солнечная панелька дает от 20 до 80 мА в зависимости от облачности.
Спасибо заранее…
По доработке (IMHO):
1) Добавить бы возможность выставлять время для подъема штор с днями недели.
2) Прикрутить радио-модуль для пульта или хотя бы IR.
3) Либо приложение для ардуино/ios с интеграцией будильника и виджета.
2) Тут я за отдельное устройство, можно даже на базе той же esp. Лежит в удобном месте и питается от компа, роутера или чего угодно, постоянно работающего. Ну а оно уже пересылает http-запрос шторам. У меня комп работает круглосуточно, я его использую. Добавил в него IR приёмник уже очень давно. И музыкой управляет, и светом, надо теперь шторы добавить.
3) Тоже хочу, пока нет сформировавшейся идеи. Буду ждать, когда мысль приползёт. У меня ещё с программированием под мобильные платформы не очень. Может проще окажется Tasker или Domoticz использовать.
Я бы предложил задуматься над вариантом заказа партии корпусов и плат с последующим мелкосерийным производством. Предварительно можно изучить спрос или побеседовать с кем-то из отечественных производителей компонентов для DIY-автоматизации (Wiren board, к примеру), ну или компанию краудфандинговую сделать со сбором средств.
Выбрать наиболее распространённые и с хорошим соотношением цена-качество рулонные шторы или сделать несколько вариантов приводов под разных производителей — и вперёд. Для неискушённого обывателя — с ИК-управлением и приложением на смартфон, для продвинутых — реализовать MQTT и API-запросы, блок питания через стандартный micro-usb или даже новомодный type-c.
Тысяч 5 я точно готов был бы за такое решение заплатить, при том что заказывал бы я сразу несколько устройств.
Тут уже такое было, не раз.
Вот если китайцы скопируют — будет хорошо, сам куплю пару готовых баксов за 5 :)
Спецпредложение для москвичей и соседей (у всех остальных — прошу прощения, но с отправкой заморачиваться совсем-совсем не хочу. Может найдёте в посредники кого-то).
Распечатаю корпуса по стоимости пластика. Пользователем mysku с рейтингом 100 и выше — вообще бесплатно (ну, допустим, до 4 штук). Только самовывоз, м. Новогиреево.
Платы заводские буду заказывать. Себе и друзьям. Излишки тоже могу раздать по себестоимости. Но это будет, соответственно, через месяц, в лучшем случае.
Я дома тоже использую рулонные шторы, если полностью размотать рулон и не остановиться, то можно намотать его обратно.
При срабатывании концевика точка отсчёта обнуляется (для спуска штор), или нет?
При открытии движение вверх также задаётся до точки -300. Это примерно сантиметров 5 выше нуля. Если в концевик уперлись — останавливаемся и обнуляем положение. В крайнем случае, если концевик не сработал по какой-либо причине, двигатель пару секунд проработает в заклинившем состоянии, страшного не будет, я проверял и гораздо дольше. Таким образом оно пересинхронизируется каждый раз в небольших пределах, при необходимости.
Положил в копилку.
При монтаже двухсторонних плат есть готовые перемычки разной длины и диаметра и даже со «шляпкой» (Придумал не я. Идея взята на вооружение с какого то форума самодельщиков)
можно было развернуть плату на 180 :)
Плату можно повернуть, но тогда антенна окажется в глубине устройства. Вряд ли сильно повлияет на связь, но всё-таки. Я потом просто чуть поправил корпус, на полтора миллиметра отодвинул крепление, всё стало влезать без подгибания разъема. Забыл разогнуть обратно :)
Для работы по графику нужно брать время… Ну когда есть его бурут с NTP, a в случае если пропадает инет и esp перегрузится… Время я так понимаю сбросится....( возможно я что то упустил в обзоре....)
Как вариант было бы прикольно при крутить датчик освещенности, чтобы днём когда пасмурно шторы открывались больше, а когда солнечно меньше
Я решил всю сложную логику и дополнительные датчики оставить отдельно. Проще что-то внешнее сделать, один датчик на все шторы. Модульная система. А с него уже рулить. Добавить команду «открыть на Х процентов» в прошивку надо будет. Не сложно.
если добавлять доп блок управления тогда туда и все поставить
вот классные часики
компактные))
DS3231 да, хорошо, но для esp8266 я посчитал излишним. Шторы не настолько критичная вещь, как, к примеру, будильник.
Впрочем, вот тут хорошо всё расписано, я по этим статьям и ориентировался. Там их штук 5 по номерам.
У меня сделано похоже, но только в одну комнату. Подогрев не ставил. Трубы-фильтры-глушитель заказывал в rowen.ru, они на крупных клиентов ориентированы, но и частнику продали без проблем, при оплате безналом.
По большей части проблема со второй стороной только из-за коннектора прошивки???
Мб ну его? ТАМ.
В смысле — перенести на условный верх платы к еспшным контактам прошивки???
В плюс того варианта — два геркона для верхнего и нижнего положений. Оба наверху, но со сдвигом по горизонту. В штору вклеены магнитики — вверху и внизу вдоль соответствующей вертикали от датчика.
Второй плюс — есть и вариант крепления за верх и под шурупы.
В минусе — развести плату автор не потянул.
Вообще — для универсальности датчикам надо трехпиновку как у концевиков на RAMPS…
Ну и таки ДВА датчика. Сижу, смотрю, думаю какой пин не жалко второму.
Два геркона там следствие другого важного плюса, сохранено ручное управление за цепочку. При ручном управлении без двух датчиков никуда. Если же ручной привод не требуется, то и второй датчик совершенно лишний. Имхо. И я по прежнему не считаю микропереключатель плохим вариантом.
Второй плюс у меня такой же. Я использую штатное крепление, которое в комплекте идёт. Там любые варианты, в том числе и шурупами. Да и допечатать любой кронштейн можно, хоть к боковой стене.
Пин есть свободный на гребенке под прошивку, DTR кажется. Я его думал использовать под кнопку локального управления, если понадобится.
Вот что бесит у 8266 — пинов и так-то не море, так еще и часть должна при старте в подтяжках сидеть!
Мысль: а если привод на 4-5-0-2(-15)??? После старта они роли не играют, а выходу подтягивание не мешает. А 12-16 можно датчикам отдать!
Есть модули с бОльшим числом выведенных пинов, если вдруг этого совсем не хватит. Но вариант с переносом мотора вполне норм.
leroymerlin.ru/catalogue/dekor/oformlenie-okna/rulonnye-shtory/13714774/ — ????
Просто у меня другой крепеж шел в обоих случаях.
еще бы контакт для герконового датчика открытия окна
раз уж мы все равно на окно ставим
Я не люблю всё сваливать в кучу. Кому-то нужен датчик открытия, кому-то — датчик освещения. А кто-то кнопку ручного управления просит добавить. Модульные системы гораздо удобнее. Все эти датчики лучше сделать отдельными, например использовать xiaomi aqara, работающие на zigbee от батарейки. Симпатичные, компактные. А уж логику работы можно на сервере умного дома навернуть, какую душе угодно.
www.youtube.com/watch?v=fvRnoy3bPxU
С аккумулятором — это не к esp8266. Она слишком много потребляет, если не отправлять в сон. А во сне она не сможет принимать команды, только по расписанию работать, что меня не устроит. Панель понадобится достаточно крупная, 10х10см тут не хватит. Провода, на самом деле, не так сложно протянуть скрытно.
Да, вариантов управления шторами в сети достаточно много. У всех свои достоинства и недостатки.
у вас маленькая ошибка в коде в разделе
// ==================== timer & interrupt ===============================
volatile uint8_t switch_ignore_steps;
должно быть volatile uint16_t switch_ignore_steps;
поскольку вы ранее предполагали использовать такое значение.
В качестве концевика использую геркон.
Столкнулся с тем что при выставлении в параметрах концевика (для игнорирования начальных шагов) значений больше 300 получаю игнор перемещения меньше :) чем при значениях например в 150.
все из-за того что в «switch_ignore_steps» помещалось только 8 бит…
Ой, точно. Мой косяк. Не досмотрел, не проверил.
Премного благодарен за обнаружение и локализацию бага!
Надеюсь в скором времени обновление выпустить, кое-какие мелкие доработки, заодно и это исправлю.
Пиши на ace@imlazy.ru или можно телеграм группа LazyRolls
Возникли проблемы с концевиком. Делаешь закрыть, штора немного дернится и не закрывается. Все потому что штора не ушла от поля действия магнита от геркона. В коде предусмотрена опция игнорировать концевик. Чтобы я не выставил (и 200 и 1000 шагов) данная опция не работает. Помогите разобраться?
Спасибо автору за проделанную работу.
Я сделал открытие-закрытие обыкновенной шторы на на плате Ардуино. Но захотел подружить с Алисой.
Решил на NodeMCU сделать. Но такая разница в написании кода.((( Мне в принципе оооочень нравится что вы сделали, но для меня геркон не имеет смысла. Можно ли предусмотреть возможность работы без него. Самому разобраться не получается. Выдает ошибку в Ардуино ИДЕ «exit status 1
'spiffs_time' was not declared in this scope». Со своей стороны готов предложить помощь в проектировании моделей деталей для ваших проектов.
Код под Ардуино и NodeMCU очень близок. Разница только в работе с вай-фай. Всё это можно взять из простых примеров. Если концевик вообще не нужен, то его в коде элементарно отключить. Достаточно в функции IsSwitchPressed() поставить return false; Но тогда надо какой-то другой способ определения текущего положения придумывать.
Ошибка скорее всего потому, что вы не все файлы проекта взяли. Тут скорее всего не хватает файла spiff_files.h
С какими-то вопросами, по мере знаний и свободного времени, могу подсказать в телеграме @Anton_ACE или в почте (парой комментариев выше).
Схемы от печатников тут не понадобятся. Мотор униполярный и управляется напряжением, а не ограничением по току. Так что тупо запараллелить каждый провод. Максимум поменять два провода местами для смены направления вращения одного из моторов.
За 2 месяца работы ни разу не пришлось подгонять позиции. Для автоматизаций надо будет конечно с концевиками.
Очень классная штука, давно такую хотел. Имеется плата от jlcPcb, всё точно как в руководстве, все номиналы, есп-07 и т п
Проблема заключается в том, что время от времени эта штуковина виснет (часто), временами просто без признаков жизни, временами загорается синий светодиод и появляется сеть Lazy, но подключиться не даёт. Был случай, нажал «закрыть» оно поехало и зависло, то есть страничка не открывалась, на команду стоп не реагировало, но упорно ехало вниз. На веб-страничке пляшет «напряжение питания» от 5 до 0,6 вольта, при этом тестером на выходе стабилизатора стабильно 3,3в. Питать пробовал от разных источников и от аккума. В чем тут может быть дело?
Индикация напряжения питания в прошивке сделана для новой версии платы, на 12В, которая пока в стадии обкатки. На оригинальную плату можно допаять два резистора навесным монтажом, при желании.
Сложно сказать в чем проблема. Тут либо питание, либо проблема совместимости с роутером, либо может просто глючная еспшка или косяк в пайке. С питанием можно проверить подняв напряжение до 6В, если есть подходящий источник. Ну и проверить провода, ток там небольшой, но сейчас и провода бывают из железа, сам натыкался. С роутерами иногда были проблемы с микротиками, хотя на последней прошивке вроде стало стабильнее. Ну и если есть возможность, собрать второй экземпляр и сравнить. Если что, пишите тут, можно в личку, или телеграм, вк. Попробуем разобраться.
Просьба к автору, выложите, пожалуйста, OpenScadовские чертежи зеркальной версии, для установки с правой стороны шторы.
Как у Вас в статье на фото.
Заранее благодарен.
Вообще я просто зеркалю в слайсере перед печатью. Но если нужно в OpenSCAD, просто добавьте
mirror([1,0,0])
в последние две строчки
С наступающим Новым годом!
Примерно так я это вижу: окно на 3 створки, соответственно 3 управляемых шторы.
Ко всему этому выключатель для жалюзи (который отжимается). Выключатель связан с еще одной esp8266 и управляет шторами по wifi.
Можно на кнопки повесить несколько сценариев.
Например, короткое нажатие — штора опускается (поднимается), еще одно нажатие — штора останавливается.
Можно сделать еще так: по долгому нажатию (2-3с) переходим в режим выбора шторы, затем коротким нажатием выбираем штору (1нажатие — первая, 2 нажатия — вторая и т.д.).
Если уж начался умный домострой, то лучше сразу на полумерах не останавливаться. Поднять какой-нибудь одноплатник с умным домом, или автономный хаб, зигби-сеть. И использовать кнопки хоть от xiaomi, хоть самодельные, например от камрада Jager'а.
Но сейчас разрабатываю батарейный пультик с вай-фаем, в том числе и шторами управлять, но не только. Но пока не очень уверен в результате. Зигби для батареек значительно лучше, пусть и требует несколько больше первоначальных затрат.
Буду пробовать реализовать задуманное) Для начала, как понимаю, нужно объединить все esp в одну сеть. А дальше вполне можно будет управлять клавишами по http.
Хотя она подпружинена (вверх сама уходит)
Может и выйдет чего :) Попробуемс, отпишусь, спасибо!
А то нашел кто распечатает, но править там ни кто не будет.
Сам в 3д моделировании совсем не силен
Только вить две строчки надо было поправить? Правильно
d=24.0;
l=24;
Для биполярного управления драйвер на uln2003 не подойдет. Если на модулях собираете, то ищите, к примеру, Tb6612 или другой с допустимым питанием не менее 12В и двухканальный (с двумя полными мостами). Прошивка будет та же.
В планах добавить поддержку драйверов от 3Д принтеров, но из-за лени не могу сказать о сроках.
Вернул во внутрь штатную возвратную пружину, стало нормально. Как можно исключить концевики? Чисто по шагам
А так можно в настройках нормально открытый тип поставить и выставить ноль (сменой типа концевика туда-обратно, к примеру). И как-то работать будет, до перезагрузки. Но при открытии будет крутить +300 шагов запаса, нужно смотреть, чтобы не повредил что-нибудь. Но ещё раз, концевик/геркон/датчик холла крайне рекомендуется.
фотки позже скину, когда лоск наводить буду, буду снимать всё, и пружинку сфоткаю
Вы от Мск далеко? А то помог бы с печатью и электроникой.
Сегодня поеду всё таки прикуплю герконов, концевиков, буду шаманить.
Корпус мне распечатают, завтра заберу, буду в него переделывать.
Штор еще по дому хватает, так что вопросы будут. Спасибо:)
А разве бегунок не работает, после нажатия кнопки открыть/закрыть? Я, если честно, сам домотикзом не пользуюсь. Не помню насчет кнопки стоп, наверное не нашёл возможности добавить. Но по идее управление ползунком должно работать на равне с кнопками, что последнее указали, туда и едет.
Мотор должен быть на D1, D2, D6, D7 (4, 5, 12, 13) в прошивке.
PS У вас телеграма нету? Если что, там оперативнее могу подсказать. @Anton_ACE
Мой косяк:(
Спасибо, сейчас напишу в телеграмм
готовый внутривальный двигатель под трубу диаметром 40 мм
и реле для управления жалюзями, например такое
https://aliexpress.ru/item/item/1005001512628913.html,searchweb201602_,searchweb201603_
Внутривальные двигатели стоят от 2,5 т.р, реле для управления жалюзями- тут уже по вкусу))
Управление по Wi-Fi не всегда удобно. Нужно всегда держать в руках мобильник, ну или на крайний случай изобретать вай-фай кнопку.
А почему бы не использовать Wi-Fi+ RF????
Я у себя делал без программирования, использовал готовые элементы. Только у меня шторы сдвигаются-раздвигаются. Взял готовый 4-х канальный модуль eWeLink с 433RF. Хотя можно и Tuya . Используя два реле можно можно сделать биполярное управление мотором. В прошивке конечно невозможно задать количество оборотов, но можно задать количество миллисекунд для срабатывания мотора. Плюс, по RF-каналу можно подключить несколько смарт выключателей которые будут висеть где-нибудь под рукой и не нужно будет лазить в телефон чтоб открыть шторы.
Если используется модуль на 220В, то там есть готовые +5В, которые можно использовать для моторчика.
Выключатели могут быть разные
К примеру, можно выбрать черные
P.S. Реле Sonoff (eWeLink) которое привожу в примере у меня тоже включен в систему Home Assistant.
Есть не меньше десятка проводных и беспроводных протоколов, интерфейсов, стандартов и технологий, используемых в домашней автоматизации. Выключателей у меня полно, большинство — тупые механические. Но есть, например, выключатель света с протоколом Modbus и проводным RS-485. Это не значит, что лампочка у меня тоже с поддержкой RS-485. Ибо пульт управления одно, исполнительное устройство — другое. Вот wifi шторы висят, но не значит, что управляю я ими только с мобилы. И по расписанию, и с компа. А могу назначить им вот тот выключатель с модбасом. Или зигби-кнопку. А могу привязать датчик света или расписание закат-восход. Мне не нужно для этого искать wi-fi выключатель или wi-fi датчик освещенности. Я могу взять любые, понравившегося дизайна, не важно, какой там интерфейс. И всё это не зависит от того, вай-фай у меня в шторах или RF. Мне кажется, раз у вас уже есть HA, вы должны понимать прелесть такого подхода.
PS Вот голосовых помощников у меня нету, не хочу их.
Способы автоматизации могут быть разными, лишь бы они были удобными для пользователя.
P.S. Аж любопытно, за сколько времени вы смогли объяснить своей 80-ти летней бабушке кто такая Siri или Алиса и что такое MQTT брокер и главное, чтобы она не дёргала шторы по своей многолетней привычке.
Зачем вы предлагаете издеваться над пожилым человеком? Вы же не будете заставлять бабушку изучать работу реле и подключать моторы? Так и я, если бы делал, сделал так, как будет удобно конкретному человеку. Кнопкой или по расписанию, скорее всего. Вы и сами про это пишете, но зачем-то задаете такой вопрос.
Код шикарен, но нужен вариант попроще, буквально 3-4й от старта
Кромсать и выпиливать рука не поднимается да и откровенно уже сложно досконально розобраться
Первое, что хочу предложить автору (и на обсуждение) это добавить в прошивку в раздел концевик -> Нижний концевик с выбором gpio (судя по последней прошивке — 3 свободных: один кнопка, второй шлет в топик ON/OFF (например датчик света или откр. окна) третий пока не занят). Я планирую у себя использовать именно такой вариант!
Как реализовал: использовал из сломаного кулера датчик Холла (4х выводной, мне попался AH211).
1 нога — питание 5в
2 и 3 нога (подтянуты резисторами 1кОм к питанию по datasheet) — выходы определения поля S магнита и N
4 нога — gnd
При отсутствии магнита на выходах 3.3в, в крайних положениях шторы магниты цепляем направляя полюса в противоположные стороны, неодимовый магнит (диаметр 10мм, высота 1мм) с 1.5 см переводит выход (в зависимости от поля N или S) в 0 состояние.
Магниты можно посадить на 2х сторонный скотч или 2 магнита примагнитить друг к другу через полотно шторы.
Второе. Много вопросов читателей про управление ИК или 433МГц.
Если у Вас одна штора — это целесообразно, а если 15? Я пользуюсь HomeAssistant, хаб на 433МГц и ИК хаб сделал на ESP c прошивкой Tasmota. Управлять чем угодно с чего угодно нет проблем. Можно разработать хаб который будет транслировать коды (ИК и 433МГц) в соответствующие http запросы. Получится устройство не только для управления шторами, но и всем, чем можно управлять по http запросам.
Третье. Изучаю 3d моделирование для правки корпуса из-за первого пункта. Думаю над универсальным решением под разные шторы. Как вариант — сделать набор, в зависимости от шторы печатается нужный элемент.
Четвертое. Планирую разработать приложение под андроид или как вариант html страничка в телефон. Основная функция объединение в группы по окнам или комнатам, дополнительно поиск устройств, настройка как минимум таймера. Не у всех есть умный дом, а опустить несколько штор через веб это уже проблема.
По всем пунктам готов к сотрудничеству на благо пользователей этого устройства!
1. Не особо вижу преимуществ в нижнем концевике. Что это даст? Не нужно будет выставлять длину шторы, да, но это один раз сделать несложно. Не нужно делать поиск нуля, после сброса питания? Повлияет только на редкий случай, когда штора была закрыта, сбросилось питание, и получена команда «закрыть». В остальном и так работает незаметно. Может если переделать под коллекторные моторы, без счетчика оборотов, тогда будет актуально. Но вот про датчики Холла с двумя выводами я не знал, вообще интересный вариант. Я подумаю.
2. Спасибо за гайд, полезно!
3. Тут простор для творчества есть, народ много что придумывает и без 3Д печати, и варианты с редуктором на шестеренках для тяжелых штор.
4. Тут был такой вариант, кто-то делал, html страничка с фреймами, в каждом из которых по шторе. Из простых вариантов.
Пытаюсь на html чтото подобное сваять.
Как подключить 3 шаговых моторчика к одной esp8266 nodemcu?
На одном окне три шторы
И чтобы не ставить 3 esp8266 хочу подключить все на оду
Если запараллелить что делать с герконами?
Герконы тоже можно запараллелить. Или соединить последовательно, если они нормально замкнуты.
Мне понравился ваш проект!
А как в скетче установить ster/dir какие настройка нужны?
И вообще, если это для профи, то все ок, а так хотелось бы больше инструкций к устройству)
На самом деле всё очень просто. В большинстве случаев в скетче можно ничего не менять вообще, если подключать к пинам по умолчанию. Все остальные настройки, в том числе выбор типа драйвера (ABCD или step/dir) делается в настройках через web-интерфейс. Можно прошить и посмотреть, даже без подключения драйвера, для начала. Потом только правильно подключить к той плате, что используете. Номера GPIO в скетче в самом начале, в гугле найти распиновку вашей платы, там будет видно, какой GPIO какому выводу соответствует (они часто подписаны как D0 и т.д.).
Если возникнут вопросы, то есть в группа в телеграме lazyrolls, там помогут. Но поверьте, оно реально проще, чем кажется :)
Извините если глупый вопрос но я в этом деле новичок Это мой первый проект в электронике.
подключил всё как на фото прописал программу подключился с телефона кажется что всё с ней управляю но мотор не дёргается как бы не подключен Может что-то я пропустил. или не дочитал. Может нужно что-то поменять в программе. но по ардуино не получается её Открыть прошил только с другой программой как есть. или как-то по-другому подключать Я даже не знаю куда смотреть. как писал выше это мои первые шаги в прошивках до этого даже не знал что это такое Andrуiно. может кто-нибудь скажет что я могу делать не так. На что обратить внимание может быть у кого уже была похожая ситуация. Спасибо
Нужно по очереди проверять всё, чтобы выяснить, где проблема.
Прошивка, я так понимаю, работает, телефоном можно подключиться, интерфейс виден, кнопки открыть, закрыть нажимаются?
Тогда должны диоды на плате драйвера перемигиваться. Если нет — проблема уже где-то на этом этапе.
Очень часто проблемы возникают из-за вот таких проводочков, как на фото. Они бывают очень плохого качества.
Если у вас есть telegram, заходите в группу lazyrolls, там народ отзывчивый, помогут.
samoswall.github.io/lazyrolls-additional-materials/WQTT/index.html
3 устройства можно подключить независимо, а можно подключить одно из них, а остальные сделать ведомыми от от него.