Принцип действия:
Лайтпак состоит из мастер-платы; дополнительных светодиодов; прошивки, которая управляет аппаратной частью и программы захвата картинки, которая устанавливается на ПК. Программа вычисляет средний цвет выводимой на монитор картинки для каждой области захвата, которая соответствует одному светодиоду. После этого данные о цвете отправляются через USB на мастер-плату, где прошивка, обработав их, заставляет определённый светодиод светиться определённым светом. Этот процесс повторяется несколько десятков раз в секунду.
А теперь подробнее:
Технически Лайтпак можно называть программно-аппаратным комплексом, если бы это не звучало так смешно применительно к системе подсветки монитора.) В нём есть всё -- управляющий софт и драйвер со стороны ПК. А так же микроконтроллер и прошивка со стороны самого устройства. Разберём принцип работы "сверху-вниз”.
Софт:
Программа доступна в разделе для скачивания. Она устанавливается на ПК и решает две задачи: Обеспечивает захват картинки и предоставляет пользователю доступ к настройкам устройства.
Основная цель процедуры захвата -- сделать "снимок” захватываемой области, вычислить его средний цвет и как можно быстрее отправить информацию о нём на устройство. Количество захватываемых областей равно количеству светодиодов. Так что софт должен проделывать эту процедуру 8 раз за 1 такт обновления. Количество тактов обновления зависит от настроек, но в среднем их должно быть не менее 15-20 в секунду. На вкладке "Захват” окна настроек программы этот индикатор называется "Частота захвата”.
Перемещая области захвата и изменяя их размер можно добиться совершенно разных эффектов. Вы можете сделать области пересекающимися -- тогда цветовая разница между соседними светодиодами будет не так заметна. Можете сделать их очень узкими -- возрастёт производительность. Если хотите вы даже можете сделать семафор -- настроить область захвата так, что при получении новых сообщений в аське стена за вашим монитором будет мигать так же, как цветок в трее.
Последнее, что вам нужно знать о софте Лайтпака -- он написан с использованием фреймворка Qt. Это значит, что код приложения кроссплатформенный и будет работать в самых популярных ОС таких как Windows, Linux, MacOS.
Итак, программа сделала снимок, вычислила средний цвет и теперь должна отправить его устройству.
Драйвер:
Не станем заострять внимание на том, как обеспечивается транспорт данных через USB между программой и устройством. В этом процессе участвует стандартный драйвер HID, который есть в каждой ОС. Драйвер будет установлен автоматически, как только вы впервые подключите Лайтпак к вашему компьютеру. Система определит его, как устройство HID (Human Interface Device). При помощи драйвера данные от программы захвата будут отправлены в устройство.
Прошивка:
Прошивка -- это микропрограмма, которая регламентирует работу микроконтроллера -- основу логики Лайтпака. Именно прошивка принимает данные из ПК и на их основе генерирует сигнал ШИМ (Широтно-Импульсная Модуляция), который отправляется к аппаратным драйверам светодиодов. Свежая версия доступна в разделе для скачивания.
Прошивка, как и софт, может быть улучшена и обновлена. Для того, чтобы поместить прошивку внутрь микроконтроллера в большинстве случаев используется дополнительное устройство -- программатор. Но не в нашем. Прошить Лайтпак можно прямо через USB используя утилиту Flip. О том, как это сделать вы можете прочесть в заметке из нашего блога.
Прошивка сгенерировала нам сигнал ШИМ. Что происходит с ним дальше?
Мастер-плата:
Помимо микроконтроллера серии AT90USB от компании Atmel, на мастер-плате есть ещё две крупные микросхемы -- это драйверы светодиодов. Они отвечают за декодирование сигналов ШИМ и подачу соответствующего тока на светодиоды.
На мастер-плате уже установлен один светодиод. Так же на ней присутствует электрическая обвязка для всех компонентов и две кнопки: RST (верхняя) и HWB (правая), которые необходимы для переключения микроконтроллера в режим прошивки. Если вы хотите собрать Лайтпак самостоятельно, не забудьте прочесть наши рекомендации.
Светодиоды:
Если вы задавались вопросом почему в Лайтпаке светодиоды разделены с мастер-платой, то вот вам ответ: Благодаря модульному подходу мы добились большой гибкости в вариантах установки устройства. Вы можете установить Лайтпак на нетбук и тогда вам достаточно будет 4х, или даже 3х светодиодов. Вы можете установить Лайтпак на телевизор с диагональю в 40 дюймов разместив по 4 светодиода на его боковых кромках. Решать что и как подсвечивать -- вам.
Используемые нами светодиоды состоят из 3х полупроводников, каждый из которых даёт свой цвет: красный, зелёный и синий. Изменяя силу тока мы регулируем яркость. Включая компоненты в разных последовательностях получаем широкий спектр цветов. Например, смешав все три цвета, получим белое свечение и т.д.
Планарные RGB-светодиоды, в отличие от своих выводных собратьев дают большое, равномерное пятно и яркость (очевидно из-за встроенных линз). Именно благодаря запасу яркости появляется возможность работать на достаточно больших расстояниях от стены. При этом свет от соседних пятен смешивается, что даёт ещё более плавный эффект при смене цветов.
Ограничения и будущие доработки
Разумеется, не смотря на постоянные доработки и наше желани? довести всё до ума, Лайтпак не идеален. Если вы вдруг решили собрать или купить устройство, то с этим разделом нужно ознакомиться в первую очередь. Полный список задач для реализации доступен у нас на трекере. Вы даже можете оформить собственный тикет -- мы его обязательно рассмотрим.
I need more MHz power!
Первый вопрос, который задают неискушённые люди из интернета, увидевшие демонстрацию: "Это будет работать с моими телевизором?”
Нет, не будет. Лайтпак подключается к компьютеру и может быть установлен на устройство, которое этот компьютер использует для вывода картинки. Экран ноутбука, монитор или телевизор -- неважно.
И нет, Лайтпак не будет работать с вашими PlayStation 3 и Xbox.
Проблемы в Windows 7 (интерфейс Aero)
При включенном интерфейсе Aero в Windows 7 производительность программы захвата снижается в 3 раза. Захват и обработка происходят крайне медленно. Понимая как эта ОС популярна мы надеемся устранить проблему в ближайшее время.
Производительность:
Судя по данным из диспетчера задач Windows, программа захвата легко может съедать до 30% ресурсов центрального процессора и занимать до 20 Мб оперативной памяти. Разумеется, эти значения варьируются в зависимости от настроек захвата, размеров обастей и типа ОС. Тем не менее, нам кажется, что мы способны увеличить производительность изменив алгоритмы захвата и расчёта цветов. Работаем над этим.
Поддержка игр на OpenGL
Большинство современных игр выводят графику на монитор используя, ставшие стандартом де-факто, API DirectX, или OpenGL. Начиная с версии 4.1.0, программа может осуществлять захват цветов из большинства игр для Windows (правда, скорее всего, вам придётся повозится с настройками устройства для каждой из них в отдельности). Тем не менее, захват из игр, которые используют OpenGL-рендер (например, Quake 3, или Revenge of the Titans) до сих пор не возможен.
Прошиваем микроконтроллер через USB при помощи утилиты Flip:
В ходе проекта столкнулись с микроконтроллерами фирмы Atmel, которые имеют "железную” реализацию USB (и бутлоадер). Для прошивки таких устройств не обязательно использовать программаторы, разводить дополнительный ISP-разъём и пр. Всё, что вам потребуется — само устройство, выполненное на микроконтроллере из списка и подключенное к USB, и фирменная утилита Flip от компании Atmel.
Для прошивки под Win, или Linux нужно выполнить следующее:
1) Скачать свежую версию Flip с сайта производителя и установить её
2) Подключить ваше устройство к USB и установить для него драйвер из папки /Atmel/Flip/usb
3) Одновременно зажимаете на прошиваемом устройстве кнопки RESET и HWB
4) Отпускаете RESET и через пару секунд отпускаете HWB
5) Запускайте Flip. Интерфейс программы разбит на 3 блока. Все они имеют подписи
6) Открываем пункт меню Device->Select . Выбираем из списка необходимый микроконтроллер
7) Открываем пункт меню Settings->Communication->USB . В открывшемся диалоговом окне нажимаем кнопку Open. 8) После того, как связь будет установлена левая часть интерфейса (блок Operations Flow) должна стать активной
9)Открываем пункт меню File->Load HEX File . Указываем путь к фйлу прошивки с расширением .hex . После этого в центральной части (FLASH Buffer Information) появится информация о ней
10)Убеждаемся, что галки Erase, Program и Verify установлены и нажимаем кнопку Run
11)После того, как прошивка будет загружена в микроконтроллер (а произойдёт это крайне быстро) нужно будет нажать кнопку Start Application или просто повторно нажать кнопку RESET на самом устройстве.
Из-за частого обновления модуля захвата некоторые из этих пунктов могут быть недоступны в свежей версии программы. Другие (например настройка яркости каждого светодиода) могут быть вынесены в конфигурационный текстовый файл профиля. Тем не менее мы стараемся поддерживать страницу в актуальном состоянии и следить за корректностью описания настроек.
Если вы уже ознакомились с принципами работы устройства, то многие вопросы по настройке, наверняка, отпали сами собой. Так же есть смысл ознакомится с некоторыми советами по настройке софта, которые мы описали на основе собственного опыта.
Окно настроек программы содержит 3 вкладки. Рассмотрим их подробнее.
Настройки захвата:
Вкладка содержит набор настроек влияющих на захват цветов и общую производительность приложения.
Частота захвата:
Индикатор общей производительности программы захвата. Количество кадров, которые захватываются и обрабатываются в течение 1 секунды. Чем этот показатель выше, тем более качественный эффект даёт подсветка и тем выше нагрузка на ЦП вашего компьютера. 13-15 кадров в секунду -- нижний порог комфортной работы для динамичных сцен.
Задержка захвата:
Параметр регулирует интервал в миллисекундах через который происходит считывание цветов с экрана. Параметр обратно пропорционален частоте захвата. Если вы хотите увеличить частоту -- уменьшите задержку. Оптимальный диапазон регулировок -- от 0 до 93 мс
Порог чувствительности:
Временный параметр, исчезнет в последующих релизах. Позволяет установить целочисленное значение нижнего порога чувствительности к изменению цвета при его захвате. Изменяйте параметр, если вам кажется, что светодиоды без необходимости получают минимальную яркость когда в области захвата появляется незначительное число пикселей отличных от чёрных. Оптимальный диапазон регулировок от 0 до 10 ед.
Показать области захвата:
Галка включает режим редактирования областей захвата. В нём вы можете перетаскивать мышью области, менять их размер (так же, как изменяете размер окон), менять их цвет при помощи колеса мыши. Переключатель "разноцветные/белые” изменяет подсветку областей.
Средний цвет на все светодиоды:
Галка включает режим вычисления среднего цвета по всем захватываемым областям. Этот цвет передаётся на все светодиоды. Опция позволяет задействовать действительно фоновую, совершенно не отвлекающую и комфортную для работы подсветку. Есть вероятность, что для достижения наилучшего эффекта (особенно в играх) придётся снизить итоговою частоту ШИМ до 100-120 Гц.
Настройки устройства:
Вкладка содержит набор настроек, которые влияют исключительно на работу устройства.
Итоговая частота ШИМ:
Частота обновления для светодиодов Лайтпака (к примеру, у вашего монитора тоже есть такая характеристика). Основной индикатор работы устройства, определяющий скорость смены цветов при включенной опции "Плавное изменение цветов” (см. ниже).
Задержка таймера ШИМ:
Значения этого параметра обратно пропорциональны итоговой частоте ШИМ. Настраивайте его чтобы добиться оптимальной производительности и плавности.
Глубина цвета:
Целочисленное значение, определяющее количество оттенков каждого канала (красного, зеленого и синего). Параметр обратно пропорционален итоговой частоте ШИМ и фактически является количеством цветовых изменений которые совершает Лайтпак для при плавном переходе от одного захваченного цвета к другому. Оптимальный диапазон регулировок от 16 до 128 ед.
Плавное изменение цветов:
Галка включает режим плавного изменения цветов. Скорость изменения цветов зависит от итоговой частоты ШИМ.
Посылать данные только при обновлении цвета
Галка включает режим посылки данных через USB при изменении цвета в захватываемых областях. Если она снята -- данные о цвете уходят к устройству постоянно, по таймеру, даже в том случае, если цвет не изменялся с момента последней посылки. Это временная опция необходимая для локализации ряда ошибок программы.
Профили
Начиная с версии 4.1.0 программа захвата поддерживает профили настроек управлять которыми можно при помощи этой вкладки. Каждый отдельный профиль является конфигурационным файлом с расширением .ini, который хранится в папке \Profiles директории в которой расположена программа захвата.
Профиль:
В разделе можно создавать, удалять и сбрасывать настройки текущего профиля. Профиль хранит всю информацию с вкладок "Захват" и "Устройство" включая выбранный язык программы. Изменяя размеры и положение областей захвата вы изменяете текущий профиль программы. Новый профиль всегда создаётся на базе текущего. Для сброса настроек можно воспользоваться соответствующей кнопкой.
Интерфейс пользователя
Элемент позволяет выбрать язык программы. По умолчанию устанавливается язык, установленный в ОС, как "основной".
Регулировка яркости:
Программа захвата предоставляет возможность регулировки индивидуальной яркости каждого канала (RGB) для каждого отдельного светодиода. Это может пригодится, если купленные вами светодиоды светят неравномерно. Например голубой, гораздо ярче красного и т.д. Чтобы не перегружать окно настроек не очень популярным функционалом мы вынесли настройки яркости в конфигурационный файл каждого профиля.
Структура файла профиля очень проста, все параметры имеют "говорящие" названия. Для регулировки яркости каналов в секции каждого светодиода есть параметры CoefRed, CoefGreen и CoefBlue. Это поправочные коэффициенты на которые умножается исходная яркость. Их можно регулировать в диапазоне от 0.1 до 3, включительно. Чем меньше значение, тем ниже яркость канала. По умолчанию все коэффициенты выставлены в единицу (т.о. никакой корректировки яркости не происходит).
Хотите увидеть максимальную яркость вашего Лайтпака?! -- проставьте везде 3. Вам кажется, что 7й светодиод даёт чересчур много красного -- выставьте соответствующий коэффициент в значение меньше единицы.
После того, как вы отредактируете файл, его нужно будет сохранить. Для того чтобы изменения вступили в силу в старых версиях софта (0.9.4 и раньше) вам придётся перезагрузить программу захвата. В новых -- просто переключить профили, для того чтобы файл настроек заново прочитался.
Если вы обнаружили ошибку в работе программы (а это очень вероятно из-за того, что софт кроссплатформенный и мы физически не можем протестировать все железки для всех ОС), то сообщите о ней через наш багтрекер. Права на создание тикетов есть у всех.
Схема и перечень деталей:
Разумеется, вам понадобится шлейф или другой провод по вкусу для того чтобы соединить мастер-плату с дополнительными светодиодами.
Отдельного внимания заслуживают токоограничивающие резисторы R5 и R6. В том случае, если ваши светодиоды будут отличаться от тех, которые использовали мы, вам придётся подбирать номинал резисторов R5 и R6 согласно даташиту светодиода. При слишком низком номинале у вас могут сгореть светодиоды или будут сильно греться драйверы. При слишком высоком -- уменьшится максимальная яркость.
Пару слов о самих светодиодах. Мы использовали CLV1A-FKB с общим анодом производства компании CREE не потому что они лучше остальных, а потому что их было проще всего найти. Это очень мелкие (3,2х2,8 мм) чип-светодиоды, но их яркость и равномерность пятна нас устраивает. Во время реализации самых первых прототипов мы испробовали пол дюжины разных выводных светодиодов (для сквозного монтажа) -- все они показали себя крайне плохо. Основные проблемы -- чётко различимые следы каждого цвета RGB даже при их смешении и плохая работа на малых (менее 25 см) расстояниях от стены.
Принципиальную схему вместе с разводкой платы в формате бесплатной Eagle CAD вы можете скачать ниже.
Имя Номинал/Название Корпус
IC1 Микроконтроллер Atmel AT90USB162 TQFP32
IC2, IC3 Драйвер светодиодов MBI5026GD (подробнее) SOP24-1.27
LED1-8 Чип-светодиод CREE CLV1A-FKB-CHMKPEHBB7a463 PLCC
C1, C2 Конденсатор 18 пкФ (керамический) 1206
С3 1 мкФ (керамический) 1206
С4 4,7 мкФ (танталовый) 1206
R1, R2 Резистор 4,7 кОм (используется для подтяжки) 1206
R3, R4 22 Ома 1206
R5, R6 1 кОм (ограничивает ток для светодиодов) 1206
Q1 Кварц 16 МГц ("лодочка”) SMD
SW1, SW2 Кнопка без фиксации для поверхностного монтажа SMD
USB Гнездо USB mini B (USB/M-1J) --
В файле платы на слое Unrouted есть 3 связи, которые Eagle предложит вам трассировать. Делать этого не нужно. Все эти связи относятся к земляной шине и замыкаются через корпус USB-гнезда. Все дороги выполнены шириной 0,3 мм -- плата должна вытравиться ЛУТом без особого труда. Размеры мастер-платы 59х54 мм. Размеры плат для внешних светодиодов 15х15 мм. Таких плат можно сделать до 7ми штук. Не забывайте, что один светодиод устанавливается на саму мастер-плату.
В файле платы есть один дополнительный светодиод. Скорее всего вы захотите распечатать ещё несколько. Для этого в Eagle:
Закройте окно с принципиальной схемой устройства
В окне с разводкой на панели инструментов слева последовательно выберите инструмент Copy и затем Group
Выделяйте рамкой весь рисунок внешнего светодиода и жмите на нём правую кнопку мыши
В нижней части меню увидите пункт Copy:Group -- давите на него и размещайте новую платку где хотите.
Таким же образом можно перемещать группы объектов в Eagle. Для совсем ленивых у нас есть отдельный файл с раскопированными 11ю светодиодными площадками.
При печати разводки не забывайте, что она нарисована на слое Top для SMD-компонентов. Это значит, что нужно установить галку Mirror в настройках печати из Eagle.
При монтаже компонентов обращайте внимание на особенности разводки. Следите, чтобы дороги проходящие под кнопками и разъёмом USB не замыкали на их корпуса. А когда будете припаивать шлейфы светодиодов следите за тем, чтобы провода от контактных площадок RGB не замыкали на шину питания, которая обходит мастер-плату снаружи. Обратите внимание на то, что контактные площадки для 3го и 7го светодиодов перевёрнуты зеркально. Поэтому шлейф вам тоже придётся перевернуть.
После того, как устройство собрано, но ещё не установлено в него нужно будет залить прошивку и проверить работоспособность. Сделать это можно прямо через USB без использования внешних программаторов. Вся процедура описана у нас в блоге.
Скачать одним архивом, ссылка в конце статьи (26.39 Mb) :
- 11_LED_PCB.brd Разводка платы и 11 светодиодных площадок подготовленные к печати из Eagle
Lightpack_sw4.1.0 Linux (x86_64).exe Программа для захвата и анализа картинки Linux (x86_64)
Lightpack_sw4.1.0 Windows (x86).exe Программа для захвата и анализа картинки Windows (x86)
Ltpk_PCB_v4.3.zip Файлы печатной платы и принципиальная схема Лайтпака в формате Eagle Featured
Lightpack_fw4.2.hex Последняя версия прошивки для микроконтроллеров AT90USB162 Featured
Libs_Win32_Qt4.7.zip Библиотеки необходимые для запуска приложения под Win
FLIP 3.4.3 for Windows (Java Runtime Environement included) (20 MB, revision 3.4.3, updated 5/11) Runs Windows 98/Me/NT/2000/XP/Vista/7
Другие версии FLIP на сайте Atmel.
Скачать [39,73 Kb] (cкачиваний: 127) печатную плату от leotom
Источник
|