Skip to content

Latest commit

 

History

History
74 lines (50 loc) · 16.5 KB

Принцип_работы.md

File metadata and controls

74 lines (50 loc) · 16.5 KB

Принципы работы Лайтпака и Призматика

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

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

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

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

Софт

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

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

Prismatik settings

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

Prismatik zones

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

Драйвер

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

Прошивка

Прошивка -- это микропрограмма, которая регламентирует работу микроконтроллера -- основу логики Лайтпака. Именно прошивка принимает данные из ПК и управляет драйверами светодиодов. В случае старых ревизий устройств, 5.0 и меньше, в которых используются драйверы без ШИМ (Широтно-Импульсная Модуляция), прошивка также генерирует и этот сигнал, который отправляется драйверам. Свежая версия прошивки доступна в разделе для скачивания. Прошивка, как и софт, может быть улучшена и обновлена. Для того, чтобы поместить прошивку внутрь микроконтроллера в большинстве случаев используется дополнительное устройство -- программатор. Но не в нашем. Прошить Лайтпак можно прямо через USB используя утилиту Atmel Flip utility . О том, как это сделать вы можете прочесть в отдельном руководстве. Итак, прошивка получила данные по USB. Что происходит с ним дальше?

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

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

Lightpack 6.0 board

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

Светодиоды

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

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

Led positioning Additive color

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

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

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

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

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

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

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

Судя по данным из диспетчера задач Windows, программа захвата легко может съедать до 20% ресурсов центрального процессора и занимать до 30 Мб оперативной памяти. Разумеется, эти значения варьируются в зависимости от настроек захвата, размеров областей, ОС и конечно же мощности вашей машины. На тестовом стенде мы имеем 1-2% при 35 FPS захвата (AMD Phenom 2 X6 1090T 3.2GHz + Nvidia GTX 550 Ti @ Win7x64). Тем не менее, нам кажется, что мы способны увеличить производительность улучшив алгоритмы захвата и расчёта цветов. Мы постоянно над этим работаем.

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

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

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

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