My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
WorkingBasis  
Описание принципов работы Лайтпака
Phase-Requirements, Phase-Design, Featured
Updated Feb 29, 2012 by atarity

Объясните мне в двух словах

Лайтпак состоит из мастер-платы; дополнительных светодиодов; прошивки, которая управляет аппаратной частью и программы захвата картинки, которая устанавливается на ПК. Программа вычисляет средний цвет выводимой на монитор картинки для каждой области захвата, которая соответствует одному светодиоду. После этого данные о цвете отправляются через USB на мастер-плату, где прошивка, обработав их, заставляет определённый светодиод светиться определённым светом. Этот процесс повторяется несколько десятков раз в секунду.

А теперь подробнее

Технически Лайтпак можно называть программно-аппаратным комплексом, если бы это не звучало так смешно применительно к системе подсветки монитора.) В нём есть всё -- управляющий софт и драйвер со стороны ПК. А так же микроконтроллер и прошивка со стороны самого устройства. Разберём принцип работы “сверху-вниз”.

Софт

Программа доступна в разделе для скачивания. Она устанавливается на ПК и решает две задачи: Обеспечивает захват картинки и предоставляет пользователю доступ к настройкам устройства.

Основная цель процедуры захвата -- сделать “снимок” захватываемой области, вычислить его средний цвет и как можно быстрее отправить информацию о нём на устройство. Количество захватываемых областей равно количеству светодиодов. Так что софт должен проделывать эту процедуру 10 раз за 1 такт обновления. Количество тактов обновления зависит от настроек, но в среднем их должно быть не менее 15-20 в секунду. На вкладке “Режимы” окна настроек программы этот индикатор называется “Частота захвата”.

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

Последнее, что вам нужно знать о софте Лайтпака -- он написан с использованием фреймворка Qt. Это значит, что код приложения кроссплатформенный и будет работать в самых популярных ОС таких как Windows, Linux и OS X.

Итак, программа сделала снимок, вычислила средний цвет и теперь должна отправить его устройству.

Драйвер

Не станем заострять внимание на том, как обеспечивается транспорт данных через USB между программой и устройством. В этом процессе участвует стандартный драйвер HID, который есть в каждой ОС. Драйвер будет установлен автоматически, как только вы впервые подключите Лайтпак к вашему компьютеру. Система определит его, как устройство HID (Human Interface Device). При помощи драйвера данные от программы захвата будут отправлены в устройство.

Прошивка

Прошивка -- это микропрограмма, которая регламентирует работу микроконтроллера -- основу логики Лайтпака. Именно прошивка принимает данные из ПК и на их основе генерирует сигнал ШИМ (Широтно-Импульсная Модуляция), который отправляется к аппаратным драйверам светодиодов. Свежая версия доступна в разделе для скачивания.

Прошивка, как и софт, может быть улучшена и обновлена. Для того, чтобы поместить прошивку внутрь микроконтроллера в большинстве случаев используется дополнительное устройство -- программатор. Но не в нашем. Прошить Лайтпак можно прямо через USB используя утилиту Flip. О том, как это сделать вы можете прочесть в заметке из нашего блога.

Прошивка сгенерировала нам сигнал ШИМ. Что происходит с ним дальше?

Мастер-плата

Помимо микроконтроллера серии AT90USB от компании Atmel, на мастер-плате есть ещё две крупные микросхемы -- это драйверы светодиодов. Они отвечают за декодирование сигналов ШИМ и подачу соответствующего тока на светодиоды.

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

Светодиоды

Если вы задавались вопросом почему в Лайтпаке светодиоды разделены с мастер-платой, то вот вам ответ: Благодаря модульному подходу мы добились большой гибкости в вариантах установки устройства. Вы можете установить Лайтпак на нетбук и тогда вам достаточно будет 4х, или даже 3х светодиодов. Вы можете установить Лайтпак на телевизор с диагональю в 40 дюймов разместив по 5 светодиодов на его боковых гранях. Решать что и как подсвечивать -- вам.

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

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

Ограничения и будущие доработки

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

Интерфейс Aero в Windows 7

При включенном интерфейсе Aero в Windows 7 скорость захвата снижается в 3 раза в сравнении с Basic-интерфейсом. Захват и обработка происходят сравнительно медленно. На мощных, современных машинах эффект выражен гораздо слабее, но тем не менее он проявляется.

Медлительность DWM (Aero) раздражает даже саму Microsoft. Для своей новой операционки они уже анонсировали некий вариант переходного интерфейса, с которым будет проще взаимодействовать разработчикам и который не будет так сильно давить на ЦП, как Aero.

Кстати, для владельцев видеокарточек ATI есть ещё один неприятный момент работы с Aero. Но в этом случае мы уже точно бессильны.

Производительность

Судя по данным из диспетчера задач Windows, программа захвата легко может съедать до 20% ресурсов центрального процессора и занимать до 20 Мб оперативной памяти. Разумеется, эти значения варьируются в зависимости от настроек захвата, размеров областей, ОС и конечно же мощности вашей машины (в моём случае 1-2% при 35 FPS захвата). Тем не менее, нам кажется, что мы способны увеличить производительность изменив алгоритмы захвата и расчёта цветов. Мы постоянно над этим работаем.

Поддержка игр на OpenGL

Большинство современных игр выводят графику на монитор используя, ставшие стандартом API DirectX, или OpenGL. Начиная с версии 4.1.0, программа может осуществлять захват цветов из большинства игр для Windows (как выяснилось, это сильно зависит от того какую версию DX поддерживает ваша видеокарта -- скоро пофиксим этот досадный баг). Тем не менее, захват из игр, которые используют OpenGL-рендер (например, Quake 3, или Revenge of the Titans) до сих пор не возможен. Работы в этом направлении так же ведутся.

Поддержка игр на DirectX10-11

Отсутствие захвата в полноэкранных играх использующих в качестве API DX10-11 оказалось для нас такой же новостью, как и для наших пользователей (в DX9 и ранее захват работает). На сегодняшний день подробнее понять проблему помогут некоторые тикеты из нашего багтрекера. Так же на сегодняшний день у нас есть прототип кода который захватывает картинку на этих API и мы занимаемся его внедрением в софт. Задача решена на 80% и скоро мы избавимся от этого ограничения.

Comment by Naf...@gmail.com, Feb 22, 2011

Доброе время! Модульное расшиениие количества диодов и поддержка unix систем планируется для Лайтпак'а?

Comment by project member atarity, Feb 22, 2011

К Лайтпаку можно подключить от 1 до 8 светодиодов. Дальше нужно изменять плату. Код кроссплатформенный. В Linux работает уже сейчас, причём даже лучше, чем в Win.

Comment by sur...@gmail.com, Feb 22, 2011

Спасибо! Очень интересно :)

Comment by Dimon...@gmail.com, Feb 22, 2011

неплохобы добавить в настройки программы выбор монитора, был бы благодарен, а то у мну их 2, точнее телик для фильмов и моник для работы, инета и прочего

Comment by project member brunql, Feb 22, 2011

Фич-реквест принят: http://code.google.com/p/lightpack/issues/detail?id=33

Comment by kgordee...@gmail.com, Feb 23, 2011

молодцы, ребята! ждём доработки под 7ку и DX/GL P.S. а не маловато ли будет 8 светодиодов для телека, для моника то хватит точно.

Comment by martinov...@gmail.com, Feb 23, 2011

Не знаю, уместно ли тут разворачивать обсуждение как на форуме, если что коммент можно прибить. Я тоже очень удивлен, что светодиодов задумано всего 8. Наверное, пока не решены проблемы с производительностью, увеличивать их смысла нет, но хотелось бы их увидеть на порядок больше. Это наверное повлечет смену архитектуры, и светодиодные модули придется подключать какой-нибудь шиной. А вообще ребята молодцы, давно не было желания включать паяльник и греть утюг, а тот оно проснулось! Спасибо вам!

Comment by project member atarity, Feb 24, 2011

Для количества светодиодов есть два нюанса:

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

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

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

Comment by rind...@gmail.com, Feb 25, 2011

Не забывайте что 8 RGB светодиодов , устройство видит и работает с 24 на самом деле. Давно хотел собрать себе лампу настроения (mood lamp ). Но не мог выбрать проэкт для повторения. Больше всего понравился Ваш. Надо добавить эту функцию в софт. Смена цвета на желаемый пользователем, переливание цветов и прочего. Вобщем работа устройства не только с видео. Предусмотреть возможность подключения светодиодов более мощных чем сейчас 100ма.

Comment by antyn...@gmail.com, Feb 27, 2011

я так понял, средний цвет вычисляется по такой схеме: 1. захват области 2. масштабирование этой области до 1x1 px 3. берете цвет этого пикселя за средний ?? Может было бы быстрей подсчитать самим? Например складывать цвета не каждого пикселя, а каждого второго(3го,4го). Затем поделить на их кол-во. И еще замутить коэффициент(или приоритет), чем дальше от края пиксель тем меньше у него приоритет, тем самым меньше влияет на вычисление среднего цвета. =) Хочу взять ваш проект, и доработать его(переписать драйвер для Win, м.б. схемотехнику переделать), если вы позволите. =)

Comment by project member atarity, Feb 27, 2011

По поводу алгоритма вы всё правильно поняли. Подробнее вам ответит brunql. Он использовал разные варианты (хотя, разумеется, не все возможные) и такое масштабирование показало себя лучше других. Как мы уже говорили, работы над софтом и даже прошивкой ещё очень много и мы открыты для любых идей. Нам нужны заинтересованные головы и руки. Поэтому мне не понятно почему вы хотите "взять наш проект и доработать" (хотя конечно же я вам не запрещаю) -- работайте вместе с нами. Установите себе TortoiseHG (или другой клиент в зависимости от вашей операционки), заведите бранч и экспериментируйте в нём. Мы будем вам помогать по мере сил. То же касается и железа. Таким образом коротенькими шажочками и "всем миром" мы приведём Лайтпак к чему-то большему, чем он является сейчас. Это лучше, чем сидеть по углам и каждому там чего-то мастерить в тайне от остальных.

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

Я буду рад видеть каждого разработчика, электронщика, писателя, хакера и просто гика с их идеями и предложениями помощи у себя в почте atarity@gmail.com . Так же, как и brunql будет рад видеть вас в mikeshatohin@gmail.com.

Хотите сделать Лайтпак лучше?! -- Делайте! А мы вам поможем.

Comment by MVPonoma...@gmail.com, Aug 17, 2011

Подскажите, пожалуйста, насчет OS X. ''С релизом 5.5 мы ускорили захват до уровня остальных ОС, но программа внутри Lion работает нестабильно.'' Lion — это последняя версия OS X и не у всех она ещё стоит. А как обстоят дела со Leopard и Snow Leopard?

Comment by project member joshhhab, Aug 18, 2011

в 10,6 и 10,5 должно работать хорошо, но там другая проблема утечки памяти и частое зависание софта

Comment by crema...@gmail.com, Aug 26, 2011

У меня собственно гворя, Лайон. Стоит ли заморачиваться — будет ли работать хорошо все в итоге?

Comment by project member atarity, Aug 26, 2011

Ждите. Решаем Льва (правда уже устали).

Comment by oleg.zac...@gmail.com, Sep 9, 2011

собрал штукенцию. правда драйверов MBI не было поставил SCT2026 все ноги сходятся итп все фурыкает. от плагина к винампу вообще в восторге. ждемс решения проблемы перехвата в игрулях. молодцы!

