ODP(one day project) - категория проектов, призванных показать реализацию идеи в прототипе выполненом в наименьшее кол-во времени, затрачиваемого на первичную реализацию.
В прошлую пятницу мне внезапно захотелось попробовать сделать себе клон Philips Ambilight (интерактивная подсветка краев экрана телевизора в зависимости от выводимого изображения).
В гараже валялась б/у RGB светодиодная лента 4 метра, поэтому реализация прототипа стала возможна. Назвал я это дело Атмосвет - прекрасное имя такому сооружению на костылях.
Основные цели и требования:
- посмотреть на это в живую и оценить необходимость полноценной реализации;
- не потратить не рубля, использовать мусор из гаража;
- занять себя на выходные, ибо до выхода PS4 еще месяц;
- испытуемый телевизор - моя 60" плазма;
- реализация не должна быть привязана к устройству вывода изображения, Атмосвет должен работать с Xbox, PlayStation и медиацентром.
Под указанные выше требования я запланировал следующий механизм:
- 7 секций для подствеки, по схеме:
- Изображение захватывается вебкамерой, процессится на ПК и цвета секций передаются по USB на Arduino.
Сама реализация:
Пришлось использовать Arduino Mega, ибо на каждую ленту приходилось по 3 пина, а следовательно сумарно 21 контакт, на UNO такого кол-ва пинов нет.
Светодиодная лента 12Vс внешним БП, управление цветом осуществляется через NPN транзисторы, такое кол-во транзисторов у меня не было, взял и выпаял из трех старых горелых БП 24 штуки транзисторов C945, не уверен насколько это удачный выбор (полагаю, что из-за него подглюкивали не чистые цвета), но ехать и покупать транзисторы за 30р штука куда-то противоречило условию.
Я ожидал что будет задержка в получении изображения с веб камеры - я не ошибся, я протестил 3 вебкамеры (встроенная в Macbook, внешняя Logitech и встроенная в старый нетбук), оказалось задержка зависит от камеры, самая маленькая - у макбука (на глаз - около 500мс).
Захват и обработку картинки я производил при помощи потрясающего .NET фреймворка EMGU CV. Трансформацию перспективы изображения получаемого с вебкамеры, также выполнял через него, через враппер для open cv.
Драйвер для лент получился таким:
Внешний вид формы визуализации процессинга (слева исходная картинка, с отмеченными точками границ экрана, справо полученная после трансформа перспектива экрана, ужатая в 14x9 px):
Для тестов использовал видео с YouTube.
В конечном итоге какие выводы я сделал:
- Всеже идея стоящая, и нужно поудмать о полноценной реализации;
- Лучше не использовать мусор из гаража, даже для ODP, 4-х жильный телефонный кабель первый попавшийся, был полным дерьмом;
- Нужно погуглить о разнице биполярных и полевых транзисторов для общего развития;
- Больше не думать об использовании вебкамер при необходимости реалтаймового процессинга.
Что дальше?
PS: код для ардуино
В прошлую пятницу мне внезапно захотелось попробовать сделать себе клон Philips Ambilight (интерактивная подсветка краев экрана телевизора в зависимости от выводимого изображения).
В гараже валялась б/у RGB светодиодная лента 4 метра, поэтому реализация прототипа стала возможна. Назвал я это дело Атмосвет - прекрасное имя такому сооружению на костылях.
Основные цели и требования:
- посмотреть на это в живую и оценить необходимость полноценной реализации;
- не потратить не рубля, использовать мусор из гаража;
- занять себя на выходные, ибо до выхода PS4 еще месяц;
- испытуемый телевизор - моя 60" плазма;
- реализация не должна быть привязана к устройству вывода изображения, Атмосвет должен работать с Xbox, PlayStation и медиацентром.
Под указанные выше требования я запланировал следующий механизм:
- 7 секций для подствеки, по схеме:
Сама реализация:
Пришлось использовать Arduino Mega, ибо на каждую ленту приходилось по 3 пина, а следовательно сумарно 21 контакт, на UNO такого кол-ва пинов нет.
Светодиодная лента 12Vс внешним БП, управление цветом осуществляется через NPN транзисторы, такое кол-во транзисторов у меня не было, взял и выпаял из трех старых горелых БП 24 штуки транзисторов C945, не уверен насколько это удачный выбор (полагаю, что из-за него подглюкивали не чистые цвета), но ехать и покупать транзисторы за 30р штука куда-то противоречило условию.
Я ожидал что будет задержка в получении изображения с веб камеры - я не ошибся, я протестил 3 вебкамеры (встроенная в Macbook, внешняя Logitech и встроенная в старый нетбук), оказалось задержка зависит от камеры, самая маленькая - у макбука (на глаз - около 500мс).
Захват и обработку картинки я производил при помощи потрясающего .NET фреймворка EMGU CV. Трансформацию перспективы изображения получаемого с вебкамеры, также выполнял через него, через враппер для open cv.
Драйвер для лент получился таким:
Внешний вид формы визуализации процессинга (слева исходная картинка, с отмеченными точками границ экрана, справо полученная после трансформа перспектива экрана, ужатая в 14x9 px):
Для тестов использовал видео с YouTube.
В конечном итоге какие выводы я сделал:
- Всеже идея стоящая, и нужно поудмать о полноценной реализации;
- Лучше не использовать мусор из гаража, даже для ODP, 4-х жильный телефонный кабель первый попавшийся, был полным дерьмом;
- Нужно погуглить о разнице биполярных и полевых транзисторов для общего развития;
- Больше не думать об использовании вебкамер при необходимости реалтаймового процессинга.
Что дальше?
Проведя исследование я пришел к выводу, что есть два оптимальных варианта по реализации для моего случая (мне нужна работа с любым устройством выводящим картинку на телевизор, а не только ПК, решения для пк миллион в гугле, а HDMI Pass-through фактически - отсутсвуют):
1. Купить Philips 60PFL8708S и умереть от голода, зато с ambilight. LOL.
2. Реалзиуемое в пределах 10 тыс рублей:
- Покупаем 5М светодиоднйо ленты с ws2811, где каждый светодиод управляется отдельной через микроконтролер. выйдет вероятно в 80 долларов, с ней проще работать и поулчается секции по 3 см.( это толкьо 42 секции на верхнюю грань! )
- Покупаем USB 3.0 HDMI capture device например Blackmagick Design Intensity Shuttle (теоретически очень низкий delay, чекнул по форумам и ревью), оригинальная цена 199 долларов, самое дешевое в москве в районе 8 тыс. рублей. !Для данного девайса есть оффициальное SDK, никаких проблем с захватом не будет! есть HDMI pass-through(не знаю русского аналога этого слова (сквозное пропускание сигнала через себя)), cудя по форумам emgu CV тоже умеет с этими карточками работать.
Я склоняюсь естественно к варианту 2, но решение буду принимать, на оснвое оставшихся лишних денег после покупки PS4 в конце этого месяца.
PS: код для ардуино
Комментариев нет:
Отправить комментарий