AmbilightUSB

:

Привет, strangers!

Обновление проекта Лайтпак: Прокачан и открыт

Эта история о том, как сделать супер мега дешевую и простую ambilight подсветку для эвм. В роли дирижера будет выступать микроконтроллер ATtiny44, а в роли оркестра 4 RGB-светодиода.

Несколько картинок, дабы пробудить интерес:

   

Кому лень читать: полное описание в «картинках» (=
UPDATE: Добавлено видео http://www.youtube.com/watch?v=tdp1QeS_JCg
UPDATE2: в списке деталей уточнил название используемого микроконтроллера (ATTINY44-20SSU)
UPDATE3: добавлены фьюзы (дико извиняюсь, что забыл про них)
UPDATE4: исправлена принципиальная схема (v2.1.3)

Писатель из меня не очень, так что перейдем сразу к делу:

Список деталей


Компонент Корпус/Размер Количество
ATTINY44-20SSU
SOIC 1
74HC595
SOIC 2
RGB LED
SMD 5x5mm 4
Resistor 10k
0805 1
Resistor 1.5k
0805
1
Resistor 100R
0805
12
Resistor 68R
0805
2
Resistor 0R 1206 1
Cap tantalum 4.7uF 1206 1
Cap ceramic 20pF 0805 2
Quartz 12Mhz HC-49/US 1
Zener diode 3.6V
MiniMELF (1206) 2
MiniUSB Type B (SMD)
1
PLS-40S
DIP 1
Шлейф ~0.3 m 5 проводов
Стеклотекстолит ~160x80 mm
1
Двусторонний скотч толстый
1

Итого: не более 500 руб.

К ноутбуку девайс приклеен на двусторонний скотч:

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

 

Микроконтроллер подключен к эвм по USB. Фундамент проекта — библиотека V-USB от obdev. Первое, что было проверено, испытано и сразу заработало — v-usb/examples/hid-data. HID работает везде, драйверы стандартны, работать с данным классом USB устройств очень просто. Тем более, что всю работу за нас уже сделали, в примере hid-data можно найти файлы hiddata.c и hiddata.h. В них реализован стандартный интерфейс для работы с USB HID для windows (win api) и unix (libusb).

Софт захватывает 4 области экрана, преобразует в 4 точки и отправляет в девайс, разбив на цветовые составляющие Red, Green, Blue. Все в рамках С++, Qt и USB HID.

Делаем плату AmbilightUSB.lay (текущая версия hw v2.1), запаиваем.
Прошиваем фьюзы:
avrdude -pt44 -cusbasp -u -Ulfuse:w:0xee:m -Uhfuse:w:0xdf:m -Uefuse:w:0xff:m

И заливаем прошивку AmbilightUSB_v2.8.hex
avrdude -pt44 -cusbasp -u -Uflash:w:AmbilightUSB_v2.8.hex:a

Подключаем кабелем USB A to miniUSB B:

Отлично железо готово!

Установка, настройка софта


Если пользуемся Win32 (Windows XP), то складываем в одной папке библиотеки Qt, gcc, mingw ( скачать) и последнюю версию софта ( AmbilightUSB_v2.7.7.exe). Запускаем и радуемся (=

Для Ubuntu x86_64: 
1) Качаем  AmbilightUSB_v2.7.7
2) Проверяем/ставим Qt4: $ sudo apt-get install libqt4-gui
3) Запускаем:  ./AmbilightUSB_v2.7.7

Последние версии доступны в downloads.

Приложение сразу после запуска сворачивается в трей:

Double-клик на иконке в области уведомлений переключает состояние on/off.

Тестировал в Ubuntu 10.04 (x86_64) и в Windows XP (x86):

Ширина и высота захватываемых областей очень просто настраивается, можно подогнать под разрешение фильма. Кстати сразу отвечу на вопрос «Почему сверху нет светодиодов?», все фильмы в основном широкоформатные и в верхней части экрана темно, так что я подумал, что в этом нет необходимости. Правда если очень хочется, то можно сравнительно легко добавить сдвиговых регистров и светодиодов. С железом все просто, а вот прошивку и софт придется допиливать =)

Сборка из исходников (Qt4, gcc)

0) Проверяем/ставим Qt4
    $ sudo apt-get install libqt4-dev
    $ sudo apt-get install libqt4-gui
1) Качаем исходники с github:
Последняя версия из репозитария: tar.gz или zip
Либо все дерево проекта: $ git clone git@github.com:brunql/AmbilightUSB.git
2) Распаковываем архив tar.gz или zip:
    tar xzvf brunql-AmbilightUSB-v*.tar.gz
    unzip brunql-AmbilightUSB-v*.zip
3) Сборка:
    $ cd {path/to/AmbilightUSB}/Software/
    $ ./update_locales.sh
    $ qmake AmbilightUSB.pro
    $ make
4) Запуск!
   $ ./build/AmbilightUSB

Логи пишутся в следующие файлы:
    Linux: ${HOME}/.AmbilightUSB.log
    Windows: C:\Documents and Settings\UserName\.AmbilightUSB.log

Настройки сохраняются здесь:
    Linux: ${HOME}/.config/brunql.dev/AmbilightUSB.ini
    Windows: C:\Documents and Settings\UserName\Application Data\brunql.dev\AmbilightUSB.ini

Чтобы сбросить настройки в default достаточно просто удалить файл AmbilightUSB.ini.

Интерфейс: English, Russian

Исходники на GitHub, всякое разное в downloads.

Подобные проекты


Ardulight Фоновая подсветка телевизора Ambilight
MoMoLight: YouTube и описание.
Ambilight 4PC
На хабре: Как я хотел сделать Ambilight для мобильного телефона и что из этого вышло

Спасибо за карму хабраюзерам: Toseter, etc, crac, Shpankov, НЛО

Просьба все очепятки отправлять в личку, либо на e-mail: mike.shatohin [at] gmail.com