Автоматическое управление жалюзи и интеграция в умный дом

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


Мысль сделать автоматизацию жалюзей не покидала меня давно. Во-первых извечная лень, во-вторых свет от окошка мешает работать за компом.
Сказано — сделано :)
Вариант автоматизировать путем вращения пластиковой гм… не знаю как это называется отпал сразу — ненадежный механизм.

Поэтому пошел другим путем:
Был приобретен моторчик с редуктором 6V 30 RPM:

вот тут:

так же вот такие сенсоры поворота (резистор 10К) SV01A103AEA01R00


а также вот такие муфты, так как вал у движка 3 мм, в жалюзях 4 мм:


что получилось дальше — смотрим на картинках:




плату блока управления видно на первой картинке. колхоз конечно, но в корпусе не видно :)

из чего все это состоит:
1. ESP8266 (брал в варианте Wemos D1 mini вот тут)
2. I2C АЦП 12-бит 4 канала ADS1115
3. I2C датчик освещенности TSL2561
4. I2C модуль управления двигателями Motor Shield For D1 mini. Жалюзи у меня из двух частей, так что как раз два канала управления пригодятся.

Как все это собирается:
Очень просто, все модули объединяются по I2C, следовательно два провода + питание.

Начнем с моторчика и сенсора в жалюзях. Определим условный плюс мотора — подключаем питание, смотрим в торец вала. Полярность при которой она вращается по часовой отмечаем как + и -.
На сенсор подаем питание таким образом чтобы находясь на валу двигателя он в крайне «левом» против часовой стрелки на среднем выводе выдавал 0. На сенсор подаем 3.3V не 5!, оно есть на выводе платы ESP.
Мотор подключаем:
+ на A1 платы управления двигателем
— на A2
второй мотор по аналогии на B1 и B2.

Обратите внимание на фото — эти полярности для установки привода слева. Если ставим его в правой части, то + и — на моторе, VCC и GND на сенсоре просто меняем местами.

С платой двигателя есть засада — он придет или непрошитый (там внутри свой процессор) или с кривым софтом.
Проблема и решение описаны вот тут:
Ищем «Reprogramming Without Soldering». Для перепрограммирования нужен любой RS232 TTL USB адаптер.
ВАЖНО: на обратной стороне платы потом в блоке отмеченном прямоугольником STBY запаиваем перемычку I2C, иначе работать не будет. Прошивка вот тут.
Поскольку SDA и SLC на это плате выведены на D2 — SDA, D1 — SCL не забываем правильно подключить их на ESP.
Я использовал те же линии:
GPIO 4 — D2 — I2C — SDA
GPIO 5 — D1 — I2C — SCL
На VM и GND с торца платы подаем питание для моторов: VM: + 5V, GND тоже понятно.
Питание проца платы 3.3V берем с одноименных выводов на плате ESP. (3V3 и GND).

Подключение TSL2561 просто +3.3V, GND, SDA, SLC
Подключение ЦАП ADS1115 аналогично. На A0 подаем средний вывод первого сенсора, на A1 — второго.

Теперь самое главное и страшное — ESP8266.
Для прошивки использовал проект Макса WiFi IOT.
Прошивка платная — 2.5$ за модуль. Но оно стоит того. В плюсах куча поддерживаемого железа, обновление прошивки во воздуху, возможность кастомизации путем инжекции своего кода на C (именно это тут нам и нужно), поддержка протокола MQTT.
Ну и коммюнити на сайте, всегда можно поплакать в жилетку :)
Для прошивки выбираем компоненты:
TSL2561
MQTT клиент
ADS1115
NTP Sync
I2C via GET
I2C Scanner
GPIO
OTA Update
Auto OTA
Code designer
Initial settings

Две последние опции нуждаются в кастомизации:
Initial settings — прописываем SSID и пароль для Wi-Fi, статический IP
Code designer:
Копипастим код:
// global variables
// valdes[0] = 0 - manual, 1 - auto
// valdes[1] = position 0 - 100
// valdes[2] = 0 - manual, 1 - auto - 2 channel
// valdes[3] = position 0 - 100 - 2 channel

static bool motFreqSet = false;
static int falseStep = 0;
static int prevPos1 = -1;
static int prevPos2 = -1;
static int targetAdc[2] = {0,0};
static int leftCycles = 0;
static int rightCycles = 0;
static int direction[2] = {0,0};
static int lastLux = 0;

//static os_timer_t esp_timer[0]; // define timer esp_timer[0]
static os_timer_t esp_timer[2]; // define timer esp_timer array


void ICACHE_FLASH_ATTR setMotFreq()
{
//if(motFreqSet) 
//    return;
i2c_start();
i2c_writeByte(0x60);
    if(i2c_getAck()){falseStep = 1; i2c_stop(); return;}
i2c_writeByte(0x00);
    if(i2c_getAck()){falseStep = 2; i2c_stop(); return;}
i2c_writeByte(0x00);
    if(i2c_getAck()){falseStep = 3; i2c_stop(); return;}
i2c_writeByte(0x3e);
    if(i2c_getAck()){falseStep = 4; i2c_stop(); return;}
i2c_writeByte(0x80);
    if(i2c_getAck()){falseStep = 5; i2c_stop(); return;}
i2c_stop();
motFreqSet = true;
os_delay_us(1000);
}


