RSS блога
Подписка
Автоматизация обычных штор на Attiny13
В предыдущем материале на тему умных устройств мы собирали умные жалюзи «из того, что было». Продолжим традицию с обычными шторами. Не обошлось без 3д печати.
Совсем недавно на одном из маркетплейсов мне попалось на глаза вот такое устройство:
Что это? На вид напоминает причудливую голову робопса… На деле же выполняет функцию движения штор на дистанционном управлении.
На одном из каналов youtube был найден процесс разборки данного девайса.
Внутри обнаружился классический мотор-редуктор N20, плата управления и набор аккумуляторов. То есть в целом, конструкция примитивная. Еще снаружи есть ролики для скольжения по багете в виде ушек.
Поразмыслив, я выделил следующие конструктивные недостатки:
Поразмыслив еще, я понял, что повторять эту конструкцию мне не очень хочется, но полезные конструктивные особенности стоит оставить. Например, автономность. Я нашел другую схему автоматических штор для обычных багет.
Суть ее в движении фиксирующей детали по направляющей из нити. На просторах интернета я обнаружил такое же самодельное решение на основе шагового двигателя и обыкновенной веревки.
Решение достаточно интересное, хотя у меня штора одинарная, так что придется немного его упростить.
Но использовать прецизионный дорогостоящий узел для управления обычными шторами?.. Что-то идея так себе. Покупать мотор-редуктор из Китая? Долго ждать, да и не дешево.
И тут я вспомнил, что у меня завалялся очередной DVD-привод. А как мы помним из этой моей статьи, там есть достаточно полезный редуктор. Собственно на основе него я и решил собрать автоматические шторы. Делайте ваши ставки, сможет ли он двигать эти тяжеленные шторы или нет.
Как мы поняли из видео, для движения штор нам нужна двойная катушка и ответный ролик. Катушку я решил распечатать на 3д принтере, а затем прикрутить к последней шестерне редуктора тремя винтами. Чтобы катушка печаталась без поддержек, я разделил ее на 3 части, которые необходимо скреплять винтом m3x50 с гайкой.
Ответный ролик состоит из пластмассового крепления к багете и собственно вращающегося цилиндра. Запчасти соединяются обыкновенным гвоздем 2мм, а к багете крепятся винтом m3. Позже винт я заменил на защелку для удобства размонтирования.
Однако проверив конструкцию в деле, я ожидаемо обнаружил, что во время вращения катушка вместе с шестерней слетает с хлипкого пластикового крепления на редукторе. Не беда! Здесь нам поможет ответный подшипник и корпус. С этой мыслью я смоделировал корпус с отверстием для подшипника и крышку с креплением редуктора.
Крышка фиксирует редуктор двумя винтами, а сама крепится к корпусу четырьмя. Также на ней я предусмотрительно оставил отверстия для будущего крепления к багете (просто наделал отверстий в случайных местах).
Ну и сам фиксатор катушки, выполненный в оригинальном стиле «Радиоактивная угроза».
Итак, с силовой установкой определились, теперь осталось питание и управление. Поскольку хотелось сделать автономный девайс, энергопотребление необходимо было минимизировать, так что пришлось воспользоваться Attiny13 в качестве управления и радиосвязь в качестве управляющего канала (а еще потому, что у меня завалялись smd-микросхемки Attiny и цифровые модули 433МГц). Мотором будет управлять драйвер TA6586.
Питание предполагалось от аккумулятора в случае автономной работы, и от БП 5 вольт в нормальном режиме. А чтобы мощность не падала по мере разряда аккумулятора, подключим повышающий преобразователь MT3608. Тут люди знающие справедливо возразят: «Преобразователь в холостом режиме потребляет столько, что никакой автономности там не будет». И в общем случае так и есть, но если посмотреть на схему…
Как видно, после небольшой переделки преобразователь можно включать прямо с микроконтроллера (необходимо отпаять ножку от плюса питания и припаять к преобразователю). Так что аккумулятор он уже не высадит. Кроме того, attiny подключается через защиту, так что и здесь ему ничего не угрожает. Да и ниже 3.3В приемник не должен работать, а без него схема потребляет микроамперы. Спаял я это чудо на макетке (да-да, и smd-микросхему тоже).
Припать такую микросхему на макетку несложно. Она паяется четырьмя выводами, а для электрических соединений я использую провода шлейфа IDE (у меня их валяется небольшой ящичек).
В принципе, все было готово, и даже клеевой пистолет уже почти разогрет, но я решил все-таки сделать покрасивее, и смоделировал такие вот крепления на базе аккумуляторов 18650.
Спаиваем провода.
Для крепления на багету была придумана вот такая дуга с двумя фиксаторами, которая обхватывает пластину, на которую и кладется багета.
Оставалось запихнуть в корпус! Но здесь я немного ошибся. Конструкция никак не влезала, ей мешал потенциометр преобразователя. Ну и ладно! Гравер в руки и делаем дырку. Именно дырку, «отверстием» это не назовешь.
С использованием двустороннего скотча и такой-то матери все это кое-как поместилось. Оставалось сделать вилку для питания и вешать на багету.
Но постойте! А прошивка? Да, стоит поговорить об этом отдельно.
Я придумал вот такую надстройку над стандартным протоколом EV1527.
Первый байт отводится под знаковый char — число от -127 до 127. Оно обозначает время и направление работы привода. Последний байт просто инвертированный первый. Второй байт содержит одновременно адрес устройства и его инверсию. Адрес состоит из 4 бит, что эквивалентно числам от 0 до 15.
Приемник (шторы) сначала проверяет адрес, затем корректность — соответствие прямых битов инверсным, затем интерпретирует команду. Включает преобразователь напряжение, двигатель в нужном направлении, отсчитывает время, выключает двигатель, выключает преобразователь. Полный код прилагаю.
Для управления нужен хаб на esphome (с передатчиком) или пульт rf433. В хабе прописываем передачу сигнала руками (позже сделаю скрипт).
К шторам можно прикрутить, например, автооткрытие и автозакрытие по времени.
Для установки нам нужно повесить привод на багету, зафиксировав шпеньками.
Нужно трижды отмерить размер багеты нитью, намотать на катушку треть и привязать ее к кольцам штор (продев через ролик, т.к. ролик инвертирует движение нити, то есть при смотке катушки штора будет ехать к приводу).
Далее нужно привязать конец нити ко второй катушке.
Чтобы шторы открывались равномерно, рекомендую связать кольца леской.
А теперь проверим!
Все это вполне можно решить прошивкой — я вообще думаю поменять логику работу устройства, сделав 4 команды: Left, Right, Set, Reset (это уменьшит число значащих бит и вероятность случайного приема). Оно будет запоминать время открытия и закрытия, которое можно будет сбросить. Далее следует кое-как вкорячить динамические коды (rolling code) Keeloq в attiny для защиты от людей недобросовестных, а в esphome — их генерацию.
Кроме всего прочего, система с доработками схемы и более мощным приводом вполне потянет откатные ворота или пластинчатую гаражную дверь. Конечно, намного удобнее реализовать систему на esphome напрямую, но для этого нужен хороший сигнал Wi-fi (или заморачиваться с протоколом ESP-NOW). Радиосвязь же достаточно дальнобойна и не создает помех для передачи-приема данных внутри локальной сети 2.4 ГГц.
Но в техническом плане проект работает хорошо — он не очень шумный, а мощности там с запасом. В автономном режиме его хватит где-то на месяц, что в целом неплохо. Да и выглядит устройство, на мой взгляд, вполне прилично. В интерьер вписывается. А по комплектующим он мне вышел в сущие копейки — около 100 рублей, не считая еще сотки на пластик. 3д принтер + умный дом = любовь, как-то так :) Единственно, долго пришлось разбираться со связью, но это уже совсем другая история. В любом случае, опыт интересный. А вот интересный ли он для повторения, хотелось бы услышать в комментариях. Спасибо за внимание!
Совсем недавно на одном из маркетплейсов мне попалось на глаза вот такое устройство:
Что это? На вид напоминает причудливую голову робопса… На деле же выполняет функцию движения штор на дистанционном управлении.
На одном из каналов youtube был найден процесс разборки данного девайса.
Внутренности
Внутри обнаружился классический мотор-редуктор N20, плата управления и набор аккумуляторов. То есть в целом, конструкция примитивная. Еще снаружи есть ролики для скольжения по багете в виде ушек.
Поразмыслив, я выделил следующие конструктивные недостатки:
- Подпружиненные ролики недостаточно надежны и достаточно сложны
- Устройство предполагает периодическую подзарядку
- Перезарядка чего-то, висящего в 1.5м от пола и периодически елозящего туда-сюда не слишком удобна
Поразмыслив еще, я понял, что повторять эту конструкцию мне не очень хочется, но полезные конструктивные особенности стоит оставить. Например, автономность. Я нашел другую схему автоматических штор для обычных багет.
Суть ее в движении фиксирующей детали по направляющей из нити. На просторах интернета я обнаружил такое же самодельное решение на основе шагового двигателя и обыкновенной веревки.
Решение достаточно интересное, хотя у меня штора одинарная, так что придется немного его упростить.
Штора обыкновенная, тяжеленная
Но использовать прецизионный дорогостоящий узел для управления обычными шторами?.. Что-то идея так себе. Покупать мотор-редуктор из Китая? Долго ждать, да и не дешево.
И тут я вспомнил, что у меня завалялся очередной DVD-привод. А как мы помним из этой моей статьи, там есть достаточно полезный редуктор. Собственно на основе него я и решил собрать автоматические шторы. Делайте ваши ставки, сможет ли он двигать эти тяжеленные шторы или нет.
Механика и корпус
Как мы поняли из видео, для движения штор нам нужна двойная катушка и ответный ролик. Катушку я решил распечатать на 3д принтере, а затем прикрутить к последней шестерне редуктора тремя винтами. Чтобы катушка печаталась без поддержек, я разделил ее на 3 части, которые необходимо скреплять винтом m3x50 с гайкой.
Ответный ролик состоит из пластмассового крепления к багете и собственно вращающегося цилиндра. Запчасти соединяются обыкновенным гвоздем 2мм, а к багете крепятся винтом m3. Позже винт я заменил на защелку для удобства размонтирования.
Однако проверив конструкцию в деле, я ожидаемо обнаружил, что во время вращения катушка вместе с шестерней слетает с хлипкого пластикового крепления на редукторе. Не беда! Здесь нам поможет ответный подшипник и корпус. С этой мыслью я смоделировал корпус с отверстием для подшипника и крышку с креплением редуктора.
Крышка фиксирует редуктор двумя винтами, а сама крепится к корпусу четырьмя. Также на ней я предусмотрительно оставил отверстия для будущего крепления к багете (просто наделал отверстий в случайных местах).
Ну и сам фиксатор катушки, выполненный в оригинальном стиле «Радиоактивная угроза».
Железо
Итак, с силовой установкой определились, теперь осталось питание и управление. Поскольку хотелось сделать автономный девайс, энергопотребление необходимо было минимизировать, так что пришлось воспользоваться Attiny13 в качестве управления и радиосвязь в качестве управляющего канала (а еще потому, что у меня завалялись smd-микросхемки Attiny и цифровые модули 433МГц). Мотором будет управлять драйвер TA6586.
Питание предполагалось от аккумулятора в случае автономной работы, и от БП 5 вольт в нормальном режиме. А чтобы мощность не падала по мере разряда аккумулятора, подключим повышающий преобразователь MT3608. Тут люди знающие справедливо возразят: «Преобразователь в холостом режиме потребляет столько, что никакой автономности там не будет». И в общем случае так и есть, но если посмотреть на схему…
Как видно, после небольшой переделки преобразователь можно включать прямо с микроконтроллера (необходимо отпаять ножку от плюса питания и припаять к преобразователю). Так что аккумулятор он уже не высадит. Кроме того, attiny подключается через защиту, так что и здесь ему ничего не угрожает. Да и ниже 3.3В приемник не должен работать, а без него схема потребляет микроамперы. Спаял я это чудо на макетке (да-да, и smd-микросхему тоже).
Припать такую микросхему на макетку несложно. Она паяется четырьмя выводами, а для электрических соединений я использую провода шлейфа IDE (у меня их валяется небольшой ящичек).
В принципе, все было готово, и даже клеевой пистолет уже почти разогрет, но я решил все-таки сделать покрасивее, и смоделировал такие вот крепления на базе аккумуляторов 18650.
Спаиваем провода.
Для крепления на багету была придумана вот такая дуга с двумя фиксаторами, которая обхватывает пластину, на которую и кладется багета.
Оставалось запихнуть в корпус! Но здесь я немного ошибся. Конструкция никак не влезала, ей мешал потенциометр преобразователя. Ну и ладно! Гравер в руки и делаем дырку. Именно дырку, «отверстием» это не назовешь.
С использованием двустороннего скотча и такой-то матери все это кое-как поместилось. Оставалось сделать вилку для питания и вешать на багету.
Но постойте! А прошивка? Да, стоит поговорить об этом отдельно.
Прошивка и интеграция
Для того, чтобы шторы открывались и закрывались сами, нужно продумать свой протокол обмена по радиосвязи. Или использовать классику. Была выбрана классика с библиотекой TinyRF и EV1527. Рассказывать про нее я особо не буду, на сайте есть статья разработчика. Несмотря на то, что мы уже можем передавать данные, надо определиться, что передавать.Я придумал вот такую надстройку над стандартным протоколом EV1527.
00001000 00011110 11110111
char addr ~addr ~char
Первый байт отводится под знаковый char — число от -127 до 127. Оно обозначает время и направление работы привода. Последний байт просто инвертированный первый. Второй байт содержит одновременно адрес устройства и его инверсию. Адрес состоит из 4 бит, что эквивалентно числам от 0 до 15.
Приемник (шторы) сначала проверяет адрес, затем корректность — соответствие прямых битов инверсным, затем интерпретирует команду. Включает преобразователь напряжение, двигатель в нужном направлении, отсчитывает время, выключает двигатель, выключает преобразователь. Полный код прилагаю.
#define F_CPU 1200000UL // Clock speed 1.2 MHz (-Ulfuse:w:0x6A:m)
#define TRF_RX_PIN PB3 // Receiver on Pin 5
#define TRF_DATA_SIZE 3 // Command size 3 bytes
#define TRF_TX_DISABLED // Exclude transmitter code to preserve space
#define DC_DC_PIN PB0
#define FRW_MOTOR_PIN PB2
#define BKW_MOTOR_PIN PB1
#define DEVICE_ADDR 1
#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include "TinyRF.h"
//Output pins init
#define init_output_pins() DDRB |= (1 << DC_DC_PIN) | (1 << FRW_MOTOR_PIN) | (1 << BKW_MOTOR_PIN)
//Output pins control
#define set_output_pin(pin, state) ((state) ? PORTB |= (1 << (pin)) : PORTB &= ~(1 << (pin)))
int main(void)
{
// Initialize timer and ports
trf_init();
init_output_pins();
while (1)
{
// If a new command is available
if (trf_has_received_data()) {
// Get received data
uint8_t data_buffer[TRF_DATA_SIZE];
trf_get_received_data(data_buffer);
uint8_t addr = data_buffer[1]>>4;
//Address check
if (addr==DEVICE_ADDR) {
//CRC check
if ((data_buffer[0] == (uint8_t)(~data_buffer[2]))
&& ((addr & (~data_buffer[1])) == addr)) {
//No interrupts when working
cli();
//Power saving off
set_output_pin(DC_DC_PIN, 1);
_delay_ms(10);
//Direction check
byte pin = ((char)data_buffer[0]>0)?FRW_MOTOR_PIN:BKW_MOTOR_PIN;
//Motor on
set_output_pin(pin, 1);
//Working cycle
for (int i=0; i<abs((char)data_buffer[0]);i++) {
_delay_ms(1000);
}
//Motor off
set_output_pin(pin, 0);
//Power saving on
_delay_ms(10);
set_output_pin(DC_DC_PIN, 0);
//Interrupts re-enable
sei();
}
}
trf_reset_received();
}
}
}
Код довольно простой, занимает 60% (618 байт) памяти устройства(1 Кбайт). Во время работы штор команды не принимаются. Отсчет времени в цикле обусловлен экономией памяти. Для управления нужен хаб на esphome (с передатчиком) или пульт rf433. В хабе прописываем передачу сигнала руками (позже сделаю скрипт).
remote_transmitter:
pin: D8
# RF uses a 100% carrier signal
carrier_duty_percent: 100%
switch:
- platform: template
name: RF TestCurtains Open Button
turn_on_action:
then:
- remote_transmitter.transmit_rc_switch_raw:
code: '000010000001111011110111'
protocol: 1
repeat:
times: 10
wait_time: 0s
- delay: 5s
turn_off_action:
then:
- remote_transmitter.transmit_rc_switch_raw:
code: '111110010001111000000110'
protocol: 1
repeat:
times: 10
wait_time: 0s
- delay: 5s
optimistic: True
Данный код шлет 8 секунд на закрытие и -7 на открытие (закрывать сложнее). Это дает нам выключатель в HomeAssistant.К шторам можно прикрутить, например, автооткрытие и автозакрытие по времени.
Установка
Для установки нам нужно повесить привод на багету, зафиксировав шпеньками.
Нужно трижды отмерить размер багеты нитью, намотать на катушку треть и привязать ее к кольцам штор (продев через ролик, т.к. ролик инвертирует движение нити, то есть при смотке катушки штора будет ехать к приводу).
Далее нужно привязать конец нити ко второй катушке.
Чтобы шторы открывались равномерно, рекомендую связать кольца леской.
А теперь проверим!
Заключение
Итак, шторы работают и свои функции выполняют. Однако попользовавшись ими некоторое время, я обнаружил пару недостатков. Во-первых, 127 секунд для времени работы — многовато, а точность отсчета в секунду не позволяет нормально установить время движения штор (то не доезжают, то мотор упирается в конце движения и едет на месте). Во-вторых, иногда от соседей прилетает залетный сигнал, и шторы вдруг оживают сами (ума не приложу, что там прилетает). Так что для дачи (вдали от городской суеты) с большим окном, конечно, сойдет. А вот для дома не очень. Кроме того нет защиты от злоумышленников.Все это вполне можно решить прошивкой — я вообще думаю поменять логику работу устройства, сделав 4 команды: Left, Right, Set, Reset (это уменьшит число значащих бит и вероятность случайного приема). Оно будет запоминать время открытия и закрытия, которое можно будет сбросить. Далее следует кое-как вкорячить динамические коды (rolling code) Keeloq в attiny для защиты от людей недобросовестных, а в esphome — их генерацию.
Кроме всего прочего, система с доработками схемы и более мощным приводом вполне потянет откатные ворота или пластинчатую гаражную дверь. Конечно, намного удобнее реализовать систему на esphome напрямую, но для этого нужен хороший сигнал Wi-fi (или заморачиваться с протоколом ESP-NOW). Радиосвязь же достаточно дальнобойна и не создает помех для передачи-приема данных внутри локальной сети 2.4 ГГц.
Но в техническом плане проект работает хорошо — он не очень шумный, а мощности там с запасом. В автономном режиме его хватит где-то на месяц, что в целом неплохо. Да и выглядит устройство, на мой взгляд, вполне прилично. В интерьер вписывается. А по комплектующим он мне вышел в сущие копейки — около 100 рублей, не считая еще сотки на пластик. 3д принтер + умный дом = любовь, как-то так :) Единственно, долго пришлось разбираться со связью, но это уже совсем другая история. В любом случае, опыт интересный. А вот интересный ли он для повторения, хотелось бы услышать в комментариях. Спасибо за внимание!
Самые обсуждаемые обзоры
+105 |
2770
84
|
+97 |
3606
226
|
+37 |
1619
51
|
Или это частный дом (особняк) где миллион комнат и штор. Тогда другое дело.
1) хочется просыпаться от, собственно, света из окна.
2) под окном что-то стоит, и к нему подходить неудобно
3) автоматическое закрывание штор, кода темнеет
4) эмуляция присутствия
5) банальный вау-эффект
6) с женщиной дело идёт к кровати, чтобы не отвлекаться — тут голосовой команды хватит
7) с утра совсем из кровати вылезать лень, пнул шторы открыться — чтобы хоть солнечный свет таки разбудил
PS: «тут голосовой команды хватит» — дорогая, прикрой шторы, пожлста.
Потом ещё был план днём закрывать шторы когда солнце бьёт прямо в окно чтобы не устраивать парник.
Не будет зависеть от скорости движения, да и вручную можно штору спокойно открывать-закрывать, контроллер потом лишнего не будет тянуть.
Либо как вариант определять что на мотор повысилась нагрузка и он стал жрать больше, это будет означать что он упёрся. Именно так работает соноффовский вариант.
Кстати, ещё у него можно своровать и идею питаться от солнечной батарейки, на окне это вполне может работать.
У меня он был, но не понравилось как сам в себе запутывается с двойной шторой и пока я его отправил в кладовку.
Это из моего проекта для рулонных штор. Такой способ использования концевиков меня в свое время впечатлил и теперь его часто использую.
Касательно токов, то, в моем понимании, большие токи будут на каких-то больших мощностях и усилиях. И если уж речь про каких-то монстров то и под них можно найти и диоды и концевики соответсвующие.
Если же все таки в рамках данной конструкции, то тут о каких-то больших токах речи не шло.
Можно же не питание мотора рвать, а питание реле.
У вас есть два пина, которые управляют мотором. Как я понимаю, на один надо подать 0, на другой 1 и мотор поедет в какую-то сторону. Вот сюда и подключите концевики, только через резисторы. Причем, подключите так, чтобы разомкнутый концевик создавал на пине нужное напряжение. То есть, например, для движения влево надо подать 0 и 1. Ставим на второй пин подтяжку на плюс через 10К и концевик на минус через 1К.
При отключенном моторе на пинах, скажем, 0 и 0. Для движения влево переводим второй пин в режим ввода, на нем появляется 1 за счет подтяжки, мотор включается. Как только мотор доезжает до края, срабатывает концевик, уровень падает до нуля, мотор останавливается. МК считывает ноль и выключает преобразователь.
В таком применении лучше не экономить на концевиках, тем более, что можно их совместить с выходами управления мотором.
Я бы, кстати, поставил один концевик — возле мотора, и магнит на катушку прицепил и датчиком Холла обороты считал. То есть в одну сторону до концевика, в другую — подсчётом, чтобы на второую сторону окна электричество не мостить.
Розетки под потолком у окна не ставят если при ремонте сразу шторы не закладывали, а тащить кабель через пол комнаты так себе затея.
Вот второй концевик можно поставить на верхней половине нитки, она идёт в обратную сторону от шторы, тогда оба геркона/кнопки будут у активной стороны, хоть и появится погрешность натяжения нити.
То есть автономное питание — на какие-то нештатные случаи. Собственно, это меня и удивило — это же шторы, зачем тут так заморачиваться ради нештатных ситуаций.
На куролесинах хрен знает сколько А внешне декорация некрасивая.
Наверху на карнизе скворечник чёрный.
Не стоит она того.
Ардуина — это нынче скорее форм-фактор и софт, и как раз та «ардуина», которая на атмеге, нафиг умирает, и поделом.
Там имело смысл — высоченные потолки, три (или четыре? не помню уже) окна.
Двигатель РД-09, и тумблер со средним положением без фиксации, стальной тросик.
1976 год…
И, кстати, на 9 оборотов не помню, почему то осталось в голове 37 и 137 :)
В общем, всё это субъективизм. Конкретно здесь — судя по последним фотом, коробочка досаточно незаметна, чтобы не морочить голову.
А, не забудьте поставить мне десяток минусов, мне как то по барабану.
Нет, конечно, если учитывать стоимость 100 рублей и стоимость цивилизованной установки от 25 т.руб. и место установки, то почему бы и нет, если хозяина декор вообще не интересует.
Но у ТС есть 3д-принтер. :)
Дерзайте, будем повторять :)
Хотя нет — я бы её вообще чем-то задекорировал и сделал элементом оформления. Не знаю — допустим, внешнюю часть в форме львиной морды и бронзовой краской покрасил. И с другой стороны карниза такое же, и чтобы на саму трубу надевались.
a.aliexpress.com/_Evi9epr
Автор конечно молодец и за любую поделку всегда плюс.
Но лично я вижу это так — если у тебя остекленный огромный фасад метров на 10 :) тут такая моторизация — ок.
Но когда просто окошко — отдернуть занавесочку не трудно.