Меня всегда завораживала подсветка вроде Philips Ambilight. Она будто расширяет картинку и создает особый эффект погружения. А еще с подсветкой сильно меньше устают глаза, чем когда работаешь в полной темноте.

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

На скриншоте выше — пример одной из самых популярных готовых подсветок. Тут видно сразу несколько проблем:
- Захват картинки с экрана камерой — технология весьма неточная, да и сам рог у монитора смотрится так себе. Особенно если монитора два.
- Питается все от USB — это ограничивает мощность самой подсветки до чуть менее чем 5 Вт в пике. Площадь стандартного 65-дюймового телевизора, для которого такая подсветка предназначена, составляет около 1,2 м2, что при средней мощности ленты в 60% даст освещенность порядка 95 Кд/м2. Это на самом деле очень небольшая яркость, и даже она вряд ли достижима, поскольку китайские единицы измерения значительно отличаются от общепринятых.
- Управление с телефона надоест очень быстро, если пользоваться каждый день, а синхронизация с компьютером не предусмотрена.
- Заявленная плотность ленты — 30 диодов на метр. Это приемлемо для телевизоров с большой диагональю, но никуда не годится в случае компьютерных мониторов с большим разрешением и маленьким расстоянием до зрителя. Для равномерной засветки нужна более плотная лента.
Для исправления проблемы номер 1 (и косвенно 3) созданы ленты с подключением в разрыв входа HDMI. Для монитора это намного лучше, но про HDR и высокую частоту обновления придется забыть. Мои мониторы вообще используют DisplayPort и 165 Гц, которые пропихнуть через HDMI не представляется возможным, так что такое готовое решение тоже отпало.
Дальнейшие поиски привели к проекту Lightpack. Он решает проблему захвата картинки программным способом: на самом компьютере крутится программа, которая захватывает экран, считает цвет каждого пикселя и выдает готовые команды по USB. Вот оно, решение!
Из минусов: проект заброшен двенадцать лет назад и в продаже его не найти. Тем не менее кое‑что полезное оттуда вытянуть все же получилось: программа Prismatik — это готовое решение для захвата картинки, которое поддерживает разные протоколы связи с контроллером ленты и имеет кучу настроек, включая удобный мастер зон подсветки. То, что надо!

www
На самом деле существует более новая программа HyperHDR, которая умеет захватывать HDR-картинку и тоже поддерживает протокол Adalight. Хоть мои мониторы и поддерживают HDR, я его не использую, так что в HyperHDR у меня нужды нет и порекомендовать его я не могу. Тем не менее, по слухам, софт вполне достойный и для HDR-мониторов может быть очень полезен.
Для связи я выбрал протокол Adalight: он прост как палка, поддерживается Prismatik и легко реализуется на практически подножных микроконтроллерах. В запасах валялась видавшая всякое отладочная плата ESP32-WROOM (которой я ампутировал ноги — уже не помню, зачем именно), ее и будем использовать. История заказов «Алиэкспресса» подсказала, что куплена она в свое время была за три доллара, — будет не жалко!

Теперь лента. Чтобы зоны подсветки были независимыми, лента понадобится не абы какая, а адресная. Такая лента состоит из адресных светодиодов, объединенных в последовательную цепочку. Каждый такой светодиод имеет четыре контакта: VDD, GND, DIN (DATA_IN) и DOUT (DATA_OUT), где DOUT соединяется с DIN следующего светодиода в цепочке.

Самые ходовые адресные диоды — WS2812, имеющие три маленьких светодиода для отдельных цветов (красный, зеленый и синий) и совсем уж мелкий кристалл контроллера прямо внутри одного корпуса.
Как работают адресные ленты
Каждый светодиод видит просто поток данных — у светодиодов нет своих идентификаторов. Чтобы определить, когда переключаться, он смотрит на задержку. Если с момента получения последней порции данных прошло больше некоторого времени, следующий пришедший фрейм он будет считать своим, если нет — передаст дальше.
Контроллер выдает команды пачками, а в каждой пачке склеены данные последовательного блока светодиодов. Первый светодиод откусит свою часть, второй — свою и так далее, то есть по мере продвижения по цепочке светодиодов каждая посылка уменьшается. Но это накладывает ограничение на максимальную длину ленты, ведь если лента будет слишком длинная, выдержать нужную паузу между посылками уже не получится.
Китайцы собирают из таких ленты любой желаемой конфигурации: хоть по плотности, хоть по напряжению питания, хоть по цвету подложки. И стоит результат недорого: за три метра ленты для своей подсветки я отдал всего около 20 долларов, включая доставку и налоги. Когда будешь покупать себе — проверяй плотность (у меня это 96 диодов на метр), цвет (обычно мониторы черные, так что я тоже взял черную) и напряжение питания (я взял на 12 В — ниже объясню).
Еще один параметр — покрытие. Есть обычные ленты, где светодиоды просто напаяны на ленту, а есть с влагозащитой. На них есть равномерное и гладкое фабричное покрытие из прозрачного силикона, которое защитит ленту от пыли и позволит протирать монитор с такой подсветкой влажной тряпкой без риска что‑то сорвать или закоротить. Да и смотрится куда менее колхозно!
Длину ленты я подобрал экспериментально: просто приложил кусок ленты такой же плотности к спине монитора и посчитал, сколько светодиодов понадобится с учетом полей около 2 см с каждой стороны. У меня получилось по 142 диода на каждый монитор: 54 вверху, 34 сбоку и 54 внизу. Второй бок сознательно не покрыт: мониторы стоят рядом вплотную, подсветки за ними просто не будет видно, а там бы оказалось целых два куска ленты. Так что я прошел по внешнему периметру всего прямоугольника двух мониторов.
С основными деталями разобрались, теперь вспомогательные.
Ленту нужно чем‑то питать, а в числе минусов фабричных изделий я уже отмечал питание от USB. Чтобы не повторять ошибок китайцев, питание я взял с 12-вольтовой шины компьютерного БП через оставшийся от Molex-разветвителя порт Molex-F. Это позволит не резать родные провода блока питания, а в случае чего можно будет убрать монитор, не отклеивая подсветку. Бонус — автовключение подсветки при запуске компьютера.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
