Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

  • Час 13-08-2015, 13:58
  • Автор admin
  • Коментарів 0 Комент.
  • Силка url

Уявляю свій варіант інтерактивної підсвічування телевізора на RGB стрічці.

Власне, зацікавився цією ідеєю давно, але не робив закінчений пристрій з-за того, що для роботи потрібно використовувати ноутбук. Але нещодавно з'явилося для Android, яке заробило на медіаплеєрі Freelander AP10 навіть краще, ніж на PC.

Введення

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

Коротенько для непосвячених. Інтерактивна підсвічування монітора або телевізора підсвічує стіну за телевізором відповідно із зображенням на екрані. Такий ефект виглядає красиво і робить перегляд фільму більш видовищним.

В даний момент існують повністю апаратні рішення з аналізом потоку HDMI, але це закриті проекти і складні у виготовленні пристрою. 

Тому поширення набули пристрої з використанням PC в якості джерела зображення, де на PC встановлюється спеціальне ПО, яке управляє пристроєм підсвічування. 

Сам пристрій у найпростішому випадку може представляти із себе Arduino Uno з безпосередньо підключеної світлодіодною стрічкою.

Існує кілька варіантів пристроїв зі своїм ПО: Lightpack[7][8][9], Paintpack[10], Adalight[11], Boblight[12], Ardulight[13] та ін

Відео роботи:

n

Можливості пристрою:
- апаратна сумісність з Lightpack, робота в режимі інтерактивної підсвічування з управлінням від PC або Android медіаплеєра (USB);
- включення, вимикання, перемикання режимів з пульта дистанційного керування (ІК);
- регулювання яскравості з ПДУ;
- включення/вимикання однієї зовнішнього навантаження ( акустичну систему) з ПДУ;
- автономний режим "Mood lamp";
- автономний режим "світломузика" (звук прослуховується з вбудованого мікрофона);
- режим, в якому світломузика впливає на Mood lamp або інтерактивну підсвічування.

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

Вибір RGB стрічки

Враховуючи великі розміри телевізора, я вирішив використовувати RGB стрічку, щоб забезпечити рівномірне підсвічування зон замість чітко помітних кругових плям від окремих світлодіодів, і одночасно максимально зменшити довжину проводів, що висять за телевізором.

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

У продажу є RGB стрічки декількох видів. Нас цікавлять стрічки з індивідуально адресованими світлодіодами ( або групами світлодіодів по 3 ), побудовані на світлодіодах RGB5050. Вони відрізняються:
1) кількістю світлодіодів на метр (30 або 60);
2) чіпом, на якому побудовані ( WS2801 або WS2811, або аналоги);
3) індивідуально призначені, або групами по 3 світлодіода;
4) напругою живлення: 12В або 5В;
5) наявністю вологоізоляції.

Оскільки різниця в ціні між 30 і 60 світлодіодами - 2 рази, і між чіпами ws2801 і ws2811 - ще 2 рази, на EBay була куплена 5м бобіна "12V 5m WS2811IC digital magic RGB 5050 SMD led strip waterproof IP66 in Silicone" за $43 з доставкою, і до неї 12В 2А блок живлення.

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

У цій стрічці кожні 3 світлодіода підключені послідовно до одного чіпу WS2811.

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

Номінальний струм світлодіодів - 20мА на колір. Разом на 1 метр отримуємо:

20мА * 3 кольори * 30/3 груп = 600мА/метр

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

30 світлодіодів вистачає, щоб нормально дивитися фільм ввечері. Для денного перегляду краще брати стрічку на 60 світлодіодів на метр.

Чіп WS2801 управляється по інтерфейсу SPI ( слухає лінії Data і Clock). Програмна реалізація не становить праці.

Однак чіп WS2811[16] управляється за однопроводному інтерфейсу зі строгими тимчасовими інтервалами. Обрив посилки призводить до застосування частково отриманих даних. На щастя, в мережі вже доступні процедури для управління стрічками на WS2811[6]. Єдине, що потрібно розуміти - це те, що під час пересилки даних, переривання повинні бути заборонені. На одну групу світлодіодів сягає:

1.25 us * 24bit = 30us

Для 27 зон:

27 * 30us = 810 us

Заборона переривань на вказаний проміжок часу може викликати деякі проблеми ( про це пізніше ).

Вибір ЗА

Як відомо, головне в інтерактивній підсвічуванню - це для хоста. Серед кількох варіантів я зупинився на Prizmatik for Lightpack[7][8][9], так як цей проект має чіткі плани розвитку і отримав підтримку на KickStarter. Ну і вирішальним фактором стало обіцянку випустити для Android.

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

