Авторизация
Регистрация

Напомнить пароль

Реверс умных лампочек 2: Голос машин

Какое-то время назад занимался реверс-инжинирингом вай-фай лампочек по 100 рублей/штука. Мне так понравилось, что даже пересадил «мозги» розетке. А недавно решил приспособить и «сердце», то есть блок питания. Как раз совпало с желанием автоматизировать свет в ванной. Простая переделка обернулась загадкой дыры. Что ж, если вы готовы, то под катом мы в нее окунемся...

Введение

Чтобы совсем не уходить в сумбур, немного обозначим проблему. Итак, мне понадобилось автоматизировать освещение ванной по движению. Можно купить отдельные модули микроволнового датчика движения и умного реле. Но ведь так неинтересно… А интересно взять кусок умной лампочки, которое мы теоретически (и немного практически) изучали, прикорячить esp8266 и ld2420 вместе с модулем реле и запихнуть все это в основание корпуса лампочки. И чтобы можно было повесить это в локальный умный дом Hassio. Изначально также подумал добавить аналоговый датчик угарного газа, так как имеется газовое оборудование (потому сразу отказался от чипа «мозгов» лампочки — у него нет аналогового пина).

Почему просто не вставить ld2420 и не подключить к цепи той самой копеечной лампочки (прошив мозги)? Причин несколько. Первая — скучно. Вторая — скучно конструкция итак перегружена по тепловыделению. Чахлые неизолированные преобразователи греются неслабо, и вешать дополнительную нагрузку в виде ld2420 не хотелось. В третьих, чипы управления bk7231n достаточно хилые, а прошивка сыровата для считывания датчиков по uart. А мне хотелось именно включать свет в зависимости от удаления объекта от лампочки, и чтобы можно было все поднастроить на лету. Ах да! Чип прошивается ESPHome. Благодаря этому можно гибко конфигурировать настройку датчиков и интеграцию в локальную сеть.

В общем, исходя из выясненной схемы питания линию 3V3 для питания чипа решил оставить без изменений, а вот линию 110V, от которой питается светодиодный драйвер решил переделать на 5 (как уже делал ранее на макете) и повесить соответствующее реле. 

Дизайнерская укладка для лампочки

Основу корпуса я взял от той же распятой лампочки — а что, ее же блок питания отлично там помещается!

А в плафоне у меня есть свободное место под E27 (много света в душевой кабине и не нужно, вот и пустует). Так что решил разместить умное реле прямо в посадочном гнезде. А провод ко второму плафону разорвать и вывести на его контакты. 

На этом этапе идея с датчиком газа как-то сама отпала, ведь разобрав плафон, я увидел что он довольно герметичен, а значит показания датчика не будут сильно полезны. Впрочем, на сенсор влажности надежда еще была...

Так что первым делом я решил разработать модель крышки с пазами под датчики влажности, присутствия, освещения и контроллер. Для этого я нашел модели моих плат в сети (спасибо всем причастным инженерам), а затем раскидал их таким образом, чтобы все поместилось и было более-менее удобно размещать во время сборки (и даже более-менее герметично сделал, с колпачком).

 

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

В корпус лампочки я не сильно попал, он оказался какой-то хлипкий, из крошащейся пластмассы (в местах, где не было алюминия). Переделывать концепцию стало жутко лень, и я решил просто применить клей для смартфонов (B-7000) во время сборки. А теперь можно перейти к соединению электронных модулей.

Чистая цифровая душа/гнилые киберпотроха

Закономерно спросить, а на кой там этот датчик освещенности? А я отвечу, что таким образом хотел отслеживать сгорание лампочки. Реле включено — лампочка нет — уведомление на телефон о смене лампочки через умный дом. Просто и понятно. Датчик температуры и влажности тоже предполагался для косвенной телеметрии времени включения воды. Сразу скажу, вешать его оказалось бессмысленно — в плафоне он показывает по сути температуру нагреваемого лампочкой плафона и больше ничего. Надежда все еще осталось, но с учетом усложнения реализации — возможно, стоит делать поправку на рост температуры. А так в целом, можно и по расстоянию до объекта с датчика присутствия определять. Не воду, конечно, но нахождения человека внутри душа так точно (или может, кота...).

