Предыстория
Довольно часто в наших домах стали появляться люстры, управляемые с использованием беспроводного пульта, который работает на частоте 433\315 mhz.
В моей квартире первой появилась такая люстра в комнате. Позже, когда наше семейство пополнилось двумя детьми, я был вытеснен «жить» на кухню, и беспроводного управления светом в моем новом жилище стало катастрофически не хватать. В связи с чем с небезызвестного всем сайта был заказан 4-х канальный беспроводной модуль.
И начался процесс «тюнинга» кухонной люстры. Для создания режима ночника была наклеена светодиодная лента и повешена на первый канал блока.
Остальные каналы блока используются для управления штатными лампами люстры. Один канал, правда, остался свободным. Блок питания для ленты уместился в чаше люстры, а вот запихнуть туда сам блок не получилось, пришлось вынести его наружу.
Жить стало легче. Но не знаю как у остальных, но у меня эти самые пульты стали постоянно теряться. Пришлось что-то с этим делать.
Железная часть
На базе известного микроконтроллера esp8266, с использованием прошивки с сайта homes-smart.ru мной был собран простой шлюз, а именно к модулю был подключен передатчик с частотой управления люстрами. С помощью Arduino я снял коды кнопок пультов «комнаты» и «кухни».
Сам модуль с ESP распаян на самодельном адаптере, с обратной стороны которого установлен стабилизатор напряжения 3,3 вольта и небольшой конденсатор, чтобы не заботиться о питании модуля. ESP соединяется с передатчиком через переходной адаптер.
Программная часть
Все бы хорошо, но возникла проблема, у используемой мной прошивки не было как такого пользовательского web-интерфейса. Поэтому выполнять команды можно было только через http запрос.
Для решения этой проблемы были написаны клиенты под windows phone и android (находится в состоянии альфа версии). Для написания приложения под windows использовал Visual Studio 2015 RС. Это было мое первое знакомство с программированием под эту платформу. Хочу заметить, что в сравнение с программированием для Android эта платформа не вызвала никаких трудностей. Все работало сразу из коробки.
Дальше пришло время клиента под Android и тут начались трудности. Ранее я пробовал программировать для Android в среде Eclipse и вроде у меня все получалось. Но повторно установить эту среду у меня почему то получилось. Обратил внимание на то, что в новой Visual Studio появилась возможность создания проектов для Android, но и это направление у меня не пошло. В итоге был выбран более легкий путь с использованием замечательного ресурса appinventor.mit.edu. Быстренько накидал проект, залил его в телефон, и все заработало.
Однако довести его до конца так и не успел. Детишки не дают и шага без них шагнуть, поэтому личного времени совсем нет.
P.S. Это моя первая статья на Хабре, сильно не судите, постарался как можно полно описать, насколько это позволили моя грамотность и мои дети, не дававшие покою на протяжении всего повествования. Так что на этом я заканчиваю. Пора идти развлекать детей.
Надеюсь моя идея будет кому то полезна.
Упомянутые и используемые материалы
Прошивка: http://homes-smart.ru/
Клиент под Windows Phone: yadi.sk/d/53y6SsmljZGpm
Клиент под Android (не доделан до конца): ai2.appinventor.mit.edu/#6244931076096000
Комментарии (30)
spc
07.10.2015 13:14Мои пять копеек: для Android очень хороша получается связка Tasker + Zoom. Суть в том, что (кроме прочего) пульт можно сделать виджетом, и не нужно будет ждать, пока он запустится. Хотя если это некритично, можно и аппом оставить, конечно.
lcf2003
07.10.2015 14:15Т.е. с помощью Zoom'a мы делаем виджет-кнопку, а с помощью Tasker'a настраиваем обработчик ее нажатия? Или Zoom сам может создать обработчик с http запросом?
doom369
07.10.2015 15:12spc
07.10.2015 15:19Это кому как. Во-первых, Tasker умеет не только HTTP (в свое время, например, я с ним и авторегулировку яркости делал — у телефона не было такой опции). Во-вторых, для работы Tasker не нужно облако. В третьих, никаких дополнительных библиотек для Arduino не нужно.
Ну а по красоте, Blynk, конечно, впереди — кто спорит.doom369
07.10.2015 15:34Tasker умеет не только HTTP
Блинк тоже =). Вернее блинк не использует шттп вообще. Tasker кста тоже интегрируется с Блинком если надо. Но то я так… на всякий случай, если Вы не видели, может пригодится.
Кстати директ коннект там тоже скоро будет (без облака).
Rumlin
07.10.2015 13:58А почему бы не выкинуть «4-х канальный беспроводной модуль», и не встроить esp8266 с электронными реле?
Судя по фото у него GPIO хватит на намного большее количество каналов.
lcf2003
07.10.2015 14:19+2Потому, что на момент «тюнинга» люстры ESP был (если вообще был) недостаточно распространен. И по комплектующим готовый модуль стоил намного дешевле (около 350 рублей за блок с реле + пульт) чем ESP+БП+Реле+какой то пульт
Rumlin
07.10.2015 14:57Если более года назад, то вообще не был.
Идея с светодиодной лентой очень понравилась, может где-нибудь применю отраженный свет.lcf2003
07.10.2015 15:25+1Да более года. Лента мне тоже понравилось, Первоначально делал просто для того чтобы было (валялась лента + был свободный канал на релюшке) Сейчас не представляю как теперь без нее. Свет получился не ярким, но в тоже время достаточным для выполнения манипуляций на кухне не требующих достаточного освещения. Свет распространяется равномерно, светодиодов не видно, хотя при толщине стенки на которую она наклеена, думал будет видно. Диоды на ленте которые 5050 по-моему. Три куска сантиметров по 30.
divanikus
07.10.2015 17:04А можно подробнее про передатчик управления люстрами? Хочу подобное на основе малинки сделать. Сами люстры с пультами есть, а вот как ими рулить — не понятно.
lcf2003
08.10.2015 22:11Передатчик обычный дешевый с всем известного китайского магазина.
Единственное надо знать на какой частоте у вас люстры работают. вариантов два либо 315 mhz (как оказалось у меня) или 433 mhz
У передатчика три провода: плюс, минус и сигнал.
Для снятия кода кнопок с пультов люст проще всего использовать приемник из комплекта (они на китае помоему всегда комплектом продаются, ну или почти всегда) подключенный к Arduino. На Arduino использовать библиотеку RcSwitch она самая удобная, как мне показалась, хотя могу ошибаться. В примерах к библиотеке есть код, с помощью которого и можно получить коды.
К примеру у меня получились следующие коды:
Кухня:
а — 1070018
b — 1069872
c — 1069833
d — 1069824
off — 1069835
Комната:
a — 800196
b — 800047
c — 800018
d — 800019
off — 800244
В прошивке, которая упоминается в статье, этот алгоритм уже реализован. Т.е. достаточно собрать прошивку (через конструктор в личном кабинете) залить ее, подключить передатчик к любому свободному порту и управлять передатчиком через http запрос. В конструкторе прошивки указан его формат. Единственное, что хочу добавить в строке http запроса мне пришлось указать длину len=24 без этой переменной не правильно код работал.
muzhig
07.10.2015 18:02Большай просьба описать поподробнее, как вы сняли коды кнопок с пульта? (у меня другая проблема: пультов этих уже четыре штуки, каждый раз вспоминать, который пульт для чего слегка достало, хочу сделать единый пульт на все люстры)
ZigFisher
07.10.2015 18:50Я раньше коды кнопок радио- и ИК-пультов снимал при помощи Ардуино, загружая скетчи.
Сейчас модуль ESP8266 с прошивкой HomesSmart для этого использую, удобно и всё из коробки сразу.divanikus
07.10.2015 19:52А можно подробно описать весь процесс? Для начинающих, так сказать.
ZigFisher
07.10.2015 20:40+11. Берёте ESP8266, любой вариант. Для не желающих паять подойдёт плата NodeMCU любая, желтая или чёрная
2. Получаете аккаунт на HomeSmart-е
3. Заходите в конструктор и выбираете галочками «RCswitch приёмник 433/315», «RCswitch передатчик 433/315» и т.д. по вкусу.
4. Нажимаете кнопку собрать прошивку
5. Скачиваете себе файл, прошиваете по Windows или Linux (у автора расписано), там всё просто
6. Подключаете приёмник 433 и передатчик к плате. В случае с NodeMCU можно без пайки, проводками.
7. Подаёте питание, настраиваете и можете как коды читать так и отправлять команды на розетки, люстры и т.д.
То-же самое и даже одновременно с 433 RF можно проделать с приёмником и передатчиком ИК.
А еще можно сделать, что-бы оно само команды на включение/выключение люстры давало при присутствии человека, или включало свет по расписанию, или по датчику — там опций вагон и маленькая тележка. Остальное читайте на его страницах, описаниях, в конструкторе и на форуме.
Автор молодчага, но документации никогда не бывает много, потому и помогаем чем можем.divanikus
08.10.2015 00:16Я так понимаю, что ESP8266 это микроконтроллер с WiFi. А к нему уже подключается приемник/передатчик 433/315. Можно поподробнее об этом устройстве?
lcf2003
08.10.2015 22:38А разве ESP само, к примеру по расписанию или по датчику движения может выполнить команду на исполнение скрипта RCswitch? Может я конечно упустил историю изменения прошивки, но ранее такого не было
ZigFisher
08.10.2015 23:23Да, умеет делать действия по расписанию, по состоянию датчиков и т.д.
Так-же можно написать модуль свой, со своим кодом, если знать язык Си ;)
А вот ссылка на новый конструктор, он, правда, пока ещё не работает, но внешний вид внушает доверие ;) и не стыдно показать интерфейс и список возможностей.
Но это не все возможности, там еще куча в разделе, на старом (текущем) конструктореlcf2003
08.10.2015 23:45все таки еще раз уточню. Т.е. он может сам по событию выполнить команду RCswitch?
MaksMS
09.10.2015 06:18Нет, не может, но добавить эту опцию вполне реально. Проблема в том, что тут нет обратной связи и нет конкретной команды вкл/выкл у этого радиопротокола. Можно только менять состояние на противоположное.
lcf2003
09.10.2015 08:53Да, связи нет. Но на не ответственные участки вполне можно использовать.
К примеру включение реле не только с родного пульта, но и по нажатии кнопки на ЕСП, или еще какому событию кому как удобно.MaksMS
09.10.2015 11:36Ок, будет такая возможность -следите за новостями, будет управляться так же как реализован ремапинг расширителей портов или VGPIO. Кроме RCswitch еще в планах реализовать то же самое для ИК управления. Тогда можно будет «перебрасывать» команду с ИК пульта на радиопульт и наоборот.
ZigFisher
Надо было вам на конкурс работу прислать.
lcf2003
Я хотел, но времени совершенно нет. Даже эта статья получилась очень скудной. Хотел намного больше описать.