image

Предыстория


Довольно часто в наших домах стали появляться люстры, управляемые с использованием беспроводного пульта, который работает на частоте 433\315 mhz.

В моей квартире первой появилась такая люстра в комнате. Позже, когда наше семейство пополнилось двумя детьми, я был вытеснен «жить» на кухню, и беспроводного управления светом в моем новом жилище стало катастрофически не хватать. В связи с чем с небезызвестного всем сайта был заказан 4-х канальный беспроводной модуль.

image

И начался процесс «тюнинга» кухонной люстры. Для создания режима ночника была наклеена светодиодная лента и повешена на первый канал блока.

image

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

image

Жить стало легче. Но не знаю как у остальных, но у меня эти самые пульты стали постоянно теряться. Пришлось что-то с этим делать.

Железная часть


На базе известного микроконтроллера esp8266, с использованием прошивки с сайта homes-smart.ru мной был собран простой шлюз, а именно к модулю был подключен передатчик с частотой управления люстрами. С помощью Arduino я снял коды кнопок пультов «комнаты» и «кухни».

image

Сам модуль с ESP распаян на самодельном адаптере, с обратной стороны которого установлен стабилизатор напряжения 3,3 вольта и небольшой конденсатор, чтобы не заботиться о питании модуля. ESP соединяется с передатчиком через переходной адаптер.

Программная часть


Все бы хорошо, но возникла проблема, у используемой мной прошивки не было как такого пользовательского web-интерфейса. Поэтому выполнять команды можно было только через http запрос.

Для решения этой проблемы были написаны клиенты под windows phone и android (находится в состоянии альфа версии). Для написания приложения под windows использовал Visual Studio 2015 RС. Это было мое первое знакомство с программированием под эту платформу. Хочу заметить, что в сравнение с программированием для Android эта платформа не вызвала никаких трудностей. Все работало сразу из коробки.

image image

Дальше пришло время клиента под Android и тут начались трудности. Ранее я пробовал программировать для Android в среде Eclipse и вроде у меня все получалось. Но повторно установить эту среду у меня почему то получилось. Обратил внимание на то, что в новой Visual Studio появилась возможность создания проектов для Android, но и это направление у меня не пошло. В итоге был выбран более легкий путь с использованием замечательного ресурса appinventor.mit.edu. Быстренько накидал проект, залил его в телефон, и все заработало.

image

Однако довести его до конца так и не успел. Детишки не дают и шага без них шагнуть, поэтому личного времени совсем нет.

P.S. Это моя первая статья на Хабре, сильно не судите, постарался как можно полно описать, насколько это позволили моя грамотность и мои дети, не дававшие покою на протяжении всего повествования. Так что на этом я заканчиваю. Пора идти развлекать детей.

Надеюсь моя идея будет кому то полезна.

Упомянутые и используемые материалы

Прошивка: http://homes-smart.ru/
Клиент под Windows Phone: yadi.sk/d/53y6SsmljZGpm
Клиент под Android (не доделан до конца): ai2.appinventor.mit.edu/#6244931076096000