В первую очередь я запаял ESP8266 со стандартной обвязкой + UART программаторной, сразу залив пустую прошивку ESPHome без пинов. Это позволяет избежать неожиданных хлопот с «боевой» прошивкой в дальнейшем, так как устройство уже видит сеть и прошивается по воздуху (а значит большинство проблем с пинами обвязки нивелируется).

Схему я прикинул в уме. Все равно нужно было просто раскидать модули по пинам контроллера. Нашел в сети образцы и спаял соответствующим образом, выведя провода.

Реле соединял способом, описанным в статье про удлинитель Франкенштейна — через «понижающий» светодиод.

При этом питание ESP здесь осуществляется через неизолированный преобразователь на 3V3, как и датчик AM2320 и сенсор присутствия LD2420. Туда же повесил фоторезистор. От переделанной линии 5V запитал реле. Далее собрал все в корпус. Оставалась только прошивка (так я думал).

Прошивку я накидал за 5 минут. С реализацией логики локальной автоматизации света не заморачивался (и слава Богу!).

uart:
  tx_pin: GPIO15
  rx_pin: GPIO13
  baud_rate: 115200

ld2420:
text_sensor:
  - platform: ld2420
    fw_version:
      name: LD2420 Firmware
      
  - platform: template 
    name: ${friendly_name} uptime 
    lambda: |- 
      int seconds = (id(uptime_sec).state); 
      int days = seconds / (24 * 3600); 
      seconds = seconds % (24 * 3600);  
      int hours = seconds / 3600; 
      seconds = seconds % 3600; 
      int minutes = seconds /  60; 
      seconds = seconds % 60; 
      return { (String(days) +" д. " + String(hours) +" ч. " + String(minutes) +" мин.").c_str() }; 
    icon: mdi:clock 
    update_interval: 113s 
    
sensor:
  - platform: ld2420
    moving_distance:
      name : Moving Distance
      
  - platform: dht
    pin: GPIO14
    temperature:
      name: "Температура в ванной"
      id: bathroom_tempreture
    humidity:
      name: "Влажность в ванной"
      id: bathroom_humidity
    update_interval: 60s
    
  - platform: resistance
    sensor: light_sensor
    configuration: DOWNSTREAM
    resistor: 10kOhm
    name: Resistance Sensor
  - platform: adc
    id: light_sensor
    pin: A0
    
  - platform: uptime   
    name: ${name}-uptime 
    id: uptime_sec 
    internal: true 
  - platform: wifi_signal 
    name: ${name}-WiFi-Signal" 
    update_interval: 60s
    
binary_sensor:
  - platform: ld2420
    has_target:
      name: Presence
  - platform: gpio
    pin: GPIO16
    name: "Присутствие в ванной"
select:
  - platform: ld2420
    operating_mode:
      name: Operating Mode
number:
  - platform: ld2420
    presence_timeout:
      name: Detection Presence Timeout
    min_gate_distance:
      name: Detection Gate Minimum
    max_gate_distance:
      name: Detection Gate Maximum
    # See "Number" section below for detail
    gate_select:
      name: Select Gate to Set
    still_threshold:
      name: Set Still Threshold Value
    move_threshold:
      name: Set Move Threshold Value

button:
  - platform: ld2420
    apply_config:
      name: Apply Config
    factory_reset:
      name: Factory Reset
    restart_module:
      name: Restart Module
    revert_config:
      name: Undo Edits
switch:
  - platform: gpio 
    pin: GPIO04
    inverted: True
    restore_mode: RESTORE_DEFAULT_ON
    id: bathroom_light_switch
    name: "Свет в ванной"
      

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

Далее начались тесты, и результаты их оказались… интереснейшие.

Во-первых, при выключенном реле устройство начинало… бухтеть. Ну не знаю, как объяснить. Как будто какие-то звуки соединения начинали излучаться как у dial-up модема, но сам звук другой, что-то вроде тихой сирены (какой-то «вращающийся» звук, тоже с затиханиями и сменами тональности, как у модема). Опять же, источник излучения мне не удалось определить. Но звук был настолько слышен, что я его различал в соседней комнате. При включенном реле звук пропадал...

