Фоновая подсветка монитора светодиодной лентой своими руками. DIY: Универсальный Ambilight для домашней мультимедиа системы — Атмосвет. Получение захваченного фрейма

Ниже представлен проект изготовления подсветки Ambilight для телевизора или монитора. В предыдущей статье "Динамическая подсветка ТВ " использовался простой подход с использованием четырех RGB светодиодных лент, что позволяло отображать на каждой стороне ТВ только один цвет.
В данном статье мы усовершенствуем нашу подсветку, использовав для этого RGB LED пиксели, которые позволяют управлять каждым RGB-светодиодом. Подробнее читайте здесь: .

Итак, что нам понадобится:
- лента цифровых на основе нового контроллера WS2801. Одной такой ленты (25 светодиодов) вполне хватит на обычный среднестатический монитор. Расстояние между RGB-модулями около 10 см. Для большого телевизора могут понадобиться 2 такие ленты
- стабилизированный источник питания 5В для питания RGB LED. Максимальный ток БП нужно подбирать исходя из энергопотребления RGB LED модулей. Если будет использоваться одна лента (25 RGB LED), то ток БП нужен 1.5А, если 2 ленты, то соответственно 3А.
- контроллер Arduino, разъемы и др. мелочи.

Для облегчения подключения к Arduino и БП с лентой были произведены небольшие доработки. Для линии data и clock ленты, были припаяны соединительные коннекторы, чтобы их можно было надежно вставить в разъемы Arduino. Для подключения блока питания припаяли разъем. От разъема, к Arduino припаяли общую "землю". На фото ниже я думаю все вполне понятно:

В Arduino 13-ый пин использовался для clock, а 11-ый пин для data. Плюс, не забудьте "землю".

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

Затем, необходимо равномерно расположить 25 LED RGB светодиодов. У меня вышло расстояние между светодиодами около 50мм.

Когда будете изготавливать шаблон, не закрывайте вентиляционные отверстия на мониторе, если таковые имеются.

После того, как все RGB LED пиксели закреплены, осталось прикрепить контроллер Arduino. Для этих целей лучше всего подойдет двухсторонний скотч. Подсоединяем USB кабель к Arduino и источник питания 5В к RGB LED ленте.

Программное обеспечение

Все необходимое ПО вы можете скачать с GitHub . В папке Arduino->LEDstream находится скетч для Arduino. Скомпилируйте его и загрузите в контроллер.

Для компьютера используется ПО под Processing IDE, который необходимо скачать и установить отдельно (не путать с Arduino Processing!). Если в вашей конфигурации не 25 RGB LED, то в скетч необходимо будет внести изменения. Также, необходимо выбрать COM-порт, к которому подключен контроллер Arduino, чтобы передавать данные (см. скриншот ниже).

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

