Умные шторы своими руками
Однажды, после тяжелого рабочего дня, я пришел домой и понял, что хочу отдохнуть, а не ходить и закрывать шторы. Хочется увидеть их закрытыми вечером и открытыми утром, при этом не выделывать танцы перед окном. Погуглив разные решения, было принято решение сделать все самому.
По многочисленным просьбам, выкладываю все свои наработки по переделке обычных рулонных штор в автоматизированные с удаленным управлением. Осторожно, много фотографий!
Для начала про рулонные шторы:
- Плюсы: рулонные шторы визуально расширяют пространство, красивые и недорогие. Очень простой монтаж. Можно каждым окном управлять отдельно. Высвобождается место на подоконнике.
- Сложности: вручную открывать 5 окон уже занимает долго времени. Открыть полностью угловое окно мешает сам механизм (пример: механизм вверху балконной двери упирается в стену и не дает открыть проход полностью). Из-за этого необходимо вешать шторы с наружной стороны окна. Цена даже на китайские моторизированные шторы начинаются от 2000 рублей, умножаем на 5 и уже сразу же думаем, как сделать все подручными средствами.
Немного про задачи:
Необходимо добавить к обычным рулонным шторам из строительного магазина удаленное управление и подключить к умному дому на openSource платформе Home Assistant. И еще необходимо сохранить обычное управление за веревочку.
Если все автоматизировать, то скорость не играет роли, поэтому можно применять двигатели с редуктором. Коллекторные двигатели дешевые, но не самая надежная вещь для ежедневного применения. Сервомашинки тоже имеют коллекторные двигатели и плюс не стабильные при постоянном вращении. Отличным вариантом выглядят шаговые двигатели. Бесшумные, можно контролировать положение, стоят копейки. В итоге, комплект из 5 двигателей 28BYJ-48 с драйвером ULN2003 обошелся мне в 10$
Про двигатель 28BYJ-48:
Подробно о нем можно почитать здесь.
Были вопросы о мощности этого двигателя. Опасения что он будет слабым, не оправдались. Вернее так — если использовать полношаговый режим, то двигатель очень хилый, если использовать полушаговый, то вал уже голыми руками не остановить. Кому будет мало мощности, в интернете много статей как приподнять напряжение, превратить его в биполярный и прочие улучшения.
Так как у нас осталось ручное управление, и мы не хотим впустую гонять двигатель, то необходимы датчики положения штор. Минимум необходим один датчик на одном конце, но лучше два. Можно использовать любой концевой, оптический и т.д., но я лично выбрал герконовый, т.к. приклеить неодимовый магнитик с другой стороны очень просто и работать должен стабильно и долговечно. Сами герконы я выбрал для эстетики уже в корпусе. Плюс предусмотрел настройку по расстоянию от вала. По высоте можно регулировать проставками.
Про конструкцию крепления:
Задача была спроектировать корпус максимально простой для изготовления на 3д принтере с минимальными доработками. Моделировал в Fusion 360. Комплектное крепление цепляется за верх окна, но такую конструкцию на FDM принтере будет трудно сделать с нужными требованиями по прочности, поэтому была придумана конструкция с одним винтом для регулировки.
Итого получилось три детали для 3д-печати. Ссылка для скачивания 3д-моделей.
thingiverse
Основная часть для двигателя, платы управления на 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д-принтере
Источник
Самодельный привод штор
В этой статье я расскажу о конструкции автоматического привода штор, установленного у меня на балконе. Там у нас растут цветы, которым вреден прямой солнечный свет. Кроме того, летом, если окна балкона закрыты, при прямом солнечном свете воздух на балконе быстро перегревается. Однако когда прямого света нет, шторы желательно открыть — тень тоже не способствует росту цветов. Поэтому, для поддержания на балконе приемлемой освещенности, я автоматизировал работу штор.
Механика
Шторы изначально уже были на балконе. Их две, обе подвешены на металлическом тросике, протянутом под потолком от одной стены балкона до другой. Понятно, что передвигать нужно сразу обе шторы, при этом из-за трения штор об тросик (он достаточно шершавый) требуемая сила должна быть достаточно велика. Кроме того, иногда на пути шторы могут встречаться препятствия, например, приоткрытое окно балкона, что еще больше увеличивает требования к силе.
Таким образом, привод должен быть достаточно мощным и надежным — на балконе часто бывает повышенная влажность, возможна достаточно большая разница температур зимой и летом. Поэтому основой привода я сделал автомобильный привод стеклоподъемника. Он обладает достаточной мощностью, способен выдавать большой крутящий момент (в него встроен червячный редуктор) и очень надежен.
Схема механической части привода показана ниже:
Подробнее о конструкции. На вале привода стеклоподъемника (слева на схеме) закрепляется пластиковый ролик с проточкой, на который намотан виток веревки. Привод закрепляется на одной из стен балкона. На противоположной стене крепится такой же ролик, через который также пробрасывается веревка.
После этого веревка натягивается, так что трения веревки на ролике привода хватает для перемещения штор. Противоположные концы каждой шторы крепятся к веревке так, чтобы при вращении мотора штора раздвигалась или сдвигалась.
Для проверки работы привода я сделал его уменьшенную модель. Привод стеклоподъемника и независимый ролик закрепил на доске, натянул между ними веревку, после чего можно было проверять работу электроники и измерять силу, развиваемую приводом.
Фотография самого привода на макете:
Как видно из фотографии, к приводу стеклоподъемника прикреплена достаточно крупная тонкая пластина (я использовал текстолит). К ней крепится металлический уголок с двумя отверстиями, через которые пропущена веревка. Он нужен для того, чтобы виток веревки на ролике не путался, для этого отверстия в уголке сделаны на разной высоте относительно пластины.
Правее уголка — концевые выключатели, нужные для остановки штор к крайних положениях. Для того, чтобы обозначить эти положения, на веревку надеваются две пластиковые трубочки (на фотографии рядом с нижним выключателем видна только одна из них). Трубочки располагаются так, что при достижении шторой крайнего положения одна их них нажимает на выключатель, при этом для надежного нажатия рядом с каждым из выключателей крепится металлическая пластинка, которая прижимает трубочку к выключателю.
Три металлические стойки, прикрепленные к пластине, нужны для крепления крышки привода.
Оба ролика для веревки сделаны из колес для мебели. Используя дрель и напильник, в каждом из них нужно проточить канавку, в канавке ролика привода должны укладываться два витка веревки. Ролик привода крепится на валу за счет натяжения, при этом отверстие в нем пришлось расточить до квадратного, так как вал привода квадратный.
Привод крепится к стене балкона при помощи подходящих мебельных уголков (один из них виден на фотографии слева). В приводе стеклоподъемника достаточно крепежных отверстий, так что проблем с креплением не возникает.
Вид привода, уже прикрепленного к стене и закрытого крышкой:
Для того, чтобы натягивать веревку, используется специальный винт с гайкой, к которому крепятся концы веревки:
Также к нему прикреплен конец одной из штор.
Электроника
Управляющая электроника представлена микроконтроллером STM8S. Контроллер выполняет достаточно много функций — измерение освещенности, принятие решения о запуске привода, контроль за положением штор по концевым выключателем, управление питанием привода, управление приводом в ручном режиме — по командам пульта ДУ. Кроме того, к контроллеру подключен радиомодуль на NRF24L01 и шина 1-Wire, по которой подключены три датчика температуры. При помощи радиомодуля можно управлять приводом и считывать значения температуры в разных точках балкона и на улице, однако в данный момент второй радиомодуль подключен только к макетной плате, так что далее этот функционал я рассматривать не буду.
Используемый блок питания от принтера имеет вход для перевода его в состояние Stand-by. Его я тоже использую, благодаря чему уменьшается потребление энергии конструкцией. В программе учитывается, что блок питания переходит в рабочий режим с определенной задержкой, а после 30 секунд бездействия привода блок питания опять переходит в режим Stand-by.
Индикация работы привода — при помощи трехцветного светодиода (используются только синий и красный диоды). Синий загорается при подаче напряжения на двигатель, красный начинает периодически мигать при наличии ошибок в работе привода. Число вспышек позволяет определить номер ошибки.
Для звуковой сигнализации некоторых событий (например, при подаче команды на закрытие уже закрытых штор) используется сам двигатель привода. На него подается ШИМ сигнал с маленьким коэффициентом заполнения, в результате чего двигатель достаточно громко пищит.
В качестве датчика освещенности используется фоторезистор, прикрепленный присоской к окну. Так как присоска может отпасть от окна, рядом с фоторезистором расположена маленькая кнопка. Пока присоска держится на окне, кнопка прижата к окну. Если присоска отпадет, автоматическая работа привода прекращается и начинает мигать красный диод. Если датчик не подключен к разъему, то это тоже обнаруживается контроллером.
Вид датчика освещенности:
Так как освещенность датчика может резко изменяться — из-за различных вспышек на улице, переменной облачности, то данные от датчика приходится фильтровать. У меня реализован следующий алгоритм обработки: данные от датчика оцифровываются с частотой 10Гц, и записываются в массив. Раз в секунду значение этого массива усредняется (в первую очередь это нужно для фильтрации шумов и вспышек). Далее полученные значения добавляются в другой массив размерностью 600 элементов, после достижения конца массива запись начинается с его начала. Также каждую секунду производится анализ этого массива — контроллер подсчитывает, какой процент элементов массива меньше определенного порога (с ростом освещенности напряжение на выходе фотодатчика падает). Если значения более 66% элементов меньше заданного порога — то считается, что освещенность достаточно велика, и шторы можно закрывать. Таким образом проводится фильтрация периодических изменений освещенности. При этом на частоту работы привода тоже наложено ограничение — в автоматическом режиме мотор включается не чаще раза в десять минут.
Как я упоминал выше, имеется возможность управлять шторами с пульта ДУ. При помощи пульта можно полностью открыть и закрыть шторы, частично открыть их, запустить привод по мгновенному значению освещенности.При управлении с пульта ограничений на частоту работы привода нет.
Также есть возможность программно перезагрузить контроллер.
При передвижении штор контроллер следит за состоянием концевых выключателей. Если после начала движения соответствующий выключатель не сработает в течении 20 секунд, работа мотора прекращается. Чтобы продолжить работу привода после устранения неисправности, как раз и нужно перезагрузить контроллер.
Вся электроника установлена в стандартный пластмассовый корпус:
Один из выключателей нужен для перевода электроники в автоматический режим работы, второй позволяет полностью отключить питание мотора.
При помощи гнезд Jack 3.5мм к устройству подключаются датчик освещенности, TSOP для приема данных от пульта, и внешние термодатчики.
Белым колпачком закрыт светодиод — так его видно под любым углом.
Вид собранного и установленного на свое место блока электроники:
Видео работы привода (управление с пульта):
Источник