Во-вторых, LD2420 вел себя странно. Устройство включается в сеть — датчик недоступен.

Перезагружаешь тестово на столе — заводится. Перезагружаешь в патроне от лампы — ничего не меняется. 

Какие-то чудеса, честное слово. Использовал простейшую автоматизацию для этого.

Изначально подумал, что из-за отсутствия нагрузки преобразователь уходит в режим низкой частоты, отчего шумит дроссель по питанию уже в слышимом диапазоне. А проблема LD2420 из-за того, что висит сенсор на слабеньком преобразователе 3V3, и, возможно, питание при старте шалит. Решил убить двух зайцев разом — пересадить LD2420 на линию 5V к реле через стабилизатор LM1117. Сделал пайку навесом прям на сенсоре.

С одной стороны, капризный сенсор получает питание через привычный силовой тракт. Со второй, линия 5V получает постоянного потребителя в 50мА (судя по даташиту к датчику). Учитывая, что реле кушает 82 мА в активированном состоянии, это вроде должно покрывать «холостой режим». Но угадайте, что случилось дальше...

Я ожидал чего угодно — что линия 5V что-нибудь спалит (она пошаливала по напряжению без нагрузки), что контроллер через дроссель начнет исполнять лунную сонату или, наконец, заткнется. Но не поменялось ровным счетом ничего. То есть вообще ничего. LD2420 все так же продолжил делать мне мозги, а схема с реле продолжила щебетать на своем инопланетном языке свои протоколы...

Повестка дня

И тут я понял, что без бутыл народа не разберемся. Потому приглашаю к обсуждению людей толковых и знающих. Я думаю, как-то можно побороть эти проблемы, но моих знаний в области аналоговой электроники как будто не хватает (хотя будь у чипов нормальные даташиты, может и разобрался бы), при том что в схеме неизолированного преобразователя и нет ничего — дроссель да конденсатор по входу и выходу кроме самого контроллера. Но портить настроение эта штука умеет. Другой вопрос касается датчиков LD и их капризов. Главным образом это касается капризов по питанию и как их бороть. И реальная загадка дыры, почему поведение отличается в собранном состоянии и навесном.

В целом, если бы не звук, можно было бы хотя бы пользоваться цепью 110В для реле + вешать датчики, не слишком капризные по питанию (AM2320 не подводил, какой-нибудь RCWL-0516 для присутствия попробовать, в конце концов). Но И ЗВУК, И ФЕЙЛЫ ЗАПУСКА вместе я в готовом устройстве не потерплю, да и любой уважающий себя диайвайщик, я думаю, тоже. И обидно, что в принципе работающее устройство наделено такими недостатками… Но поскольку цена все еще копеечная, а неизвестные мне варианты все еще не перебраны, предлагаю их накидать. С вас варианты, с меня «Мечтают ли андроиды об электроовцах?». 

В любом случае, спасибо за внимание, дорогие читатели!

 

Добавить в избранное
+50 +69
свернутьразвернуть
Комментарии (39)
RSS
+
avatar
+20
  • redcap
  • 27 мая 2026, 22:01
Сколько всяких фантазий разбито об то, что это уже есть у китайцев за копейки :)
+
avatar
+2
Нет, нет, давайте лучше проапгрейдим плату до ESP32-s3 mini)
Будет больше идей и возможностей)
+
avatar
+2
Да не все есть, в том и дело. А если есть, то костыль на костыле. Все-таки хочется что дом был умный, а не модерируемый китайским товарищем майором.
+
avatar
+14
мне понадобилось автоматизировать освещение ванной по движению
я абсолютно уверен, что у меня лени поболее, чем у автора
но всё же мне проще щёлкнуть тумблером перед заходом в туалет, чем связываться с программированием
+
avatar
+6
  • xNIXx
  • 27 мая 2026, 22:59
Вот именно туалет-коридор — это отличное место для автоматизации. Дверь открыл — свет горит, дела сделал, дверь закрыл — свет потух, вентилятор пять минут поработал и тоже выключился. При этом мгновенно включился свет в ванной.
Прям очень удобно. Настолько привыкаешь, что в гостях приходится выходить и искать где включить свет.
Управление светом — это один из простых но очень прям удобных сценариев.
Еще хорошо бы окно открывать, и закрывать, когда кто-то начинает курить, холодно, приехал мусоровоз итп, но это существенно сложнее
+
avatar
+10
  • sim31r
  • 28 мая 2026, 02:00
