Комментарии 11
«Научить» одно устройство передавать данные на разных частотах можно, а вот приемники настроены на фиксированное значение, так что возможно их потребуется несколько.
Я изучал этот вопрос и могу ответственно заявить, что на расстоянии до полуметра приемники — универсальны. Например, 38-килогерцовый прекрасно чувствует 30-40 килогерцовую несущую. Передатчик WiFi->IR можно сделать даже на модуле ESP8266 с прошивкой nodeMCU — скорости ногодрыгания интерпретатора Lua как раз хватает для формирования несущей до 40 килогерц.
Можете порекомендовать какой-нибудь хороший источник, где можно почитать про передатчик WiFi->IR на ESP8266? Можно ли на данном модуле реализовать еще и прием?
Lua или С? Я рассматривал с точки зрения реализации на Lua.
Моя разработка передатчика дальше работающего прототипа не пошла (оказалось, что то, чем я планировал управлять, не годится для разрабатываемого устройства).
Вот такой получится Lua-код Ir-передатчика (протокол NEC):
Протокол NEC очень распространен и про него можно почитать например тут.
Опыты по приему показали, что на Lua вполне можно и приемник сделать, но с пост-декодированием сигнала, то есть сначала сохранить моменты переходов 0->1->0, а затем определить переданные данные.
На С, уверен, задача решается много эффективнее, примеры гуглятся — только выбирай:
site:github.com esp8266 ir remote
И еще, разбираться с протоколами очень удобно используя анализатор «USB Saleae» — это однозначный мастхев )
Моя разработка передатчика дальше работающего прототипа не пошла (оказалось, что то, чем я планировал управлять, не годится для разрабатываемого устройства).
Вот такой получится Lua-код Ir-передатчика (протокол NEC):
return
function( pin, addr, data )
local tone = function( t )
local write = gpio.write
local i = t
while i > 0 do
write(pin, 0)
write(pin, 1)
_ = i * 1 * 1 - 1 - 1 - 1 -- magic delay :)
i = i - 1
end
end
-- prepare
local a = bit.band( addr, 0xff )
-- print( string.format("%x",a) )
local an = bit.band( bit.bnot(addr), 0xff )
-- print( string.format("%x",an) )
local d = bit.band( data, 0xff )
-- print( string.format("%x",d) )
local dn = bit.band( bit.bnot(data), 0xff )
-- print( string.format("%x",dn) )
local m = bit.bor( bit.lshift( dn, 24 ), bit.lshift( d, 16), bit.lshift( an, 8 ), a )
-- print( string.format("%x",m) )
local delay = tmr.delay
local isset = bit.isset
gpio.mode( pin, gpio.OUTPUT )
-- send
tone( 340 ) -- 9000ms*38kHz/1000000
delay( 4325 ); -- 4500mcs - 175mcs (call time)
for i = 0, 31 do
tone( 21 ) -- 9000ms*38kHz/1000000
delay( isset(m, i) and 1515 or 392 ) -- 1685/562mcs one/zero pause - 170mcs (call and cycle time)
end
tone( 21 ) -- 9000ms*38kHz/1000000
end
Протокол NEC очень распространен и про него можно почитать например тут.
Опыты по приему показали, что на Lua вполне можно и приемник сделать, но с пост-декодированием сигнала, то есть сначала сохранить моменты переходов 0->1->0, а затем определить переданные данные.
На С, уверен, задача решается много эффективнее, примеры гуглятся — только выбирай:
site:github.com esp8266 ir remote
И еще, разбираться с протоколами очень удобно используя анализатор «USB Saleae» — это однозначный мастхев )
Я в свое время решил проблему просто купив запасной пульт, добыв из него плату контроллера (без корпса самого пульта она совсем небольшая) и припаяв прямо к нужным контактам-кнопкам на ней линии от микроконтроллера. Фактически МК просто «нажимает» кнопки физического пульта. Получилось быстро и просто, как раз то, что было нужно для weekend project. Да, некошерно и «грязный хак», зато быстро и работает с тех пор безукоризненно.
Как минимум, есть клапаны на горячую воду. Можно управлять «батареей» в ШИМ-режиме.
Что именно Вас интересует про управление отоплением?
Кондиционирование. Наверное самое простое это управление по ИК. Любая команда это отдельный код ИК. Хоть на пульте и есть кнопки увеличения/уменьшения температуры, на самом деле отправляется команда не на увеличение/уменьшение значения температуры, а команда на установку конкретного значения. Таким образом, в принципе, можно избежать неудобства с отсутствием обратной связи, например отправляя команду дважды. Другие способы это внутренние интерфейсы кондиционера и даже ModBUS.
Батареи отопления — существуют термостаты с возможностью их управления как по проводам, так и беспроводные. Мне понравилось беспроводное решение от Danfoss — LC-13. Зимой в квартире при любой температуре за бортом всегда одна и та же температура в комнатах.
Теплые полы — пока присматриваюсь к решению от Heatit.
Котлы отопления — очень много моделей с возможностью внешнего управления.
Есть даже интересное решение для проветривания помещений Aeropac wave, работающее по протоколу z-wave.
А по поводу «моргания лампочками» зря Вы так. Очень удобно при использовании сценариев. Хотя если рассматривать в отрыве от остальных систем умного дома это действительно не так интересно.
Кондиционирование. Наверное самое простое это управление по ИК. Любая команда это отдельный код ИК. Хоть на пульте и есть кнопки увеличения/уменьшения температуры, на самом деле отправляется команда не на увеличение/уменьшение значения температуры, а команда на установку конкретного значения. Таким образом, в принципе, можно избежать неудобства с отсутствием обратной связи, например отправляя команду дважды. Другие способы это внутренние интерфейсы кондиционера и даже ModBUS.
Батареи отопления — существуют термостаты с возможностью их управления как по проводам, так и беспроводные. Мне понравилось беспроводное решение от Danfoss — LC-13. Зимой в квартире при любой температуре за бортом всегда одна и та же температура в комнатах.
Теплые полы — пока присматриваюсь к решению от Heatit.
Котлы отопления — очень много моделей с возможностью внешнего управления.
Есть даже интересное решение для проветривания помещений Aeropac wave, работающее по протоколу z-wave.
А по поводу «моргания лампочками» зря Вы так. Очень удобно при использовании сценариев. Хотя если рассматривать в отрыве от остальных систем умного дома это действительно не так интересно.
Вы описали набор Ваших исполнительных устройств варианты управления которыми я описал выше. Далее необходимо понять, что именно Вы хотите от них в плане автоматизации.
В моем случае существует несколько сценариев управления: включение различных источников света в зависимости от времени дня и ночи при открытии входной двери, сопровождение светом ночью в туалет и обратно, сценарии утреннего пробуждения светом и включения телевизора, информация цветом led- ленты о прогнозе погоды на сегодня, включение или не включение света по датчику движения в зависимости от того кто дома, автоматическое затемнение при просмотре фильма, выключение всего света одной кнопкой, имитация присутствия, выключение основного света при включении одного из спотов.
Это только то, что быстро вспомнилось из реально работающего в квартире. Надо оно вам или нет решает каждый сам для себя. Для меня это очень удобно. Мое общение с выключателями сведено к минимуму.
В моем случае существует несколько сценариев управления: включение различных источников света в зависимости от времени дня и ночи при открытии входной двери, сопровождение светом ночью в туалет и обратно, сценарии утреннего пробуждения светом и включения телевизора, информация цветом led- ленты о прогнозе погоды на сегодня, включение или не включение света по датчику движения в зависимости от того кто дома, автоматическое затемнение при просмотре фильма, выключение всего света одной кнопкой, имитация присутствия, выключение основного света при включении одного из спотов.
Это только то, что быстро вспомнилось из реально работающего в квартире. Надо оно вам или нет решает каждый сам для себя. Для меня это очень удобно. Мое общение с выключателями сведено к минимуму.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Настраиваем ИК управление кондиционером с гаджетов или «Готовь телегу летом»