Тому "залізо" було вирішено робити апаратно сумісним з Lightpack (тобто USB пристроєм на AT90USB162), оскільки інтерфейси AdaLight/Ardulight під Androind підтримувати ніхто не обіцяв (і в підсумку саме так і сталося).

Android медіаплеєр Freelander AP10 досить продуктивний, щоб переглядати 720p фільми з програмним декодером в MX Player (з апаратним декодером ЗА Lightpack не працює).

Один Lightpack підтримує 10 зон. В моєму випадку вийшло 27 зон, тому я вирішив переробити прошивку так, щоб моє пристрій "прикидывалось" 3-ма Lightpack'ами.

Прошивка була оптимізована по пам'яті, і були додані ще 2 HID інтерфейсу.

Незважаючи на це, додаткові зони З не з'являлися.

Після дводенного пошуку помилок в прошивці виявилося, що в Prizmatik для Windows додаткові зони з'являються тільки при запуску зі спеціальним ключиком (--wizard ), а Prizmatik для Android просто не підтримує більше одного пристрою! 

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

В останній прошивці для Lightpack з'явився запит серійного номера пристрою. Prizmatik for Windows( для Lightpack) нормально визначає кілька підключених пристроїв без серійного номера. Мені не вдалося з'ясувати, чи є причиною проблеми відсутності серійного номера в моєму пристрої, так як вихідні коди для Android автори не викладали у вільний доступ. Засубмиченый баг поки залишений без уваги[17]. На жаль, серійний номер є властивістю пристрою, а не інтерфейсу, тому принципово неможливо призначити унікальний серійний номер кожного HID інтерфейсу в межах одного чіпа.

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

В результаті, оскільки пристрій збиралося для використання з Android медіаплеєром, я переробив прошивку так, щоб 10 зон интерполировались в 27 зон стрічки, і на цьому поки закінчив.

Принципова схема 

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

Пристрій зібрано на основі моєї налагоджувальної плати на AT90USB162, до пинам якої приєднані додаткові модулі. 

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

Модуль реле

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

Модуль реле зібраний на монтажній платі. Обидва реле на 5В, коммутіруют 220В. Реле RL1 включає блок живлення 12В для світлодіодної стрічки. Реле RL2 подає 220В на зовнішнє навантаження - в моєму випадку, це акустична система, яка не має свого пульта управління.

Приймач ІЧ комманд

Приймач TSOP4836 приклеєний до корпусу біля віконця з оргскла і підключений до основної плати. R1 і C1 змонтовані навісним монтажем на ніжках приймача.

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

Я використовував пульт від нагрівача. 

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

В інтернеті можна знайти безліч статей про те, як розпізнавати команди з ІЧ пульта. Але в даному виробі нас чекає засідка, яка полягає в тому, що для управління RGB стрічкою на чіпах WS2811 потрібно забороняти переривання на час, що перевищує довжину біта ІК команди. Програмне декодування ІК команд працювати не буде.

Тому спеціально для цього пристрою я розробив спосіб апаратного декодування команд з допомогою UART модуля мікроконтролера [14].

Кнопка SB1 запускає процедуру навчання кнопок пульта. Стрічка блимає червоним кольором чотири рази. Тепер потрібно двічі натиснути кнопки, відповідні On/Off, External On/Off, Mode: Backlight, Mode: MoodLamp, Brightness+, Brightness-. Коли перша кнопка навчена, запалюється один сегмент стрічки і т. д.

Світломузика ( beat detector ) включається/вимикається повторним натисканням на кнопки вибору режиму.

Beat Detector

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

Схема підглянена тут[15]. Beat Detector видає "1", коли виявлений пік сигналу. 
В даному приладі реалізація повинна бути повністю апаратної, оскільки 1) в мікроконтролері відсутня АЦП; 2) переривання забороняються на великі періоди.

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

На U1:A і зібраний попередній підсилювач, на виході якого фільтром R6C3C4 обрізаються високі частоти. На U1B і Q1 зібраний каскад підсилення з АРУ. Його вихід підсилюється каскадом U1:C. Ланцюжка D2C8C9R12 і D5C10R14 являють собою два пік-детектора, що працюють на різних частотах (див. осциллограмму). Останній каскад U1:D являє собою компаратор, на виході якого з'являється "1", коли помічений пік сигналу.

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

Це найбільш складна частина схеми. Вимагає установки з осцилографом.

Рекомендується налагодити цю частину схеми з живленням від 4-х акумуляторів AA, так як харчування USB порту містить велику кількість пульсацій і синфазних перешкод, які можуть повністю перекривати слабкий сигнал з мікрофона.

Електретний мікрофон повинен бути як можна більшого розміру. Мікроскопічні мікрофони із телефонний стіна показали себе погано, так як видавали дуже слабкий сигнал і погано реагували на низькі частоти. 

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

Прошивка додає "спалах" світлодіодів на кожен удар, ігноруючи можливе деренчання на виході детектора. Такий алгоритм не ідеальний, оскільки детектор може часто пропускати піки. Краще буде працювати "автогенератор", що підбудовується під частоту детектора. Так, людина продовжує деякий час рахувати ритм, навіть якщо припинилися ударні. 

Оскільки зараз зберігається невизначена ситуація з Android, то я вирішив тимчасово зберегти спрощений алгоритм поки незрозуміло, скільки оперативної пам'яті можна виділити під це діло.

Прошивка

Прошивка являє собою сильно змінену прошивку Lightpack[7].

На даний момент тільки перевірені режим емуляції 3-х Lightpack і режим інтерполяції одного Lightpack на 27 зон.

Макрос LIGHTPACKS_COUNT задає кількість емульованих пристроїв Lightpack.

Макрос RESAMPLE включає інтерполяцію 10 зон Lightpack на більше число зон RGB стрічки.

При цьому необхідно вказати, як саме інтерполювати зони.

Макроси LZ_*** задають положення зон Lightpack на розкладці Andromeda.
Макроси RZ_** задають положення зон стрічки на телевізорі.

В моєму випадку початок стрічки знаходиться в правому нижньому кутку. Стрічка обертає 37" телевізор проти годинникової стрілки, створюючи 27 зон ( по 3 світлодіода в зоні ).

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

Пристрій прошивається аналогічно Lightpack, через USB порт. Процес описаний тут [7].

Корпус

Пристрій зібрано в корпусі 130х65х45. Блок живлення був розібраний і поміщений в корпус конструкції, всередину алюмінієвого екрану.

Інтерактивна підсвічування телевізора + Mood lamp + Beat detector

Вихідні коди прошивки, схеми, друковані плати (Proteus) знаходяться в прикріплених архівах.

Матеріали

1. Безконтактна світломузика для RGB-стрічки
http://cxem.net/sound/light/light55.php

2. Das Blinkenlichten - wearable lighting
http://tim.cexx.org/?page_id=374

3. Союз-1 - Кольоромузичне установки
http://lightportal.at.ua/publ/cvetomuzykalnye_ustanovki/sojuz_1/3-1-0-18

4. Simple beat detector
http://engineeringentropy.wordpress.com/2013/05/24/a-simple-beat-detector/

5. An ambilight system for WS2811 RGB strips
https://github.com/rosterloh/ambilight

6. Driving the WS2811 at 800KHz with a 16MHz AVR
http://bleaklow.com/2012/12/02/driving_the_ws2811_at_800khz_with_a_16mhz_avr.html

7. Lightpack - USB-підсвічування монітора для посилення ефекту присутності
https://code.google.com/p/lightpack/

8. Lightpack - ambient backlight for your displays ( Kickstarter )
https://www.kickstarter.com/projects/woodenshark/lightpack-ambient-backlight-for-your-displays

9. Lightpack - content-driven lighting system
http://lightpack.tv/

10. Paintpack - Інтерактивна підсвічування
paintpack.ru

11. Adalight - DIY Ambient Monitor Lighting Project Pack
http://www.adafruit.com/products/461

12. Boblight - Boblight is a collection of tools for driving lights connected to an external controller.
https://code.google.com/p/boblight/

13. Ardulight - Інтерактивна підсвічування
https://code.google.com/p/ardulight/

14. Розпізнавання ІК команд з допомогою UART на AVR
http://cxem.net/ik/2-21.php

15. Das Blinkenlichten - wearable lighting
http://tim.cexx.org/?page_id=374

16. WS2811 Datasheet.
http://solderingsunday.com/wp-content/uploads/2014/01/ws2811.pdf

17. Lightpack bug database
https://code.google.com/p/lightpack/issues/detail?id=355

Список радіоелементів

Позначення Тип Номінал Кількість U1 U2 R1, R3 R2 R4 R5 R6 C1 C2, C7 C3 C4 C5,C6 D1 X1 J1-J7 SW1
МК AVR 8-бітAT90USB1621
Захисний діодUSB6B11
Резистор22 Ом2
Резистор1 МОм1
Резистор1 кОм1
Резистор100 кОм1
Резистор20 кОм1
Конденсатор10нФ 50В1
Конденсатор4,7 мкФ 6.3 В2
Конденсатор47мкФ 6.3 В1
Конденсатор100нФ 6.3 В1
Конденсатор18 пФ2
Випрямний діодBAV701
Кварцовий резонатор16 МГц1
Роз'ємDIL-401
Кнопка1
Tags

Коментарі до новини