Светомузыкальная установка EQ Pixels

Начнем с небольшого вступления … В прошлом году я работал над созданием системы подсветки из светодиодной RGB гирлянды и микросхемы фильтра частот MSGEQ7. Светодиоды изменяли цвет в зависимости от сигнала с MSGEQ7. Я написал несколько эффектов и возможность переключения эффектов нажатием кнопки.
Однажды я показал устройство одному своему другу. Посмотрев на устройство, он сказал, что было бы здорово иметь что-то подобное для своего музыкального центра. У меня случайно оказался набор деталей, поэтому я обещал сделать ему такой же комплект. Спустя 6 месяцев мы оба забыли об этом. Я стал думать над применением тех деталей что у меня имелись. Подумав над парой вариантов, я решил докупить 20 мм Digital RGB LED Pixels от Adafruit. Светодиодные пиксели очень яркие и так же их достаточно просто использовать, существует библиотека для управления. В дополнение к кнопке переключения эффектов я также добавил ИК-приемник и занес в память несколько неиспользуемых кнопок на пульте дистанционного управления стандартной FIOS, так что теперь вы можете переключать эффекты, не вставая с дивана!
При работе над проектом я также придумал несколько новых эффектов, некоторые из которых работают в такт музыке, а некоторые сами по себе. Эффекты эквалайзера работают за счет 3-х каналов от MSGEQ7 (низкий, средний, высокий). Каждому из каналов соответствуют красный, зеленый или синий светодиод в пикселе. Визуализация музыки получается достаточно красивой и теоретически та же песня всегда будет производить тот же эффект.
 

Для интересующихся, вот краткое описание всех эффектов:
Световые эффекты (не управляются звуком):

  • Плавные переходы — Переходы 96 цветов в течение 45 минут. (Эффект по умолчанию)
  • Светлячки — Случайные пиксели подсвечиваются на случайный промежуток времени — как светлячки ночью.
  • Строб — обычный стробоскоп — все белым.

Эквалайзер — эффекты:

  • Раздельный эквалайзер — Разделение полосы пикселей пополам, эквалайзер из центра к краям.
  • Полный эквалайзер — Эквалайзер по всей длине полосы 
  • Цветной пиксель — Каждый пиксель обновляется в такт музыке
  • Моно – только синие светодиоды.
  • Рождество — красный и зеленый свет изменяет яркость от половины до полной в такт музыке.

Создание устройства
Для создания светомузыкальной установки «EQ pixels» вам понадобится:

  • Светодиодные пиксели — 20мм на основе микросхемы LPD6803 
  • Arduino — любая с чипом ATmega328 (я использовал Boarduino)
  • Блок питания — 5В, не менее 2A (2000mA)
  • 7-ми полосный фильтр для графического эквалайзера — MSGEQ7
  • Аудио разъем 3.5 и макетная плата
  • ИК-приемник — TSOP38238, либо аналогичный на 38 кГц
  • Подходящий по размерам алюминиевый уголок

Вам также необходимо немного резисторов, конденсаторов, пару кнопок и прочей мелочевки.
Поскольку этот проект достаточно прост, я решил не показывать изготовление шаг за шагом , а показать несколько ключевых фотографий вместе со схемой и скетчем для запуска на Arduino. Вы можете использовать устройство для создания LED подсветки, Ambilight и т.п, переписав код под нужную вам задачу.
Давайте начнем, взгляните на схему:


Левый и правый звуковые каналы соединены вместе и отправляются на вход MSGEQ7, который преобразует аудио и отправляет получившийся сигнал на аналоговый вход Arduino. Arduino считывает информацию из MSGEQ7 и изменяет свечение светодиодных пикселей в соответствии с выбранным в данный момент эффектом. Большой конденсатор на входе сглаживает пульсации на выходе источника питания 5В. Кнопка и ИК-датчик подключены к Arduino для управления. Теперь давайте взглянем на некоторые фотографии моей реализации проекта:
Две ленты по 20 светодиодных пикселей в каждой были соединены вместе, а затем укорочены до 32 пикселей. Затем они были приклеены на горячий клей к 2.4 метровому алюминиевому уголку. Совет: алюминий должен быть слегка шероховатый, чтобы клей хорошо держался.


Разъем RJ11 был закреплен на противоположной стороне алюминиевого профиля для соединения с блоком управления.


Профиль закреплен за домашним кинотеатром на L-образный крепеж. Это позволит снять устройство в случае необходимости.


Макетная плата установлена в корпус без Boarduino. На плате установлены 3 пары 2х пиновых разъемов для подключения разъема питания, выключателя питания и кнопки переключения эффектов.


Плата с установленным Boarduino. Примечание: разъем питания и стабилизатор на плате Boarduino не используются, так как я использовал блок питания на 5В, от которого сразу питаются микросхемы.


Другой вид с обратной стороны:


Верхняя часть корпуса с установленными кнопками и разъемом питания, а так же окошком под ИК-управление


Собранное устройство, вид спереди. Видны кнопки и окошко под ИК-приемник

На задней стороне RJ45 для подключения светодиодов, аудиоразъем и разъем питания

Прошивка
Скетч Arduino был создан мной из нескольких частей кода прошлого проекта «LED Pixels» с эффектами и кодом для обработки ИК и нажатия кнопки. Исполняемый эффект хранится в переменной eqmode, ее значение изменяется либо кнопкой либо с пульта. Программа получилась несложная, основной цикл выполняет следующие операции в цикле:

  • Проверка кнопки, если она была нажата обновление eqmode
  • Проверка ИК-приемника, если есть сигнал обновление eqmode
  • Выполнение текущего эффекта согласно eqmode
  • Чтение значений с микросхемы
  • Обновление светодиодных пикселей

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

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Светодиодные пиксели LPD6803 1
S1 Кнопка 1
U2 Arduino Любая на ATMega328 1
IC1 Микросхема MSGEQ7 1
IR Ик-приемник TSOP38238 1
U1 Разъем Jack 3.5 1
C1 Конденсатор 10 нФ 1
C2 Конденсатор 33 пф 1
C3 Конденсатор 1000 мкФ 1
C4 Конденсатор 1 мкФ 1
C6 Конденсатор 100 нф 1
C8 Конденсатор 100 нФ 1
R1 Резистор 47 Ом 1
R2 Резистор 200 кОм 1
R3 Резистор 10 кОм 1