Умный дом: беспроводной выключатель
Умные лампочки, умные реле и прочие "умные" устройства в доме — это круто. Но! Как всегда есть это чертово "но". В 3 часа ночи, когда все спят, кричать "Привет, Сири! Включи свет на кухне" не самая хорошая идея. Ну и постоянно тянутся к смартфону для того, что бы что-то включить или выключить тоже. Можно, конечно, понаставить датчиков движения, но и с ними есть нюансы. Так что без выключателей ну никак не обойтись.
Первым естественным порывом было купить выключатель, совместимый с моей системой умного дома (а у меня, напомню, Apple Home). Посмотрел, что есть в продаже. Во-первых, большинство от китайцев и требовали своего приложения которое каким-то хитрым образом что-то там куда-то пробрасывали. Во-вторых, что совсем печально, большинству требовалась подготовленная проводка либо ZigBee шлюз, либо и то и другое. В общем вариант отпал по нескольким причинам.
Второй мыслью (которая приходит опосля) была мысль о покупке вообще любого выключателя и проброска его в Apple Home через HomerBridge. Эта идея снова уперлась в ZigBee хабы и проводку.
Плюнув на всю эту ерунду и пораскинув мозгами (нет, не в том смысле, не по квартире) я вдруг вспомнил, что я же вроде программист. Что нам стоит запилить выключатель самим? Да ничего. Берем радиореле и пилим. Застопорился я тогда на том, что мне жутко лень было печатать нормальную кнопку выключателя. На этом идея была отложена в не очень долгий, но все таки ящик.
И вот, не так давно, искал я что-то на Ozon и решил посмотреть, что там есть в сфере технологий умных выключателей. И нашел классную штуку: полноразмерный выключатель с реле на 433Мгц. И главное, что этот выключатель (сама кнопка) работает от батарейки, а реле подключается к проводам люстры (ну или лампочки). Таким образом специальная проводка для него не нужна.
Сразу уточню: под "специальной проводкой" я имею в виду вывод фазы и нуля на выключатель света. То есть у вас к выключателю должно приходить три провода: фаза от щитка (которая разрывается), фаза на люстру и ноль от щитка. Обычно же стандартная проводка к выключателю это просто два провода: фаза от щитка и она же идет на люстру (разрыв фазы). Нуля там нет.
Собственно, вот что приехало.
Дело осталось за малым: подружить этот выключатель с Apple Home. Естественно, буду для этого использовать ESP32 в связке с Arduino библиотекой HomeSpan. Благо с данной библиотекой я дружу довольно давно и у меня уже есть устройства сделанные на ее основе. Да и опыт "адаптации" радио звонка (тоже на 433) у меня уже имелся. Проблем не ожидалось.
Прежде чем курочить реле заглянул в инструкцию. И там нашел упоминание о том, что к реле можно привязать более чем одну кнопку. Интересно, подумал я, значит кнопки как-то различаются. Ну что ж, пора вскрывать это чудное устройство китайской промышленности. Кнопка меня мало интересует, обычный RF передатчик, работает и хорошо. А вот реле надо бы изучить детально. Благо корпус не заклеен, не запаян да и вообще, открывается элементарно. Вот что я добыл из этой белой коробочки.
В правой части платы видно бестрансформаторный (это надо взять на заметку!) источник питания, собранный на диодном мосте BD1. Какой-то микросхеме U2 (подозреваю, что это стабилизатор на сколько-то там вольт) с маркировкой IVAP302 (не нашел что это такое, кто знает — напишите в комментариях), диодах D2 и D3 и некоторой рассыпухе (конденсаторы, резисторы). Несколько элементов не обозначены и распаяны с обратной стороны платы. В частности: балластный резистор и пара сглаживающих конденсаторов. В общем ничего интересного. Единственное, что меня здесь заинтересовало — это стабилизатор. Так как он определяет напряжение питания всей остальной схемы и, как следствие, варианты согласования ее (схемы) с ESP32. Можно тупо померять выходное напряжение с источника питания, а можно потом это выяснить по косвенным признакам. На втором варианте и остановился, так как мне все равно надо выяснить "протокол" общения кнопки с реле.
В левой части платы расположена сама схема управления реле, состоящая из двух микросхем U4 (наименование затерто) и U3 (маркировка FMD FT60E011A F269RKE), кое-какой рассыпухи, транзистора Q1 и, собственно, самого реле. Маркировка реле: BRD-SS-105LMF. А это говорит о том, что реле пятивольтовое. Что очень хорошо и намекает на то, что схема работает от 5 вольт. Не факт, конечно, что остальное питается от пяти вольт, так как реле включается через транзистор, но это уже что-то. Вряди там будет больше.
Быстрый поиск в Google по FT60E011A дает нам ссылку на Data sheet из которого следует, что это простенький микроконтроллер. На это же указывает и тот факт, что к этой микросхеме (U3) подключены: кнопка, светодиод, база транзистора Q1 (через токоограничивающий резистор R3) и вторая (U4) микросхема. Следовательно, U4 — это RF чип. И принятый сигнал он передает в микроконтроллер. Сам RF чип и его обвязка меня, в данном случае, не интересует, так что описывать что там и как не буду. Там просто кучка конденсаторов в обвязке да антенна.
Резистор Q1 в данной схеме работает как ключ: он позволяет малым током от микроконтроллера управлять относительно большим током обмотки реле. Обычно выходы микроконтроллера рассчитаны на токи в пару десятков миллиампер. А вот само реле потребляет гораздо больший ток (может и до сотен миллиампер доходить). Микроконтроллер просто не сможет выдать такой ток на свои выходы. А если и сможет, то с большой долей вероятности просто сгорит. Для этого и применяют транзисторный ключ. Ну а диод D1 гасит обратный выброс энергии с катушки реле.
Теперь нужно разобраться, что же конкретно RF чип передает в микроконтроллер и как микроконтроллер управляет реле. Заодно и уровни сигналов посмотрю. Пришло время потыкать туда осциллографом.
Прежде чем тыкать щупами осциллографа, надо бы решить проблему с питанием. Не очень хочется лазить в устройстве, которое на прямую питается от 220 без развязки. Решил подать питание сразу после диодного моста от лабораторного блока питания. Завелось от 12 вольт.
Сигнал с RF чипа на МК без команды от кнопки. Иногда проскакивает помеха. Но в основном там тихо.
Если же нажать кнопку то RF чип начинает передавать что-то в микроконтроллер. Я так подозреваю – код кнопки.
На скриншот не все попало, но там довольно длинная последовательность. Сразу видно, что сигнал имеет уровень 5 вольт, что очень и очень хорошо. Ну и реле пятивольтовое, как я упоминал выше. Так что с согласованием уровней проблем не будет.
Заниматься декодирование и эмуляцией сигнала мне не очень хотелось, по этому посмотрел еще и сигнал на управление реле (на R3 со стороны микроконтроллера). Осциллограмму приводить не буду — там все ожидаемо. Либо постоянно высокий уровень (5 вольт) когда реле включается (замыкает выходные контакты). Либо постоянно низкий, если выход разомкнут.
В общем принимаю решение подключаться в разрыв между микроконтроллером и Q1. Для этого нужно будет выпаять резистор R3. Набросал вот такую схему подключения.
По схеме все очень просто. Опторазвязка от реле (так как помню, что там бестрансформаторный источник питания, который не имеет гальванической развязки с сетью 220 вольт). Switch Signal припаивается к выходу микроконтроллера, который идет на верхний контакт R3. Relay switch — к нижнему выводу резистора R3 (который выпаивается), на базу транзистора Q1. Ну а землю к любой точке "-" на плате реле. Там как раз есть очень удобная рядом с R2. BTN+ и BTN- — сюда можно подключить внешнюю кнопку для управления ESP32 (за деталями к справке по HomeSpan). BTN LED+ и BTN LED- — к индикаторному светодиоду. У меня кнопка со встроенным светодиодом, что очень удобно. Опять же — за деталями к справке по HomeSpan.
Осталась только одна проблема — питание ESP32. Изначальная идея запитать все от одного блока питания на 5 вольт пока провалилась, так как стабилизатор запускается только от 12 (точнее, схема питания запускается от 12, стабилизатор скорее всего запустится бы и от 6). Можно, конечно, подать питание напрямую, обойдя всю схему питания, но, честно говоря, не хотелось выпаивать кучу деталей. Хотелось оставить возможность быстро вернуть реле в исходное состояние.
Если же вдруг вам захочется запитать реле от своего блока питания, то 12 вольт нужно подавать на выходные (верхние на фото) контакты диодного моста (BD1). Левый — "+", правый — "-". Диодный мост обязательно выпаять! Схема потребляет менее 100 миллиампер при питании от 12 вольт.
В общем я решил оставить питание реле как оно есть, а для питания ESP32 использовать отдельный блок питания на 5 вольт. Таким образом, мне нужно будет всего лишь удалить резистор R3 и припаять три провода.
Важный момент! Необходимо, чтобы используемый блок питания был полностью гальванически развязан с сетью 220. Иначе весь белый дым выйдет очень быстро. К счастью, такой БП у меня есть.
В общем, все продумано — паяем. Не сильно парился с разводкой платы. Потом распечатал коробочку, подключил кнопку. Вот все в сборе.
С электрикой и электроникой разобрался. Пора прошивку готовить. Ну с этим особых проблем нет. Логика довольно простая: так как управляющий сигнал имеет логический уровень и постоянен для данного состояния (всегда 5В если реле включено и всегда 0В если реле выключено), то оптимальным решением будет использование прерывания по изменению уровня сигнала. Не важно, что МК реле выдает на выход. Важно, когда этот сигнал изменится. По изменению сигнала можно определить, что кнопка была нажата. А что в реальности нужно сделать с реле (включить или выключить) зависит исключительно от внутреннего состояния прошивки ESP32. Это позволяет управлять реле независимо от текущего состояния управляющего сигнала как кнопкой, так и из Apple Home. Короче, прошивка и другие материалы доступны вот по этой ссылке.
Ну вот, в общем-то, и весь сказ. Выключатель работает. В Apple Home добавился. Свободное время на праздниках убито. Все цели достигнуты, как говорится. Если есть какие вопросы — милости прошу в комментарии.
Поддержать канал
Boosty: https://boosty.to/drone_tales
BuyMeCoffee: https://buymeacoffee.com/dronetales
BTC: bitcoin:1A1WM3CJzdyEB1P9SzTbkzx38duJD6kau
BCH: bitcoincash:qre7s8cnkwx24xpzvvfmqzx6ex0ysmq5vuah42q6yz
ETH: 0xf780b3B7DbE2FC74b5F156cBBE51F67eDeAd8F9a
Социальные сети
Telegram: https://t.me/drone_tales
Instagram : https://www.instagram.com/drone_tales
arduino
умный дом
homekit
apple home
esp32
diy