Код программы рассматривать не будем, т.к. он хорошо комментирован. Кстати в папке Colorswirl находится небольшой пример демо-скетча, который выводит на RGB светодиоды радугу.
Некоторое старое железо, может не справиться с нагрузкой (к примеру первые Atom"ы на нетбуках), т.к. постоянно делаются скриншоты. В этом случае может помочь уменьшение разрешения, к примеру 800х600.

Добрый день.

Для своей первой статьи я выбрал одну из самых успешных своих поделок: HDMI-passthrough аналог Ambilight от Philips, далее я будут называть эту композицию «Атмосвет».

Введение
В интернетах не очень сложно найти готовые/открытые решения и статьи как сделать Амбилайт для монитора/телевизора, если ты выводишь картинку с ПК. Но в моей мультимедиа системе вывод картинки на телевизор c ПК занимает только 5% времени использования, большее кол-во времени я играю с игровых консолей, а значит нужно было придумать что-то свое.
Исходные данные:
  • 60" Плазменный телевизор
  • HTPC на базе Asrock Vision 3D 137B
  • Xbox 360
Большинство устройств используют HDCP для воспроизведения контента даже во время игры.
Требование:
Необходимо обеспечить централизованную поддержку Атмосвета для всех устройств подключенных к телевизору.
Реализация
Я не буду рассказывать, как я прикреплял 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. Кроп фрейма, для исключения черных полос
Тут все просто:
frame.ROI = new Rectangle(8, 8, frame.Width - 8, frame.Height - 18 - 8);
Обрезаем 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;
var red = 255.0f/(255.0f + redLevelFloat)*pixelBuffer;
Вообще я изначально из исходников какого-то опенсорс редактора взял цветовой баланс, но он не менял белый(белый оставался белым), я поменял формулы немного, опечатался, и получил прям то, что нужно: если level компонента цвета отрицательный(я поинмаю как - этого цвета не хватает), то мы добавляем его интенсивность и наоборот. Для моих стен это получилось: RGB(-30,5,85).

В кореркции цвета я также выполняю выравнивание уровня черного(черный приходит где-то на уровне 13,13,13 по RGB), просто вычитая 13 из каждой компоненты.

6. Выполняем десатурацию (уменьшение насыщенности изображения)
В конечном сетапе, я не использую десатурацию, но может в определенный момент понадобится, фактически это делает цвета более «пастельными», как у Филипсовского амбилайта. Код приводить не буду, мы просто конвертим из RGB -> HSL, уменьшаем компоненту Saturation(насыщенность) и возвращаемся обратно уже в RGB.
7. Дефликер
Так уж выходит, что входное изображение «дрожит» - это следствие конвертации в аналоговый сигнал, как я полагаю. Я сначала пытался решить по своему, потом подсмотрел в исходники Defliker фильтра, используемом в VirtualDub, переписал его на C#(он был на С++), понял, что он не работает, ибо он такое впечталение, что борется с мерцаниями между кадрами, в итоге я совместил свое решение и этот дефликер получив что-то странное, но работающее лучше чем ожидалось. Изначальный дефликер работал только с интенсивностью всего фрейма, мне нужно по каждому светодиоду отдельно. Изначальный дефликер сравнивал изменение интенсивности как суммы, мне больше нравится сравнение длинны вектора цвета, Изначальный дефликер сравнивал дельту изменения интенсивности по сравнению с предыдущим кадром, это не подходит, и я переделал на среднюю величину интенсивности в пределах окна предыдущих кадров. И еще много других мелочей, в результате чего от начального дефликера мало что осталось.
Основная идея: исходя из средней интенсивности предыдущих кадров, выполнять модификацию текущего кадра, если его интенсивность не выше определенного порога (у меня этот порог в конечном сетапе 25), если порог преодолевается, то производится сброс окна, без модификации.
Немного модифицированный (для читаемости вне контекста) код моего дефликера:
Array.Copy(_leds, _ledsOld, _leds.Length); for (var i = 0; i < _leds.Length; i++) { double lumSum = 0; // Calculate the luminance of the current led. lumSum += _leds[i].R*_leds[i].R; lumSum += _leds[i].G*_leds[i].G; lumSum += _leds[i].B*_leds[i].B; lumSum = Math.Sqrt(lumSum); // Do led processing var avgLum = 0.0; for (var j = 0; j < LedLumWindow; j++) { avgLum += _lumData; } var avg = avgLum/LedLumWindow; var ledChange = false; if (_strengthcutoff < 256 && _lumData != 256 && Math.Abs((int) lumSum - avg) >= _strengthcutoff) { _lumData = 256; ledChange = true; } // Calculate the adjustment factor for the current led. var scale = 1.0; int r, g, b; if (ledChange) { for (var j = 0; j < LedLumWindow; j++) { _lumData = (int) lumSum; } } else { for (var j = 0; j < LedLumWindow - 1; j++) { _lumData = _lumData; } _lumData = (int) lumSum; if (lumSum > 0) { scale = 1.0f/((avg+lumSum)/2); var filt = 0.0f; for (var j = 0; j < LedLumWindow; j++) { filt += (float) _lumData/LedLumWindow; } scale *= filt; } // Adjust the current Led. r = _leds[i].R; g = _leds[i].G; b = _leds[i].B; // save source values var sr = r; var sg = g; var sb = b; var max = r; if (g > max) max = g; if (b > max) max = b; double s; if (scale*max > 255) s = 255.0/max; else s = scale; r = (int) (s*r); g = (int) (s*g); b = (int) (s*b); // keep highlight double k; if (sr > _lv) { k = (sr - _lv)/(double) (255 - _lv); r = (int) ((k*sr) + ((1.0 - k)*r)); } if (sg > _lv) { k = (sg - _lv)/(double) (255 - _lv); g = (int) ((k*sg) + ((1.0 - k)*g)); } if (sb > _lv) { k = (sb - _lv)/(double) (255 - _lv); b = (int) ((k*sb) + ((1.0 - k)*b)); } _leds[i] = Color.FromArgb(r, g, b); } /* Temporal softening phase. */ if (ledChange || _softening == 0) continue; var diffR = Math.Abs(_leds[i].R - _ledsOld[i].R); var diffG = Math.Abs(_leds[i].G - _ledsOld[i].G); var diffB = Math.Abs(_leds[i].B - _ledsOld[i].B); r = _leds[i].R; g = _leds[i].G; b = _leds[i].B; int sum; if (diffR < _softening) { if (diffR > (_softening >> 1)) { sum = _leds[i].R + _leds[i].R + _ledsOld[i].R; r = sum/3; } } if (diffG < _softening) { if (diffG > (_softening >> 1)) { sum = _leds[i].G + _leds[i].G + _ledsOld[i].G; g = sum/3; } } if (diffB < _softening) { if (diffB > (_softening >> 1)) { sum = _leds[i].B + _leds[i].B + _ledsOld[i].B; b = sum/3; } } _leds[i] = Color.FromArgb(r, g, b); }
Пусть _leds - массив светодиодов класса Color, _ledsOld - значения кадра до конвертации, LedLumWindow - ширина окна предыдущих кадров, для оценки среднего изменения интенсивности, в конечном сетапе окно у меня было 100, что примерно при 30кад/с равняется 3-секундам. _lumData - массив значения интенсивности предыдущих кадров.

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

8. Сглаживание светодиодов по соседям.
Вообще в конечном сетапе, сглаживание мне не очень понравилось, и я его отключил, но в некоторых случаях может пригодиться. Тут мы просто усредняем цвет каждого светодиода по его соседним.
var smothDiameter = 2*_smoothRadius + 1; Array.Copy(_leds, _ledsOld, _leds.Length); for (var i = 0; i < _ledsOld.Length; i++) { var r = 0; var g = 0; var b = 0; for (var rad = -_smoothRadius; rad <= _smoothRadius; rad++) { var pos = i + rad; if (pos < 0) { pos = _ledsOld.Length + pos; } else if (pos > _ledsOld.Length - 1) { pos = pos - _ledsOld.Length; } r += _ledsOld.R; g += _ledsOld.G; b += _ledsOld.B; } _leds[i] = Color.FromArgb(r/smothDiameter, g/smothDiameter, b/smothDiameter); }
9. Сохраняем текущий стейт, чтобы тред отправки пакетов схватил и отправил его на контроллер подсветки.
Я умышленно разделил процесс обработки кадров и отправки пакетов на контроллер: пакеты отправляются раз в определенный интервал(у меня это 40мс), чтобы ардуино спела обработать предыдущий, ибо чаще чем 30мс она захлебывается, таким образом выходит, что мы не зависим напрямую от частоты кадров захвата и не мешаем тому процессу(а ведь отправка пакета тоже тратит время).
Немного про ардуино
Нельзя просто так взять и отправить по сериалу здоровенный пакет на ардуино, ибо онв ыйдет за пределы дефолтного буфера HardwareSerial и ты потеряешь его конец.
Решается это довольно просто: выставляем значение размера буфера HardwareSerial достаточного размера, чтобы влезал весь отправляемый пакет с массивом цветов, для меня это 410.
UI
Сам софт был реализован в виде win службы, чтобы настраивать все параметры + включать/отключать я сделал Web UI, который связывался с службой через WebService на службе. Итоговый интерфейс на экране мобильника выглядит так:
Результат
В итоге результат оправдал все ожидания, и теперь играя в игры на консолях я получаю еще больше погружения в атмосферу игры.

Как общий результат работы я записал видео с работой атмосвета по моей схеме:

Испытуемый образец 1: Pacific Rim, сцена битвы в Шанхае, этот фильм хорошо подходит для тестирования и демонстрации, много ярких сцен и вспышек, ударов молнии и т.д.:

Испытуемый образец 2: Какой-то ролик из MLP, слитый с ютуба, очень хорошо подходит для теста сцен с яркими цветами(мне понравились полосы), а также быстро сменяющихся сцен(под конец виде можно разглядеть последствия задержки, видных только на видео, при реальном просмотре этого не заметно, пробовал измерить задержку по видео - получилось 10-20мс):

И на последок стоит заметить про потребление ресурсов от HTPC:
HTPC у меня ASRock Vision 3D на i3, служба атмосвета отжирает 5-10% CPU и 32MB RAM.

Спасибо за внимание, очень надеюсь, что кому-нибудь моя статья поможет.

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

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

Зачем необходима подсветка телевизора

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

Обратите внимание! Вред в данной ситуации подтвержден как многими исследованиями, так и субъективными ощущениями людей.

Просмотр телевизора без хотя бы фоновой подсветки чреват рядом негативных явлений:

  • быстрая утомляемость глаз;
  • падение остроты зрения;
  • появление головных болей и т.д.

Обратите внимание! Все это, особенно быстрая утомляемость глаз, обуславливается наличием слишком яркого и заметного контраста между экраном телевизора и затемненным помещением. Кроме этого сама яркость экрана способна динамически меняться, что заставляет зрительную систему человека функционировать в экстремальных для себя условиях.

Яркий экран телевизора и темная комната — плохое сочетание для глаз

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

Решение проблемы: внешнее освещение

На сегодняшний день проблема просмотра телевидения ночью имеет достаточно простое решение, которое воплощается в жизнь своими руками. Решение это кроется в установке дополнительной подсветки для тех моделей, у которых отсутствует контурное освещение экрана, оборудованное производителем.
Но здесь имеются свои «подводные камни», без знания которых вред организму будет продолжать наноситься. В данной ситуации необходимо учитывать следующие нюансы:

  • потолочная общая подсветка здесь не подойдет, так как ее световой поток будет засвечивать экран. В результате этого у телевизора начнет снижаться контраст;

Потолочное освещение комнаты

  • несколько лучшим решением будет использование настенных бра, напольных торшеров и настольных светильников. Но в такой ситуации мы сталкиваемся с проблемой оптимального размещения осветительных приборов , ведь они не должны мешать просмотру телепередач. Если такие светильники будут находиться сзади зрителя, то они создадут на экране блики. А если их разместить вблизи телевизора, то они будут притягивать внимание, отвлекая;

Светильник рядом с телевизором

  • фоновая подсветка. Создание фоновой подсветки вокруг телевизора лишено всех недостатков ранее перечисленных способов размещения осветительных приборов. К плюсам данного метода относится и то, что такое освещение с помощью современных технологий (светодиодные ленты и PaintPack) можно легко организовать своими руками.

Как видим, фоновая подсветка в данной ситуации является лучшим вариантом.

Особенности фоновой подсветки: что нужно учитывать

Фоновая подсветка, которая организуется своими руками позади телевизора, должна отвечать ряду требований:

  • быть ненавязчивой, чтобы не привлекать к себе излишнее внимание;
  • давать оптимальный уровень светового потока, чтобы предотвращать утомление глаз от длительного просмотра телепередач в темное время суток;

Фоновое освещение

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

Из всего разнообразия осветительных приборов, активно используемых в системе наружного и внутреннего освещения, в данной ситуации максимально полно под перечисленные выше требования подходит светодиодная продукция, а именно – светодиодные ленты.

Преимущества светодиодного освещения телевизора в фоновом режиме

Использование светодиодной ленты в качестве фоновой подсветки любой техники в доме несет в себе следующие преимущества:

  • возможность выбрать подсветку любого цвета. Светодиодная продукция отличается довольно обширным спектром всех возможных цветов и оттенков;

Светодиодная подсветка

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

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

Варианты установки светодиодной подсветки за телевизор

Как мы уже выяснили, самым простым и доступным способом сделать своими руками фоновую подсветку является установка на заднюю крышку телевизора светодиодной ленты. Эта процедура не займет у вас много времени и потребует следующих действий:

  • кладем телевизор на заранее подготовленный стол, который накрыт тканью. Делать это нужно аккуратно, чтобы не повредить экран;
  • по периметру задней крышки клеем светодиодную ленту. Помните, что она может иметь любой цвет свечения;
  • поскольку телевизор в процессе своей работы будет нагреваться, то ленту дополнительно следует сажать на клей каждые 5-10 см;

Установка ленты

  • далее в углу припаиваем полоски ленты. Здесь можно купить специальные угловые соединители;
  • затем подключаем к ним блок питания с нужной мощностью для используемой в подсветке ленты. В схему нужно будет включить реле или преобразователь 5→12 вольт. Это необходимо, если у прибора имеются USB-выходы;

Схема соединения

  • выключатель подсветки можно прикрепить в углу.

Обратите внимание! Лента должна прочно держаться, чтобы не провоцировать появление короткого замыкания.

Система PaintPack

Кроме этого можно использовать системы подсветки PaintPack.

Система PaintPack представляет собой корпус небольшого размера. К нему с двух сторон подключаются светодиодные ленты съемного типа. PaintPack также оснащен индикатором, разъемом для питания и microUSB, через который возможно подключение в компьютеру. Также в состав PaintPack входит мастер-разъем. С его помощью можно последовательно подключать два устройства.

Обратите внимание! Данное приспособление отлично подходит для фонового освещения и монитора компьютера.

Корпус системы следует установить на задней панели телевизора. Далее по вышеописанному алгоритму монтируем и подключаем светодиодные ленты,.
если планируется подключать PaintPack через USB-разъем к компьютеру, нужно будет установить требуемые драйверы, а также провести настройку прибора в комплектной программе. Для этого вам понадобится пакет AmbiBox.

Заключение

Решаясь на создание фоновой подсветки телевизора лучшего источника света, чем светодиодная лента вам не найти. В данной ситуации все манипуляции довольно легко проводятся своими руками, что является еще одним плюсом. Более того, используя PaintPack, вы добьетесь большей технологичности фоновой подсветки, созданной своими руками.


Освещение на кухне малогабаритной квартиры

Технология «Ambilight»

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

Сама технология родилась в прошлом веке благодаря тому, что, с одной стороны — яркость тогдашних ТВ-приёмников была недостаточной, и зрители выключали свет при их просмотре, с другой — просмотр телевизора в темноте давал резкую нагрузку на глаза, что приводило к быстрой утомляемости и общему дискомфорту. Решение было очевидным — наличие рядом источника рассеянного света (так называемых ТВ-ламп). Сегодня, по мнению исследовательского отдела компании «Philips», данную проблему призвана решать технология «Ambilight».

На текущий момент существует уже 5 поколений (и масса модификаций) данной технологии, из них наиболее распространены три последние:

  • Технология фоновой трёхканальной подсветки «Ambilight Surround » с дополнительными лампами сверху корпуса для расширения поля эффектов вверх и независимой привязкой левого, правого и верхнего блока фоновых ламп к соответствующей зоне экрана.
  • Технология полной подсветки «Ambilight Full Surround », где экран уже окружён лампами со всех сторон. Соответственно, процессор, отвечающий за управление лампами, строит фоновое изображение на анализе не менее четырёх зон изображения на экране. Для лучшей передачи света, корпус телевизора снабжён задней экраном-панелью.
  • Технология «Ambilight Spectra », позволяющая создавать «объёмное» изображение благодаря более чем 120-ти светодиодам нового поколения и усовершенствованным алгоритмам обработки изображения.

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

Что можно сказать в завершении обзора? Устройство, несомненно, интересное и стоит того, чтобы его опробовать, особенно с учётом того, что производитель предоставляет бесплатный тест-драйв в течении 30 дней, т. е. если устройство вам не понравится, вы можете его вернуть, получив обратно свои деньги. Ваши затраты в таком случае будут равны почтовой пересылке производителю. Главный недостаток — устройство работает только в связке с ПО, а значит необходим компьютер для получения эффекта динамической подсветки.

Итоги

Ну и в сухом остатке имеем:

Плюсы

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

Минусы

  • необходим компьютер для получения эффекта динамической подсветки;
  • отсутствие ПО в поставке, необходимость скачивать его из интернета;
  • отсутствие в комплекте инструкции (даже электронной), необходимость читать её на сайте производителя;
  • отсутствие ряда элементов крепления (двустороннего скотча) для светодиодов;
  • необходимость определённого расположения экрана (15-30 см от стены) для получения максимально правильного эффекта;
  • отсутствие гарантийного талона и реквизитов производителя как на упаковке, так и на самом изделии.

Все наверное видели как работает динамическая подсветка в телевизорах Philips, называемая Amilight. В данной статье представлено устройство позволяющее сделать динамическую подсветку для телевизора или монитора. Телевизор/монитор должен быть подключен к компьютеру, на котором будет воспроизводится видеоконтент.

Итак, для сборки устройства понадобится:
1. Контроллер Arduino
2. с плотностью светодиодов 30шт на метр (для моего 32"" ТВ ушло 2 метра)
3. Светодиодный драйвер TLC5940
4. Источник питания 12 В

Ниже изображено схематичное изображение устройства подсветки:

Сзади телевизора наклеено 4 светодиодных ленты (левая, левая вверху, правая вверху, правая). Каждая лента подключена к LED-драйверу TLC4950 и источнику питания 12В. Светодиодный драйвер TLC4950 обеспечивает ШИМ управление яркостью каждого цвета: красного, зеленого и синего. LED-драйвером управляет контроллер Arduino, который в свою очередь получает команды от ПК. На компьютере запущена специальная программа, написанная на языке processing, которая анализирует каждый кадр видеоизображения и дает соответствующие команды Arduino.

Далее необходимо заготовить светодиодные ленты. Для моего 32" телевизора получилось в каждой ленте получилось по 15 светодиодов. На лентах предусмотрены специальные места, где можно спокойно припаяться после того, как вы обрезали ее.

К каждой RGB-ленте необходимо припаять четыре провода. На концах я использовал обычные автомобильные разьемы, чтобы в случае необходимости можно было отсоединить ленты.

Соединение Arduino и TLC5940:
Arduino TLC5940
Pin 2 ======= Pin 27 (VPRG)
Pin 3 ======= Pin 26 (SIN)
Pin 7 ======= Pin 25 (SCLK)
Pin 4 ======= Pin 24 (XLAT)
Pin 5 ======= Pin 23 (BLANK)
Pin 6 ======= Pin 19 (DCPRG)
Pin 8 ======= Pin 18 (GSCLK)

Остальные выводы TLC5940 присоединяем согласно следующей таблице:
Pin 22 (GND) === Arduino Ground
Pin 21 (VCC) === Arduino +5V
Pin 20 (IREF) === Arduino Ground через резистор 2кОм
Pin 1-15,28 === PWM Output (ШИМ выход на RGB-ленты)

От источника питания +12В я подключил к светодиодным лентам, а "общий" от источника питания к Arduino Ground.

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

Программа, запускаемая на компьютере написана на языке Processing (официальный сайт http://www.processing.org). Программа постоянно делает скриншоты экрана, а затем вычисляет средние значения трех цветов (красный, зеленый, синий) для разных мест на экране (левое, левое верхнее, правое верхнее, правое). После вычислений, программа пересылает данные в порт, к которому подключен контроллер Arduino.

Программа для Arduino считывает приходящие ей данные с порта и дает управляющие команды для LED-драйвера TLC5940, какой уровень яркости нужен для красного, зеленого или синего цветов. А далее, TLC5940 выдает ШИМ-сигнал для управления светодиодами.

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то