Comment by project member atarity, Sep 10, 2011

Т.е. драйверы просто заменили даже без переразводки платы? Если так -- напишите подробнее, греются или нет, что с токоограничивающими резисторами и пр. Я бы добавил в описание их в качестве альтернативы, а то вопросов на эту тему поступает много.

Как так вы довольны плагином к Винампу?!) У нас ещё даже API которое способно с ним справиться не закоммичено.) А с текущими бинарниками медленно работает.

Comment by andyrawd...@gmail.com, Sep 10, 2011

Плагин в студию!

Comment by turant...@gmail.com, Sep 10, 2011

О поддержке игр на опенЖЛ - в винде Опен Арена (Open Arena) без проблем работает, в лине та же игра не хочет ни в какую работать с лайтпаком. Именно об этом упоминалось тут: http://code.google.com/p/lightpack/wiki/WorkingBasis#Поддержка_игр_на_OpenGL

Comment by manovi...@gmail.com, Sep 28, 2011

Интересно, а usb не накроется? Как я понимаю, светодиоды питаются от usb, каждому надо ма по 100, это 0.8А только на светодиоды. Не многовато?

Comment by pektu...@gmail.com, Nov 13, 2011

Собрал, подключил к медиацентру, все классно работает! Хотелось бы добавить горячие клавиши, чтобы переключаться между режимами с пульта. А еще неплохо было бы как-то обрабатывать черные пространства, например, поля у фильмов. Хоть какую-то подсветку бы, а не просто черноту. Или, например, если какое-то время не было активности, то плавно включать белую подсветку спустя несколько секунд. А то кино кончилось - и темнота :)

Comment by demmax2...@mail.ru, Nov 13, 2011

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

Comment by Exren...@gmail.com, Dec 7, 2011

Подскажите пожалуйста характеристики устройства (напряжение, ток, мощность)

Comment by Roze...@gmail.com, Dec 19, 2011

подскажите, а планируются ли драйвера под Андроид? Имеется медиацентр от Ровер работающий под Андроидом. http://www.rovercomputers.ru/shop/tv/roverbox/ вот такой. Очень бы хотелось приобрести ваш кит и смотреть фильмы с подсветкой на большом экране.

Comment by demmax2...@mail.ru, Dec 19, 2011

> Имеется медиацентр от Ровер работающий под Андроидом поставь туда венду или линукс и проблема уйдет

Comment by 19ahohu...@gmail.com, Dec 25, 2011

в планах собрать сие чудо для экрана под проектор, диагональ будет чуть больше 2-х метров. вот вопрос, как будет лучше расположить кусочки светодиодной ленты и какой длинны?

Comment by demmax2...@mail.ru, Dec 25, 2011

>в планах собрать сие чудо для экрана под проектор

даже не стоит этого делать, мало экрана ????? переставь проектор на 2 метра дальше от экрана и будет тебе картинка больше.

Comment by 19ahohu...@gmail.com, Dec 27, 2011

из картинки и так выжму максимум, я хочу эффект м-билайт, он же как бы и 3-д добавляет

Comment by demmax2...@mail.ru, Dec 27, 2011

>он же как бы и 3-д добавляет

как бы глупости

Comment by crazyu...@bk.ru, Jan 1, 2012

Поздравляю всех с Новым годом! Есть мысль дополнить драйвера, извините за тавтологию, драйверами для RGB ленты на 12в - это потребует источник питания, но позволит облепить любой телевизор в разумных пределах:) Это 3-й "амбилайт" который я делаю, но вроде самый толковый. В тех было три зоны и проц управлял каждым СИДом, в одной через ULN2003, в другой через 9 полевиков. Думаю полевики лучше - ULN по току слабоваты. Было бы интересно послушать умных людей, как попроще состыковать выход MBI с половиком, до паяльника все равно не раньше 10 доберусь.

Comment by project member brunql, Jan 2, 2012
Comment by dreamer.dead@gmail.com, Feb 7, 2012

