Пользователь
0,0
рейтинг
24 ноября 2010 в 21:50

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

Михаил @Commando5
карма
169,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (76)

  • +10
    Пожалуйста видео в студию!
    • +4
      К сожалению более менее нормального видео отснять не получилось, но если очень хочется, то я сейчас перекодирую то что есть и залью на youtube
      • +4
        Хочется очень!
        • +4
          • 0
            Вроде идея супер, но как-то с непривычки ощущение жуткого мельтешения.

            Может всё таки «задник» должен быть полностью однотонным и белым, а то подсвечивание элементов интерьера сильно отвлекает?
            • 0
              Да, со стенкой конечно есть проблема, для себя пока решил ее белой бумагой
          • 0
            ну вот, теперь хабраэффект на раздаче сериала, отдаю в 3 раза быстрее чем скачиваю :)
            P.S. спасибо за статью.
          • +2
            Идея сама по себе отличная… Только ощущение, что рябит в глазах. Над программной частью надо бы поработать.

            Имхо, нужно добавить сглаживающий фильтр на цвета, чтобы устранить случайные всполохи и сделать переключение более гладким, и сделать «анимированное» переключение между цветами подсветки- не соображу, как это лучше сказать, но смысл в том, что если в двух последовательных захватах цвета зеленый и красный, то нужно не сразу переключать с зеленого на красный, а сделать несколько промежуточных точек, в которых зеленый плавно убирается, а красный плавно добавляется.
            • 0
              Может чуть проще?
              Задаём время полной смены с 0:0:0 до 255:255:255 за, к примеру, одну секунду. И ставим периодичность корретировки подсветки, допустим, 25 раз в секунду.
              Тогда в каждый такт мы имеем текущее значение подсветки и желаемое. При этом по каждому каналу мы можем за один такт изменить значение подсветки, соответственно, не более чем на 10 единиц в сторону требуемого значение.
              Этим обеспечится и плавность при смене освещенности сцены, и плавность перехода от одного цвета к другому.
              Максимальное количество единиц изменений за один такт, что определяет уровень «плавности» — величина настраиваемая под себя.

              А может это и на аналоговом уровне перед самими светодиодами гораздо проще можно сделать. Не электронщик — не знаю.
  • +2
    присоединяюсь к кагорте жаждующих видео.
  • +2
    спасибо Вам за Ваш огромный труд :) и эту статью, на выходных займусь, сделаю для панели такое, всё равно зомбоящик у меня в качестве экрана для кино используется :)
  • +1
    Креативно, однако :) Спасибо за подробные разъяснения!
  • +5
    Вот были бы у нас граждане, предприимчивее — глядишь, я бы уже заказал себе «эмбилайт ко всему» за 1000 рублей в вашем интернет магазине.
  • –2
    класс, давно хотел узнать как такое сделать! спасибо за. единственное, что не очень — предлагаетмый значек в трей — на кутэ. иногда так не хочется тянуть такое большое в систему.
  • +2
    Шикарная штука, жалко я с паяльником дружу постольку-поскольку :/
    А вот более-менее собери-сам комплект приобрел бы с радостью
    • +3
      Продавать я не могу, работает она не достаточно хорошо.
      1) При медленном изменении видео заметно мерцание, которое происходит в моменты передачи информации в девайс, что какбы намекает на кустарность.
      2) В windows я толком не тестировал, есть вероятность, что не во всех плеерах будет работать.
      • 0
        А с играми как? или другими полноэкранными приложениями?
        • +2
          К сожалению или к счастью я в игры давно не играл, поэтому и не проверял. Могу лишь предположить что должно работать.
          Для захвата изображения используется следующий код:

          QPixmap pix = QPixmap::grabWindow(QApplication::desktop()->winId(), x, y, ambilight_width, ambilight_height);
          QPixmap scaledPix = pix.scaled(1,1, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
          QImage im = scaledPix.toImage();

          Вообщем везде где работает grabWindow будет работать и AmbilightUSB
      • 0
        Поясните по первому пункту, пожалуйста. Мерцают диоды? В этих сдвиговых регистрах же есть защелки, которые позволяют изменять все выходы одновременно. Или проблема не в этом?
        • 0
          Нет, там проблема немного в другом. Насколько я понимаю usb-hid, реализованный программно на AVR, не так уж и быстр, и в момент обмена информацией с эвм получаем задержку в генерации ШИМ, которая заметна глазу. Для уменьшения количества передаваемой информации обмен происходит только если цвета изменились. В остальное время контроллер занять исключительно генерированием ШИМ.
      • 0
        Если мерцание не слишком явное, то в общем-то мелочи. Со временем можно избавиться, я думаю.

        А вообще неплохой приработок может получится, было бы желание :) Делать по сколько-то комплектов в неделю/месяц и продавать, за в несколько раз бóльшие деньги, чем себестоимость компонентов. Я бы купил за 1.5-2 тыс., так как покупать оригинальные телевизоры с ambilight'ом возможности нет, а тут очень неплохо, учитывая что смотрю только с компьютера :)
        • +1
          Конечно первоначально протестировать нормально на windows/linux, под разные плейеры, составить список поддерживаемых и т.п. Записать качественный демо-ролик, сделать небольшой сайт с симпатичным дизайном и вперед :)
          • 0
            сайт с динамикой и эмбилайтом
  • +2
    Ну кто уже сделает Ambilight через DVI или D-SUB?
  • 0
    А возможно ли это сделать в домашних условиях имея обычный паяльник с толстым жалом и PC? Просто очень заинтересовала работа (паять умею — наушники), а вот как сделать такую схему совершенно не разбираясь какой стороной припаивать сопротивление.
    • +1
      Как минимум еще нужен программатор, я пользуюсь usbasp, но его тоже нужно прошить.
      Можно купить AVR-программатор, любой который справится с ATtiny44 (AVR). Либо сделать на 7 резисторах и 3-х диодах программатор громова (нужен COM порт)
      Если интересна тема могу посоветовать easyelectronics.ru
    • +1
      Сопротивлению как раз пофиг, у него полюсов нет :)
  • 0
    0805 не слишком мелко? Я стараюсь хотя бы 1206 брать. В последнее время MELF 0207 использую, иногда удобней.
    • 0
      А мне нравится =)
    • 0
      1206 — они же огромные!:)
      У них основной плюс в том, что под 1206 до трех дорожек провести можно. Иногда разводку упрощает.
  • 0
    Долго ждал эту тему на хабре. Читал много статей по этому поводу, но руки, походу, только сейчас дойдут до этого. Вы меня воодушевили, перепилю под себя и тоже соберу)
    • 0
      > перепилю под себя и тоже соберу)
      Советую поставить вместо 74HC595 и кучи резисторов, что-нибудь типо DM134B (16 каналов, 1 резистор)
      • 0
        Спасибо, поищу что-нибудь подобное у себя в городе.
  • +5
    Шикарно. хотелось бы приобрести такую штуку, тк собирать нет никакой возможности — кривые руки :)

    Мне кажется на днях китайцы уже должны начать штамповать по вашим схемам. Думаю неплохой бизнес )
    • 0
      Правильно подметил :) я бы пару штук таких взял в пределах 20-30$
      • +3
        Может это секрет, но официальный amBx от Philips сейчас где-то так и стоит.
        • +3
          Еще бы его можно было купить свободно в наших краях…
        • 0
          где только его купить?
          даже на ибее только один лот, и тот за 300$ а не за 30$
          если верить www.thg.ru/game/philips_ambx/index.html то в 2008 году она стоила 130$

          не подскажете где взять
          официальный amBx от Philips
          за 20-30$, ну или хотя бы за 150$?
          • 0
            Я весной брал где-то в пределах тысячи в Москве, тогда везде навалом было. Сейчас посмотрел, действительно, сходу не нашел. Наверно перестали производить (
    • +3
      присоединяюсь к пожеланию приобрести, в виду собственной криворукости в этом деле :)
  • +1
    Наклеечки то с GDD!))))
  • 0
    Очень понравилось, с удовольствием бы сделал сам, если бы не ATtiny44. Мой PonyProg с ним не работает =(
    • 0
      Поправить плату и перекомпилировать под нужный контроллер, я не думаю, что могут возникнуть какие-либо серьезные проблемы
      • 0
        ну вот, к сожалению, не было у меня такой практики
    • 0
      Зашейте через LPT
  • +1
    Руки у автора на месте. Только я не понимаю, зачем эта технология была придумана Philips. Реализация — автору респект.
  • +1
    Красавец! Просто красавец. Абалденная вещь!
    Пошел за паяльником!
  • +4
    Сто лет не читал слово «эвм», даже соскучился…
  • +2
    Наконец-то в DIY появилась статья именно таки про DIY. Автор большой молодец, за труды ему спасибо.
  • 0
    Мне вот интересно было бы от DVI / HDMI такое без дров, но чтото как то мало вариантов — народ обычно делает используя второй выход у видяхи (D-SUB ) здесь например есть такое.

    А мне вот интересно — неужели так сложно подключится между монитором и видяхой? цифра же вроде?
    • 0
      Имеете ввиду подключить между монитором и видяхой устройство, которое будет обрабатывать проходящую информацию и, согласно ей, светить диодиками? Если да, то, как мне известно, там выходит очень большой поток информации, которую обработать несколько сложно: уже железо другое применять надо, и с прошивкой намного больше возиться придется.
      • 0
        Ну сигнальники то дешевые щас вроде есть :) зато безо всяких и к любой технике с dvi / hdmi :)
        • 0
          а можно подробнее? Я задумался как-раз реализовать подобное с подключением в разрыв между телевизором и источником картинки
          • 0
            по подробнее про что? про сигнальники?
            • 0
              да, что такое сигнальники? =)
              • 0
                Тут вот гораздо лучше сказано чем я смогу :)
                • 0
                  спасибо!
                  • 0
                    Всегда пожалста. Для этого проца не должно быть проблем разгрести сигнал и посчитать среднее.
                    • 0
                      А разве по HDMI не шифрованый сигнал бегает? Или HDCP как-то иначе работает?
    • 0
      Основная проблема — это частота.
      Частота передачи данных в DVI от ~25МГц на самом маленьком, до ~165МГц на самом большом разрешении.
      Предел тактовой частоты восьмибитных AVR 16-20МГц. То есть не то что обработать, даже принять данные такой контролер не сможет.
      Для таких частот уже нужен ПЛИС или высокопроизводительные ARM, а это уже не очень-то наколенная технология.
  • 0
    Офигенно, если не сказать больше. Дело даже не столько в эффекте, сколько в относительно несложной реализации. Кажется, я знаю, с каким микроконтроллером я продолжу упражнения с паяльником.
    Что касается самого эффекта, то мне кажется, что просто двух светодиодов на одну сторону маловато — надо три или четыре — ну тут каждый, кто захочет повторить, может это усовершенствовать. Спасибо!
  • 0
    эх… присоединюсь к советам по началу своего дела :) можно неплохой допзаработок для себя и семьи сделать )))

    я б купил бы… :)
  • 0
    Тут ребята из UK делают что то подобное.
    Демо: pro.ambx.com/demoroom_fxgen.html
    • 0
      Эти — вообще маньяки.
  • –5
    Фигота.
  • 0
    Амбилайт для веб-разработчиков:
    www.artlebedev.ru/tools/technogrette/html/filters-in-ie/
    habrahabr.ru/blogs/webdev/92654/
  • 0
    Я не побоюсь этого слова — Охуенно! Автору — респект. Он молодец!
  • 0
    Обалденная статья!

    Пошла покупать паяльник.
  • 0
    Можно купить уже сделаный www.ambx.com/
  • 0
    Вопрос автору: ваш pixelkit можно купить в виде набора, а можно ли купить lightpak (в виде набора или хотя бы печатные платы без деталей) — если да, то где?
    • 0
      Лайтпак будет доступен в виде готового устройства в нашем магазине через 1-2 месяца. Читайте блог — ничего не пропустите.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.