void ICACHE_FLASH_ATTR motorLeft(int motor)
{
setMotFreq();
//falseStep =0;
i2c_start();
i2c_writeByte(0x60);
    if(i2c_getAck()){falseStep = 6; return;}
if(motor == 1)
    i2c_writeByte(0x10);
else 
    i2c_writeByte(0x11);
    if(i2c_getAck()){falseStep = 7; return;}
i2c_writeByte(0x01);
    if(i2c_getAck()){falseStep = 8; return;}
i2c_writeByte(0x01);
    if(i2c_getAck()){falseStep = 9; return;}
i2c_writeByte(0x00);
    if(i2c_getAck()){falseStep = 10; return;}
i2c_stop();

}

void ICACHE_FLASH_ATTR motorRight(int motor)
{
setMotFreq();
//falseStep =0;
i2c_start();
i2c_writeByte(0x60);
    if(i2c_getAck()){falseStep = 6; return;}
if(motor == 1)
    i2c_writeByte(0x10);
else 
    i2c_writeByte(0x11);
    if(i2c_getAck()){falseStep = 7; return;}
i2c_writeByte(0x02);
    if(i2c_getAck()){falseStep = 8; return;}
i2c_writeByte(0x01);
    if(i2c_getAck()){falseStep = 9; return;}
i2c_writeByte(0x00);
    if(i2c_getAck()){falseStep = 10; return;}
i2c_stop();

}

void ICACHE_FLASH_ATTR motorStop(int motor)
{
setMotFreq();
//falseStep =0;
i2c_start();
i2c_writeByte(0x60);
    if(i2c_getAck()){falseStep = 6; return;}
if(motor == 1)
    i2c_writeByte(0x10);
else 
    i2c_writeByte(0x11);
    if(i2c_getAck()){falseStep = 7; return;}
i2c_writeByte(0x03);
    if(i2c_getAck()){falseStep = 8; return;}
i2c_writeByte(0x01);
    if(i2c_getAck()){falseStep = 9; return;}
i2c_writeByte(0x00);
    if(i2c_getAck()){falseStep = 10; return;}
i2c_stop();

}

void ICACHE_FLASH_ATTR motor_proc(unsigned char motor){
// arg = motor number
//int targetAdc[0] = arg;
int curAdc = readADC_ADS(motor - 1);

// check if rotate to desired position
if(direction[motor - 1] == 1)
{
    // rotating right
    rightCycles++;
    if ( curAdc >= targetAdc[motor - 1]) {motorStop(motor); os_timer_disarm(&esp_timer[motor - 1]);}
}
else
{
    // rotating left
    leftCycles++;
    if ( curAdc <= targetAdc[motor - 1]) {motorStop(motor); os_timer_disarm(&esp_timer[motor - 1]);}
}

}

void ICACHE_FLASH_ATTR
startfunc(){
    // выполняется один раз при старте модуля.
    valdes[0] = 1;
    valdes[2] = 1;
}

void ICACHE_FLASH_ATTR
 timerfunc(uint32_t  timersrc) {
// выполнение кода каждую 1 секунду

// check channel 1 for auto mode
if(valdes[0] == 1)
{
    // auto mode
    // calculate target position
    
    if(tsllux <= sensors_param.cfgdes[4]/* luxNight */)
    {
        // night time, full closed DOWN
       valdes[1] = 0;
    }
    else 
        if(tsllux <= sensors_param.cfgdes[3]/* luxOpened */)
        {      
            // more then dark, full opened
            valdes[1] = 50;
        }
        else 
            if(tsllux >= sensors_param.cfgdes[2]/* luxClosed */) 
            {
                // very light, full close UP
//                valdes[1] = 100;
                valdes[1] = 0;
            }
            else
            {
                // calculate desired position
                valdes[1] = (sensors_param.cfgdes[2]/* luxClosed */ - tsllux)*50/(sensors_param.cfgdes[2]/* luxClosed */ - sensors_param.cfgdes[3]/* luxOpened */);
            }

}

// check channel 2 for auto mode
if(valdes[2] == 1)
{
    // auto mode
    // calculate target position
    
    if(tsllux <= sensors_param.cfgdes[4]/* luxNight */)
    {
        // night time, full closed DOWN
       valdes[3] = 0;
    }
    else 
        if(tsllux <= sensors_param.cfgdes[3]/* luxOpened */)
        {      
            // more then dark, full opened
            valdes[3] = 50;
        }
        else 
            if(tsllux >= sensors_param.cfgdes[2]/* luxClosed */) 
            {
                // very light, full close UP
//                valdes[1] = 100;
                valdes[3] = 0;
            }
            else
            {
                // calculate desired position
                valdes[3] = (sensors_param.cfgdes[2]/* luxClosed */ - tsllux)*50/(sensors_param.cfgdes[2]/* luxClosed */ - sensors_param.cfgdes[3]/* luxOpened */);
            }

}

int curAdc;

// check if new position isn't equivalent to previous for channel 1
if(prevPos1 != valdes[1]) 
{
    prevPos1 = valdes[1];


    // get direction[0] and required sensor postion
    curAdc = readADC_ADS(0);
    targetAdc[0] = (sensors_param.cfgdes[1] - sensors_param.cfgdes[0])*valdes[1]/100 + sensors_param.cfgdes[0];
    direction[0] = 0 ;// 1 - right, 0 - left
    if(targetAdc[0] < curAdc) 
    {
        direction[0] = 0;
        motorLeft(1);
    }
    else
    {
    direction[0] = 1;
    motorRight(1);
    }

    // start timer to check position
    os_timer_disarm(&esp_timer[0]);
    os_timer_setfn(&esp_timer[0], (os_timer_func_t *)motor_proc, 1); 
    os_timer_arm(&esp_timer[0], 50, 1);
}

// check if new position isn't equivalent to previous for channel 2
if(prevPos2 != valdes[3]) 
{
    prevPos2 = valdes[3];


    // get direction[0] and required sensor postion
    curAdc = readADC_ADS(1);
    targetAdc[1] = (sensors_param.cfgdes[6] - sensors_param.cfgdes[5])*valdes[3]/100 + sensors_param.cfgdes[5];
    direction[1] = 0 ;// 1 - right, 0 - left
    if(targetAdc[1] < curAdc) 
    {
        direction[1] = 0;
        motorLeft(2);
    }
    else
    {
    direction[1] = 1;
    motorRight(2);
    }

    // start timer to check position
    os_timer_disarm(&esp_timer[1]);
    os_timer_setfn(&esp_timer[1], (os_timer_func_t *)motor_proc, 2); 
    os_timer_arm(&esp_timer[1], 50, 1);
}

if(timersrc%30==0){
// выполнение кода каждые 30 секунд

}
}

void webfunc(char *pbuf) {
os_sprintf(HTTPBUFF,"
Global Values
"); // вывод данных на главной модуля
}


Глобальные переменные: 5
Количество настроек: adcLeft1,adcRight1,luxClosed,luxOpened,luxNight,adcLeft2,adcRight2
Имя вкладки настроек: Blind options

Сохраняем, компилим (я использую версию SDK 2..0.0, выбираем в верхней части).
Заливаем в ESP через USB шнурок и софтом: FLASH_DOWNLOAD_TOOLS_V3.3.6_Win
Флешки на платах ESP идут разные, так что если не прошьется — меняем SPI MODE на DOUT.

Ресетим ESP микриком — идем к компу, вводим ip_address
Попадаем на главную страницу прошивки. Покупаем лицензию, переводим прошивку в Pro Mode.
Конфигурим имя, часовой пояс, настройки на MQTT сервер (о нем позже).

На закладке HardWare конфигурим:
Enable ADS1115
Enable TSL2561
I2C GPIO:
SDA: 4, SCL: 5

На закладке I2C Scanner должны увидеть:

I2C Scanner tester:
0x00 / 0x00 (8 bits) — какой-то глюк в прошивке платы контроллера мотора :)
0x30 / 0x60 (8 bits) — плата контроллера мотора
0x39 / 0x72 (8 bits) — это TSL2661
0x48 / 0x90 (8 bits) это ADS1115

Если все так, то хорошо, иначе ищем косяки с подключением I2C линий или питания.

На закладке Blind Options настраиваем:
adcLeft1: показания сенсора в положении полностью закрытые жалюзи
adcRigt1: показания сенсора в противоположном состоянии жалюзей -пластинки вверх

left минимум 0, но менее 1000 ставить нельзя, так как из-за инерции измерений мотор может проскочить 0
right максимум 18500, ставим меньше на 1000 по этой же причине

для второго сенсора аналогично.
luxClosed: освещенность при которой жалюзи полностью закрыты (у меня 15000)
luxOpened: освещенность при которой жалюзи полностью открыты, пластины горизонтально (у меня 7000)
luxNight: освещенность ниже это приведет к полному закрытию (чтобы но ночам в окна не заглядывали :)

между luxClosed и luxOpened будет автоматически регулироваться между 0(закрыто) и 50(открыто).

В собранном виде устройство выглядит вот так: (красным выделено место установки датчика освещеннности).



По умолчанию включается режим автоматики, ручной возможен через MQTT и умный дом. Примерно вот так: (кусок картинки)


О чем я расскажу во второй части, если первая будет хоть кому-то интересна :)
Ну и готов ответить на любые вопросы и добавить необходимую информацию.

Все спасибо :)
Добавить в избранное +149 +314
+
avatar
0
Интересный обзор. Не для этого ресурса, вы правы
+
avatar
  • futsker
  • 24 марта 2018, 19:15
+22
Почему? Ведь абсолютно все барахло для сборки приобретается в китайцев…
+
avatar
  • npanop
  • 24 марта 2018, 19:28
-6
+
avatar
  • Omega
  • 24 марта 2018, 20:46
+35
Ну если и для другого, то для гиктаймса. Хабр нынче не тот. Стал рекламной площадкой интеграторов. А вообще обзор на нужном ресурсе. плюсую
+
avatar
  • sim31r
  • 31 марта 2018, 16:24
0
На ГТ много политики и либеральная цензура. Например написал что не фанат Маска, не собираюсь уезжать из страны и получил не просто минусы в карму очередные, а удаление аккаунта со всеми заметками и личной перепиской и всеми тысячами сообщениями в комментариях (там вместо длиннопостов про НЛО). Вот мой профиль теперь:
geektimes.ru/deactivated/
+
avatar
-2
А может это потому, что всем срать что ты не фанат Маска и также всем срать где ты собираешься жить? Жуй с первого канала и не плакай ) да рублями закупись
+
avatar
  • Vasiliy
  • 24 марта 2018, 19:06
+36
Интересно было бы почитать вторую часть.
+
avatar
+8
Что-то мне кажется что уже какой-то хардкор будет :) Там интеграция с iobroker, а по этой теме можно книгу писать :)
Хотя конечно можно попробовать.
+
avatar
  • adekov
  • 24 марта 2018, 19:13
+14
С нетерпение жду продолжения!
+
avatar
+13
А видео работы нет??
+
avatar
  • sir0ta
  • 24 марта 2018, 19:42
+2
Вы не видели как открываются жалюзи?
+
avatar
+8
Поддерживаю. Хотелось бы посмотреть.
+
avatar
+9
постараюсь
+
avatar
  • MoDMaN
  • 26 марта 2018, 11:26
+1
Желательно с рассказом, как это все примерно устроено.
За видео +1.

Как то, тоже хотел собрать, что то подобное, только с роллер-шторами. Но там и движок мощный нужен и с софтом у меня проблемы(
+
avatar
+7
Немного сумбурно, мало фото (для более полного понимания), но лично мне нравится. Жду вторую часть)
+
avatar
+5
это экспромт. времени маловато. но если кого-то что-то конкретно заинтересует — распишу подробно, без проблем.
ну и как бы направление как делать — мне кажется понятно.
+
avatar
  • ewavr
  • 24 марта 2018, 19:22
+1
Если что-то пойдет не так, руками открыть можно?
+
avatar
+3
нет, так как штатный пластиковый червячный привод выкинут (у него сопротивление вращению солидное).
но у меня уже пару месяцев работает — ничто не так не пошло.
в крайнем случае всегда можно поднять жалюзи вверх :)
+
avatar
  • sir0ta
  • 24 марта 2018, 19:43
+1
По этому я хотел шаговик и внедрять в штатную систему. Но как-то руки не дошли )
+
avatar
+3
штатная система при постоянном автоматическом кручении быстро выйдет из строя
+
avatar
  • D1M0N
  • 24 марта 2018, 20:05
+4
1) не шумный моторчик с редуктором?
2) сколько оборотов из одного крайнего положения в другое?

имхо серва проще и надежнее, может и дешевле…
+
avatar
  • ewavr
  • 24 марта 2018, 20:14
+4
В общем-то, и получилась серва — мотор, редуктор, резистор и обратная связь.
+
avatar
+1
нет, драйвер двигателя регулирует скорость ШИМом, работает на 30 процентах где-то.
почти не слышно. там мотор с редуктором. сколько оборотов не знаю,. в доке на движок нет передаточного.
но написано 30RPM. следовательно на 30 процентах оборот за 6 сек делает примерно
для серва все равно датчики конечных позиций надо
переменник проще :)
+
avatar
  • D1M0N
  • 24 марта 2018, 20:37
+1
датчики не надо… ставите серву в горизонтальном положении жалюзей и значение 90° прописываете на инициализацию.
и у вас 2 крайних положения 20° нижнее и 160° верхнее.
я так себе представляю этот вариант.
+
avatar
0
осталось найти серву которая встанет в жалюзи, при этом обладая достаточной мощностью. я не нашел. а так вариант конечно.
правда стоить будет раз в 10 дороже :)
+
avatar
  • D1M0N
  • 24 марта 2018, 21:45
+2
www.banggood.com/ru/TowerPro-MG996R-Digital-Metal-Gear-Servo-For-RC-Model-p-78320.html?cur_warehouse=CN

6usd

мое уважение за рукоблудие и за то что не ищете лёгких путей ))
+
avatar
  • serenya
  • 24 марта 2018, 21:53
+3
Осталось только притулить ее в корпус жалюзи…
+
avatar
+1
Сервы имеют достаточно высокую скорость позиционирования. При включении-выключении может возникать рывок, который не добавит здоровья пластиковым деталям. А вот механика ТС как раз более щадящая, поскольку малооборотистая. Голосую за моторчик с переменником :) Ссылочку еще бы на переменник.
+
avatar
  • D1M0N
  • 24 марта 2018, 23:43
+2
для сервы цикл с паузой ставится и будет медленнее поворачивать
это не сложно

for (; pos > 90; pos -= 1) {
tilt.write(pos);
delay(15);
}

по одному градусу серву крутит с задержкой 15 мс

я голосую за умных не ленивых людей ))
тс молодец в любом случае
+
avatar
0
Вы не поняли. То, что скорость изменения ширины управляющего импульса можно сделать минимальной, еще не предотвратит от дерганья сервы при включении питания.
+
avatar
  • D1M0N
  • 25 марта 2018, 06:51
+2
сорян но ничего не понял и после этого )) у меня серву не дергает если что…
+
avatar
0
Спасибо. Правда, на ибее дешевле (нет принудительной оплаты за доставку)
+
avatar
  • driver
  • 24 марта 2018, 20:58
0
Почитал, офигел немного…
Лучше руками открывать/закрывать имхо :)
+
avatar
+9
ну кому как. для меня просто удовольствие что-то сделать своими руками.
да и львиная доля времени ушла на разработку.
воплотить это имея все готовое — поделка выходного дня
+
avatar
  • Aostspb
  • 26 марта 2018, 13:42
0
Лучше руками открывать/закрывать имхо
А если хочется вечером закрыть «когда стемнеет», а утром открыть «когда будильник поставлен»?
+
avatar
  • yg-25
  • 24 марта 2018, 21:04
