Делаем активную фоновую подсветку для любого телевизора за 1 час. Сейчас научу
В закладки
Одной из популярных технологий для домашних ТВ, которая делает просмотр контента более зрелищным и увлекательным, является фоновая подсветка. Она присутствует лишь на ограниченном количестве телевизоров бренда Philips и недоступна для остальных устройств.
Есть способ добавить эту крутую фишку практически на любой телевизор, но с определенными ограничениями. Сейчас рассмотрим самые популярные и доступные варианты, которые позволяют получить фоновую подсветку без смены телевизора.
Что такое Ambilight
Подсветка Ambilight (технология окружающего освещения) – изобретенная и запатентованная компанией Philips технология, которая обеспечивает фоновую адаптивную подсветку на телевизионных панелях компании.
Система анализирует цветовую палитру картинки на экране и включает аналогичное свечение по периметру телевизора. Работает все в динамическом режиме и создает эффект рассеивания изображения за пределы матрицы.
Выглядит очень эффектно и позволяет еще больше погрузиться в атмосферу фильма или сериала. Таким способом получается визуально увеличить размеры экрана и залить большую часть обзора зрителя цветом.
К сожалению, другие производители электроники не пытаются представить свои аналоги или купить у правообладателя права на использование Ambilight. Однако, при помощи некоторых гаджетов с AliExpress можно “наколхозить” нечто подобное.
Как работает Ambilight и его аналоги
Для начала нужно понять, как все это работает. Специальный модуль захватывает и анализирует изображение на экране, чтобы понять цвет области по периметру матрицы. После этого на находящуюся сзади адресную RGB-ленту подается аналогичный сигнал.
Захват производится несколько раз в секунду, с такой же частотой обновляется свечение диодной ленты сзади. Разумеется, для этого нужны серьезные ресурсы. Чем выше разрешение картинки, тем больше пикселей приходится обрабатывать при захвате.
Все решения, которые повторяют технологию Ambilight, делятся на два типа: на основе внешнего декодера или на основе телевизионной приставки.
◉ Первый тип представляет собой отдельную коробку с HDMI-входом и аналогичным выходом. Внутри находится небольшой одноплатный компьютер (чаще всего на основе Raspberry Pi), который принимает выводимый сигнал с любого источника. На вход могут быть подключены TV-приставки или консоли. Внутри происходит процесс захвата, а на выходе картинка выводится на телевизор.
Преимущество такого решения в простоте подключения. Никаких сложных схем, дополнительного ПО и настроек. Коробочка просто помещается между источником сигнала и его приемником (телевизором).
Минус такой коробки тоже очевиден – чаще всего она будет выдавать картинку хуже, чем на входе. Мощности модуля может не хватать, чтобы ретранслировать 4K, иногда не будет поддержки HDR, бывают случаи, когда коробки не поддерживают нужный показатель FPS или банально не передают объемный звук. Здесь все упирается либо в мощность начинки, либо в стандарт порта HDMI.
Купить готовое решение для фоновой подсветки – от 6528 руб.
◉ Второй вариант является более доступным, процесс захвата при этом происходит на телевизионной приставке при помощи специального ПО. В таком случае нужен лишь небольшой маломощный модуль для управления диодной лентой.
Преимущество такой системы в ее цене. А вот главные недостатки в серьезных требованиях к используемой ТВ-приставке. Нужен достаточно мощный процессор, который справится как с воспроизведением контента, так и с захватом картинки для декодирования.
Кроме этого на некоторых чипах отсутствует физическая возможность захвата изображения из-за особенностей его вывода. Например, достаточно распространенные процессоры Amlogic при декодировании картинки создают специальный защитный слой, который не позволяет сделать захват изображения. Чаще всего выход из ситуации есть, но придется возиться с настройками приложения для захвата, искать подходящие плееры и подбирать удачную комбинацию параметров.
Купить набор для сборки фоновой подсветки на базе ТВ-приставки – от 831 руб.
Для сегодняшнего обзора выбрал второй вариант: он банально стоит дешевле и с настройкой немного помучиться захотелось.
Что нужно знать перед покупкой
Прежде чем заниматься выбором подобного устройства, убедитесь, что у вас есть все необходимое для получения хорошего результата.
Во-первых, обязательно придется использовать какую-то телевизионную приставку для вывода контента. Если пользуетесь возможностями своего Smart-TV – ничего не выйдет. Подойдет самодельная телевизионная приставка на основе Raspberry Pi, переделанный под приставку Windows-компьютер, большинство современных Android TV-боксов.
Во-вторых, нужен телевизор с достаточно тонкими рамками. Если установить подсветку на панель с толстым обрамлением, между картинкой на экране и фоновой подсветкой будет видна заметная граница и полноценный эффект фонового свечения не получите.
В-третьих, вокруг телевизора должно быть свободное место для подсветки. Если панель строго вписана в интерьер, установлена в шкафу или компактной мебели, ничего не выйдет. Желательно, чтобы по всему периметру на расстоянии минимум 30-40 см от телевизора ничего не было.
В-четвертых, используемая телевизионная приставка должны быть достаточно мощная, чтобы справиться и с воспроизведением, и с захватом картинки для подсветки. Откровенно бюджетные модели или простые стики не подойдут.
Перед заказом необходимо выбрать плотность диодов на адресной диодной ленте (30 на метр или 60 на метр) и её длину.
▶ для телевизоров диагональю 22″ и менее берите 1 метр ленты;
▶ на матрицы 22″-32″ потребуется 2 метра ленты;
▶ на экраны 32″-43″ рекомендуется заказывать 3 метра ленты;
▶ для экранов 43″-60″ выбирайте 4 метра;
▶ максимальную длину 5 метров берите при размере экрана более 60″.
В любом случае лучше измерить периметр своего телевизора по задней крышке, чтобы точно попасть в размер. Еще учтите, будет ли необходима подсветка нижней грани. При установке панели на стойке от диодов снизу эффекта практически не заметите, если же вешаете телевизор на кронштейн – обязательно учитывайте все четыре грани.
Как все подключить
В коробке с устройством вы найдете: понятную инструкцию на английском с картинками, выбранный при заказе моток RGB-диодной ленты, сам блок управления подсветкой, внешний блок питания и кабели для подключения.
1. Для начала наклейте ленту на задней крышке телевизора максимально близко к краю по всему периметру.
2. Особое внимание уделите углам, можно разрезать ленту и спаять ее на стыках или просто аккуратно согнуть.
3. После этого подключите ленту к блоку питания согласно схеме.
4. Логический кабель подключите к блоку управления.
5. Подключите блок управления в свободный USB-порт на вашей приставке.
6. Устанавливаем приложение Ambient light Application for Android из Google Play. Утилита платная, стоит 199 руб.
7. Запускаем приложение и сразу же можем проверить работу ленты, включив режим свечения одним цветом или случайный эффект.
8. После этого переходим в параметры приложения, параллельно считаем количество диодов в вертикальных и горизонтальных секциях нашей подсветки.
9. Настраиваем соответствующие параметры в настройках: задаем количество диодов по вертикали и горизонтали, направление ленты (по часовой стрелке или против),
10. Настройка LEDs Bottom Gap позволяет задать неактивную область под стойкой телевизора, а параметр First LED Offset позволяет выбрать место первого диода при разных вариантах поклейки ленты.
11. Ниже можно настроить частоту обновления экрана, область захвата цвета и качество воспроизводимых эффектов (частоту смены цвета ленты).
После внесения всех параметров можете проверить корректность работы подсветки в режиме Screen Capture Mode.
▣ Для корректной работы подсветки в разных приложениях рекомендуем использовать сторонний плеер – Vimu Media Player. В его настройках необходимо активировать пункт Выводить видео в текстуру.
▣ Для работы при просмотре IPTV используйте OTTPlayer с включенной опцией Decoder медиаплеер.
▣ Просмотр YouTube с фоновой подсветкой возможен через приложение Smart YouTube TV.
В играх фишка будет работать без дополнительных настроек и танцев с бубном.
Стоит ли заморачиваться
Фоновая подсветка выглядит очень эффектно, ее однозначно стоит попробовать всем любителям смотреть фильмы или сериалы на большом экране. При использовании Apple TV, для работы с игровыми консолями или просто для беспроблемной работы из коробки выбирайте более дорогое готовое решение.
При этом будьте готовы к ограничениям по максимальному разрешению картинки, отсутствию некоторых режимов с высокой частотой кадров либо отсутствию объемного звука.
В остальных случаях лучше попробовать более доступное и настраиваемое решение на базе телевизионной приставки. Если используете ТВ-бокс на основе Windows-компьютера, получите самую простую и беспроблемную настройку, а вот с боксами на Android придется повозиться с параметрами.
В любом случае получите очень эффектное дополнение для своего телевизора или просто красивую фоновую подсветку для интерьера.
Если же вы не можете идти на указанные компромиссы, не готовы тратить время на подбор настроек и хотите самое беспроблемное решение – выбирайте телевизоры Philips с оригинальной запатентованной технологией.
В закладки
DIY: Универсальный Ambilight для домашней мультимедиа системы — Атмосвет
Для своей первой статьи я выбрал одну из самых успешных своих поделок: HDMI-passthrough аналог Ambilight от Philips, далее я будут называть эту композицию «Атмосвет».
Введение
В интернетах не очень сложно найти готовые/открытые решения и статьи как сделать Амбилайт для монитора/телевизора, если ты выводишь картинку с ПК. Но в моей мультимедиа системе вывод картинки на телевизор c ПК занимает только 5% времени использования, большее кол-во времени я играю с игровых консолей, а значит нужно было придумать что-то свое.
Исходные данные:
- 60″ Плазменный телевизор
- HTPC на базе Asrock Vision 3D 137B
- Xbox 360
- PS3
- PS4
- WiiU
Требование:
Необходимо обеспечить централизованную поддержку Атмосвета для всех устройств подключенных к телевизору.
Реализация
Я не буду рассказывать, как я прикреплял 4.5м светодиодную ленту к телевизору и что нужно сделать с Arduino, в качестве базы можно использовать эту статью.
Единственный нюанс:
Я заметил, что внизу экрана идут странные мерцания, сначала погрешил на сигнал, перековырял дефликер, изменил ресазинг картинки и еще кучу всего перекопал, стало лучше, но от мерцания не помогло. Стал наблюдать. Оказалось, что мерцание было только в конце ленты и то при ярких сценах. Взяв мультиметр, я замерил напряжение на начале, середине и конце ленты и угадал с причиной мерцаний: в начале ленты было 4.9В( да китайский БП дает напряжение с отклонением, это не существенно), в середине 4.5 в конце 4.22 — Падение напряжение слишком существенно, пришлось решить проблему просто — к середине ленты я подвел питание от бп, провод пустил за телевизором. Помогло мгновенно, какие либо мерцания прекратились вообще.
Захватываем картинку вебкамерой
Первая тестовая версия для обкатки идеи и её визуализации была выбрана через захват картинки через вебкамеру) выглядело это как-то так:
Низкая цветопередача и высокий latency показал, что эта реализация не может быть никак использована.
Захват картинки через HDMI
- Сигнал со всех устройств подается на 5in-1out HDMI свитч, который поддерживает HDCP
- Выходной сигнал подается на 1in-2out HDMI splitter, который мало того, что поддерживает HDCP, так еще отключайте его на выходе(слава китайцам).
- Один из выходных сигналов идет на телевизор
- Другой выходной сигнал идет на HDMI to AV конвертер
- S-Video сигнал идет на коробочку захвата от ICONBIT
- Коробочка захвата подключается к вечно работающему HTCP по USB, который подключен к Arduino контроллеру ленте на телевизоре.
- Это работает.
- Сумарно все это дело, заказывая из китая, мне обошлось тысяч в 3-4 тыс. рублей.
Почему я не использовал плату для HDMI захвата? Все просто: самый дешевый вариант и доступный — это Blackmagic Intensity Shuttle, но она не может работать с сигналом 1080p/60fps, только с 1080p/30fps — что не приемлемо, т.к. я не хотел понижать фреймрейт, чтобы можно было захватывать картинку. + это дело стоило в районе 10 тыc. рублей. — что не дешево при неизвестном результате.
Потери на конвертации HDMI to S-video несущественны для захвата цвета в разрешении 46х26 светодиодной подсветки.
Изначально для захвата S-video я пробовал использовать EasyCap( у него много китайских вариаций), но суть в том, что используемый там чип крайне убог, и с ним нельзя работать при помощи openCV.
Единственный минус — выходной сигнал S-Video содержал черные полосы по краям срезающий реальный контент(около 2-5%), выходную картинку с платы захвата я обрезал, чтобы удалить эти полосы, сама потеря изображения в тех областях на практике не сказалась на результате.
Для меня это была самая интересная часть, т.к. с железками я не очень люблю ковыряться.
Для захвата картинки я использовал openCV и в частности его .NET враппер emgu CV.
Я решил также применить несколько разных техник постобработки изображения и его подготовки, прежде чем отдавать список цветов на контроллер.
Процесс обработки фрейма
1. Получение захваченного фрейма
2. Кроп фрейма, для исключения черных полос
Обрезаем 8 пикселей сверху, 8 справа и 18 снизу.(слева полосы нет)
3. Ресайзим фрейм в разрешение подсветки, незачем нам таскать с собой здоровую картинку
Тоже ничего сложного, делаем это средствами openCV:
frame.Resize(LedWidth — 2*LedSideOverEdge,
LedHeight — LedBottomOverEdge — LedTopOverEdge,
INTER.CV_INTER_LINEAR);
Внимательный читатель заметит, обилие переменных. Дело в том, что у меня рамка телевизора достаточно большая, занимая 1 светодиод по бокам, 1 сверху и 3 снизу, поэтому ресайз делается на светодиоды, которые находятся непосредственно напротив дисплея, а углы мы уже дополняем потом. При ресайзинге мы как раз получаем усредненные цвета, которые должны будут иметь пиксели светодиодов.
4. Выполняем мапинг светодиодов с отреcайзенного фрейма
Ну тут тоже все просто, тупо проходим по каждой стороне и последовательно заполняем массив из 136 значений цветом светодиодов. Так вышло, что на текущий момент все остальные операции проще выполнять с массивом светодиодов, чем с фреймом, который тяжелее в обработке. Также на будущее я добавил параметр «глубины» захвата(кол-во пикселей от границы экрана, для усреднения цвета светодиода), но в конечном сетапе, оказалось лучше без неё.
5. Выполняем коррекцию цвета (баланс белого/цветовой баланс)
Стены за телевизором у меня из бруса, брус желтый, поэтому нужно компенсировать желтизну.
var blue = 255.0f/(255.0f + blueLevelFloat)*pixelBuffer[k];
var green = 255.0f/(255.0f + greenLevelFloat)*pixelBuffer[k + 1];
var red = 255.0f/(255.0f + redLevelFloat)*pixelBuffer[k + 2];
Вообще я изначально из исходников какого-то опенсорс редактора взял цветовой баланс, но он не менял белый(белый оставался белым), я поменял формулы немного, опечатался, и получил прям то, что нужно: если level компонента цвета отрицательный(я поинмаю как — этого цвета не хватает), то мы добавляем его интенсивность и наоборот. Для моих стен это получилось: RGB(-30,5,85).
В кореркции цвета я также выполняю выравнивание уровня черного(черный приходит где-то на уровне 13,13,13 по RGB), просто вычитая 13 из каждой компоненты.
6. Выполняем десатурацию (уменьшение насыщенности изображения)
В конечном сетапе, я не использую десатурацию, но может в определенный момент понадобится, фактически это делает цвета более «пастельными», как у Филипсовского амбилайта. Код приводить не буду, мы просто конвертим из RGB -> HSL, уменьшаем компоненту Saturation(насыщенность) и возвращаемся обратно уже в RGB.
7. Дефликер
Так уж выходит, что входное изображение «дрожит» — это следствие конвертации в аналоговый сигнал, как я полагаю. Я сначала пытался решить по своему, потом подсмотрел в исходники Defliker фильтра, используемом в VirtualDub, переписал его на C#(он был на С++), понял, что он не работает, ибо он такое впечталение, что борется с мерцаниями между кадрами, в итоге я совместил свое решение и этот дефликер получив что-то странное, но работающее лучше чем ожидалось. Изначальный дефликер работал только с интенсивностью всего фрейма, мне нужно по каждому светодиоду отдельно. Изначальный дефликер сравнивал изменение интенсивности как суммы, мне больше нравится сравнение длинны вектора цвета, Изначальный дефликер сравнивал дельту изменения интенсивности по сравнению с предыдущим кадром, это не подходит, и я переделал на среднюю величину интенсивности в пределах окна предыдущих кадров. И еще много других мелочей, в результате чего от начального дефликера мало что осталось.
Основная идея: исходя из средней интенсивности предыдущих кадров, выполнять модификацию текущего кадра, если его интенсивность не выше определенного порога (у меня этот порог в конечном сетапе 25), если порог преодолевается, то производится сброс окна, без модификации.
Немного модифицированный (для читаемости вне контекста) код моего дефликера:
Пусть _leds — массив светодиодов класса Color, _ledsOld — значения кадра до конвертации, LedLumWindow — ширина окна предыдущих кадров, для оценки среднего изменения интенсивности, в конечном сетапе окно у меня было 100, что примерно при 30кад/с равняется 3-секундам. _lumData — массив значения интенсивности предыдущих кадров.
В конечном итоге данный механизм дал еще приятные неожиданные последствия на картинку, сложно описать как это воспринимается визуально, но он делает темнее где надо и ярче где надо, словно динамический контраст. Цель дефликера в итоге получилась широкая, не только устранение мерцаний, но и общее уравновешивание выводимого цвета, как и по компонентам, так и по времени в пределах окна.
8. Сглаживание светодиодов по соседям.
Вообще в конечном сетапе, сглаживание мне не очень понравилось, и я его отключил, но в некоторых случаях может пригодиться. Тут мы просто усредняем цвет каждого светодиода по его соседним.
9. Сохраняем текущий стейт, чтобы тред отправки пакетов схватил и отправил его на контроллер подсветки.
Я умышленно разделил процесс обработки кадров и отправки пакетов на контроллер: пакеты отправляются раз в определенный интервал(у меня это 40мс), чтобы ардуино спела обработать предыдущий, ибо чаще чем 30мс она захлебывается, таким образом выходит, что мы не зависим напрямую от частоты кадров захвата и не мешаем тому процессу(а ведь отправка пакета тоже тратит время).
Немного про ардуино
Нельзя просто так взять и отправить по сериалу здоровенный пакет на ардуино, ибо онв ыйдет за пределы дефолтного буфера HardwareSerial и ты потеряешь его конец.
Решается это довольно просто: выставляем значение размера буфера HardwareSerial достаточного размера, чтобы влезал весь отправляемый пакет с массивом цветов, для меня это 410.
Сам софт был реализован в виде win службы, чтобы настраивать все параметры + включать/отключать я сделал Web UI, который связывался с службой через WebService на службе. Итоговый интерфейс на экране мобильника выглядит так:
Сейчас планирую прикрутить голосовое управление через Kinect for Windows подключенном к HTCP.
Результат
В итоге результат оправдал все ожидания, и теперь играя в игры на консолях я получаю еще больше погружения в атмосферу игры.
Как общий результат работы я записал видео с работой атмосвета по моей схеме:
Испытуемый образец 1: Pacific Rim, сцена битвы в Шанхае, этот фильм хорошо подходит для тестирования и демонстрации, много ярких сцен и вспышек, ударов молнии и т.д.:
Испытуемый образец 2: Какой-то ролик из MLP, слитый с ютуба, очень хорошо подходит для теста сцен с яркими цветами(мне понравились полосы), а также быстро сменяющихся сцен(под конец виде можно разглядеть последствия задержки, видных только на видео, при реальном просмотре этого не заметно, пробовал измерить задержку по видео — получилось 10-20мс):
И на последок стоит заметить про потребление ресурсов от HTPC:
HTPC у меня ASRock Vision 3D на i3, служба атмосвета отжирает 5-10% CPU и 32MB RAM.
Динамическая фоновая подсветка экрана своими руками
Динамическая фоновая подсветка экрана телевизора или монитора компьютера. Работает под управлением Arduino, на компьютере вертится программа Ambibox. Arduino управляет адресной светодиодной лентой на чипах WS2812. В схему добавлен фоторезистор для адаптивной подстройки яркости ленты в зависимости от интенсивности освещения в помещении.
- Разрешение самодельной фоновой подсветки гораздо выше, чем предлагают даже дорогие модели от Philips
- Самая простая схема подключения среди всех моих проектов
- Удобная программа Ambibox для настройки и персонализации фоновой подсветки
ГОТОВЫЙ НАБОР
У наших партнёров Giant4 появился готовый набор ( ссылка на товар ) для сборки динамической подсветки! В комплекте идёт:
- Лента (длину можно выбрать)
- Провода для подключения
- Блок питания
- Удобный контроллер
- Подробная инструкция по установке
ВИДЕО
КОМПОНЕНТЫ
Каталоги ссылок на Алиэкспресс на этом сайте:
Стараюсь оставлять ссылки только на проверенные крупные магазины, из которых заказываю сам. Также по первые ссылки ведут по возможности на минимальное количество магазинов, чтобы минимально платить за доставку. Если какие-то ссылки не работают, можно поискать аналогичную железку в каталоге Ардуино модулей . Также проект можно попробовать собрать из компонентов моего набора GyverKIT .
- Купить в РФ, 60 свет/метр, 30 свет/метр
- Купить на Али ссылка, ссылка
- Black PCB / White PCB – цвет подложки ленты, чёрная / белая. В видео была чёрная
- 1m/5m – длина ленты в метрах (чтобы заказать 2 метра, берите два заказа 1m, очевидно)
- 30/60/74/96/100/144 – количество светодиодов на 1 метр ленты. В видео использовалась лента 60 диодов на метр
- IP30 лента без влагозащиты (как на видео)
- IP65 лента покрыта силиконом
- IP67 лента полностью в силиконовом коробе
- Постфикс ECO – лента чуть более низкого качества, меньше меди, на длинной ленте будет сильно проседать яркость
СХЕМЫ
ПРОШИВКА
УПРАВЛЕНИЕ
Теперь ставим программу амбибокс. Тут всё стандартно, далее далее продолжить далее далее завершить. В конце при выборе устройства нужно указать адалайт. Запускаем. Сразу можно поставить русский язык. И можно поставить автозапуск программы при старте компьютера. Чтобы она не мешала остальным, можно поставить задержку запуска. Теперь переходим на вторую вкладку и сразу жмём кнопку больше настроек. Не пугаемся. Вспоминаем номер порта, у меня это был порт номер 5, и указываем его. Далее в программе есть несколько методов захвата изображения, из них у меня работают вроде бы первые 6, можете их все потыкать посомтреть посмотреть какой будет меньше тормозить. Но. Все методы кроме GDI FS Aero включают классическую тему оформления виндоус, то есть без прозрачных окошек, они даже подписаны no aero. Я люблю прозрачные окошки так что оставил аэро. Теперь нажимаем показать зоны захвата и видим, что они не настроены. Зон должно быть столько же, сколько у вас светодиодов. 98. Оп, перезагрузилась. Теперь жмём мастера настрйоки зон. Я наклеивал ленту так, что она получилась без угловых светодиодов, ставлю галочку. Далее, по горизонтали у меня 31 светодиод, ориентироваться нужно не на это число, а сразу смотреть вниз на зоны. Соотношение сторон определяется автоматически, но я на всякий случай поставил как у своего монитора, 16 на 9. И ещё можно удлинить зоны, чтобы они брали источник цвета с большей площади, так результат будет более симпатичным. Ну и всё. Сохраняем настрйоки и ставим галку включить подсветку. Тадаааам. Поздравляю, теперь у нас есть динамическая подсветка монитора. С режимом виндоус аэро наблюдается небольшая задержка, в других режимах без аэро задержки почти нет. В папке с картинками для тестов вы найдёте несколько сочных картинок для проверки вашей фоновой подсветки.
Рекомендую попробовать программу Adalight EtVersion, вот отсюда
ОШИБКИ И FAQ
Может случиться так, что при работе от USB компьютер не выключается, пока не будет извлечён штекер, ведущий к Arduino
Ответы на большинство вопросов можно найти здесь: https://alexgyver.ru/ws2812_guide/
В: Я купил ленту, на ней контакты G R B 12V. Как подключить?
О: Молодец, можешь кинуть ей в собаку. Это не та лента.
В: Не работает! Какие есть типичные ошибки?
О: Скорее всего в подключении. В основном забывают объединить GND ленты и GND Ардуины.
ПОДДЕРЖАТЬ
Вы можете поддержать меня за создание доступных проектов с открытым исходным кодом, полный список реквизитов есть вот здесь .
Делаем адаптивную фоновую подсветку для ТВ или монитора по типу Philips Ambilight за 1000 рублей
Компания Philips в 2007 году запатентовала невероятно простую, но, без преувеличения, потрясающую технологию фоновой подсветки ТВ Ambilight. С такой адаптивной подсветкой меньше устают глаза при просмотре в темноте, увеличивается эффект присутствия, расширяется область отображения и пр. Ambilight применима не только к видео и фото контенту, но и играм. Ambilight превратилась в визитную карточку телевизоров Philips. С тех пор компания Philips пристально бдит, чтобы никто из крупных производителей и думать не смел посягать на святое, создавая что-то подобное. Наверное, лицензировать эту технологию можно, но условия какие-то запредельные, и другие игроки рынка не особо горят желанием это делать. Небольшие компании тоже пытались (и сейчас есть компании, которые это делают) внедрять аналогичную технологию в виде отдельных комплектов, но кара от Philips была неизбежна. Так что в лучшем случае, если компания не продлит каким-то образом патент или его производную, другие производители лишь в 2027 году смогут выпускать что-то похожее.
Но нас, обычных потребителей, такая кара не касается. Мы вольны для себя делать то, что считаем нужным. Сегодня я расскажу в деталях, как самостоятельно сделать адаптивную фоновую подсветку для ТВ или монитора по типу Philips Ambilight (далее просто Ambilight). Для некоторых статья ничего нового в себе содержать не будет, т.к. таких проектов десятки, а статей написано сотни на разных языках, и людей, которые себе уже сделали подобное, тысячи. Но для многих это всё может оказаться очень интересным. Никаких особых навыков вам не потребуется. Только базовые знания физики за 8 класс средней школы. Ну, и совсем чуть-чуть пайки проводов.
Чтобы вы лучше понимали, о чём я говорю, приведу свой пример того, что получилось. Реальные затраты на ТВ 42" — около 1000 рублей и 2 часа работы.
Видео не передаёт всех ощущений и эффекта целиком, но дети в первый раз сидели с открытыми ртами.
Нравится? Тогда смело читайте дальше, как это сделать для себя!
Возможные варианты реализации
Существует несколько вариантов вариантов реализации Ambilight. Зависят они от источника видеосигнала.
Самый дешёвый, простой и эффективный вариант — источником сигнала выступает ПК с Windows, Mac OS X или Linux. Сейчас очень распространены Windows-боксы на процессорах Atom, которые стоят от 70$. Все они идеально подходят для реализации Ambilight. Я уже несколько лет использую разные Windows-боксы (в тумбе под ТВ) в роли медиаплеера, написал небольшую кучку обзоров и считаю их самыми лучшими ТВ-приставками для медиаконтента. Аппаратная реализация этого варианта едина для всех перечисленных операционных систем. Именно об этом варианте я расскажу в статье. Программная часть будет относиться к Windows системе, в роли универсальной управляющей программы будет выступать AmbiBox. С Mac OS X и Linux можно использовать Prismatik.
Второй вариант — источником сигнала выступает медиаприставка на базе Android, коих тоже огромное количество. Этот вариант самый проблемный. Во-первых, подсветка будет работать только в медиакомбайне Kodi (и в ответвлениях этого проекта). Во-вторых, в подавляющем большинстве случаев всё работает только с отключённым аппаратным декодированием видео, что для большинства боксов неприемлемо. Аппаратная реализация проекта тоже накладывает определённые требования. Я его затрагивать не буду, но если что-то интересует конкретное, то постараюсь ответить в комментариях.
Третий вариант — независимое от источника сигнала решение. Это самое затратное, но абсолютно универсальное решение, т.к. сигнал снимается прямо с HDMI кабеля. Для него вам понадобится достаточно мощный микрокомпьютер (типа Raspberry Pi), HDMI сплиттер (разветвитель), конвертер HDMI-RCA AV, USB 2.0 устройство захвата аналогового видео. Только с таким вариантом вы сможете гарантированно задействовать Ambilight с любой ТВ-приставкой/ресивером, Android-боксами, Apple TV, игровыми приставками (например, Xbox One, PlayStation 4) и пр. устройствами, которые имеют выход HDMI. Для варианта с поддержкой 1080p60 стоимость компонентов(без светодиодной ленты) будет около 70$, с поддержкой 2160p60 — около 100$. Это вариант очень интересный, но по нему нужно писать отдельную статью.
Аппаратная часть
Для реализации понадобится три основных компонента: управляемая светодиодная RGB лента, блок питания, микрокомпьютер Arduino.
Сначала небольшое количество объяснений.
WS2811 — это трёхканальный канальный контроллер/драйвер (микросхема) для RGB светодиодов с управлением по одному проводу (адресация к произвольному светодиоду). WS2812B — это RGB светодиод в корпусе SMD 5050, в который уже встроен контроллер WS2811.
Подходящие для проекта светодиодные ленты для простоты так и называют — WS2811 или WS2812B.
WS2812B лента — это лента, на которой последовательно размещены светодиоды WS2812B. Лента работает с напряжением 5 В. Существуют ленты с разной плотностью светодиодов. Обычно это: 144, 90, 74, 60, 30 на один метр. Бывают разные степени защиты. Чаще всего это: IP20-30 (защита от попадания твёрдых частиц), IP65 (защиты от пыли и водяных струй), IP67 (защита от пыли и защита при частичном или кратковременном погружении в воду на глубину до 1 м). Подложка чёрного и белого цвета.
Вот пример такой ленты:
WS2811 лента — это лента, на которой последовательно размещены WS2811 контроллер и какой-то RGB светодиод. Есть варианты, рассчитанные на напряжением 5 В и 12 В. Плотность и защита аналогичны предыдущему варианту.
Вот пример такой ленты:
Ещё встречаются WS2811 «ленты» с большими и мощными светодиодами, как на фотографии ниже. Они тоже подходят для реализации Ambilight для какой-нибудь огромной панели.
Какую ленту выбрать, WS2812B и WS2811?
Важный фактор — питание ленты, о чём я расскажу чуть позже.
Если у вас дома окажется подходящий по мощности блок питания (часто дома от старой или испорченной техники остаются блоки питания), то выбирайте ленту, исходя из напряжения блока питания, т.е. 5 В — WS2812B, 12 В — WS2811. В этом случае вы просто сэкономите деньги.
От себя могу дать рекомендацию. Если общее количество светодиодов в системе будет не более 120, то WS2812B. Если более 120, то WS2811 с рабочим напряжением 12 В. Почему именно так, вы поймёте, когда речь зайдёт о подключение ленты к блоку питания.
Какое уровень защиты ленты выбрать?
Для большинства подойдёт IP65, т.к. с одной стороны она покрыта «силиконом» (эпоксидной смолой), а с другой есть самоклеющаяся поверхность 3M. Эту ленту удобно монтировать на ТВ или монитор и удобно протирать от пыли.
Какую плотность светодиодов выбрать?
Для проекта подойдут ленты с плотностью от 30 до 60 светодиодов на метр (конечно, можно и 144, никто не запрещает). Чем выше плотность, тем больше будет разрешение Ambilight (количество зон) и больше максимальная общая яркость. Но стоит учитывать, чем больше светодиодов в проекте, тем сложнее будет устроена схема питания ленты, и понадобится более мощный блок питания. Максимальное количество светодиодов в проекте — 300.
Покупка ленты
Если ваш ТВ или монитор висит на стене, и все 4 стороны имеют рядом много свободного пространства, то ленту лучше всего разместить сзади по периметру на все 4 стороны для максимального эффекта. Если ваш ТВ или монитор установлен на подставку, или снизу мало свободного пространства, то ленту надо размещать сзади на 3-х сторонах (т.е. низ без ленты).
Для себя я выбрал белую ленту WS2812B IP65 с 30 светодиодами на метр. Подходящий блок питания на 5 В у меня уже был. Решал, 60 или 30 светодиодов на метр, но выбрал последнее после пересмотра видео с готовыми примерами реализации — яркость и разрешение меня устроили, да и питание легче организовать, меньше проводов. На Алиэкспресс огромное количество лотов лент WS2812B. Я заказывал здесь 5 метров за 16$. Для моего ТВ (42", 3 стороны) нужно было только 2 метра, т.е. можно было купить за 10$, оставшиеся три метра для друга. Цены часто меняются у продавцов, предложений много, так что просто выберите на Алиэкспресс дешёвый лот с высоким рейтингом (ключевые слова для поиска — WS2812B IP65 иди WS2811 12V IP65).
Покупка блока питания для ленты
Блок питания подбирается по мощности и напряжению. Для WS2812B — напряжение 5 В. Для WS2811 — 5 или 12 В. Максимальная потребляемая мощность одного WS2812B светодиода 0,3 Вт. Для WS2811 в большинстве случаев аналогично. Т.е. мощность блока питания должна быть не ниже N * 0,3 Вт, где N — количество светодиодов в проекте.
Например, у вас ТВ 42", вы остановились на ленте WS2812B с 30 светодиодами на метр, вам нужно 3 метра ленты все 4 стороны. Вас понадобится блок питания с напряжением 5 В и максимальной мощностью от 0,3 * 30 * 3 = 27 Вт, т.е. 5 В / 6 А. В моей реализации используются только 3 стороны, всего 60 светодиодов (если быть точным, то 57) — мощность от 18 Вт, т.е. 5 В / 4 А.
У меня давно уже лежит без дела многопортовая USB-зарядка ORICO CSA-5U (8 А), оставшаяся после старого обзора. Питание портов у неё запараллельно (это критически важно), мне это ЗУ идеально подходит в роли БП, т.к. подключать ленту я буду через 2 параллельных соединения (объяснения будут чуть позже в статье).
Если бы этого ЗУ у меня не было, то я бы выбрал такой БП 5 В / 4 А за 4$ (есть информация, что именно в этот БП ставят внутренности на 2,5 А, так что надо детальней изучить этот вопрос у продавца, или посмотреть другие модели).
Покупка микрокомпьютера
Управлять Ambilight будет микрокомпьютер Arduino. Arduino Nano на Алиэкспресс стоит около 2,5$ за штуку.
Затраты на мой вариант (для ТВ 42"):
10$ — 2 метра WS2812B IP65 (30 светодиодов на метр)
4$ — блок питания 5 В / 4 А (денег на БП не тратил, привожу стоимость для ясности)
2,5$ — Arduino Nano
————
16,5$ или 1000 рублей
Реализация аппаратной части
Самое главное — это правильно организовать питание ленты. Лента длинная, напряжение просаживается при большом токе, особенно при 5 В. Большинство проблем, которые возникают у тех, кто делает себе Ambilight, связаны именно с питанием. Я пользуюсь правилом — нужно делать отдельную подводку питания на каждые 10 Вт потребляемой максимальной мощности при 5 В и 25 Вт потребляемой мощности при 12 В. Длина подводки питания (от блока питания до самой ленты) должна быть минимальной (без запаса), особенно при 5 В.
Общая схема подключения выглядит следующим образом (на схеме отображено подключение питания для моего варианта):
К ленте с обоих концов подведено питание — два параллельных подключения. Для примера, если бы я делал подсветку на все 4 стороны, а лента была по 60 светодиодов на метр (т.е. максимальная мощность 54 Вт), то я бы сделал такой подвод питания:
Провода подводки нужно использовать соответствующие, чем меньше калибр (AWG), тем лучше, чтобы их с запасом хватало для расчётной силы тока.
К Arduino от ленты идут два контакта. GND, который нужно подключить к соответствующему пину на Arduino. И DATA, который нужно подключить к шестому цифровому пину через резистор 300-550 Ом (лучше 470 Ом). Если резистора у вас нет, то в большинстве случаев всё будет прекрасно работать и без него, но лучше, чтобы он был. Резистор можно купить за пару копеек в любом радиомагазине. Сам микрокомпьютер Arduino можете разместить в любом удобном корпусе, многие используют для этого яйцо Киндер-сюрприза. Arduino нужно размещать как можно ближе к ленте, чтобы подводка DATA имела минимальную длину.
Припаивать провода к ленте просто. Главное правило — время контакта с паяльником должно быть минимальным, «возюкать» паяльником нельзя.
В моём случае получилось вот так:
Два чёрных качественных USB кабеля пошли на питание, а белый для подключение к компьютеру. Белые термоусадочные трубки у меня закончились, я использовал красные. Не так «красиво», но меня устраивает (всё равно это спрятано за ТВ).
Важный вопрос — как изгибать ленту под прямым углом? Если у вас лента на 60 светодиодов, то ленту нужно разрезать и соединять короткими проводами (разместив всё это в термоусадочной трубке). Можете купить специальные угловые коннекторы на три контакта для светодиодных лент (на снимке 4 контакта, просто для примера):
Если у вас лента на 30 светодиодов, то расстояние между светодиодами большое, вы легко можете сделать угол без резки. Удаляете кусочек «силиконового» покрытия, изолируйте (можно даже «скотчем») контактную площадку и сгибаете по схеме:
Я отрезал кусок ленты, чтобы практиковаться. Главное, не нужно переусердствовать — слегка согнули один раз и всё. Тюда-сюда перегибать не нужно, сильно сдавливать линию изгиба не нужно.
Вот вид сзади ТВ, все провода через отверстие уходят внутрь тумбы:
Программная часть
Это самое простое.
Загружаем и распаковываем Arduino IDE. Загружаем библиотеку FastLED и кладём папку FastLED в папку libraries (Arduino IDE). Запускаем Arduino IDE и закрываем её. В папке Документы будет создана папка Arduino. В ней создаём папку Adalight и копируем тут скетч Adalight.ino.
Подключаем микрокомпьютер Arduino по USB. Драйвер (последовательного интерфейса CH340) установится автоматически. Если этого не произошло, то в папке Arduino IDE есть папка Drivers со всем необходимым.
Запускаем Arduino IDE и открываем файл Adalight.ino.
Изменяем количество светодиодов в коде. У меня 57.
Инструменты > Плата > Arduino nano
Инструменты > Порт > Выбираете COM-порт (там будет нужный вариант)
Нажимаем кнопку «Загрузить»:
Программа проинформирует, когда загрузка будет завершена (это буквально пара секунд).
Готово. Нужно отключить Arduino от USB и подключить заново. Лента загорится последовательно красным, зелёным и синим цветом — Arduino активировался и готов к работе.
Загрузите и установите программу AmbiBox. В программе нажмите «Больше настроек» и укажите устройство — Adalight, COM-порт и количество светодиодов. Выберите количество кадров для захвата (до 60).
Далее, нажмите «Показать зоны захвата» > «Мастер настройки зон». Выберите конфигурацию вашей ленты.
Нажмите «Применить» и «Сохранить настройки». На этом базовые настройки заканчиваются. Потом вы сможете поэкспериментировать с размерами зон захвата, сделать цветокоррекцию ленты и пр. В программе много разных настроек.
Чтобы активировать профиль, достаточно два раза мышкой нажать на соответствующую иконку (профилей AmbiBox) в области уведомлений Windows. Лента сразу загорится. Отключается тоже двойным нажатием.
Вот в принципе и всё. Результат вы видели в начале статьи. Ничего сложного, дёшево и здорово. Уверен, что у вас получится лучше, так что делитесь своими поделками в комментариях.