Самый доступный метод автоматизации штор



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



    Отсутствие желания стать предметом чужого внимания сподвигло запилить автоматические шторы. Итак, что я хотел от штор, первое, подъем и опускание по выставленному времени, управление в том числе через интернет, хотя последние нужно было для реализации голосового управления. Что в итоге, в интернете много интересного, но так как я слаб в программировании, понять многие решения не смог, да и не все соответствовало требованиям. Решение делать самостоятельно пришло постепенно, здесь я постепенно наступил на все грабли но все же пришел к результатам. Были куплены рулонные шторы, разобрана старая поворотная камера видеонаблюдения снятая с объекта, из нее я добыл два ноунейма-китайские шаговые двигатели чьи характеристики не смог найти в интернете.



    Разобравшись с движками, для их управления использовал nodemcu, которая посылает сигналы для управления силовой части на драйвер ln298n, простенький скетч работает на платформе Blynk, начальное положение шторы отсчитывается от сигнала с геркона, до нижнего положения проходит определенное количество шагов. Время подъема и опускания отличается в пару секунд и составляет полторы минуты, достаточно медленно, зато без звука! Плата имеет встроенный wifi модуль, а платформа блинк позволила синхронизироваться со временем в зависимости от часового пояса, как результат один виджет позволил максимум упростить схему. Голосовое управление выполнено на ассистенте Дуся, в качестве платформы пока использую телефон, есть периодические ложные сработки, не критично, в будущем возможно заменю платформу (если разберусь с расбери) и заменю микрофон, есть задумки.





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



    Ниже приведен код для есп:

    #define BLYNK_PRINT Serial
    #include <ESP8266WiFi.h>
    #include <BlynkSimpleEsp8266.h>
    
    #include <ESP8266mDNS.h>
    #include <WiFiUdp.h>
    #include <ArduinoOTA.h> //OTA Библиотека для OTA-прошивки
    
    #include <AccelStepper.h>
    #define motor1 D1
    #define motor2 D2
    #define motor3 D3
    #define motor4 D4
    AccelStepper Stepper1(4, D1, D2, D3, D4); 
    
    static int buttonPin = D5;  // с цифрового выхода датчика Холла
    //unsigned long runTime1; // время с запуска платы Arduino, мс
    unsigned long runTime2;
    int current = 20800;// кол-во шагов определяется опытным путем
    static bool newZeroPoint = true; // Флаг указывающий, что надо найти сначала нулевую позицию, а потом делать остальное.
    
    char auth[] = "";
    char ssid[] = "";
    char pass[] = "";
       
    
    void setup() {
     Serial.begin(9600);
      Blynk.begin(auth, ssid, pass);
      
      pinMode(buttonPin, INPUT);
      pinMode(motor1, OUTPUT);
      pinMode(motor2, OUTPUT);
      pinMode(motor3, OUTPUT);
      pinMode(motor4, OUTPUT);
      
    
      ArduinoOTA.setHostname("ESP8266-00002"); //OTA Задаем имя сетевого порта
      //ArduinoOTA.setPassword((const char *)"0000"); //OTA Задаем пароль доступа для удаленной прошивки
      ArduinoOTA.begin(); //OTA Инициализируем OTA
            
     Stepper1.setMaxSpeed(200);     //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)
    Stepper1.setAcceleration(180); //устанавливаем ускорение (шагов/секунду^2)
      
    }
    void ZeroPoint(){
      if (newZeroPoint)
      // Поиск начальной позиции.
            if (digitalRead(buttonPin)) 
          {
              // Если концевик сработал, то выставляем нуливую позицию и завершаем поиск.
              Stepper1.setCurrentPosition(0);
              newZeroPoint = false;
              //Serial.println("true");
          } else
          {
            // Двигаемся влево на один шаг, до тех пор пока не сработает концевик.
            if (Stepper1.distanceToGo() == 0) {Stepper1.moveTo(Stepper1.currentPosition() + 1000);}
            Stepper1.run();
            //Serial.println("false");
          }
      }
     BLYNK_WRITE(V0)
    {
      int button = param.asInt(); // read button  
      if (button == 1){ Stepper1.move(-Stepper1.currentPosition());}  
    }   
          
    BLYNK_WRITE(V1)
    {
      int button = param.asInt(); // read button  
      if (button == 1){
        
     Stepper1.moveTo(-current);
     Stepper1.run();
     } 
    }
    BLYNK_WRITE(V2)
    {
      int button = param.asInt(); // read button  
      if (button == 1){
      Stepper1.stop();}
     } 
         
     void Out()//Эта часть кода снимает напряжение с обмоток шаговика через заданное время после его работы
     {
      if (Stepper1.run())
      runTime2 = millis(); 
      if (millis() - runTime2 > 5000) 
      {runTime2 = millis();
      digitalWrite (5, LOW);
      digitalWrite (4, LOW);
      digitalWrite (0, LOW);
      digitalWrite (2, LOW);
        }
    }
     void loop()
    {
      Blynk.run();
     Stepper1.run();
        ZeroPoint(); 
        Out();
        ArduinoOTA.handle();       
       
    }

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 31

      +2

      А почему когда интернета нет штора не работает?

        0

        Потому что для управления используется сервис который работает через интернет, виртуальные кнопки управления, голосовой сервис, виджет который срабатывает по времени, как я писал, это плата за доступную реализацию. Однако при желании можно сделать проект автономным, без потери функцианальности, провда это его усложнит

          0

          Локально поставить блинксервер это задачка на полчаса и одну малинку. Усложнит очень так себе) в качестве псевдообратной связи предложу считать шаги от 0 на герконе. Как минимум до перезапуска в не нулевом положении будет показывать корректно

            0

            Спасибо за информацию

            +1
            Зачем вообще кнопки? Умные шторы должны открываться и закрываться автоматически согласно показаниям датчиков освещенности, положения солнца, местонахождения владельца, погодных условий и времени суток.
              +1
              Еще нейросеть должна натренироваться, в каком состоянии вы закрываете шторы, а в каком не закрываете.
              0

              Из автоматики пока только открытие и закрытие по времени

          +1
          Какой ток потребляет мотор в работе?
            +1

            Около 300мА

            +7
            Искать шаговые движки в поворотных камерах, не самый доступный вариант.
            Сделал ещё 5 лет назад, ультро бюджетную конструкцию из доступных (считай подручных) материалов, движки из наборов Ардуино, пластиковый механизм из комплекта штор. До сих пор работают, без проблем:
            Заголовок спойлера


            Всё это работает на копеечном Mega2560 + куча плюшек: автоматическое открытие/закрытие штор по уровню света за окном (в том числе плавное), независимое управление каждой шторой, конечно-же управление доступно оффлайн через MQTT, фиксированная величина открытия, вообщем к контроллеру можно прикрутить любой функционал, на что хватит фантазии:
            Заголовок спойлера

            Видос, как всё это работает в реале:
            Заголовок спойлера

              0

              Супер, как говорится кто на что горазд, с mqtt я только собираюсь разобраться, очень понравилась ваша реализация, когда-нибудь я тоже так смогу :)

                0
                Хм, забавно ) мне Ваш вариант показался гораздо аккуратнее.
                  0
                  У вашего варианта тоже есть серьезный плюс — энергонезависимость. Если электричества не будет, можно руками открыть/закрыть.
                0

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

                  0
                  Подскажите точную модель движков, пожалуйста
                    0
                    вся информация которая мне была доступна есть на фото двигателя
                      0
                      Пожалуйста: 28BYJ-48 5V DC
                      0
                      Видео не работает.
                    0
                    Посмотрите на ESPHome и вот сюда в частности.
                    Даже кодить не придётся.
                    Особенно, если доберётесь до Home Assistant (рекомендую добраться).
                      0
                      А я с год назад вот такую штуку собрал для одной шторы www.thingiverse.com/thing:2392856. Работает без нареканий, собираюсь на остальные сделать (уже распечатал детали, осталось потратить чертовы два-три часа на сборку). Отдельно замечу, что автоматизация и локальный MQTT хорошо, но физические кнопки гораздо удобнее.
                        0
                        А что на счет управления руками? Когда например рядом стоишь и захотел открыть/закрыть?
                          0

                          Только голосовое или через приложение на телефоне blynk

                          0
                          Выглядит здорово, но очень долго. Можно доработать, чтобы по времени срабатывало.
                            0

                            Так и работает, виджет в Blynk позволяет выставить время открытия и закрытия штор

                            +1
                            Автоматизация штор очень увлекательное занятие. Готовые фирменные изделия действительно, во-первых, стоят дорого и, во-вторых, управляются через свои забугорные сервера.
                            Для тех, кому DIY, как и мне, противопоказан, один энтузиаст из Москвы продаёт свои приводы рулонных штор на сайте imlazy.ru примерно по 25 долларов. Проект открытый: доступны макеты платы, корпусов, исходный код прошивки. Но я просто купил, поставил и ежедневно радуюсь. В отличие от приводов, представленных в этой статье, плата управления взята не макетная nodeMCU, а спроектирована на базе того же esp8266 с нуля. В результате устройство получилось компактнее. Кроме того, эти приводы уже поддерживают MQTT, через который управляются и сообщают текущее состояние. Первоначальная настройка производится через веб-интерфейс, там же можно настроить открытие/закрытие по заданному времени, т.е. можно работать без какой-либо интеграции с умным домом.
                            Буквально неделю назад я поставил себе один привод:


                            Для нерулонных штор я вложился в проект SwitchBot Curtain, но там каждый привод втрое дороже.
                              0
                              А что за шторы? А то тут люди на 3д принтере переходники для двигателя печатают, а вы так легко двигатель со шторами совместили.
                                0

                                Я не помню производителя, брал в строительном магазине первые попавшиеся, которые подошли по размеру и цвету, на счет совмещения движка и штор, много пересмотрел тоже, в моем случае наверное везение, вал у двигалеля позволил его рассверлить и нарезать резьбу М3, ну а фитинг штор прикрутил болтом к валу

                                0

                                Работает, если время выключения меньше времени включения? т.е. переход через 00:00?

                                  0
                                  На сегодняшний день переделал логику работы с push на высокий низкий уровень виртуальной кнопки так как перешел на использование «Алисы». В Blynk также в виджете с 6.00 до 20.30 высокий уровень, 20.30 — 06.00 низкий, это время открывания и закрывания штор, раньше пользовался двумя виджетами для того чтобы время включения была несколько сикунд

                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                Самое читаемое