Ещё один колхозный Ambilight

В сети есть сотни статей про самопальную подсветку вашего монитора или телевизора, но вот вам ещё одна в реалиях 2018 года с советами и готовыми рецептами.

Во-первых, это красиво!

Идея фоновой подсветки (Ambient Lighting Technology – технология окружающего освещения) витала в воздухе, согласно некоторым источникам, с 50-х годов прошлого века. В компании Philips мысль оформили в прототип и запатентовали в 2007 году, на данный момент у технологии есть уже 5 поколений и её развитию немало поспособствовало развитие микропроцессоров и светодиодов. До сих пор люди делятся на ярых сторонников и противников этой штуки, но, рискну предположить, что всё-таки у неё гораздо больше сторонников, чем у того же кошмарного 3D на домашних телевизорах. Исследования показывают, что за счёт дополнительной подсветки снижается нагрузка на глаза, улучшается восприятие картинки, при этом размер изображения кажется больше, как и контрастность картинки.

Ну давайте же скорее сделаем себе такую!

Самопальная подсветка разделяется на два основных вида:
— подсветка для условно «глупого» устройства, например телевизора, для этого нужно дополнительное устройство, анализирующее картинку и подающее команды светодиодам, например приставка на Android;
— подсветка для ПК, здесь картинку захватывает и анализирует специальное приложение, тратятся ресурсы самого ПК.

Реализуем вторую схему. Надо сказать, что самопальный эмбилайт тоже прошёл некую эволюцию, в 2011 году конструкция собиралась из отдельных светодиодов и Arduino Uno, сейчас же можно гораздо проще собрать то же самое на светодиодной ленте и прицепить к ней маленькую Arduino Nano.
За основу бралась инструкция с портала ixbt плюс частое гугление, т.к. я, похоже, собрал все шишки в процессе сборки этой вундервафли 🙂. Почитайте статью на ixbt в качестве введения в тему и возвращайтесь сюда.

Компоненты:
— ноутбук с ОС Windows, монитор Dell P2715Q 27″;
— блок питания выдающий напряжение 5В, сила тока рассчитывается ниже по тексту исходя из максимальной потребляемой мощности ленты заданной длины, на AliExpress ищется по Power Adapter DC 5V;
— светодиодная лента, модель и длина зависит от ваших хотелок, я взял максимально простой для применения вариант, позволяющий в случае косяка или производственного брака вырезать и легко заменить любой сегмент, это готовая 4-х контактная лента с контроллером на каждый светодиод – WS2801 3m 32led Black IP67, защита по IP67 позволяет просто вытирать ленту и не копить на её мелких деталях пыль;
— контроллер и кабель для него, я взял аналог Arduino Nano – Nano CH340/ATmega328P от RobotDyn;
— коннекторы, благодаря им можно не подпаиваться к ленте, и таким образом лишний раз не накосячить, я взял и угловые (4pin LED Connector LED Strip) и кабельные (4pin RGB Connector LEP Strip), в итоге использовал кабельные, т.к. решил делать максимально безопасную схему с подключением питания в четырёх точках;
— корпус для контроллера можно сделать из подручных средств, хоть из яйца от киндера.

Мой комплект стоил примерно 2500 руб., можно было сэкономить и взять менее мощный блок питания, более простую ленту, вышло бы минимум в полтора раза дешевле, но тут уж выбор за вами, просто помните, что скупой (а тем более неопытный) платит дважды.

Так же для комфортной сборки вам понадобятся:
— паяльник с флюсом и припоем и прочим;
— мультиметр;
— клеевой пистолет;
— бокорезы и ножницы;
— маленькая плоская отвёртка;
— термоусадка и зажигалка;
— кабели для подключения питания к ленте, я взял пару старых ненужных usb кабеля и порезал их пополам;
— узкий двусторонний скотч для приклеивания светодиодной ленты к монитору;
— разъём «мама» для удобного подключения проводов питания от ленты к блоку питания, лучше взять в ближайшем радиомагазине подходящий конкретно для вашего блока питания, либо заколхозить из любых других, имеющихся под рукой, некоторые используют 3,5 мм аудио мини-джеки.

Планирование конструкции, выбор блока питания и сборка

Обычно светодиодные ленты содержат 30 или 32 светодиода на метр, по многочисленным отзывам в интернетах, нет никакого смысла брать 60 светодиодов на метр. Берём линейку или метр и прикидываем будущую конструкцию, типовые реализации:
— лента с трёх сторон – монитор или телевизор стоят близко к поверхности стола/тумбочки, соответственно снизу всё равно ничего не будет видно;
— лента с четырёх сторон, это мой случай.
Прикидываем куда будет клеиться лента и её длину, суммируем все кусочки и получаем общую длину, делим её на количество светодиодов-на-метр и получаем примерное общее количество светодиодов. Конечно, в результате эта цифра скорректируется, выбирайте длину ленты с разумным запасом. В выбранной 3-х метровой ленте 32*3 = 96 светодиодов, мне в итоге понадобилось по 11 на вертикальные стороны и по 19 на горизонтальные, т.е. 11+11+19+19 = 60 светодиодов.

Обратите внимание на описание ленты на AliExpress, там довольно много важной информации, в том числе модель, количество контактов, распиновка (в процессе сборки лучше почаще сверяться с надписями на самой ленте), последовательность цветов для корректной передачи цветов (по факту пришлось подбирать методом перебора всех режимов), напряжение и потребляемая мощность:

Below information will help you to use Arduino working with this product.
WS2801, 32 leds/ meter, 5 meters, BGR strip.
A control circuit for the 4 pin
1: 5 V +
2: Clock
3: Data
4: GND 5 V-
Product Features:
1) LED Boutiques
2) Superb right 5050 SMD LED, high intensity and reliability.
3) Long life span 50,000 hours
4) Continuous length, packed with 5 meter.
5) Flexible ribbon for curving around bends
6) Completely smooth and even light spread, solving the uneven luminous problem
7) Running at low temperature
8) Low power consumption
Specifications:
1) Size: L500cm (5M) x W1.5cm x T0.35cm
2) Emit Color: dream magic color
3) Protection: Protection: waterproof or non Waterproof (Optional)
4) Working Voltage: 5V DC
5) LED Quantity: 32eds / m, 5meter / roll
6) View angle: 120 ° ~ 140 °
7) Working Temperature: -20 ° to 50 °
8) 350-450mcd/led
9) Wattage: 7-9W/meter,
10) Use the programmable controller, Raspberry Pi or Arduino or T-1000S controller
5m/roll DC5V addressable ws2801 led strip Arduino development ambilight TV 32leds/m SMD5050 RGB Magic Dream Color Rope Light

Как нам подсказывает школьный курс физики (или гугл), мощность равна произведению силы тока на напряжение, т.е. 1 Вт = 1 А * 1 В. Формула: Р = I * V. 60 светодиодов это даже меньше 2-х метров, но берём условно с запасом, соответственно необходимая сила тока будет (2 м * 9 Вт/м) / 5 В = 3,6 А. На всю 3-х метровую ленту хватило бы 6 А. Подвод питания рекомендуют делать на каждые 10 Вт потребляемой мощности, для данной ленты это через каждый метр.

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

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

Paint наше всё!

Нюанс: т.к. коннекторы примерно на миллиметр уже ленты, пришлось подрезать бокорезами каждый стык по бокам.

Области подрезки

Открываем «крышечку» на коннекторе с помощью отвёртки, оттягиваем силиконовую трубку, аккуратно заправляем ленту под контакты (я сначала пихал сверху 😃), закрываем и следим чтобы всё было ровненько и соседние контакты не замыкались. Затем натягиваем сверху силиконовую трубку. В ходе итоговой сборки я залил все стыки клеевым пистолетом, как были изначально сделаны начало и конец ленты, только аккуратнее.

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

Мозги подсветки

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

Нужно скачать или установить из Microsoft Store программу Arduino IDE, подключить Arduino, драйверы должны установиться автоматически. Далее в IDE нужно выбрать COM порт. Обратите внимание что выбран процессор: «ATmega328P (Old Bootloader)», это решает проблему с Nano для Arduino IDE версии старше 1.8.4, так же советуют держать скетчи и вообще все файлы для работы с ардуиной в корне системного диска, и чтобы путь не содержал кириллицу (например, в C:\Arduino\), но сильно сомневаюсь что сейчас эта проблема актуальна.

Ещё одна проблема на новой версии Arduino IDE решается даунгрейдом менеджера плат на версию 6.2.1

Доставляем библиотеку FastLED в самой IDE, ничего отдельно качать не нужно.

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

Меняем значения переменных в соответствии с нашей схемой, комментируем строку с моделью ленты по умолчанию и раскомментируем нужную нам, получилось:

define NUM_LEDS 60
define DATA_PIN 6
define CLOCK_PIN 4
FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);

Переходим к основному блюду. Забейте на прикреплённые во всех статьях скетчи, они в основном старые, крайне кривые и не универсальные, нам нужен github. На гитхабе есть как минимум два репозитория, содержащие в названии слово adalight, нам нужен https://github.com/dmadison/Adalight-FastLED, идём в релизы и загружаем последний.
Открываем скетч, редактируем под свою ленту, мои изменения коснулись строк:

Num_Leds   =  60;        // strip length
define LED_TYPE WS2801 // led strip type for FastLED
define COLOR_ORDER BGR // color order for bitbang
define PIN_DATA 6 // led data output pin
define PIN_CLOCK 4 // led data clock pin (uncomment if you're using a 4-wire LED type)
define CLEAR_ON_START // LEDs are cleared on reset

Загружаем скетч и идём устанавливать и настраивать программу Ambibox. Вроде как можно использовать и другие, но я не стал сопротивляться и сделал по ману с ixbt.
Внимание, в один момент времени с COM портом, т.е. ардуиной, может работать только одна программа, поэтому закрываем Arduino IDE перед запуском Ambibox.

Нажимаем «Больше настроек» и последовательно настраиваем управляющее подсветкой устройство, перемещаем зоны на монитор Display 1, настраиваем зоны захвата, обратите внимание на смещение зон и на направление зон, аналогичная стрелочка, ичсх направление, есть на светодиодной ленте, это важно.
Порядок цветов пришлось выбирать перебором всех вариантов, благо всё равно подходит только один. Проще всего понять какая комбинация подходит — открыть на мониторе с эмбилайтом картинку с зелёным цветом. Для применения настроек не забывайте шевелить мышкой на втором экране, иначе программа не будет понимать что нужно отправить новые команды на ардуину.
Ambibox иногда подвзрывает мозг нежеланием сохранять настройки, прикол с количеством зон я тоже сначала не понял (их 13, а не 11, хотя общее количество светодиодов 60), не работает после вывода ПК из сна (после перезапуска программы всё ОК), но в целом работает нормально.

Настройки, обратите внимание, важные картинки в данной заметке кликабельны
Второй экран (он же Monitor 1 в программе), зоны соответствуют расположению светодиодов на ленте

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

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *