Ambilight через HDMI. Часть 1.
Всем привет!
Сегодня я подробно расскажу как сделать амбилайт для всех устройств, подключенных через HDMI. Сразу хочу сказать несколько вещей:
1. Всё не так просто, как может показаться. В процессе создания есть куча подводных камней. Нужно быть готовым, что с первого раза всё не заработает.
2. Пожалуйста, не стоит писать "Это отвлекает", "Ненужная лабуда" и т.д. и т.п. Те, кто решат сделать подсветку для ТВ, явно представляют что делают.
3. Текст - картинка.
4. Да - это вышло недёшево, но и работает оно не один день.
Закончим с предисловием. Перейдём к DIY =]
*Пост разделю на несколько частей, не потому что кармадрочер, а потому что слишком много текста и картинок. Иначе получится информационная каша (ммм, нямка).
Ambilight через HDMI. Часть 1.
Ambilight через HDMI. Часть 2 - настройка HyperCon.
Ambilight (сокращение от англ. «Ambient Lighting Technology» — рус. «Технология Окружающего Освещения») — технология фоновой подсветки для телевизоров, которая была изобретена и запатентована компанией Philips Electronics.
Спасибо, Википе-тян.
Комплектующие и инструмент.
Вам понадобятся:
- HDMI кабель (поддерживает 4К HDCP 2.2) три штуки (один на вход, два на выход); 1200₽;
- HDMI Splitter (не поддерживает 4К HDCP 2.2); 2200₽;
- HDMI to AV converter; 1450₽;
- USB Video Grabber (с чипом STK1160 либо UTV007 - один создатель знает, почему они раз через раз работают); 350₽;
- Raspberry Pi 3 Model B; 2200₽;
- Arduino UNO; 600₽;
- светодиодная лента WS2812B (каждый кусочек содержит в себе три диода в одном блоке) - ЭТО ОЧЕНЬ ВАЖНО! Ленты другого типа не подойдут, внимательно смотрите описание на али; 1800₽ (за 3 метра);
- Блок питания (показатели зависят от ленты); 580₽;
- Корпусы для ардуино и распберри - по желанию; 100₽;
- Один малюсенький переходничок RCA Male - Male; 10₽;
- Паяльник, флюс и олово; 400₽;
- Немного проводов; 20₽;
- USB-кабель "Тип А - Микро"; 100₽;
- Силовой кабель для БП; 100₽;
- MicroSD на 16Гб (рекомендуется class 10); 500₽.
Чек: ~11500₽
*Если хотите работать с 4К, то обязательно учтите это заранее, так как не все HDMI кабели поддерживают последние протоколы; обратите внимание на сплиттер, который выбираете, он также должен поддерживать 4К.
Дополнительно.
Фото светодиодной ленты WS2812B: четыре ножки, один блок на отрезок, три контакта:
Степень защиты (IP XX).
IP20 - не советую брать, вообще никакой защиты;
IP65 - самый лаконичный вариант, лента покрыта силиконом;
IP68 - лента находится в силиконовой трубке.
Расчёт блока питания.
У нас есть три показателя: сила тока (А), напряжение (В), мощность (Вт).
Напряжение: если лента на 5В, то и БП на 5В; если лента на 12В, то... БП тоже на 12В.
Мощность: на странице продавца (или на самой упаковке от ленты) указывается потребляемая мощность на метр (пример: 60 светодиодов/M - 18 Вт/метр). То есть, потребляемая мощность * кол-во подключаемых метров = итоговая мощность. При выборе блока, мощность берём ~30% больше, на запас.
Сила тока: Суммарную мощность ленты / Напряжение БП (округляем в большую сторону).
Готовы? Ещё не передумали? Ну тогда пошла жара =D
Подготовка Arduino UNO
Для прошивки качаем файл Ambilight_Hyperion.ino. Прежде, чем прошивать, нужно подкорректировать настройки под себя; нас интересуют строки:
#define LEDCOUNT 187
const char prefix[] = {0x41, 0x64, 0x61, 0x00, 0xba, 0xef};
В #define LEDCOUNT 187 выставляем число подключаемых светодиодов (в моём случае 187);
В const char prefix[] = {0x41, 0x64, 0x61, 0x00, 0xba, 0xef} нужно исправить под себя два последних байта.
Предпоследний: Кол-во светодиодов - 1 и переводим в HEX (пример: 187-1=186, 186 в HEX - BA);
Последний: XORим его, используя ЭТОТ калькулятор. Первое число - предпоследний байт, второе число - 55 (пример: BA XOR 55 = EF).
Всё, файлик готов. Во вкладке "Инструменты" выбираем плату Arduino/Genuino UNO и порт с подключенной ардуинкой. Нажимаем загрузка и готово.
БП и Лента
Запитываем БП силовым кабелем (ниже есть картинка со схемой).
Припаиваем провода к ленте. Провод DI подключаем к Arduino.
Запитываем светодиодную ленту и заземляем ардуино.
Включаем блок питания, втыкаем USB кабель (идёт в комплекте) в ардуино и ПК. Если всё правильно, то лента засветится циановым цветом, затем погаснет.
Ось для Raspberry Pi3 model B
Качаем с диска OpenElec и Win32DiskImager.
Вставляем microSD в компуктер, запускаем Win32DiskImager (под админом), выбираем образ OpenElec и записываем всё это дело.
Внимание! Warning! 警告! Если по какой-то причине вам нужно перезаписать карточку, то предварительно её нужно форматнуть, и тут возникает гемор. Дело в том, что при записи она делится на несколько кусков, при форматировании винда может начать ныть "карта защищена от записи", "не удалось форматировать" и т.д. и т.п. Самый легкий, быстрый и удобный вариант: втыкаете карту в любой цифровой фотик и форматируете её там.
После записи втыкаем карту в Малинку.
Далее Raspberry подключаем к ТВ: питаем через микро-USB, подключаем HDMI, подключаем USB клаву и мышь. Чекаем что всё работает.
Сбор схемы
Первый блок
- с HDMI устройства идёт картинка и попадает в сплиттер;
- первая картинка уходит на ТВ;
- вторая картинка уходит на конвертер HDMI в AV;
- с конвертора уходит в граббер (только видео);
- с граббера в Малинку (через USB);
- Малина запитывается через микро-USB, подключённый к ТВ;
- Малина получает картинку.
Второй блок
- HyperCon обрабатывает картинку и отправляет инфу на ардуино (через USB);
- Ардуино питается через этот же USB;
- Ардуино посылает данные на светодиодную ленту;
- светодиодная лента делает своё дело - светит;
- светодиодная лента питается от БП.
Итоговая схема следующая:
Не так сложно, как кажется. =]
Во втором посте я расскажу как настроить HyperCon, откалибровать смещение поступающей картинки и как откалибровать цветопередачу.
Постараюсь сделать его максимально быстро, т.к. без второго поста особо ловить нечего, а пихать всю инфу сюда... ну об этом я в самом начале написал.