+7
Ни в одном обзоре столько плюсиков не ставил, очень хотелось бы увидеть вторую часть.
+
avatar
+11
сделаю :)
+
avatar
  • r0nack
  • 24 марта 2018, 21:17
0
Я ждал :3 Спасибо!
+
avatar
  • mVlad77
  • 24 марта 2018, 21:37
-9
+
avatar
  • serenya
  • 24 марта 2018, 21:41
+5
Зря Вы так думаете. 110р, именно столько стоит прошивка стоят того что бы не искать неделю готовое решение и не сидеть вечер за программированием. И то время программирования зависит от навыков. Мне проще взять эту прошивку и не париться чем думать как реализовать программную часть.
+
avatar
  • mVlad77
  • 24 марта 2018, 23:05
0
Использование данной прошивки не продвинет Вас в плане создания устройства. Все равно придется писать программу. Так какой смысл заранее ограничивать себя в творчестве, используя чужой закрытый платный код, натыкаясь на чужие ошибки, которые Вы не в силах исправить?

Есть отличное решение, все то же самое, но никаких ограничений полета фантазии:
esp8266.ru/arduino-ide-esp8266/
или первоисточник
github.com/esp8266/Arduino

PS. Все давно придумано. Просто и красиво. А если хотите быстро и без знания программирования, тогда
первая ссылка www.google.com/search?ei=fq62Wu2mMomc_Qad-YuYDA&q=ESP8266+%D0%B6%D0%B0%D0%BB%D1%8E%D0%B7%D0%B8&oq=ESP8266+%D0%B6%D0%B0%D0%BB%D1%8E%D0%B7%D0%B8
+
avatar
  • serenya
  • 25 марта 2018, 00:12
+2
Знаете ли, продвигает периодически. Например когда надо по быстрому добавить датчик к метеостанции я просто включаю опцию в прошивке а не дописываю свой или чужой код. А гуглить я и сам умею и просмотрел всп эти реализации уже давненько.
+
avatar
+5
ну на этой прошивке у меня все сделано где используется ESP.
Зря Вы думаете что я что-то пиарю, моя сфера деятельности лежит далеко за пределами esp и прочих поделок.
Это просто хобби. А раз хобби, то должно приносить удовольствие именно мне :)
И мой принцип — использовать готовые решения по максимуму для ускорения процесса и получения результата. Это касается и железок и софта.Я попросил Макса встроить в прошивку поддержку I2C шилда для мотора был послан. Потому что это «никому не нужно». Пришлось разбираться самому.
Так что насчет пиара прошивки это Вы зря.
Обидно даже :)
+
avatar
+1
У меня была идея сделать такое управление, чтобы жалюзи всегда перекрывали солнечные лучи. Можно обойтись самым простым контроллером и датчиком света из пары фотоэлементов, установленным на поворотную жалюзь.
+
avatar
  • D1M0N
  • 24 марта 2018, 21:55
0
ставни ещё проще и дешевле ))
+
avatar
0
Ага, как вы поставите ставни на окно многоквартирного городского дома.
И у меня была проблема — солнце ближе к вечеру светило почти перпендикулярно окну. Поэтому и хотел так настроить жалюзи, чтобы они закрывали слепящее светило.
+
avatar
  • serenya
  • 24 марта 2018, 21:52
+1
У меня уже года полтора лежит такой движок в тех же целях. Все никак не соберусь с духом. Надеюсь Ваша статья придаст ускорения))). У меня правда засада с жалюзи, почти все в рукопашную укорочены на столько, что места с краю не хватит для установки движка. Но это лирика. Вопрос по существу — возможно ли изменение железа на аналогичное поддерживаемое проектом без изменения кода? Например у меня завалялся датчик освещенности BH1750.
+
avatar
+1
конечно, без проблем. Просто в коде нужно заменить чтение переменной tslux в которой данные по TSL2561 на bh_l в которой данные по датчику BH1750
+
avatar
  • Light
  • 24 марта 2018, 22:30
0
а по чему не взяли сразу сервомотор где уже стоит датчик поворота, редуктор и, контроллер?
+
avatar
0
габариты. и ненадежные пластиковые шестеренки. по крайней мере в тех моделях что я видел. ведь это ниша RC, а там за каждый грамм борьба
+
avatar
+5
Автор-молодец, основательный подход к реализации проекта.
А вот в моем варианте нет интеграции в Умный Дом — управляю с ИК-пульта или кнопками из переделанного выключателя (мозг-ардуино ессно ))
движок такой:

местный пульт:


с обратной стороны вала потенциометр (хороший, советский — проволочный):
+
avatar
+2
отличное решение, правда движок немного дороговат. зато на века :)
а вообще интеграция с умным домом мне нужна как раз для того чтобы избавиться от пультов.
когда я понял что количество пультов выросло настолько, что половина из них лежала с дохлыми батарейками — я понял, что что-то надо менять.
сейчас я вообще забыл как кнопки нажимать на выключателях, все работает или на движение в зависимости от условий или голосовыми командами через Amazon Echo.
А для управления упрямыми девайсами которым все равно надо ИК пульт есть Broadlink RM 3 управляемый тем же умным домом.
Сейчас работаю над реализацией голосовой команды: «Alexa, could you turn on Home Theater», которая в зависимости от условий освещения будет включать кучу железок, выключать свет, закрывать жалюзи кстати если светло сильно :)
Короче простор для фантазии огромный, вот времени только нет всем этим заниматься :(
+
avatar
0
У меня управление Broadlinkом сделано через Дусю просто и без инета работает.
+
avatar
0
«Alexa, could you turn on Home Theater», 
Хорошая идея. Я свой экран >3.5м опускаю тоже с пульта (привод от подъемника стекла автомобиля).
Кстати избавился от многих пультов тем, что взял один с большим количеством кнопок >40 и запрограммировал свои устройства на нужные мне кнопки. Управляю всем одним пультом :)
+
avatar
  • dark256
  • 25 марта 2018, 10:31
0
А можно гораздо более существенно подробнее? :)
Названия, марки, схема, подключение.
+
avatar
0
Названия, марки, схема, подключение
(Пароли, явки :))?
Чего названия?
Марка движка указана на фото.
Схема давно утеряна, но там просто:
1 Ардуино
2 движки
3 потенциометры на аналоговые входы
4 для управления электродвигателями микросхема L293D (содержит сразу два драйвера)
5 ИК-приемник
+
avatar
  • belyash
  • 25 марта 2018, 08:14
-1
Что будет со всем этим после этого:
— Роскомнадзор собирается заблокировать почти 15 миллионов IP-адресов Amazon

IT-эксперт Михаил Климарев опубликовал документы, свидетельствующие о том, что Роскомнадзор приступает к эксперименту по блокировке доступа к двум подсетям облачных веб-сервисов компании Amazon (AWS). Читать дальше → m.geektimes.ru/post/299341/?utm_source=habrahabr&utm_medium=rss&utm_campaign=299341
+
avatar
+3
Читал, печально. Я правда в РБ живу, так что Роскомнадзар как бы к нам отношения не имеет… Хотя конечно наши тоже могу перенять опыт коллег :(
Будем надеятся что все-таки вашим вовремя мозгов подвезут. :)
+
avatar
  • Aostspb
  • 26 марта 2018, 13:46
0
Будем надеятся что все-таки вашим вовремя мозгов подвезут.
Откуда? Разве что китайцы помогут…
+
avatar
  • sim31r
  • 31 марта 2018, 16:28
-1
Ни разу на Амазоне ничего не заказывал, только на Алиэкспрессе или реже e-bay. Пусть блокируют, это чисто американская система и дороговатая достаточно.
+
avatar
  • clihlt
  • 01 апреля 2018, 11:05
+1
Вы пользуетесь амазоновским сервисами каждый день, просто не знаете этого. Амазон это уже давно не магазин, а IT гигант. Один только его облачный хостинг чего стоит. Вы даже не представляете СКОЛЬКО сайтов висит на нем.
+
avatar
  • sim31r
  • 02 апреля 2018, 00:38
0
99% пользователей ничего не заметят. А для айтишников это их работа, перекидывать сервера между облаками.
+
avatar
  • clihlt
  • 02 апреля 2018, 00:51
0
Не думаю, что какой-нибудь сервис средних размеров из США, но которым могут пользоваться у нас, будет вообще обращать внимания на пляски цензуры в какой то стране третьего мира.
+
avatar
  • sim31r
  • 02 апреля 2018, 10:27
0
Ну Китай же живет и нормально всё, ни Ютуба, ни фейсбука, VPN работают, но очень медленно. У них своя социальная сеть, свои мессенджеры, полностью защищенные от атак извне. В Китае никакие карточки не нужны, только телефон с мессенджером местным, вся оплата через него, и в гипермаркетах и на рынке у бабушек.
Сервис типа Google весьма обращает внимание на местную цензуру.
+
avatar
  • Dumohod
  • 25 марта 2018, 09:03
0
Совершенно случайно, не знаете ли аналогичный сенсор поворота, но с отверстием в 6мм? Выходной вал мотора толстый, не могу найти :(
+
avatar
  • dark256
  • 25 марта 2018, 10:52
+1
болгарка, дремель, удлинитель! :)
+
avatar
  • Berebes
  • 25 марта 2018, 09:20
0
Всё никак не начну делать. я пробовал использовать вот такой шаговый двигатель

