Однажды, после тяжелого рабочего дня, я пришел домой и понял, что хочу отдохнуть, а не ходить и закрывать шторы. Хочется увидеть их закрытыми вечером и открытыми утром, при этом не выделывать танцы перед окном. Погуглив разные решения, было принято решение сделать все самому. По многочисленным просьбам, выкладываю все свои наработки по переделке обычных рулонных штор в автоматизированные с удаленным управлением. Осторожно, много фотографий!Для начала про рулонные шторы:
- Плюсы: рулонные шторы визуально расширяют пространство, красивые и недорогие. Очень простой монтаж. Можно каждым окном управлять отдельно. Высвобождается место на подоконнике.
Немного про задачи: Необходимо добавить к обычным рулонным шторам из строительного магазина удаленное управление и подключить к умному дому на openSource платформе Home Assistant. И еще необходимо сохранить обычное управление за веревочку.Выбор моторов: Если все автоматизировать, то скорость не играет роли, поэтому можно применять двигатели с редуктором. Коллекторные двигатели дешевые, но не самая надежная вещь для ежедневного применения. Сервомашинки тоже имеют коллекторные двигатели и плюс не стабильные при постоянном вращении. Отличным вариантом выглядят шаговые двигатели. Бесшумные, можно контролировать положение, стоят копейки. В итоге, комплект из 5 двигателей 28BYJ-48 с драйвером ULN2003 обошелся мне в 10$Про двигатель 28BYJ-48: Подробно о нем можно почитать здесь. Были вопросы о мощности этого двигателя. Опасения что он будет слабым, не оправдались. Вернее так — если использовать полношаговый режим, то двигатель очень хилый, если использовать полушаговый, то вал уже голыми руками не остановить. Кому будет мало мощности, в интернете много статей как приподнять напряжение, превратить его в биполярный и прочие улучшения.Про датчики: Так как у нас осталось ручное управление, и мы не хотим впустую гонять двигатель, то необходимы датчики положения штор. Минимум необходим один датчик на одном конце, но лучше два. Можно использовать любой концевой, оптический и т.д., но я лично выбрал герконовый, т.к. приклеить неодимовый магнитик с другой стороны очень просто и работать должен стабильно и долговечно. Сами герконы я выбрал для эстетики уже в корпусе. Плюс предусмотрел настройку по расстоянию от вала. По высоте можно регулировать проставками.Про конструкцию крепления: Задача была спроектировать корпус максимально простой для изготовления на 3д принтере с минимальными доработками. Моделировал в Fusion 360. Комплектное крепление цепляется за верх окна, но такую конструкцию на FDM принтере будет трудно сделать с нужными требованиями по прочности, поэтому была придумана конструкция с одним винтом для регулировки. Итого получилось три детали для 3д-печати. Ссылка для скачивания 3д-моделей. Основная часть для двигателя, платы управления на ULM2003, креплением герконов, двигателей, лески для стабилизации штор, и регулировочного винта. Крышка для закрытия всего этого безобразия. Зажим или по-другому крюк. Сама конструкция штор содержит несколько пружин, которые работают как тормоз если тянуть за шторы(пружина затягивается) или отпускает если крутить за веревку.
При сборке надо сделать одну доработочку: кусачками сломать ободок, который прикрывает веревку, т.к. теперь у нас есть свой неподвижный ободок, который не дает выпасть веревочке.Управление: Управлять шаговым двигателем будет NodeMCU на ESP8266. Он выбран из-за дешевизны, наличия резервного канала wi-fi и на нем достаточно легко написать нужные скрипты. Если нужно больше чем две шторы или дополнительные датчики, то ножек микроконтроллера уже не хватит, можно посмотреть в сторону ESP32. (на фото esp32 не приведена, т.к. она в распределительной коробке)Программная часть: Среда разработки может быть любая. ESP32 может программироваться через Arduino IDE. Но я для себя выбрал Visual Studio Code из-за скорости, модульности и бесплатности. В этой среде можно разрабатывать почти под любые платформы (не только железо). Можно даже подключить IAR ARM.(но это уже совсем другая тема) Задача программы простая: Подключиться по Wi-fi Подключиться к MQTT брокеру Подписаться на топик Управлять скоростью двух моторов Следить за состоянием концевых датчиков Отправлять брокеру текущие шаги Исходники можно взять отсюда.(осторожно это самый первый быдлокод для пробы штор). В коде надо указать свой логин и пароль от wi-fi. А также параметры MQTT-брокера. Заливаем программу и пробуем отправить первые данные через MQTTBox. Все работает! Как добавить шторы в систему home-assistant я напишу отдельную статью, если будет интересно всем. Небольшое видео как это делалось: Плюс выступление на какой стадии находится у меня умный дом. Всем пожелаю расслабиться дома! UPD: Ссылка на скачивание файлов для печати на 3д-принтереЭлектропривод выполнен на базе миниатюрного 4-х фазного шагового двигателя 28BYJ-48-12V . Двигатель имеет редуктор с передаточным числом приблизительно 64:1, что обеспечивает достаточно приличный крутящий момент для такого размера двигателя и скорость вращения ~15 об/мин.
Контроллер
В качестве мозга электропривода использован микроконтроллер Atmega328. Он общается с внешним миром через шину RS485, по протоколу ModBus, шина выполнена на микросхеме MAX485. Шаговый двигатель подключается через транзисторную сборку Дарлингтона — ULN2003. В качестве датчика нулевой точки использован датчик Холла A3144, он служит для определения верхней нулевой точки (Zerro) положения шторы. Еще один датчик Холла (Mode) припаян непосредственно на самой плате и выполняет следующие функции:
- Активация режима обучения
- Аварийный останов двигателя
- Сброс контроллера на заводские установки
Дополнительно на плате контроллера предусмотрены входы для фоторезистора (например vt90n) и герконового датчика открытия окна.
Код прошивки микроконтроллера написан в среде Arduino IDE и находится в открытом доступе на моей странице GitHub.
Принцип работы
После подачи питания устройство несколькими миганиями светодиода, установленного на плате, сигнализирует о включении. После включения питание на двигатель не подается, штора находится в неподвижном состоянии.
Для того чтобы контроллер знал текущее положение шторы его необходимо обучить. Для этого в ручную опускаем штору в нижнее положение на необходимую длину, подносим кратковременно магнит к датчику Mode на контроллере (датчик установлен в районе светодиода), при этом светодиод начнет мигать, сигнализируя активацию режима обучения, на двигатель подается управляющий сигнал и штора начинает двигаться вверх до верхней нулевой точки где останавливается по сигналу от датчика Холла установленного в креплении корпуса контроллера. Контроллер при этом запоминает количество шагов двигателя и сохраняет это значение в энергонезависимой памяти EEPROM микроконтроллера.
Если к датчику Mode поднести кратковременно магнит во время движения шторы, то контроллер сразу остановит движение.
Для сброса контроллера на заводские установки необходимо поднести магнит к датчику Mode не менее чем на 5 секунд, при этом светодиод начнет быстро мигать, контроллер перезагрузится и установит все значения параметров на заводские.
Для управления положением шторы используется регистр set_position, положение задается значением от 0 до 100, где 0 — открыто, штора находится в верхней точке, а 100 — полностью закрыто, штора находится в нижнем положении.
Если в конфигурации контроллера активировать функцию «Определение текущего положения шторы после подачи питания» — регистр check pos flag (0- выключено, 1 — включено), то сразу после подачи напряжения на контроллер, штора начнет движение вверх до верхней точки, в этот момент контроллер запоминает количество шагов и по достижении верхней нулевой точки, штора возвращается в положение в котором находилась до момента подачи питания. Эта функция служит для определения положения шторы например когда отключили электричество. Если эта функция отключена, то при подачи питания штора остается в текущем положении до момента подачи команды set_position, как только контроллер получит первую, после подачи питания, команду он сначала запустит функцию определения текущего положения шторы и только после этого выставит положение шторы поступившее командой set_position.
Таблица данных регистров ModBus
Стандарт ModBus предусматривает отдельную таблицу для каждого типа данных, в контроллере же все данные хранятся в одном массиве в виде перекрывающихся таблиц. Значение всех регистров и адресов представлены в таблице:
Корпус контроллера
Корпус для устройства был спроектирован в программном комплексе Autodesk Fusion 360 и распечатан на 3D принтере из ABS пластика. Точность печати меня не устроила, поэтому детали корпуса были зашпатлеваны, отшлифованы, загрунтованы и окрашены акриловой краской из баллончика, это скрыло все изъяны 3D печати. После чего была изготовлена силиконовая форма и корпуса были отлиты из жидкого полиуретана. Про изготовление корпусов методом литья жидкого полиуретана в силиконовые формы постараюсь описать отдельной статьей.
Скачать: Детали корпусу в STL форматеСкачано: 96, размер: 562.0 KB, дата: 12.Янв.2019
Доработка механизма рулонной шторы
Немного про организацию моего подключения контроллеров электропривода рулонных штор
У меня в каждом окне стоит «комнатный» контроллер построенный на Arduino UNO + Ethernet Shield W5100, в задачи которого входит сбор показаний температуры воздуха в приточном клапане вентиляции, температуры радиаторов отопления (DS18B20), температуры и влажности помещения (DHT22), передача сигнала датчика движения (DSC LC-101) и датчика открытия окна (геркон), а так же управление сервоприводом приточной вентиляции.
Я решил добавить в него еще и функцию прослойки между шиной RS485 рулонных штор и сервером IoBroker, данные в который передаются по протоколу MQTT. Таким образом у меня на этот «комнатный» контроллер легли функции мастера сети ModBus. Все контроллеры штор одного окна подключены по шине RS485 к мастеру, он с периодом 2 секунды опрашивает подчиненных (контроллеры штор) и отдает текущие данные по протоколу MQTT на сервер умного дома IoBroker.
Так же мастер принимает команды по MQTT от сервера и отправляет их подчиненным. Так как подчиненных несколько и мастер не может одновременно отправить управляющие команды сразу всем, а по MQTT практически одновременно может поступить несколько команд (например команда открыть 1,2 и 3 штору) то мастер отработает только первую. Чтобы команды не терялись на мастере был организован буфер, что то подобное FIFO (англ. first in, first out — «первым пришёл — первым ушёл»). пришедшие данные по MQTT записываются в массив после чего мастер по в общем цикле программы проверяет свободность шины RS485 и отправляет команду ModBus из нулевого элемента массива очереди, сдвигает данные команд массива влево и цикл повторяется пока в массиве очереди есть данные.
Подключение электропривода
Для подключения контроллера используется всего 4 провода, 2 из них это +-12 В — питание контроллера и двигателя, и 2 провода для шины RS485.
Скачать: Гербер файлы плат контроллераСкачано: 42, размер: 166.7 KB, дата: 12.Янв.2019
Фотографии устройства
Список и расположение элементов на платах
Видео работы электропривода
Люди занимающиеся самодельным конструированием наверняка стараются сделать что-либо полезное для быта. В идеале наибольшее удовлетворение вызовут полезные конструкции которых просто нет и купить их невозможно. Сделать такую полезную вещь все сложнее и сложнее. Но можно пользу получить и от самодельных конструкций, которые выполняют функционал покупных устройств, но обходятся по цене значительно дешевле. Предлагаю способ изготовления устройства по цене значительно ниже готового устройства в магазине.
Рулонные шторы благодаря удобству и практичности проникают в наш быт. Купленная в свое время штора очень хорошо защищала комнату от солнечного света. Но кроме дешевых штор в продаже были и шторы с механическим приводом по цене дороже простых от 8 до 15 раз. Построить штору с мотором удалось купив деталей на 300 рублей (2009 год).
Как сделать механизм для шторы своими руками
1. В качестве привода шторы применена электрическая отвертка купленная на распродаже за 250 рублей. В комплект отвертки входил набор не совсем плохих бит, удлинители для бит и зарядное устройство. Один удлинитель бит потребуется для устройства.
2. Разбираем отвертку. Отвертка питается от 3 аккумуляторов формата АА непонятной емкости.
3. Батарейный отсек отсоединяем и удлиняем провода питания от него на длину 2-2.5метра.
4. Блок электродвигателя и редуктора в моем случае пришлось доработать, так как электродвигатель необходимо было разместить в узком пространстве оконного проема. Доработка заключалась в укорочении корпуса.
5. Узел соединения привода со шторой понятен из фотографии. В кабельном сальнике подходящего диаметра закреплен удлинитель крепления бит. Сам сальник устанавливается в торец корпуса намотки шторы вместо штатной заглушки. Сальник должен плотно фиксироваться в торце.
6. Привод крепится к закрепленной в оконном проеме строительной скобе. Первоначально моторный отсек крепился при помощи кабельных стяжек. В дальнейшем стяжки были заменены скобами из строительной ленты.
7. Закрепив двигатель монтируем штору. Штора должна быть установлена строго горизонтально.
Управляем работой шторы при помощи реверсивного выключателя на блоке питания. Была поставлена цель установить на штору стационарное питание и автоматику, но об этом в следующем блоге.
Используемые источники:
- https://habr.com/post/374285/
- https://blog.instalator.ru/archives/1275
- https://sekret-mastera.ru/masterim/rimskaya-shtora-s-privodom-svoimi-rukami.html