Как стать автором
Обновить

Адаптивная фоновая подсветка для телевизора на Raspberry Pi – аналог Ambilight

Время на прочтение21 мин
Количество просмотров47K
Всего голосов 35: ↑35 и ↓0+35
Комментарии38

Комментарии 38

Я давно думаю расковырять протокол подсветки своей клавиатуры, там светодиоды как раз светят в экран и дают на стену за монитором похожий эффект.

Недостаток один — через пару дней перестаёшь обращать внимание на наличие этой подсветки т.к. фильмы есть и с чёрным рамками, это отдельный гемор с расстановкой захвата зон в видео 4:3 и 21:9 почти к 1/4 ширины и длины экрана 16:9, в играх все зависит от граббера, встроенного в управляющий софт dx9, dx11 и т.п., где то будет работать, где то нет. Для себя отмечу, что интересно собрать и настроить, но не использовать ((. Включил в итоге как подсветку при работе в тёмном помещении. Эффекта ВАУ нет в общем, только на нескольких тестовых видео.

Делать расстановку зон под рамку не требуется, демон нормально справляется с автоматическим детектированием границ кадра, и от источника сигнала тоже ничего не зависит. Хайпериону не важны dx9, dx11, нужен только HDMI сигнал) У вас все перемешалось.
Справедливости ради, у меня Hyperion справляется с blackboard detection'ом не очень, может, из-за субтитров.

Не знаете, можно там как-то скейлить видео, чтобы обрезать края, но занять черые зоны внизу и вверху?
С аппаратным граббером EasyCap — можно. Программный — не такой гибкий.
На Новый Год приятно включать. Помимо этого только иногда для документалок BBC про джунгли включаю, тогде красиво смотрится. А в повседневке — пару дней поигрался и всё.
В играх только в авто-симуляторах вау-эффект есть, когда под мостом проезжаешь — только ради этого можно какой-нибудь дешёвый амбилайт купить, впечатляет сильнее 3D очков в этой же игре (не VR шлем, а 3D с поляризованными очками, шлем-то вау-эффектнет посильнее).
У меня телевизор включен постоянно, обычно там просто заставки Chromecast, но каждый вечер, когда комната в основном освещается экраном телевизора, оно создает приятную атмосферу. Уже месяцев 8 как я собрал, но все равно поражаюсь, насколько это приятно.

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

Ещё для управления можно поставить приложение на телефон, я пользуюсь Official Kodi Remote пока лень настроить пульт от ТВ.
Поделюсь своим опытом. Я собирал честную подсветку, которая работает с любым сигналом. У меня есть Хромкаст, Xbox и Nintendo Switch и Apple TV, поэтому сетап с Kodi не подходил. Начинал с такой же схемы: HDMI сплиттер, HDMI -> AV конвертер, AV USB capture. С этим сетапом есть проблемы:
1. ОЧЕНЬ. МНОГО. ПРОВОДОВ. Да, HDMI сплиттер запитывается прямо с HDMI, это хорошо, но, например, HDMI -> AV надо запитывать отдельно (провод + блок питания). Также, отдельный HDMI кабель между сплиттером и конвертером, а так же RCA кабель между конвертером и AV capture донглом. Плюс, это три отдельных девайса, которые тоже занимают место (а если не хотите, чтобы донгл из RPi торчал, то надо еще и USB папа-мама удлинитель).
2. Не знаю как у автора, но у меня весь этот сетап давал очень плохую картинку, она заметно отставала и часто имела помехи.

В итоге я плюнул и купил нормальный HDMI capture девайс (на Амазоне ищется по «HDMI Capture,HDMI to USB 3.0»). Стоит эта балалайка $90, но после неудачи с предыдущим сетапом я был готов попробовать. И, о боже, насколько она лучше. Первое, она уже сама по себе — HDMI сплиттер, т.е. у нее есть HDMI вход и HDMI выход и она гонит сигнал со входа на выход. Также, USB кабелем подключаем к RPi и оно там видится как USB камера. Захват быстрый, задержка маленькая, минимум проводов, все компактно. Тем, кто намучается с предыдущим сетапом, рекомендую.

Далее, Hyperion. Я начинал с простого скрипта на OpenCV и питоне, чтобы считать цвета по краям и выдавать их на RGB ленту, но уперся в скорость и перешел на Hyperion. Лично меня Hyperion всегда отталкивал вот этими костылями, что есть какой-то конфиг, но там хрен разберешься и надо качать стороннюю программу, чтобы этот конфиг генерить. Ладно. Потом уперся в то, что мой супер девайс захвата выдает картинку в формате, который Hyperion не умеет всасывать. Пришлось напилить новый драйвер для захвата через OpenCV (и, да, не благодарите, оно уже вмержено в мастер). Но пока я ходил за разработчиками и упрашивал их вмержить мой патч, они мне рассказали, что «забей ты на Hyperion, у нас теперь есть Hyperion.NG, новый, блестящий, и он из коробки умеет захватывать твои форматы». Действительно умеет, но там были другие грабли — драйвер управления RGB лентой через RPi PWM просто крэшился. Пришлось разбираться и чинить (патч уже в мастере).
Я всем рекомендую сразу брать Hyperion.NG, там есть встроенный web интерфейс (а также API) для настройки и управления, не надо делать этих приседаний с HyperCon.

Насчет ИК порта: я сам его не делал, у меня всегда работает режим с дублированием цветов края картинки, но я таки прикрутил ИК интерфейс для других нужд. Я считаю, проще вариант — взять готовый ИК декодер YS-IRTM. Единственный недостаток — он работает на 5V, а RPi пины — 3.3v, поэтому пришлось городить logic level shifter (и вот это станет барьером для многих хоббистов). Зато, там понятный serial интерфейс и есть возможность использовать его как передатчик (что я, собссно, и делаю, чтобы уметь включать/выключать ТВ и контроллировать громкость. Да. я в курсе, что это можно делать и через CEC, но мой CEC оказался обрезанным).
К сожалению, почти все открытые проекты имеют свои грабли. Hyperion.NG — интересная тема, но как я понял — все еще без стабильного релиза.

Уже лет 5 как у меня работает подобный сетап с конвертером с hdmi на AV. Да, проводов в такой схеме не мало, даже пришлось городить подобие небольшого "стенда" и крепить его за телевизором (правда блок питания у меня один — этого достаточно). Но вот по части наличия каких-либо проблем с такой схемой не соглашусь: всё работает чётко и без глюков.

Ну, это лишь говорит о том, что Вам повезло с железом. Я отсматривал захваченную картинку и во-первых, она была низкого разрешения, во-вторых при резкой смене кадра там наблюдались помехи (снег) на части картинки.
Все же, я всем, кто собирается повторить это, рекомендую брать нормальный девайс захвата. Это будет слегка дороже, но значительно меньше возни и гемора. У меня тоже один блок питания (кажется, 5V 8A), от него запитывается RGB лента и малина (через пины). Девайс захвата запитывается по USB.
В текущей версии raspbian определяются без проблем по крайней мере два чипсета — Fushicai UTV007 и MacroSilicon WS2106. Про проблемы читал. К сожалению заранее невозможно угадать, какой EasyCap приедет из Китая — без вскрытия узнать чипсет нельзя.

Брал на Али на чипсете Fushicai. Гадать не нужно, на Али есть (ну или по крайней мере были когда я покупал) лоты с фото внутренностей. Плюс к этому, дополнительно, я уточнял у продавца.

>>взять готовый ИК декодер YS-IRTM. Единственный недостаток — он работает на 5V, а RPi пины — 3.3v, поэтому пришлось городить logic level shifter (и вот это станет барьером для многих хоббистов).
Ну, для согласования уровней в подавляющем большинстве случаев достаточно одного токоограничивающего резистора. А для тех кому лень разбираться можно купить готовый модуль типа такого — aliexpress.ru/item/32848861724.html Или более продвинутый вариант — aliexpress.ru/item/32404824354.html

А по поводу вашего варианта — можно подробнее? Я не в теме про всякие cофтовые примочки для RPi, но очень хотелось бы повторить.
Что конкретно интересует? Если хочется просто подсветку, то достаточно поставить Hyperion.NG и настроить его использовать RPi PWM способ управления подсветкой.

Я поверх этого наворчивал всякие дополнительную функциональность. Например, одно из неудобств сетапа (и, думаю, в HDMI-to-AV будет то же самое) — RPi не знает, когда телевизор выключен. Поэтому подсветка светит всегда. Надо было как-то понимать, когда телевизор включен. Поэтому я подключил RPi к телевизору посредством HDMI (что, немного неудобно, потому что съедает один HDMI вход на телевизоре), и использовал скрипт на Python для мониторинга HDMI CEC, понимал, когда телевизор вылкючился/включился и посылал команду Hyperion.NG включить/выключить подсветку.

Потом я использовал HAP-python для написания программы, которая притворяется телевизором для Apple HomeKit (фреймворк домашней автоматизации от Apple) и использовал YS-IRTM для посылки IR команд телевизору, чтобы включать/выключать/менять громкость. Также, поскольку у моего телевизора всего два HDMI входа (у меня что называется «Dumb TV») и один уже занят RPi, у меня стоит HDMI свитч, чтобы переключаться между источниками и у него тоже есть ИК пульт. Поэтому, я использую YS-IRTM для посылки команд туда (по команде от HomeKit). Это все написано на Python.
В идале хотелось бы что нибудь вроде «Getting Started Guide» по установке и настройке всяких этих Hyperion.NG. Я неплохо разбирась в железе и хорошо во всяком низкоуровневом софте, типа драйверов, которые с железом общаются, но вот какие дистрибутивы ставить, откуда качать «мастер, как генерить конфиги — тут я не очень. Еще непонятно причем здесь » драйвер управления RGB лентой через RPi PWM" если ws2812 управляется по протоколу типа SPI только без линии SCLK а с внутренней синхронизацией. А с ИК прочими прибамбасами это можно и потом.
Я не любитель писать гайды. Ставил на дефолтный Raspbian, потом Hyperion.NG — у них есть гайд как собрать (включая однострочник, который скачивает скрипт для сборки из интернетов). Дальше — в UI методом тыка.
Насчет RPi PWM — вот здесь можно почитать. По сути, там используется DMA и PWM для отсылки сигналов.
Очень информативный и подробный комментарий. Спасибо.
Под Windows 10 на ПК в настройках придется найти и включить поддержку SMB, так как она по умолчанию в ней отключена
Эта галочка включает не поддержку SMB вообще, а поддержку SMB 1.0 — стандарта времён Windows 95. Никакой необходимости включать его нет, так как libreelec вполне понимает протоколы 2.0 и 3.0.
Необходимость все же есть, в последующих патчах майкрософт убрали так же поддержку SMB2, во всяком случае мне пришлось включать в ручную разрешение гостевого входа и через PowerShell — SMB2
Set-SmbServerConfiguration –EnableSMB2Protocol $true
я бы даже добавил, что скорей вредно. В SMB1 зияющая дырень, ведущая к удаленному выполнению кода, что позволяет без спросу заражать системы. WannaCry с большим успехом пользовался…

Не совсем понял, что и как включает адруина, но… Под гребёнкой малинки есть пин "RUN", импульс на котором разбудит её из любого состояния.

Ардуина дергает GPIO3, спад импульса будит малину. При этом не нужно делать дополнительных соединений, как в случае с «RUN»
НЛО прилетело и опубликовало эту надпись здесь
Особенности камеры старого хонора)
Речь о подсветке телевизора без участия ПК.

В винде можно поставить софтинку (типа такой https://github.com/fabsenet/adrilight), она будет грабить экран прямо на месте, никаких дублирований и vga. Потом подключают arduino nano по USB, которая по нехитрому протоколу получает цвета и выставляет их на rgb ленте.

Ещё есть вариант — грабить кадры из HDMI с помощью FPGA и им же управлять лентой. Тогда получится всего один или два девайса если использовать сплиттер. Правда учитывая трудозатраты проще купить уже готовое устройство.

А how-to’шкой кинете, как это сделать, если есть? Для тех, кто про fpga только слышал)

Про вторую половину было на муське))

Пока сам только начинаю вникать в FPGA. В сети есть примеры работы с HDMI и спеки протокола. На базовом уровне он, кстати, не такой сложный. Но все равно без опыта тяжело. Я пока что играюсь с выводом картинки на http://maximator-fpga.org

Здравствуйте, могу помочь с реализацией устройства в более компактном и красивом варианте на модуле распберри. Доводилось с ним работать. Если, конечно, есть желание.
Спасибо, желания к сожалению мало, закончился отпуск и другие проекты отнимают все время)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории