Название проекта Ardulight.
Идею я вынашивал давно , но как всегда не хватало времени.
Несколько дней назад Krusty подкинул ссылку на один форум , на котором давно обсуждается подсветка работающая с HTPC.
Так как я для просмотра и закачки фильмов использую HTPC на базе Acer Revo, то сразу загорелся немедленной реализацией этой идеи . Для меня как всегда возникает проблема с травлением платы, это что то сравнимо с капитальным ремонтом двигателя в автомобиле на улице :) И тут как всегда на помощь приходит arduino Nano V.7 и макетная плата. На сборку устройства ушло всего пол часа. Конечно в этом есть и свои минусы , так как приходится все элементы соединять проводками, но так как мне требовалось экспериментировать то это был самый подходящий вариант.
За пол часа спаял на макетке ардуино + ключи. За 15 мин. написал скетчь для Arduino , работающий с двумя зонами(6 каналов аппаратного ШИМ)
Но уперся в настройки программы в Win 7, программа ни как не хотела передавать синхронно данные, наблюдалось отставание до 10 сек.
Оказалось все просто, нужно было сменить тему AERO на упрощенную, и все сразу заработало.
Для работы программы нужно в ее конфиге указать сом порт на котором сидит Arduino. Запускать нужно файлом Start_Ambilight
Другая проблема возникла при написании четырех зонового скетча.
Все уперлось в аппаратный PWM и прерывания по таймеру.
Вообщем при программировании прерывания по таймеру автоматом отключается две ножки аппаратного ШИМ, так как все 6 выходов ШИМ используют все три тамера, по две ноги PWM на каждый таймер, пришлось отказаться от аппаратного ШИМ и сделать софтверный ШИМ.
Теперь все отлично работает смотрите на видео.
Для увеличения зон до восьми можно использовать еще один arduino и связать их между собой по I2C или сделать на регистрах 74HC595. Погонял пару дней программу Boblight , понял что мне многово не хватает, регулировки яркости, температуры цвета и насыщенности. К то муже у этой программы куча недостатков, таких как отставание от реальной картинки от 1 до 10 сек. Программа не работает с темами AERO в Windows 7 и многое другое.
Решил написать свою программу.
Моя программа умеет выводить от 1 до 42 каналов, есть регулировка яркости , насыщенности и баланса белого.
Корректно работает с Windows 7 и темой AERO , не тормозит на разрешениях 1900х1080, корректно выходит из Сна и Hibernation , имеется конфигурационный фаил, с возможностью отключения не нужных каналов и настройкой областей сканирования, изменения времени сканирования и т.д. Проверял программу с 4-мя зонами, то есть 12 каналов, все отлично работает
Подсветку установил на плазму 50' , использовал светодиодные ленты RGB двойной плотности. Всего ушло 2м 60 см. Данная лента потребляет ток 800мА на один метр, так что БП от моего монитора Lilliput мне хватило для питания светодиодных лент. Расчет простой 2,6*0,8=2А при максимально открытых ключах.
По схеме железу:
Транзисторы использовал с запасом на будущее, так что можно и по слабее поставить. Транзисторы без драйверов в полне справляются на частоте 31000гц, происходит полное открывание , при использовании на протяжении нескольких часов они не нагрелись , остались холодными.
Бюджет: arduino Nano V.7 - 1шт. 780руб.
Транзисторы IRLR2905 - 9шт. по 20руб. = 180руб.
Резисторы 0,25W - 9шт. по 1руб. = 9руб. Макетка 1шт. 40 руб.
Клеммная колодка на 2 провода 6шт. по 3руб. = 18руб
Лента светодиодная RGB двойной плотности - 3м по 750руб = 2250руб.
Для тех кому кажется что подсветка сильно яркая , можно купить светодиодную ленту обычную не двойной плотности цена 400руб. за 1м
Ардуино следит за тем когда заснет комп и выключает подсветку. Вложение 7728
P.S.
Эффект классный , на динамических сценах создается ощущение что объект выходит за пределы экрана. При взрывах и вспышках эффект удваивается :)
Короче говоря супер !!! Всем рекомендую.
Еще одна программа от пользователя Eraser
Программа поддерживает двухмониторный режим, визуальны настройки зон и т.д.
Также программа для Linux от Eraser
Есть еще программа для работы этой подсветки с музыкой .
Эдуард, а ты еще видео обещал того что получилось...
24.02.2010, 00:28
Chip
Re: Фоновая подсветка телевизора Ambilight
Видео выложил
24.02.2010, 03:06
SBorovkov
Re: Фоновая подсветка телевизора Ambilight
Chip, если задача только в том, чтобы мигать светодиодами, то спокойно можно использовать таймер и вручную мигать.
Простейший расчет:
16МГц (тактовая частота процессора)/100Гц (допустимая частота мигания светодиодов)/256(уверен, что 256 градаций яркости - больше, чем надо) = максимум 625 тактов на прерывание. Для обслуживания 6 каналов - больше чем достаточно. В прерывании достали переменную по каждому каналу, сравнили с счетчиком, если равно - перекинули соответствующую ногу.
Примерно как написано ниже (не проверял на синтаксис, но суть понятна, думаю).
void Timer(void)
{
uint8_t i;
if (Counter==0)
{
for (i=0;i<PWM_Count;i++)
Pin[PWM_Pins[i]]=1;
}
for (i=0;i<PWM_Count;i++)
{
if (PWM_Data[i]==i)
Pin[PWM_Pins[i]]=0;
}
}
UPD.
Интересно было бы если бы подсветка горела именно там, где надо, а не вся сторона. Но чую, что это реализовать будет уже сильно посложнее. Хотя почти уверен, что ардуинки хватит и для этого. Повесить динамическую индикацию, можно еще сдвиговые регистры использовать...
24.02.2010, 10:13
Chip
Re: Фоновая подсветка телевизора Ambilight
Спасибо за помощь , будет время попробую твой вариант софтового PWM.
Колличество зон можно увеличить до 7, но при этом число шлейфов за телевизором увеличится и будет паутина :)
А как на сдвиговых регистрах ты собираешся ШИМ-ить?
24.02.2010, 14:03
SBorovkov
Re: Фоновая подсветка телевизора Ambilight
если в сдвиговый регистр выгружать данные через SPI (595 региитр совместим с SPI, насколько я помню), то выгрузка происходит со скоростью 1 бит за такт. При максимально допустимых 600 тактах как единицу взмаргивания, в сдвиговые регистры можно много чего выбросить, главное данные успеть подготовить.
Хотя думаю, было бы лучше просто использовать какие-нить параллельные регистры (тут я названия не знаю), чтобы выгружать сразу по 8 бит одним портом МК.
Еще можно оптимизировать ШИМ, сделав не 256 возможных яркостей, я штук 16. Но при этом можно сделать паузу между последовательными шагами ШИМ яркости увеличивающуюся экспоненциально. Это ведь разницу между яркостями 1 и 2 на глаз можно отличить, а разницу между 254 и 255, да еще в динамике - нельзя.
То есть можно сделать яркости примерно такие:
0 1 2 3 5 8 11 15 20 27 40 55 80 110 145 190 255.
По поводу паутины - если данные выгружать по последовательному каналу (SPI), то паутины проводов не будет. Но за телеком придется разместить не светодиодную полоску, а плату, на которой будет заметное количество микрух, типа сдвиговых регистров и uln2003.
В общем, имхо все совершенно реально, если заморочиться и есть откуда данные брать. Но это за час-два не сваять :-)
25.02.2010, 00:03
Peter
Re: Фоновая подсветка телевизора Ambilight
Если автор еще жив и вдруг увидит это сообщение, то я с радостью куплю готовое устройство для себя. Самостоятельно паять/собирать нет ни возможности, ни сил, ни времени, так что, готов оплатить затраты Ваших сил и времени + материалы.
если в сдвиговый регистр выгружать данные через SPI (595 региитр совместим с SPI, насколько я помню), то выгрузка происходит со скоростью 1 бит за такт. При максимально допустимых 600 тактах как единицу взмаргивания, в сдвиговые регистры можно много чего выбросить, главное данные успеть подготовить.
Хотя думаю, было бы лучше просто использовать какие-нить параллельные регистры (тут я названия не знаю), чтобы выгружать сразу по 8 бит одним портом МК.
Еще можно оптимизировать ШИМ, сделав не 256 возможных яркостей, я штук 16. Но при этом можно сделать паузу между последовательными шагами ШИМ яркости увеличивающуюся экспоненциально. Это ведь разницу между яркостями 1 и 2 на глаз можно отличить, а разницу между 254 и 255, да еще в динамике - нельзя.
То есть можно сделать яркости примерно такие:
0 1 2 3 5 8 11 15 20 27 40 55 80 110 145 190 255.
По поводу паутины - если данные выгружать по последовательному каналу (SPI), то паутины проводов не будет. Но за телеком придется разместить не светодиодную полоску, а плату, на которой будет заметное количество микрух, типа сдвиговых регистров и uln2003.
В общем, имхо все совершенно реально, если заморочиться и есть откуда данные брать. Но это за час-два не сваять :-)
Спасибо за инфу!
Действительно хороший регистр .
Информация по последовательно параллельному регистру 74HC595
Беру на вооружение.
25.02.2010, 13:33
Chip
Re: Фоновая подсветка телевизора Ambilight
Цитата:
Сообщение от Peter
Если автор еще жив и вдруг увидит это сообщение, то я с радостью куплю готовое устройство для себя. Самостоятельно паять/собирать нет ни возможности, ни сил, ни времени, так что, готов оплатить затраты Ваших сил и времени + материалы.
Жив я еще :)
Хотим заказать для пробы несколоко печатных плат и коробочки подобрать под них. Но это не раньше чем через 1 мес. получится
27.02.2010, 13:49
ShirMan
Re: Фоновая подсветка телевизора Ambilight
Купил бы с удовольствием, Москва.
На таких же условиях как и Peter.
Пишите, если вдруг решите продать I@shir-man.com
Было бы очень здорово)
хабр
27.02.2010, 14:25
Krusty
Re: Фоновая подсветка телевизора Ambilight
Эдуард, глянь сколько потенциальных клиентов))) пора на конвейер ставить))))
27.02.2010, 17:09
Chip
Re: Фоновая подсветка телевизора Ambilight
:) Уже в разработке 4-х зоновый вариант, еще хотелось бы пультом регулировать яркость .
01.03.2010, 03:44
Chip
Re: Фоновая подсветка телевизора Ambilight
Разобрался до конца с настройками Boblight, настроил все отлично работает. Но столкнулся с проблемой что при выходе из сна в Win 7 софтина повисает , да так что даже из диспетчера задач ее не убить.
Пришлось написать вспомогательную программку которая запускает Boblight и GetPixel и прячет их в системный трей,
при переходе в сон программка выгружает Boblight и GetPixel , ну и при выходе из сна опять запускает и прячет в трей.
Проверил у меня работает. Выложил в шапке
01.03.2010, 10:24
Krusty
Re: Фоновая подсветка телевизора Ambilight
что-то у меня подсветка реагирует только при оконном просмотре видео, в фулскрине моментально потухает и молчит... -((( где копать? оверлей, наложение и прочее?
01.03.2010, 13:26
Chip
Re: Фоновая подсветка телевизора Ambilight
Чем воспроизводишь видео? Попробуй плеер Классик.
Я перепробовал с разными плеерами , работает.
01.03.2010, 14:29
Krusty
Re: Фоновая подсветка телевизора Ambilight
я пробовал всеми, в оконном режиме и классик, и вмп, и вмц воспроизводят, но стоит разложить в фулскрин, все... тю-тю..(((
01.03.2010, 14:33
Krusty
Re: Фоновая подсветка телевизора Ambilight
а могут кодеки быть виной? установлены дивикс и к-лайт
01.03.2010, 14:46
Chip
Вложений: 1
Re: Фоновая подсветка телевизора Ambilight
Я ничего в плеере не менял , настройки как на скриншоте Вложение 7695
01.03.2010, 15:14
Krusty
Re: Фоновая подсветка телевизора Ambilight
помоему дело не в настройках плейера...
может дело в настройках видюхи? хотя там и настроек то нет.... (((
надо еще будет на ББ попробовать, а не на хтпс...
02.03.2010, 12:35
Chip
Re: Фоновая подсветка телевизора Ambilight
Изменился код , теперь нет зависимости температуры цвета от разной частоты ШИМ.
На основе этого кода можно также сделать 4-х зоновую подсветку. Из старой схемы можно выкинуть резистор 1к стоящий между D3 и D2 пинами Carduino Nano
03.03.2010, 19:55
n1kk
Re: Фоновая подсветка телевизора Ambilight
приветствую! просто не реально загорелся этой идеей=))) интересен момент, если делать 4 зоновою подсветку одного стандартного Carduino Nano хватит? или надо с удвоенной памятью или объеденение двух?
будет ли в переспективе выложен код на 4-х зоновую подсветку?
и ещё один ньюанс... откуда считываются данные для обработки на подсветку? будет ли мешать одновременное включение монитора и телевизора к одной видеокарте или 2-х объеденённых в CrossFire, где с одной выводиться на монитор с другой на телек...
и в целом огромное спасибо за качественные идеи=)
03.03.2010, 21:24
Chip
Re: Фоновая подсветка телевизора Ambilight
Одного Carduino Nano V.4 хватит.
Код выложу как проверю
Данные считываются программно и передаются Кардуине по USB
От видеокарты не зависит .
06.03.2010, 12:07
Chip
Re: Фоновая подсветка телевизора Ambilight
Написал свою программу .
Поразился в различии скорости обработки, у меня с Boblight на HTPC с процем Atom при проигрывании HD-1080 было отставание цвета на 1-5 сек. Теперь же все четко без каких либо отставаний и реакция мгновенная, появился эффект обьема при динамических сценах. Работает в Win 7 с темой AERO без тормозов.
Прогу сделал без всяких надстроек одним файлом, прога автоматически прячется в системный трей, корректно работает со спящим и гибернейт режимами.
Есть ползунок яркость и насыщеность, планирую добавить регулировку температуры цвета.
Как доведу программу до ума , сразу выложу.
Снял видео с моей программой
09.03.2010, 11:59
Krusty
Re: Фоновая подсветка телевизора Ambilight
работу с фулскрином в вмп поборол, надо было отключить д3д ускорение, а вот в медиацентре подсветка до сих пор не работает(((
Эдуард, а свою софтинку то выложишь со скетчем на 4е зоны?
09.03.2010, 12:43
Chip
Re: Фоновая подсветка телевизора Ambilight
Скетчь выложил, софт погоняю еще денек и выложу
09.03.2010, 12:56
il74
Re: Фоновая подсветка телевизора Ambilight
Цитата:
Сообщение от Chip
Написал свою программу .
Поразился в различии скорости обработки, у меня с Boblight на HTPC с процем Atom при проигрывании HD-1080 было отставание цвета на 1-5 сек. Теперь же все четко без каких либо отставаний и реакция мгновенная, появился эффект обьема при динамических сценах. Работает в Win 7 с темой AERO без тормозов.
Прогу сделал без всяких надстроек одним файлом, прога автоматически прячется в системный трей, корректно работает со спящим и гибернейт режимами.
Есть ползунок яркость и насыщеность, планирую добавить регулировку температуры цвета.
Как доведу программу до ума , сразу выложу.
Снял видео с моей программой
Да уж, завораживает, а то на первом примере- как то не так с опозданием, а тут то что доктор прописал:). Большой респект за труды.
09.03.2010, 13:20
Paulus
Re: Фоновая подсветка телевизора Ambilight
Мега респект! Классная штука!
09.03.2010, 13:45
Krusty
Re: Фоновая подсветка телевизора Ambilight
Цитата:
Сообщение от Chip
Скетчь выложил, софт погоняю еще денек и выложу
твоя софтина с медиацентром работает?
09.03.2010, 15:04
Chip
Re: Фоновая подсветка телевизора Ambilight
Пока нет программ которые работают с медиацентром
09.03.2010, 16:55
SBorovkov
Re: Фоновая подсветка телевизора Ambilight
А писишный софт поддерживает более детальную подсветку, с делением каждой из светодиодных полос на части? Левую и правую полосы я б разделил на 3 части, а горизонтальные - частей на 5.
09.03.2010, 17:32
Krusty
Re: Фоновая подсветка телевизора Ambilight
можно сделать сколько угодно зон при соединении нескольких аврдуин по I2C
09.03.2010, 17:33
Krusty
Re: Фоновая подсветка телевизора Ambilight
Цитата:
Сообщение от Chip
Пока нет программ которые работают с медиацентром
а в чем там подводные грабли?
09.03.2010, 19:42
Chip
Re: Фоновая подсветка телевизора Ambilight
Цитата:
Сообщение от SBorovkov
А писишный софт поддерживает более детальную подсветку, с делением каждой из светодиодных полос на части? Левую и правую полосы я б разделил на 3 части, а горизонтальные - частей на 5.
Да не проблема, могу на сколько угодно зон сделать софт, гораздо дольше конфиг фаил писать и расчитывать :)
09.03.2010, 19:43
Chip
Re: Фоновая подсветка телевизора Ambilight
Цитата:
Сообщение от Krusty
а в чем там подводные грабли?
Пока не курил , не вкурсе
10.03.2010, 04:08
Chip
Re: Фоновая подсветка телевизора Ambilight
Выложил обновленный скетчь и свою программу, пока на 12 каналов(4 зоны).
Если кто надумает использовать больше каналов то программу подправлю.
10.03.2010, 05:59
SBorovkov
Re: Фоновая подсветка телевизора Ambilight
Chip,
поэкспериментировал с 74hc595. Реально очень быстро шлются туда данные через SPI и главное - в фоне. Дал команду отправить байт и готовишь следующий. Добился отправки всех данных по 48 каналам ( (3 слева+5 сверху +3 справа +5 снизу)*3 цвета) за приемлемое время, допускающее частоту 8-битного ШИМ в районе 100 герц.
Исходные данные в том же виде, что и у тебя - массив яркостей.
10.03.2010, 13:32
Krusty
Re: Фоновая подсветка телевизора Ambilight
2SBorovkov
выкладывай подробности
10.03.2010, 13:45
Chip
Re: Фоновая подсветка телевизора Ambilight
Цитата:
Сообщение от SBorovkov
Chip,
поэкспериментировал с 74hc595. Реально очень быстро шлются туда данные через SPI и главное - в фоне. Дал команду отправить байт и готовишь следующий. Добился отправки всех данных по 48 каналам ( (3 слева+5 сверху +3 справа +5 снизу)*3 цвета) за приемлемое время, допускающее частоту 8-битного ШИМ в районе 100 герц.
Исходные данные в том же виде, что и у тебя - массив яркостей.
Классно, буду программу на это колличество каналов делать.
Только снизу наверно многовато каналов?
10.03.2010, 15:29
SBorovkov
Re: Фоновая подсветка телевизора Ambilight
сурсы выложу вечером, они дома остались.
Chip, у меня телек на стене висит, поэтому под ним тоже обои :-). Да и уменьшить кол-во каналов не сложно, сам понимаешь :-)
У варианта с 595 есть недостаток - проводов довольно много (грубо - 5-6 на каждую линейку) и большой непрерывный поток данных (порядка 100 килобайт в секунду по трем проводам).
Вот и думаю, может как-нить по-другому замутить получится, и лучше и по деньгам разумно.
К примеру, можно организовать так:
Есть центральный блок с ардуино, в который втыкаются умные световые линейки (по 1 на сторону), соответственно, есть 4 разъема. Каждая из умных линеек содержит простейший контроллер (там ардуина с ее USB и мощным контроллером не нужна) и силовые ключи. В линейку шлются данные о яркостях, а задача линейки - эти яркости обеспечить.
Решение получается расширяемым, проводов минимум (от трех на линейку), поток данных в линейки - копеечный. С другой стороны, хоть прошить контроллер от той же ардуины легко, но думаю народ испугается и повторять не будет.
10.03.2010, 23:10
Chip
Вложений: 1
Re: Фоновая подсветка телевизора Ambilight
Я тут подумал , нужно все таки делать на одной плате все делать, а к разьемам подключать лены светодиодные.
Предлагаю свой вариант разбивки Ambilight подсветки на 14 зон 42 канала Вложение 7747