Подскажите по производительности, пожалуйста. У меня есть HTPC с не самым быстрым процессором Intel Atom, который под линухом через VDPAU тянет HD видео, но впритык. Собственно, вопрос - будет ли хватать процессора (по идее, декодирование идет через GPU и процессор не загружен на 100%) для захвата и обработки лайтпака? И вообще, будет ли лайтпак работать, если используется VDPAU? В качестве плеера используется XBMC и VLC.

Comment by Andrei.K...@gmail.com, Feb 7, 2012

Да, очень интересно, как это все можно прикрутить к XBMC.

Comment by igna...@gmail.com, Feb 7, 2012

Подскажите, пжлста, для Льва последний софт уже подходит?

Comment by Alexandr...@gmail.com, Feb 8, 2012

Хотелось бы понять еще с какими рендерами совместимо это устройство. Ясно что может работать с EVR, а может ли работать (снимать данные) с MadVR ?

Comment by adengi...@gmail.com, Feb 8, 2012

присоеденяюсь к вопросу про XBMC + AMD Zacate 350 .потянет ли система все вместе( просмотр видео через xbmc и ваше ПО)

Comment by McFly...@gmail.com, Feb 8, 2012

Господа разработчики сделайте пожалуйста софт который работает на Android, хочу использовать лайтпак с телевизором и мультимедиа плеером под управлением OS Android, смотрю фильмы с него. Единственное что меня останавливает от покупки это недостаток софта на Android. Сам плеер http://www.aliexpress.com/product-gs/522972869-4GB-Cortex-A8-control-Google-Android-2-3-2-3-TV-box-with-WiFi-Flash-10-wholesalers.html

Comment by project member joshhhab, Feb 8, 2012

ignatph, Подскажите, пжлста, для Льва последний софт уже подходит? - да подходит

Comment by project member joshhhab, Feb 8, 2012

adenginov XBMC + AMD Zacate 350 должно потянуть если только не 1080p гонять с бешеным битрейтом

Comment by nikitk...@gmail.com, Feb 8, 2012

Подскажите, а в опенсоурс 6 версию когда выложите?

Comment by borisc...@gmail.com, Feb 8, 2012

а где можно найти схему на ваш лайтпак?

Comment by adengi...@gmail.com, Feb 10, 2012

adenginov XBMC + AMD Zacate 350 должно потянуть если только не 1080p гонять с бешеным битрейтом Погонял прогу, Вроде все тянет даже с фаерволом антивирем и запущенным торрентем. Гонял с XBMС Видео: AVC,1920x1080, 33600 Kbps,23.976 fps Видео : MPEG-4 AVC / 27668 kbps / 1080p / 23.976 fps / 16:9 / High Profile 4.1

П.С. мать Asus E35M1?-I DELUXE, память 4G

Comment by feelr...@gmail.com, Feb 12, 2012

Если приложение линукса использует полноэкранный 2d OpenGL рендеринг, то лайтпак будет с ним работать? (у вас в ограничениях разъяснение только по поводу 3d)

Comment by project member atarity, Feb 15, 2012

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

Comment by rmale...@gmail.com, Feb 20, 2012

Подскажите, плиз, как же c XBMC заставить работать?

Comment by anton.pi...@gmail.com, Mar 11, 2012

Присоединяюсь к просьбе сделать софт под андроид. Имеется asus transformer prime (ics), смотрю фильмы только с него... Выход к tv - hdmi

Comment by shaki...@gmail.com, Mar 18, 2012

Нигде нет информации о том, когда ждать в продаже 6 лайтпак. Если эта тема читается, могли бы вы написать эту информацию сюда?

Comment by mixx...@gmail.com, Apr 2, 2012

Подскажите пожалуйста, телевизор 59" - можно-ли прицепить к каждому(или некоторым) выходам больше чем ленточку из 3х диодов?


Sign in to add a comment
Powered by Google Project Hosting