Привет, Хабр!

Недавно случайно в мои руки попали два дешевых IoT-модуля от одного китайского производителя, которые были куплены в сети DNS. Раз попали в руки, нужно их использовать. Вот только есть одна проблема: все подобные устройства работают через облачные сервисы. В своей домашней автоматизации я придерживаюсь жёсткого правила — никаких облачных сервисов в моём умном доме! Поэтому достаём из ящика программатор с паяльником и за дело! А что из этого вышло, читайте далее.

❯ Начало

Пока я гулял по DNS, мне на глаза попались модули умного дома HIPER IoT SM-01 и SM-02, ив голове мелькнула мысль: а почему бы не использовать их в моем новом умном доме? Несмотря на то что я в основном использую IoT-устройства, спроектированные и собранные самостоятельно, на тот момент я был ограничен в производственных и временных ресурсах. Однако у готовых решений, подобных этим модулям, есть серьезный недостаток: они, как правило, работают через собственные облачные сервисы, что в наших реалиях может значительно снижать надежность работы умного дома. Поэтому передо мной встала задача: взять готовое решение и адаптировать его под свои нужды, избавившись от «слабого звена» системы. Собственно, об этом и пойдет речь ниже.

❯ Вскрытие покажет

И, как всегда, чтобы узнать, как это работает, устройство нужно разобрать. Чем мы сейчас и займёмся. Начнем с внешнего вида модуля:

Модуль SM-01
Модуль SM-01

Модули SM-01 и SM-02 выполнены в «классическом» корпусе китайских Wi-Fi реле. Ниже мы можем наблюдать внутренности одного из модулей.

Модуль SM-01
Модуль SM-01

И вид разводки дорожек печатной платы:

Разводка дорожек печатной платы модуля SM-01
Разводка дорожек печатной платы модуля SM-01

Плата выполнена неплохо. В качестве системы питания используется импульсный регулятор напряжения, поэтому модуль не имеет гальванической развязки с сетью. Это важно учитывать при подключении внешних элементов управления (выключателей или кнопок) — необходимо позаботиться об их изоляции. Для коммутации нагрузки применяется 16-амперное реле. В качестве «мозга» устройства я надеялся увидеть SoC ESP8266, но мои надежды не оправдались. В модуле установлена субплата с маркировкой CB2S на базе микроконтроллера BK7231N:

Субплата управления модулем
Субплата управления модулем

К сожалению, я не работал с данным микроконтроллером, и времени разбираться с ним особо не было. К счастью, в моих предыдущих проектах я уже использовал полностью совместимый по выводам модуль ESP-02S на базе ESP8285. Он идеально подходит для замены штатной субплаты CB2S:

ESP-02S
ESP-02S

Его и будем использовать для наших целей.

❯ Немного реверс-инженеринга

Чтобы двигаться дальше, первым делом нужно разобраться с распиновкой родной платы CB2S. Берем мультиметр в руки и вызваниваем цепи выводов. В результаты прозвонки вы можете видеть в моих технических «зарисовках».

Назначение выводов модуля микроконтроллера SM-01
Назначение выводов модуля микроконтроллера SM-01

и

Назначение выводов модуля микроконтроллера SM-02
Назначение выводов модуля микроконтроллера SM-02

Теперь у есть вся необходимая информация, двигаемся дальше.

❯ Выпаиваем, прошиваем, впаиваем...

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

Отпайка субплаты CB2S
Отпайка субплаты CB2S

Отложим родные модули CB2S на будущее, а для их замены возьмем новые ESP-02S, которые перед впайкой необходимо прошить. Первоначальная прошивка выполняется «классическим» способом с использованием программатора.

Подключение ESP-02S для прошивки
Подключение ESP-02S для прошивки

Прошиваем по стандартной схеме: подключаем программатор к выводам TX, RX, GPIO0 и RST модуля. И после успешной прошивки впаиваем наш новый ESP-02S взамен CB2S.

ESP-02S вместо CB2S
ESP-02S вместо CB2S