Комментарии (30)


  1. ZigFisher
    07.10.2015 12:47

    Надо было вам на конкурс работу прислать.


    1. lcf2003
      07.10.2015 14:02

      Я хотел, но времени совершенно нет. Даже эта статья получилась очень скудной. Хотел намного больше описать.


  1. spc
    07.10.2015 13:14

    Мои пять копеек: для Android очень хороша получается связка Tasker + Zoom. Суть в том, что (кроме прочего) пульт можно сделать виджетом, и не нужно будет ждать, пока он запустится. Хотя если это некритично, можно и аппом оставить, конечно.


    1. lcf2003
      07.10.2015 14:15

      Т.е. с помощью Zoom'a мы делаем виджет-кнопку, а с помощью Tasker'a настраиваем обработчик ее нажатия? Или Zoom сам может создать обработчик с http запросом?


      1. spc
        07.10.2015 14:30

        Именно первый вариант: Zoom — кнопки, Tasker — обработчик.


        1. lcf2003
          07.10.2015 14:38

          Спасибо, хорошее дополнение, обязательно учту при проектировании следующих проектов, которые как раз сейчас назревают.


    1. doom369
      07.10.2015 15:12

      для Android очень хороша получается связка Tasker + Zoom


      Неее. Blynk лучше.


      1. spc
        07.10.2015 15:19

        Это кому как. Во-первых, Tasker умеет не только HTTP (в свое время, например, я с ним и авторегулировку яркости делал — у телефона не было такой опции). Во-вторых, для работы Tasker не нужно облако. В третьих, никаких дополнительных библиотек для Arduino не нужно.

        Ну а по красоте, Blynk, конечно, впереди — кто спорит.


        1. doom369
          07.10.2015 15:34

          Tasker умеет не только HTTP


          Блинк тоже =). Вернее блинк не использует шттп вообще. Tasker кста тоже интегрируется с Блинком если надо. Но то я так… на всякий случай, если Вы не видели, может пригодится.

          Кстати директ коннект там тоже скоро будет (без облака).


          1. spc
            07.10.2015 15:41

            Blynk у меня, что называется «в уме», но никак не могу понять, куда мне его деть ) Спасибо!


            1. doom369
              07.10.2015 15:46

              Я разработчик Блинка, пиарю как могу =). Если у Вас есть какие-то замечания, то буду рад выслушать.


  1. Rumlin
    07.10.2015 13:58

    А почему бы не выкинуть «4-х канальный беспроводной модуль», и не встроить esp8266 с электронными реле?
    Судя по фото у него GPIO хватит на намного большее количество каналов.
    image


    1. lcf2003
      07.10.2015 14:19
      +2

      Потому, что на момент «тюнинга» люстры ESP был (если вообще был) недостаточно распространен. И по комплектующим готовый модуль стоил намного дешевле (около 350 рублей за блок с реле + пульт) чем ESP+БП+Реле+какой то пульт


      1. Rumlin
        07.10.2015 14:57

        Если более года назад, то вообще не был.
        Идея с светодиодной лентой очень понравилась, может где-нибудь применю отраженный свет.


        1. lcf2003
          07.10.2015 15:25
          +1

          Да более года. Лента мне тоже понравилось, Первоначально делал просто для того чтобы было (валялась лента + был свободный канал на релюшке) Сейчас не представляю как теперь без нее. Свет получился не ярким, но в тоже время достаточным для выполнения манипуляций на кухне не требующих достаточного освещения. Свет распространяется равномерно, светодиодов не видно, хотя при толщине стенки на которую она наклеена, думал будет видно. Диоды на ленте которые 5050 по-моему. Три куска сантиметров по 30.


  1. divanikus
    07.10.2015 17:04

    А можно подробнее про передатчик управления люстрами? Хочу подобное на основе малинки сделать. Сами люстры с пультами есть, а вот как ими рулить — не понятно.


    1. lcf2003
      08.10.2015 22:11

      Передатчик обычный дешевый с всем известного китайского магазина.
      imageЕдинственное надо знать на какой частоте у вас люстры работают. вариантов два либо 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 без этой переменной не правильно код работал.


  1. muzhig
    07.10.2015 18:02

    Большай просьба описать поподробнее, как вы сняли коды кнопок с пульта? (у меня другая проблема: пультов этих уже четыре штуки, каждый раз вспоминать, который пульт для чего слегка достало, хочу сделать единый пульт на все люстры)


    1. ZigFisher
      07.10.2015 18:50

      Я раньше коды кнопок радио- и ИК-пультов снимал при помощи Ардуино, загружая скетчи.
      Сейчас модуль ESP8266 с прошивкой HomesSmart для этого использую, удобно и всё из коробки сразу.


      1. divanikus
        07.10.2015 19:52

        А можно подробно описать весь процесс? Для начинающих, так сказать.


        1. ZigFisher
          07.10.2015 20:40
          +1

          1. Берёте ESP8266, любой вариант. Для не желающих паять подойдёт плата NodeMCU любая, желтая или чёрная
          2. Получаете аккаунт на HomeSmart-е
          3. Заходите в конструктор и выбираете галочками «RCswitch приёмник 433/315», «RCswitch передатчик 433/315» и т.д. по вкусу.
          4. Нажимаете кнопку собрать прошивку
          5. Скачиваете себе файл, прошиваете по Windows или Linux (у автора расписано), там всё просто
          6. Подключаете приёмник 433 и передатчик к плате. В случае с NodeMCU можно без пайки, проводками.
          7. Подаёте питание, настраиваете и можете как коды читать так и отправлять команды на розетки, люстры и т.д.
          То-же самое и даже одновременно с 433 RF можно проделать с приёмником и передатчиком ИК.

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

          Автор молодчага, но документации никогда не бывает много, потому и помогаем чем можем.


          1. divanikus
            08.10.2015 00:16

            Я так понимаю, что ESP8266 это микроконтроллер с WiFi. А к нему уже подключается приемник/передатчик 433/315. Можно поподробнее об этом устройстве?


            1. ZigFisher
              08.10.2015 00:20

              Я выше давал ссылку на проект, там всё можете почитать.
              У меня в блоге то-же есть наработки по этой (и не только) железке.


          1. lcf2003
            08.10.2015 22:38

            А разве ESP само, к примеру по расписанию или по датчику движения может выполнить команду на исполнение скрипта RCswitch? Может я конечно упустил историю изменения прошивки, но ранее такого не было


            1. ZigFisher
              08.10.2015 23:23

              Да, умеет делать действия по расписанию, по состоянию датчиков и т.д.
              Так-же можно написать модуль свой, со своим кодом, если знать язык Си ;)

              А вот ссылка на новый конструктор, он, правда, пока ещё не работает, но внешний вид внушает доверие ;) и не стыдно показать интерфейс и список возможностей.

              Но это не все возможности, там еще куча в разделе, на старом (текущем) конструкторе


              1. lcf2003
                08.10.2015 23:45

                все таки еще раз уточню. Т.е. он может сам по событию выполнить команду RCswitch?


                1. MaksMS
                  09.10.2015 06:18

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


                  1. lcf2003
                    09.10.2015 08:53

                    Да, связи нет. Но на не ответственные участки вполне можно использовать.
                    К примеру включение реле не только с родного пульта, но и по нажатии кнопки на ЕСП, или еще какому событию кому как удобно.


                    1. MaksMS
                      09.10.2015 11:36

                      Ок, будет такая возможность -следите за новостями, будет управляться так же как реализован ремапинг расширителей портов или VGPIO. Кроме RCswitch еще в планах реализовать то же самое для ИК управления. Тогда можно будет «перебрасывать» команду с ИК пульта на радиопульт и наоборот.


                      1. lcf2003
                        09.10.2015 12:32

                        было бы здорово! Давно хотел пробросить ИК сигнал из одной комнаты в другую