на тестовых жалюзях работал. На сколько хватит не знаю.
Хочу попробовать сделать с автономным питанием от 18650, Плюс добавить часы (чтобы на ночь жалюзи точно были закрыты), и добавить автоматики в виде двух сенсоров света, чтобы сравнивали освещенность внутри комнаты и на улице. Так как первый этаж и при более ярком свете в комнате с улицы всё видно. Но когда возьмусь не знаю.
Но к сожалению знаний в программировании нету(((
+
avatar
  • dark256
  • 25 марта 2018, 10:32
0
а можно подробностей? что за движок, как прикрепили к жалюзи?
+
avatar
0
Вроде 28BYJ-48. Обычный шаговик
У меня есть такой, в жалюзи не лезет
+
avatar
  • Berebes
  • 25 марта 2018, 11:50
0
Я крепил снаружи, загнув крепежные усики, дополнительно нужно будет приклеить.
+
avatar
  • Berebes
  • 25 марта 2018, 11:46
0
Самый простой китайский шаговик с драйвером. Типа такого
Загнул ушки для крепления и вставил с торца жалюзи (внутрь не влезло), но за счет загнутых ушек держится.
Для соединения с валом жалюзи выточил муфты (а оказывается можно купить).
Видео youtu.be/N6GRJvhg8Bg
Но если жалюзи уже открыты до конца, то просто щелкает. Может и хорошо, не порвет жалюзи, но может и сдохнет. Пока всё в кучу так и не собрал, поэтому не скажу сколько они проработают.
+
avatar
  • sim31r
  • 31 марта 2018, 16:31
0
И правда дешевый, я думал самый дешевый Nema17 для 3D принтера, 10$ но он мощный и надежный, работает годами в самых суровых условиях.
С шаговым мотором ничего не будет, если механика выдержала, щелкать для него нормально ))
+
avatar
0
Движек довольно слабоват. Не переделывали на удвоение тяги?
+
avatar
  • Berebes
  • 25 марта 2018, 17:13
0
Нет, а как?
+
avatar
+2
28BYJ-48 униполярный. Его легко переделать в биполярный. Сразу возрастает крутящий момент почти в 2 раза, ну и придется сменить драйвер например на L298N.
+
avatar
  • Berebes
  • 25 марта 2018, 19:38
0
Спасибо, буду знать.
+
avatar
  • XBayer
  • 25 марта 2018, 11:14
0
Тема очень интересная и полезная тема.
В основном интересуют наработки по аппаратной части. По выбору контроллера и логике работы каждый решает свои задачи согласно возможностям. Кто-то пойдет по пути упрощения, кто-то наоборот.
Для себя вижу так: два фотодатчика (наружный и внутренний) и модуль RTC.
Режим День: в светлое время (два условия: время от RTC + фотодатчик) жалюзи открывается, и в темное время закрывается когда в комнате включено освещение. При наличии только одного фотодатчика засветка его фонариком или фарами будет открывать жалюзи. Можно, конечно, просто ввести расписание по рассвету/закату, но так не интересно :)
Режим Ночь: закрытые жалюзи при внутреннем освещении, но может захотеться посмотреть на ночной город за окном, так что открывание по команде.
+
avatar
  • Berebes
  • 25 марта 2018, 11:49
0
У меня такое же желание, но нужно еще учесть свет от фар (повторюсь у нас первый этаж), а так же яркое солнце днем в окно, когда тоже хотелось бы закрыть жалюзи, но по датчикам оно будет хотеть открыться. Если реализуете, дайте знать.
+
avatar
0
Чё тут думать? По таймеру сделайте, точнее по времени суток. Или два датчика освещённости, один — направленный в небо, грубо говоря, другой — вид прямо из окна. Алгоритм работы по двум датчикам света расписать надо?
+
avatar
  • Berebes
  • 01 апреля 2018, 14:18
+1
Распишите пожалуйчта, почему и нет.
+
avatar
  • XBayer
  • 25 марта 2018, 12:35
0
VictorSvetogor, Думаю, вы со временем придете к тому, что стоит продублировать открывание аппаратными кнопками на коробке управления на случай проблем с WiFi. Правда в этом случае придется немного переписать код.
+
avatar
+1
Ну мне кажется что жалюзи не столь критичная система, чтобы не могла подождать пока починится Wi-Fi :) Ну и Wi-Fi у меня сделан на микротикие — не падал еще ни разу. На данный момент более 40 устройств в сети Wi-Fi (2.4 и 5), все работает как часы.
+
avatar
  • XBayer
  • 26 марта 2018, 12:44
0
Да, вы правы, не столь критично. Я просто привык все дублировать на всякий случай. И плюс за Микротик :) Отлично работает, а при правильной настройке альтернатив по факторам функционал-цена-качество просто нет.
+
avatar
  • WHALE
  • 25 марта 2018, 13:05
+1
Можно прицепить датчик движения и закрывать жалюзи на некоторое время если под окнам кто то шатается днем )
+
avatar
0
Простор для фантазии безграничен, когда все интегрировано в умный дом :)
Я вот недавно со скуки сделал включение подсветки над умывальником, когда сенсорный смеситель начинает лить водичку.
Жене сказал что магия управляет :)
+
avatar
0
Набрал именно этот такой комплект, только датчик угла поворота немного другой. И смотрю на эту кучу железа уже 2й год. Может теперь сдвинусть? :-)
+
avatar
0
самое время. весна, солнце светит, надо защищаться :)
+
avatar
0
Ну как скатать… Не нравится устаревший драйвер от Sanyo L293D, лучше взять Toshiba TB6612FNG и биполярные двигатели. Это все покупать. Сейчас в приоритетах система автоматической регулировки мягкости вилки, самодельный навигатор и радио кнопка ППТ для рации. Придется выставлять приоритеты.
+
avatar
  • kayuda
  • 25 марта 2018, 21:06
0
Отличный обзор. Много труда вложено в проект.
+
avatar
0
Жду второй части!
+
avatar
0
Написал уже почти. Но что-от пустовато выходит без описания самого сервера автоматизациии. А описывать его никакого времени не хватит.
Может кто что-то хочет услышать из того что интересено или непонятно было по первой части — добавлю.
+
avatar
  • XBayer
  • 27 марта 2018, 13:11
+1
Интересует потребление тока всей системой в статике и в динамике с движком. Отдельно движок, если замеряли.
Видел когда-то реализацию подобного проекта с автономным питанием от солнечной панели.
Кстати, датчик вибрации можно вместе с сенсором на стекло поставить для периметра охраны.

И еще, функционал поднятия жалюзи (не открывания ламелей) у вас остался цел?
+
avatar
0
функционал поднятия жалюзей цел, это там отдельная система не связанная с поворотом вообще никак.
потребление померяю сегодня, отпишусь
+
avatar
  • 1gor90
  • 28 марта 2018, 10:58
0
Крепление движка из чего сделано? За обзор плюсую, за iobroker тоже).
+
avatar
+1
валялся кусок пластика, тощиной мм4-5, из него еще таблички всякие делают. не помню откуда он у меня. режется острым ножом без проблем.
+
avatar
  • tralva
  • 31 марта 2018, 20:36
0
Тоже давно уже мысли такие крутятся… Но я думал проще. Двигатель и релюшка с пультом, ну можно ещё концевики поставить.
А если автоматизировать :-), то реле с датчиком освещения.
+
avatar
0
у меня была изначально идея подключения к умному дому. так что проще — это не наши методы :)
+
avatar
  • HEPBoff
  • 01 апреля 2018, 09:38
+1
Лучше рулонные шторы с направляющими, жалюзи только пыль собирают
+
avatar
0
Жалюзи лучше вертикальные и механизм управления, так называемый solar tracker. Тогда можно автоматом не только приглушать свет, но и оставлять в комнате максимальную освещённость но при этом избежать прямого солнечного света.
+
avatar
0
а у меня горизонтальные. что тогда?
+
avatar
  • sim31r
  • 02 апреля 2018, 00:45
0
И можно только на половину закрывать, обычно этого достаточно. Смотрю у многих верхняя половина прикрыта только.
+
avatar
0
это ты соседям в окне расскажи
+
avatar
0
рулоные тоже дай бог пыль собирают. только их потом постирать не так просто как гор. жалюзи почистить.
жена рах в полгода стирает римские шторы, так их хоть легче постирать
+
avatar
0
Один вопрос, почему не серва? Зачем городить мотор, цеплять резистор? Я лет пять-семь назад делал тоже самое, но на сервоприводе, на каком-то форуме выкладывал даже. Сейчас не припомню, немножко выздоровлю дам ссылку.
+
avatar
0
найди серву которая влезет внутрь механизма жалюзей за вменяемую цену и с достаточной надежностью (не с пластиковыми шестернями). я искал, но не нашел.
+
avatar
0
подскажите, а что за софт на последнем скриншоте?
+
avatar
  • 1gor90
  • 23 мая 2018, 12:58
+1
Не ТС, но подскажу — это iobroker.
+
avatar
  • AndryG
  • 03 июля 2018, 18:07
0
Отверстие в датчике положения диаметром 4 мм, а двигателя вал три.
Опишите, пжлст, подробней, как вы его там закрепили.
+
avatar
0
Синяя изолента наше всё :) Узенькая полосочка вокруг вала двигателя, и сенсор становится почти без люфта.
+
avatar
  • AndryG
  • 13 августа 2018, 22:32
0
Вон оно что :)
А я надумал датчик оборота конструктивно отделить от двигателя и надевать его на ось жалюзи, которая именно 4 мм. Заодно и угол датчика поворота устанавливать, чтобы мертвая зона не попала в рабочие углы.
+
avatar
0
Молодец! :) Спасибо за опыт!
Умный дом это хорошо. Но только если он уже есть или строится.
А если нет, то как по мне движка со стопами на концах траектории и переключателя «закрыть-открыть» хватит :)
Я за день могу несколько раз менять положение жалюзи как угол так и % закрытия окна.
И независимо от дня и солнца. То слепит (меняю угол), то печет (закрываю с отражающим углом) то ночью на луну с кровати обозревать охота… в общем ардуина повеситься все мои желания исполнять :), а «умного дома» пока нет.
Вообще больше не буду покупать жалюзи — отстой! Лучше римские шторы (стираются и дешевы), и окна с IR отражением.
А жалюзи даже помыть проблема (мои почти не снимаются, а на окне — грязь развозить). А чуть зацепил — помял — не выровнять — плати за ремонт…
Но пока висят воспользуюсь Вашим проектом. Только переделаю попроще под себя. :)
Спасибо!
+
avatar
0
Тут такое дело, начнешь заниматься умным домом — и уже не остановиться :)
Римские шторы классная штука. Но как актуатор туда приделать — пока открытый вопрос. Уж больно тяжело таскать всю конструкцию вверх, Тут нужен солидный движок с редуктором.
+
avatar
  • linelone
  • 27 февраля 2020, 10:52
0
Решил повторить проект, опыт по сбору девайсов на проекте Макса есть.
Не компилится код в Code designer, пишет ошибки, а железки все уже собрал.
Интересна вторая часть, Mqtt и интеграция.
+
avatar
  • VaniliN
  • 29 марта 2020, 18:08
0
доброе время суток ребята!!! повторил я проект в программировании только начал разбираться все получилось но только чото не пойму как в этой прошивке смотреть показания которые снимают датчики для регулировки и в Mqtt у меня топики не пойму где их можно отрегулировать или отредактировать а то начинаю редактировать параметры во вкладке Blind options параметры то у меня двигатель постоянно крутится то стоит то покрутится и станет а при закрытии датчика 2561 назад не возвращается, тоже интересует будет ли вторая часть видео?