Реверс-инжиниринг копеечных умных лампочек
 
                    
                    Месяц назад я писал заметку про умные лампы FinePower дешевле 100 руб., попутно накупив мешок оных. Теперь разбираю китайские «подарочки». Несмотря на скромную цену, лампы скрывают полноценные модули управления, LED-драйверы и продуманные блоки питания. Этот разбор покажет, что можно получить за копейки и куда смотреть при прошивке или самоделках с умным домом. Подробности под катом.
Разбираем!
Всего у нас 3 вида лампочек: бело-желтая E27 (99 руб.), RGB E27 (99 руб.), RGB E14 (80 руб.).
Без промедления приступим к вскрытию наших пациентов. Первого я помучал еще во времена заметки о покупке. Это была желто-белая E27.

Рассеиватель мягкий и слезает, если его пожмакать.

Далее видим светодиоды и торчащий модуль CB2L.

Вскрываем дальше путем поддевания платы светодиодов. Из-за того, что две платы слеплены компаундом, я вырвал сразу этот «бутерброд» из цоколя. Тогда у меня сразу зародилось гипотеза, что для снятия без повреждений нужно, вдавливая CB2L, поддевать ножом плату светодиодов.


А пока рассмотрим 3 основных модуля. Первый — плата управления CB2L. Это модуль BK7231N. Это полноценный WiFi/BTv5.2 модуль, который поддерживается прошивками LibreTiny (ESPHome), OpenBeken.

Второй — плата со светодиодами и линейным драйвером для их управления. У данной лампы стоит BP5778EK.

Третий — это плата питания. Связана с обоими. Штука интересная, разберем попозже.

Следующая лампа на очереди — RGB E14.
Данная лампа уже имеет жесткий рассеиватель, так что пока я пытался вытащить его руками, случайно оторвал ей жо цоколь. Это печально...

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

Вот это уже поинтереснее! Здесь явно другой LED контроллер и другая микросхема управления.
Разобрать тем же способом у меня не вышло (видимо сжимание в тисках на пользу не пошло), так что я просто залез со стороны оторванного цоколя и подоткнул платы вперед длинной железкой.


Опять видим 3 модуля. LED-модуль на этот раз оснащен микросхемой BP5758D. Тоже линейный драйвер, но управление им посложнее, чем у BP5778EK.

Управляющий модуль на этот раз CBLC9. Это все тот же BK7231N, но в другом исполнении. Фактическая разница только в доступности тех или иных пинов.

Плата питание выглядит как будто взяли из прошлой лампочки и сжали… в тисках. Очень похоже, только маленькое и кастрированное. А еще пайка какая-то тяп-ляп.
В общем, ремонто/апгрейдо- пригодность так себе.
Я было начал разбирать RGB E27, но привычно открыв грушу рассеивателя, как на самой первой лампочке, увидел просто чуть расширенную версию контроллера E14 вместе с торчащим CB2L.

Мне сразу перехотелось разбирать дальше, ведь по сути, я увидел просто гибрид двух предыдущих ламп. Но ради проверки гипотезы о вскрытии без повреждения, я все-же полез глубже.

Гипотеза и подтвердилась, и нет. Мне действительно удалось без повреждений соединения с цоколем вскрыть лампу. Вот только дорожки под CB2L оторвались от сильного давления. В общем, теперь я думаю, что надо просто аккуратно придавливать саму плату питания шлицевой отверткой, а не CB2L рукой. Еще одну лампочку портить не буду, так что пробуйте сами ;)
Что касается начинки питальника — схема аналогична первой лампе полностью.

Реверсим!
Итак перед нами три лампы с примерно аналогичной начинкой. Для начала рассмотрим управляющие модули.
Для прошивки в локальный умный дом всем им необходима разборка, так как прошивка модулей удаленно через CloudCutter, по сообщениям пользователей, невозможна. Мне же просто нравится разбирать штуки :)
В случае ламп E27 дело осложняется тем, что пины прошивки расположены на задней стороне CB2L, а значит снимать контроллер нужно феном. Ай-яй-яй, FinePower… В любом случае, мне удалось это сделать паяльной станцией Eruntop 8586D+ без проблем. Температура максимальная, поток средний. Правда, металлическая пластина тоже отпаялась. Пришлось ее «догревать» дополнительно.

В случае E14 от лампы остались рожки да ножки, зато доступ к пинам прошивки тут полный без выпаивания. Хотя и выпаять несложно. Можно даже паяльником, последовательно тыкая в припаянные контакты по 2 с противоположных краев.

Прошивка осуществляется подключением к TTL-адаптеру и заливки базового загрузчика либо через ItChipTool(прошивка собирается через интерфейс ESPHome умного дома), либо используя OpenBeken (через BK7231GUIFlashTool).


