Очередной раз закупал всякую мелочевку на AliExpress и обратил внимание на маленькие wifi-реле.
При своей цене в 150-200р они имели завершенный вид. Корпус, клеммники, приложение и коммутация хорошего тока (до 16 А). Стало интересно посмотреть, что это и как удалось реализовать такое чудо.
Купил у трех разных продавцов для сравнения.
Разные или одинаковые?
Как видно, они как братья-близнецы. Назначение выводов один в один.
По типу корпуса можно выделить два вида. На защелках и на штифтах.
Начинка тоже различается. В тех, что на защелках, платы черные и построены на модуле LN-02 (LN882H).
На штифтах платы зеленые и построены на SM-028_v1.3 (BL602), а еще имеют приятный бонус в виде реле на 20А при заявленных 16А:
Еще пара фото модуля отдельно:
Схемотехника в обоих случаях простейшая. Модуль, к нему кнопка, светодиод, транзистор с диодом для управления реле и клеммники.
Из интересного можно отметить импульсный понижающий преобразователь. Что в нем такого? Да просто обычно используют схему на гасящем конденсаторе, а здесь на дросселе, достаточно редкая схемотехника. Прогресс, однако!
Но есть и то, о чем стоит предупредить: вход S2 не имеет гальванической развязки и выведет модуль из строя, если на S2 относительно S1 окажется больше 3.3В!
А все из-за того, что S2 идет напрямую в модуль. Без оптопары, без супрессора, да даже без конденсатора. Потому, если провод до выключателя длинный или с плохой изоляцией, то не удивляйтесь, что реле периодически само по себе включается или щелкает, а комната превращается в танцпол со стробоскопическим эффектом :).
Прошивка
Посмотрели, потыкали. Работает. Круто. Но на смартфоне появилось сразу два приложения: CozyLive и eWeLink.
Управлять зоопарком тоже можно, но хочется однообразия. Решил поискать прошивки от энтузиастов и нашел!
Для черных плат с LN882 и зеленых с BL602. По ссылкам есть и материалы и инструкции. Постараюсь сильно не повторять, а описать моменты, которые были слабо освещены в материалах выше.
Для питания модулей требуется 3.3В с хорошим током. При питании от USB-UART переходника, который требуется для перепрошивки, могут быть сбои или вовсе не получится запустить процесс.
В статье для LN882 модуль выпаивают и подключают через внешний стабилизатор на 3.3В. Но это не обязательно! Ведь на плате уже есть стабилизатор AMS1117-3.3.
Просто подаем на конденсатор БП пяти вольтовой линии 5В с USB. RX, TX тоже не заняты. После прошивки можем даже реле пощелкать без подключения к сети 220В для проверки.
Ножку boot нужно подключить к GND для перехода в режим программирования. После прошивки перемычку нужно будет удалить и перезагрузить по питанию.
К BL602 подпаяться сложнее. Чтобы рассмотреть куда подпаиваться пришлось его выпаять.
Питание 3.3В, а не 5. И BT (boot) нужно подключать к 3.3В через резистор 10 кОм.
Для проверки необходимо ли выпаивать запаял модуль обратно и прошивал на плате. Оказалось, можно не выпаивать. Разве что сложнее подпаяться.
USB-UART подойдет буквально любой. Я использовал CH340. Даже если есть только arduino nano, то и через нее можно.
С ссылки выше (черных плат с LN882) нужно найти и скачать архив с LN882H_CMD_Tool. А с другой (зеленых с BL602) скачать прошивку с соответствующим именем LN882H_*.bin.
Прошиваем:
- Подключаем переходник
- Смотрим в диспетчере устройств назначенный номер порта, пусть будет COM25
- Закидываем файлы из архива в папку на диске и в нее же кладем OpenLN882H_*.bin, пусть будет OpenLN882H_1.17.425.bin
- Открываем командную строку и выполняем: LN882H_CMD_Tool.exe COM25 download flash 2000000 0x0 OpenLN882H_1.17.425.bin
- После прошивки отключаем переходник, отпаиваем перемычку на boot.
Для BL602 немного иначе. Прошивка выполняется программой BLDevCube из папки OpenBL602\tools\flash_tool.
В принципе это все. Остается только выбрать профиль устройства в его настройках. А для этого:
Подключаемся к точке доступа wifi-реле:
Откроется web-интерфейс настройки устройства:
Переходим в config:
Начинаем с настройки сети:
Указываем название и пароль домашнего wifi:
Сохраняем:
Теперь переходим к настройке пинов:
Смотрим на плату и сопоставляем пины, нашли профиль, копируем таблицу и сохраняем конфиг:
Не нашли подходящего профиля? Тогда составляем сами!
Под зеленую плату я не нашел подходящего профиля и составил свой конфиг. Чтобы применить его скопируйте мой скрипт и примените его на своей BL602.
Скрипт настройки BL602:
ClearIO // clear old GPIO/channels
StartupCommand "" // clear STARTUP
stopDriver * // kill drivers
backlog setPinRole 3 TglChanOnTgl; setPinChannel 3 0
backlog setPinRole 14 LED_n; setPinChannel 14 0
backlog setPinRole 20 Btn; setPinChannel 20 0
backlog setPinRole 21 Rel; setPinChannel 21 0
Flags 1024
Имейте ввиду, что если плата на BL602 отличается от той, что на фото, то скрипт может выставить неверный конфиг. Придется смотреть по плате куда какой идет пин и составлять собственный конфиг.
И, если не жалко, поделитесь своим полученным конфигом в комментариях или свяжитесь со мной, и я добавлю его в статью, чтобы другие тоже смогли им воспользоваться!
Маленькая заметка о плате с BL602
После прошивки прикосновение к S2 стало приводить к ложному срабатыванию реле. Недолго думая, добавил конденсатор между S1 и S2. Ложные срабатывания исчезли. Возможно где-то можно настроить гистерезис выключателя для подавления дребезга, и проблема ушла бы, но припаять оказалось быстрее, чем найти как это решить через ПО.
Заключение
После перепрошивки остается функциональность управления реле с помощью переключателя (S1-S2) и кнопкой на корпусе.
Утратили возможность управлять из любой точки мира из приложения, но это поправимо. На крайний случай можно управлять, подключаясь к домашней сети через vpn.
Получили возможность управлять через web-интерфейс, или url-командами вида:
http://192.168.5.77/cm?cmnd=Power0%20On
http://192.168.5.77/cm?cmnd=Power0%20Off
а также через MQTT, например, организовав независимый от интернета и с быстрым откликом умный дом с Home Assistant.
Я долго откладывал написание этой статьи из-за большого объема и нехватки времени, даже частично подзабыл детали. Если где-то что-то упустил или изложил неверно, то буду рад вашим исправлениям.