Нет, иногда хочется чтобы зашел и свет не горел. Или чтобы ушел и свет не погас. Примерно 1 раз из 20 или 100 случаев. Когда управление вручную об этом даже не задумываешься. А когда свет включился когда не нужно это просто вынос мозга на ровном месте. В итоге я все реле движения убрал почти. В гараже оставил и то потому что там сложно найти выключатель в темноте.
Плюс гостям и домашним это сложно, привыкая не выключать свет в ванной не выключают его потом вообще ни где )
+
avatar
+1
У меня в одном месте(лестница с мансарды в низ) стоит MW реле которое свет включает, но его питание оно пущено через сдвоенный стандартный выключатель (с индикацией), то-есть я могу и отключить автоматику и включать/выключать принудительно(220 через один выкл на реле, выход реле на лампу, второй выключатель общим байпасом всей цепи от 220 прямо на лампу). Иногда полезно — чтобы собаке спать свет не мешал. И по поводу привычек. Та же самая фигня. У меня в низу, на тех.этаже, дверь из одного помещения в гараж, деревянная. Повело её немного, закрывалась не плотно. Стоял шпингалет, и все знали, что нужно когда из гаража проходишь в тёплое помещение нужно на шпингалет притянут. Поставил неодимовые магниты, шпингалет стал не нужен — дверь вообще стали оставлять на распашку… :-) Пришлось поставить дубовую «советскую» пружину за 40 руб из ближайших строй товаров. Теперь жалуются, что по жо… бъёт!
+
avatar
-2
  • sim31r
  • 28 мая 2026, 13:50
Поставил неодимовые магниты
Это вещь, я понаставил магнитов что усилие нужно приложить килограмм 30, входные двери теперь можно не закрывать. Посторонний человек подергает и видит что закрыто. Получается дверь с секретом, дернуть нужно сильно и тогда открывается.

дубовую «советскую» пружину
Я такую поставил закрывает аккуратно
+
avatar
+3
  • xNIXx
  • 28 мая 2026, 10:41
Честно — я не вампир, в темноте не вижу, мне не надо чтоб свет не горел. Если надо будет я открою дверь, выключу свет и будет не гореть. Управление вручную никуда не делось.
За год я не пользовался управлением вручную для туалета ни разу.
Гости совершенно легко адаптируются, да и если хотят — пусть включают руками, онож прекрасно включается и выключается.
У меня есть сценарная кнопка для коридора. Висит временно т.к. плохой датчик присутствия и на супругу он срабатывает не очень. Иногда раз в неделю нажимаем, чтобы свет не гас пока там белье вешаешь. Прям рядом где вешаешь дополнительно и висит. Как поставлю нормальный датчик сниму.
Еще раз подчеркну: при нормально заточенных сценариях ручным управлением пользоваться не нужно вообще. У меня от кнопок полиэтиленки не оторваны до сих пор :).
+
avatar
+2
  • sim31r
  • 28 мая 2026, 13:56
Ночью например когда заходишь в туалет то как вампир да, свет неприятен и нарушает сон. И ресурсов думать нет, вспоминать в каком положении выключатель, чтобы не получить прожектором по глазам. У меня ночник мелкий для подсветки ночью, типа такого еще проще даже и плоский
+
avatar
+2
  • xNIXx
  • 28 мая 2026, 14:02
Так сделай так, чтобы ночью он не загорался, загорался на 10% итд итп.
И думать не надо, и вспоминать. Оно само будет.
И ночник днем можно отключать если надо…
+
avatar
0
  • sim31r
  • 01 июня 2026, 00:46
Я прикидывал автоматика умная может 2 Вт потреблять. А ночник на неонках 0.5Вт Получается проще в таких местах наставить ночников и будет небольшая подсветка в полной темноте. А когда нужен яркий свет включить вручную. Все равно дверь надо открывать и закрывать. Как хобби проект своими руками я понимаю что интересно, а по практичности спорно.
+
avatar
0
  • xNIXx
  • 01 июня 2026, 01:30