В целом, можно попробовать пошамать и с BT. Это перспективнее, ведь модули поддерживают Bluetooth Low Energy, а значит, гипотетически, выключив WiFi, можно получить почти нулевое потребление в режиме Bluetooth ADV (без активного подключения, режим радио). Но это в теории. А на практике надо осваивать SDK. Как-нибудь позже, когда будет время. Пока оставлю ссылку на англоязычный форум с документацией.
Модули сами по себе отличные, радио и ШИМ-пины на месте, не говоря о всяких UART и I2C. Единственный недостаток — на обоих не выведен ADC. Без АЦП на них даже фоторезистор не повесишь… Эх, ладно. В любом случае, для большинства применений АЦП и не нужно, а так можно и внешнее повесить.


По управлению все, рассмотрим питание. Чутье меня не подвело — у двух видов плат одинаковая база — 2 микросхемы питания BP2506B и BP2525X. Кстати, вот и их силовая обвязка.

BP2525X это неизолированный (ВЫСОКОЕ НАПРЯЖЕНИЕ 220 ВОЛЬТ!) преобразователь 3.3В для питания управляющей логики (CB2l или CBCL9). Кратко рассмотрим принцип работы.

1. Этап запуска
После выпрямления сетевого напряжения (~310 В DC) через встроенный высокоомный пусковой резистор и внутренний HV-стартап начинает заряжаться конденсатор питания VCC.
Когда напряжение VCC достигает порога (~3.5 В), микросхема активируется и запускает генератор импульсов.
После выхода на рабочий режим питание VCC подхватывается от вспомогательной обмотки или через внутренний регулятор от DRAIN.
2. Режим преобразования энергии
Микросхема управляет внутренним MOSFET’ом, формируя поочерёдное накопление и отдачу энергии в дроссель:
При открытии MOSFET ток через дроссель растёт линейно. Энергия запасается в его магнитном поле.
Когда ток достигает порога, заданного по выводу CS, ключ выключается.
Энергия из дросселя переходит через диод в выходной конденсатор и нагрузку.
Так формируется понижающий режим (buck) с управлением по пиковому току (peak current mode).
3. Режимы управления
BP2525 автоматически комбинирует:
PWM-режим — при средней и высокой нагрузке (стабильная частота, переменная скважность);
PFM-режим — при малой нагрузке (редкие короткие импульсы, чтобы снизить потери и потребление < 20 мВт).
Это обеспечивает высокий КПД и минимальное тепловыделение даже при холостом ходе.
4. Регулировка и стабилизация
Выходное напряжение контролируется через внутренний делитель и схему обратной связи.
Вывод SEL задаёт номинал (3.3 В или 5 В).
Встроенный усилитель ошибки управляет длительностью импульсов, поддерживая стабильное выходное напряжение независимо от колебаний сети и нагрузки.
5. Защиты
- UVLO — отключение при падении VCC ниже ~8 В;
- OCP — ограничение пикового тока по CS;
- OLP — защита от перегрузки/короткого замыкания;
- OTP — термозащита;
- Soft-start — постепенное нарастание тока при включении.
X в самом конце означает маркировки определяет максимальный рабочий ток. Судя по увиденному мной SGNB21B(X=B), в лампе стоит BP2525(B), вариант на 200мА постоянного, и до 300 импульсного тока. Маловато будет для периферии! Хотя для самого микроконтроллера с запасом.
BP2506B — второй источник питания. Его назначение вначале представляется туманным, а полный даташит скрыт китайцами от человеческих глаз за регистрационной стеной. Однако общий принцип работы такой же, как и у прошлого (да это и видно по схеме).

- Управление током и напряжением
 Чип отслеживает ток через резистор CS и выходное напряжение через обратную связь.
- В режиме CC он поддерживает ток через нагрузку постоянным, независимо от изменений напряжения.
- В режиме CV он поддерживает напряжение на нагрузке постоянным, когда ток не достигает лимита.
Режимы индуктивности
- CC → критическая непрерывность (CrCM) — ток индуктора почти до нуля за цикл.
- CV → дискретная проводимость (DCM) — ток дросселя полностью прерывается, когда нагрузка мала.
Управление переключением
Встроенный контроллер микросхемы делает PWM/PFM с quasi-resonant для повышения эффективности и снижения шумов.
Защита
- Лимит тока по циклу и аварийная защита при коротком замыкании.
- Защита от перегрева и от обрыва датчика тока.
- Низкое энергопотребление в режиме ожидания (<30 мВт).
Пришлось копать остальное самому. Это тоже НЕИЗОЛИРОВАННЫЙ преобразователь, но на этот раз напряжение можно настраивать. Глянув на схему, я нашел выводы напряжения. Замерив эти выводы мультиметром (ВЫСОКОЕ НАПРЯЖЕНИЕ), я увидел значение около 103 Вольта постоянного тока на обоих типах питальников. И выводы идут как раз к входам LED-драйверов. Поразмыслив с нейронкой, мы решили, что это для снижения нагрузки на драйверы, потому как в ином случае на них бы было уже 310 Вольт постоянного тока, а это многовато тепла. Плюс там есть ограничение тока, которое дает еще больше падения напряжения под нагрузкой. Тем не менее 103 Вольта это крайне много для самоделок...
Но раз на схеме есть вывод FB, значит напряжение регулируется, верно? Я нашел делитель со схемы, им оказалась пара резисторов 15 и 750 кОм.