Ну и раз я уже залез по локти в схему, то почему бы мне не добавить и функцию мониторинга напряжения сети. Для этого мы можем задействовать свободный пин аналогового входа микроконтроллера (ADC), добавив в схему модуля простой резисторный делитель напряжения. Реализация показана ниже.

Размещение на плате резисторного делителя напряжения
Размещение на плате резисторного делителя напряжения

Для общего понимания, ниже показана схема делителя напряжения.

Схема делителя напряжения
Схема делителя напряжения

И во избежание преждевременной аннигиляции платы постараемся надёжно зафиксировать резисторы. У меня это реализовано с помощью термоклея.

❯ Микро-ПО модуля и интеграция в умный дом

▨ Прошивка

И как бы мастерски мы ни орудовали паяльником, всё же основная наша задумка реализуется в микро-ПО (прошивке). Поэтому откладываем паяльник в сторону и берёмся за клавиатуру.

И как обычно, микро-ПО для данных модулей реализовано на базе собственной прошивки для IoT-устройств. Первичная конфигурация устройства выполняется с помощью CaptivePortal (в предыдущих статьях я описывал более подробно первичную конфигурацию своих устройств). Так как концепция своих IoT-устройств подразумевает универсальное использование даже в тех случаях, когда нет сети и умного дома, для удобства пользователя вся конфигурация и управление устройством выполняются через веб-интерфейс. Ниже, для общего понимания, показаны несколько скриншотов страниц конфигурации.

Главная страница модуля
Главная страница модуля

Для защиты устройства от конфигурации и управления «посторонними» вход выполняется с помощью пароля. Пароль по умолчанию — admin, позже его можно изменить на соответствующей странице.

Страница изменения пароля доступа к устройству
Страница изменения пароля доступа к устройству

И для для того, чтобы устройство могло работать в составе «Умного дома» реализована возможность его подключения по протоколу MQTT. Ниже показана страница конфигурации подключения по MQTT.

Страница конфигурации подключения по MQTT протоколу
Страница конфигурации подключения по MQTT протоколу

▨ Интеграция в умный дом

Как я уже говорил выше, для интеграции устройства в системы умного дома используется протокол MQTT. А благодаря механизму MQTT Discovery интеграция значительно упрощается за счёт автоматического создания конфигурации устройства. 

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

Панель управления устройствами MQTT
Панель управления устройствами MQTT

Ниже показана панель управления одним из переделанных модулей.

Управление модулем из Home Assistant
Управление модулем из Home Assistant

❯ Аппаратные трудности

Куда же без них. В процессе отладки модуля HIPER IoT SM-02 после замены и прошивки обнаружил неприятную вещь: входы для использования внешнего выключателя собирали на себя сетевой «шум», что приводило к ложному срабатыванию реле, чего не наблюдалось в HIPER IoT SM-01. Изначально я подумал о проблеме в коде, что отняло у меня пару часов на эксперименты с прошивкой, но, когда все мои варианты закончились и в голове начала прокручиваться фраза про лыжи и асфальт, я решил перейти к аппаратным экспериментам. В итоге проблему удалось решить двумя конденсаторами по 0,1 мкФ. Ниже фото с моим решением.

Параллельное подключение конденсатора входу в SM-02
Параллельное подключение конденсатора входу в SM-02

❯ Итоги

В итоге это был интересный опыт, когда не можешь собрать своё (вдали от своей мастерской), но можешь переделать чужое. В данный момент модули установлены и успешно трудятся в составе умного дома. Теперь имеем полный контроль над модулями – нет облаков, а скорость реакции на команды моментальная и небольшим бонусом добавлен мониторинг сетевого напряжения. Ниже несколько фотографий с установкой модулей.

Установка модуля в монтажную коробку выключателя
Установка модуля в монтажную коробку
Установка модуля в монтажную коробку

После установки выключателя:

Установка выключателя сверху
Установка выключателя сверху

Итоговый вариант:

Модуль спрятан под выключателем
Модуль спрятан под выключателем

На этой позитивной ноте можно и заканчивать статью. Спасибо за ваше внимание! И как всегда, делюсь с вами исходниками по ссылкам ниже. Всем добра, успехов и интересных проектов!

Ссылки к статье:


Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале 

Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.