2вт? Это при 3.3В порядка 600мА. Да что у вас там происходит :)?
Даже если нонстоп фигачить по вайфаю сожрать 2вт можно только сильно постаравшись.

Дежурный свет в коридоре может и ок, но в спальне то он мне зачем?

Управляемый автоматический дом — это удобство. Но сделать его чужими руками почти невозможно. Насколько это удобство окупит усилия вопрос очень индивидуальный. Вот со светом как по мне усилия не столь уж велики, а выхлоп в целом огромный.

ЗЫ. Умная автоматика погодной станции в состоянии пережить ночь питаясь от ионистора… Даже датчики движения по году от двух АА(А) батареек работают… Речь о микроваттах, даже не о милливаттах… Никаких ваттов ничего нормальное не потребляет.
+
avatar
0
  • sim31r
  • 01 июня 2026, 13:41
Обычно питание от 220В через резистор какой-нибудь, 10 мА на 220В и дадут 2 Вт. Блоки питания хорошо потребляют даже в холостом режиме.
+
avatar
0
  • xNIXx
  • 01 июня 2026, 14:16
БП не мерял, но судя по тому что они в тепловизоре не греются особо нет там 2вт выделения тепла. В любом случае «управляемый дом» — это не про экономию 2вт, а про удобство. В спальне должно быть темно.
+
avatar
0
  • sim31r
  • 02 июня 2026, 11:16
Так речь про коридоры и туалеты, там можно держать лампочку на 2Вт включенной постоянно. В спальне когда 200Вт светодиодов включатся по датчику движения тоже не комфортно будет ))
+
avatar
0
  • xNIXx
  • 02 июня 2026, 11:34
Можно, но кроме дежурного света в коридоре мне нужен нормальный, и мне удобнее когда он включается сам. Собственно 2вт для туалета мне тоже немного маловато, для ванной уж точно.
Не знаю зачем вы хотите включать 200вт света в спальне ночью — это совершенно неудобно. Гораздо удобнее ночью включать 0.2вт, а «днём» 200вт…
Если вам удобно — пользуйтесь. Этож отлично если удалось найти устраивающее решение. Когда оно простое и дешевое — еще лучше.
+
avatar
+4
Дверь открыл — свет горит, дела сделал, дверь закрыл
Нет у вас кошки…
+
avatar
+1
Поддерживаю, у меня тоже туалет-ванная-коридор-прихожая так автоматизированы. За 5 лет очень привык к хорошему. Еще удобно автоматизированы бризеры чтоб фильтры экономить — открыл окно он выкл, закрыл он вкл, скорость связана с СО2 и временем суток и поддерживается обычно не выше 800ппм. И тут не требуется никакого управления, ни Алисы ни выключателей, оно просто работает само.
+
avatar
+4
« у меня лени поболее, чем у автора»…
Два кота хвастаются у кого лени больше:
1-й кот
— Кошка передо мной и так и этак извивается и хвост задрала, а мне лень
2-й кот
— Вылизываюсь и случайно прищемил яйца. Больно, ору, а встать лень
+
avatar
+43
  • DVANru
  • 28 мая 2026, 00:02
+
avatar
0
Да, прогресс будет двигаться вперёд
+
avatar
+3
  • xNIXx
  • 28 мая 2026, 10:43
Да что у вас там происходит :)? Нормальные сценарии со светом работают сами, никаких алис не требуют. Свет просто есть когда надо и его гет когда не надо.
+
avatar
0
Фу, Алиса. Я бы и за деньги себе эту козу не поставил.
+
avatar
0
  • sim31r
  • 28 мая 2026, 02:04
LD2420 может помехи на что-то наводит
+
avatar
0
Сам по себе врядли, а вот из-за недостатка ёмкости (хотя бы электролит), запросто в генерацию ушла LM1117.
+
avatar
+1
Может и уходит. Но причина, видимо, не в том. Потому что девайс «пел» даже тогда, когда LD2420 питался от 3V3 неизолированного преобразователя напрямую вместе с ESP8266, а LM1117 в схеме и вовсе не было. Но спасибо за догадку!
+
avatar
0
  • yup2
  • 29 мая 2026, 03:18