Я начал подбирать номинал резистора 750кОм и следить за напряжением. В итоге у меня на 30 кОм получилось добиться нечто вроде 5В. Без нагрузки оно не стабильно и прыгает до 50. Однако даже на холостом ходу понижающего преобразователя оно становится равным 5.1 Вольт. В принципе, это меня вполне устраивает. Раз уж этот преобразователь справляется 9 Ваттами нагрузки, пару ардуиноподобных датчиков он потянет легко. Можно поэкспериментировать с номиналом и найти значения для 12В и любых других напряжений. А если сильно переживаете за потребителей, поставьте на выход понижайку, она примет удар на себя.

Из дополнительного я бы заменил сглаживающий конденсатор по выходу на более емкий и меньшего номинала напряжения (для 5В с запасом подойдет 330мкФ 10В).

Также стоит учесть, что шунт на выходе CS (Current Sense) не настроен на большие токи, а скорее всего он рассчитан на ток своего драйвера. Вряд ли они рассчитаны на что-то больше 200-400 мА, да и диоды по входу слабоваты.
Тыкать питание на лампочке E14 я не стал, оно там просто немного слабее. Например, по входу там стоит один конденсатор на 2 мкФ, а на большой плате у каждой микросхемы свой конденсатор, и для питания одних LED стоит 3.9. Не говоря уже о меньшем размере диодов и прочих SMD. В целом, мелкой я доверяю меньше.
На этом пока закрываем вопрос питания и переходим к LED-драйверам. У обоих ламп линейные CC (константный ток) драйверы. У желто-белой лампы простой двухканальный драйвер BP5778EK. Он рассчитан на токи до 100 mA на канал и напряжения до 500 Вольт. Всего каналов два.

Для его управления необходимо подавать ШИМ-сигнал с микроконтроллера на пины 1 и 2. И соединить его землю с землей драйвера, конечно. В лампе этот драйвер получает напряжение не из сети, а от неизолированного источника BP2506. Это позволяет избежать излишнего нагрева за счет ограничения тока и напряжения еще до линейного преобразования. Получается такой гибридный импульсно-линейный источник.
Второй драйвер BP5758D. Это уже более сложный 5-канальный драйвер, который управляется по шине I2C.

Работает в лампе он с 4 каналами и тоже используя импульсный преобразователь как источник.
Данные драйверы сами по себе довольно полезные для самоделок, и отдельно, и в составе модулей. Особенно полезен 5-канальный драйвер. Под него есть Arduino и EspHome библиотеки, а протокол описан в даташите… Даташит, правда, я смог найти только в одном месте и скачать его оттуда нельзя. Пришлось заскриншотить его целиком. Потом выложу, если хотите.
Вывод
Вот и разобрались с основными моментами. По итогу, лампочки оказались полны интересных сюрпризов. В основном связанных с отвратной документацией, конечно, хотя и налось место приятным. Отличный модуль WiFi/BT, хоть и без АЦП, подойдет для датчиков, построения радиошлюзов, приводов жалюзи и прочих непотребств. Набор микросхем питания достаточно удобный для умных устройств — 3.3 для логики и настраиваемая для LED. Предстоит еще поколдовать над последней, но даже сейчас от нее есть польза. Сами LED-драйверы тоже довольно неплохи, да еще комплектуются светодиодами и отводящей пластиной. И все это меньше чем за 100 (или даже 80) рублей. Хотя разобрать/собрать для перепрошивки в Hassio может быть трудновато, компоненты отлично себя показывают и по отдельности. Приобретением определенно остался доволен! Несомненно, хотел бы услышать вопросы и предложения (особенно по даташитам) от экспертов. Благодарю за внимание! А мне пора удалиться мучить другие микросхемы...

| +32 | 
                                3180
                                60
                             | 
| +98 | 
                                3199
                                53
                             | 
 
    







После выхода на рабочий режим питание VCC подхватывается от вспомогательной обмотки или через внутренний регулятор от DRAIN.»
Это ведь не про BP2525X?
Нет, мой кот, когда ему совсем скучно, занимается гораздо более приятными (ему) делами…
Если один человек построил, то другой всегда разобрать может
Тем более экран уже отпаялся :)