А при настольных испытаниях что было нагрузкой этого музыкального устройства? Та же лампочка, что и в светильнике, или что-то другое?
+
avatar
0
В целом, лампочка никак на схему влиять не должна — она через реле включается. На преобразователях напряжения всегда висит одно и то же — контроллер, датчики, реле.
+
avatar
+4
Вангую, осциллограф нужен. Хотя бы самый простой и дешевый. Сразу снимется куча вопросов о работе аналоговой электроники. По себе знаю, когда что-то аналоговое сам ваяешь — генератор получится стопудово, а вот то, что задумывал — не факт)
Из различий на столе и в цоколе, например, фаза может приходить на разные контакты. Хотя учитывая наличие диодного моста, вроде как должно быть пофиг.
+
avatar
0
Есть оно у меня. 100 Мгц 1 Gsp/s. Посоветуйте, куда тыкать и на что смотреть, если несложно
+
avatar
+2
В первую очередь в питание. Только аккуратней, потому как источник без гальванической развязки. В идеале осциллограф либо на батарейках, либо включенный без заземления. Потому как «масса» щупа стационарного осциллографа обычно на «земле» висит напрямую. Просто «минус» этого БП, будет отделен от фазы только диодом в прямом включении и конденсатором, который переменный ток вполне себе пропускает, хоть и частично ввиду малой емкости. И если вы на минус этого БП подключите «массу» осциллографа, которая нормально заземлена, то может получиться забавный спецэффект )) В «горячую» часть лезть вообще не надо пока, да и я в этом не спец, тут ничего не посоветую. Там правда и нет ни хрена, кроме диодного моста и конденсатора.
Смотреть что творится по низковольтному питанию в зависимости от нагрузки и как это соотносится со звуками. Конденсатор дополнительный параллельно выходному повесить, сравнить что на осциллографе и что со звуками.
Особенно обратить внимание на момент включения — это к теме зависания датчика. В эту же тему проверить «полярность» включения фазы-ноля. Потому как в цоколе по стандарту фаза на центральном контакте, а как вы там это на столе подключали — вопрос.

Как вариант, ваша электроника потребляет ток неравномерно, импульсами, и БП постоянно «прыгает» между «зеленым» режимом и нормальным, а звуки — переходные процессы.
+
avatar
+4
  • 81087
  • 28 мая 2026, 08:19
Не было у бабушки забот, купила баба порося)))
+
avatar
0
Реле «ноль» лампочки у автора разрывает видать. Но вообще жениться барину не помешает.
+
avatar
+1
Сложно и не надёжно. Если оно откажет и свет потухнет в интересный момент, когда в туалете гость или тёща, то автора будут долго вспоминать незлым, тихим словом — это наш «Кулибин». :)
+
avatar
0
Если оно откажет, свет не потухнет, он будет гореть, поскольку триггерный уровень реле — низкий. С другой стороны, нагоревший свет — тоже неприятно. Но в целом устройство подключается через механический выключатель, так что его легко выключить. А вот автоматизация нужна потому, что выключатель в крайне неудобном месте, да еще и мокрыми руками трогается, что плохо для стен.
+
avatar
0
  • sim31r
  • 01 июня 2026, 00:48
Есть беспроводные выключатели, можно на скотч цеплять в любом месте и несколько одновременно тоже.
+
avatar
0
  • edkin
  • 04 июня 2026, 02:05
Лет 5 назад датчик на LD2410 (других подходящих не было) поместил внутрь стеклянного плафона светильника, добавив 4 детали: закрытый БП на 5 В, транзистор для инвертирования сигнала от датчика, твердотельное реле на его коллектор AQH3213 (срабатывание через «ноль»), чтобы не было щелчков от механики, и токоограничивающий резистор (на эмиттер для увеличения входного сопротивления со стороны датчика). В цепь базы резистор не нужен: уже есть на плате датчика.Чувствительность в зависимости от расстояния и время работы лампы настроил по Bluetooth в программе от LD2410. Задержку, кажется, ставил секунд 10-15, т.к. за это время датчик успевает зафиксировать присутствие. От соседей сверху фольга. Работает идеально. Применение ESP не нашел, хотя увлечен.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.