Ручнаяя мастерская

Цветомузыка на Arduino


Видео демонстрация под Metallica — Fuel


Видео демонстрация под Evanescence — Even in death (2016 version)

Добрый день всем читателям и любителям «посамодельничать». Все мы с нетерпением ждем Новый год. И конечно хочется украсить свой дом. Чтобы вокруг всем было красиво и сказочно. И какой же Новый год без хорошей музыки. Вкусы у всех, конечно, разные, но каждый захочет включить что-нибудь, веселое и потанцевать. А может это будет медленный танец или вспомнить ушедший год под грустные мотивы. В любом случае, создать атмосферу и украсить дом, поможет цветомузыка. Созданию цветомузыки на основе Arduino и WS2812, и будет посвящена данная инструкция. На эту идею меня натолкнул AlexGyver. На его сайте alexgyver.ru много подобных идей и изобретений. Загляните как будет время. Итак, начнем.

В список покупок к Новому году добавим:

— Arduino Nano (можно использовать практически любую совместимую плату)
— Адресные светодиоды WS2812 (WS2812B), в количество светодиодов от 2 – 400 шт.
— Переменный резистор 10 – 100 кОм
— Кнопка
— Блок питания 5 В, 3 А (сила тока подбирается по ваше количество диодов)
— гнездо подключения блока питания
— Гнездо стерео-джек 3,5 мм
— Соединительный провод (стерео-джек 3,5 мм — стерео-джек 3,5 мм)
— Керамический конденсатор 10нФ (маркировка 103)
— Провода
— Паяльник и все сопутствующие ему.
Шаг 1 Подготовка светодиодных лент.
В этом шаге большой простор для вашей фантазии. Можно закрепить ленты на шкафу, картине, карнизе, телевизоре, тумбе и тд и тп. Я так и не смог определиться с выбором места. Я сделал, и вам рекомендую, сделать переносную ленту, точнее две. По длине – все зависит от вашего желания. Также ленту бываю с разной плотностью. Я брал с плотностью 30 диодов на метр. Они также есть 60 и 120 диодов на метр. Я сделал две полоски по 18 светодиодов. Это примерно 60 см. Для начала нам нужно основа. Под основу подойдут полоски фанеры, ДВП или пластика. Я взял фанеру толщиной 3 мм и вырезал две полоски шириной 1 см и диной 62 см (с запасом чтобы на конце закрепить провода от ленты):
Цветомузыка на Arduino
Поверх полоски из фанеры клеим светодиодную ленту, если вы приклеили ленту не ровно и пришлось ленту отодрать, она будет плохо держаться. В таком случае рекомендую использовать канцелярский двусторонний скотч. Он есть толщиной 1 см, как раз по ширине нашей ленты:
Цветомузыка на Arduino
Для тех кот не работал с адресными лентами вкратце расскажу. WS2812 – это три светодиода (красный, синий, зеленый) и 8-битный ШИМ драйвер для них в одном корпусе. Для подключения ленты используется три провода. +5V контакт на который подается плюс от блока питания, GND – минус блока питания. Управление происходит подачей 24 битного сигнала для каждого светодиода (8 бит на один цвет). Сигнал от Arduino подается на контакт Din первого светодиода, который в свою очередь, записывает себе во временную память первые 24 бита и согласно им, устанавливает цвет свечения, отсекает от сигнала эти первые 24 бита и отправляет сигнал через контакт Do дальше, следующим светодиодам. Поэтому у ленты есть направление. Она указано на ленте стрелочкой, или от контакта Din к Do.

Чем больше светодиодов, тем больше протекающий ток . WS2812 очень прожорливы и один диод потребляет (при максимальной яркости все трех цветов) 0,06 А. Поэтому провода питания контакты +5V и GND надо подбирать под максимальный ток протекающий по ним. Я использовал медный гибкий провод сечение 0,5 мм (с запасом и для дальнейшего увеличения длины ленты). Провод для сигнального контакты не столь требователен к сечению, ток протекающий по нему мал, поэтому берем тоненький гибкий провод. Припаиваем провода к ленте и изолируем контакты:
Цветомузыка на Arduino
Цветомузыка работает следующим образом: делит количество светодиодов пополам, громкость музыки указывается загоранием диодов от середины к концам всей ленты. Поэтому, если вы хотите две полосы, работающие как у меня на видео обе ленты подключаются параллельно (провод от контактов Din обеих лент к одному пину Arduino, D12). И тогда количество светодиодов в скетче указываем равное сумме диодов обеих лент. Если вы хотите, чтобы лента работала от середины подключаем две полоски последовательно и также указываем общее количество светодиодов.

Шаг 2 Блок питания.
Как я уже говорил лента WS2812 прожорлива, к выбору блока питания надо подойти основательно. Нам нужен 5 вольтовой стабилизированный, силу тока подбираем в зависимости от количества светодиодов, лучше брать с запасом. Я рекомендую, например, такой на 3 А:
Цветомузыка на Arduino
Характеристики написаны на корпусе блока питания:
Цветомузыка на Arduino
Я планирую дальнейшее расширение моей цветомузыки, поэтому не мелочась беру компьютерный блок питания с выведенными контактами подключения:
Цветомузыка на Arduino
Шаг 3 Arduino и схема подключения.
Для реализации данного проекта подойдет практически любая Arduino совместимая плата. У меня под руками оказалась Arduino Uno. Теперь надо собрать все по схеме. Схему возьму от моего идейного вдохновителя AlexGyver –ра:
Цветомузыка на Arduino
Потенциометр нужен для установки опорного напряжения для измерения уровня аудио сигнала. Контакт A0 используется как GND (для Arduino Nano так удобнее подключать). Можно обойтись без потенциометра, включив использование внутреннего опорного напряжения в скетче.
Контакты A1, A2 используются для подключения аудио сигнала, не забываем соединить GND контакты Arduino и провода аудио сигнала.
Кнопка, используется для переключения режимов, подключается к контакту D3 Arduino.

Соединение гнезда и контакта A3 через конденсатор нужно для работы некоторых режимов. Подробно о режимах работы вы можете узнать на странице AlexGyver:

Чтобы мы могли слушать музыку, и наша цветомузыка работа нам необходимо разделить аудио сигнал. Сделать это можно используя тройник:
Цветомузыка на Arduino
Также можно подключить колонки к аудио выходу на материнской плате, а цветомузыку к выходу наушников. Главное, нельзя подключать цветомузыку к выходу после усилителя, там слишком большой уровень сигнала для Arduino.

Я собрал все на основе Arduino Uno и разместил на блоке питания:
Цветомузыка на Arduino
Шаг 4 Редактирование, настройка и заливка скетча.
Для начала необходимо скачать последнюю версию среды разработки Arduino IDE. Лучше всего с официального сайта.

Выбирайте как вам удобнее: скачать ZIP архив и распаковать в нужное место или скачать установочный файл и установить программу. Разницы нет.

Для работы скетча нам понадобятся библиотеки: Adafruit_NeoPixel-master, EEPROMex, FastLED-master, FHT, GyverButton, IRLremote-master и IRremote. Проще всего скачать их все вместе и уже нужные версии с сайта AlexGyver.

Скачиваем целиком архив. Распаковав архив, переписываем все содержимое папки «libraries» в одноименную папку, находящуюся в папке с установленной Arduino iDE.

Запускаем Arduino IDE. Открываем скетч из скаченного ранее архива. Нужный нам скетч находиться в папке «firmware». Открываем «colorMusic_v2.10». Чтобы он работал правильно его нужно немного подправить, а точнее выставить правильные настройки.
Скетч предусматриваем возможность использования инфракрасного пульта для управления. Если есть желание вы можете найти все нужные инструкции на сайте AlexGyver-а. На мой взгляд пульт не обязателен. Поэтому будет настраивать на работу без пульта. Ищем строку:

#define REMOTE_TYPE 0

Там должен стоять «0».

Настройки Arduino будет хранить в энергонезависимой памяти EEPROM. Чтобы не возникало ошибок в дальнейшем, сбросим все настройки. Находим строку:

#define RESET_SETTINGS 0

Ставим вначале «1», прошиваем скетч, после этого ставим «0» и прошиваем еще раз.
В строке:

#define NUM_LEDS 36

Указываем ваше количество светодиодов.
После запуска цветомузыки поступаем следующим образом: для начала надо настроить нижнюю границу уровня звука. Для этого ставим музыку на паузу, зажимает и удерживаем кнопку пока не загорится диод на плате Arduino.

Вариантов установки цветомузыки масса. Я установил блок питания и Arduino на шкафу. Блок питания подальше, чтобы его не было видно, а ленты направил вверх:
Цветомузыка на Arduino
Также можно установить ленты по бокам от компьютерного стола:
Цветомузыка на Arduino
Затем включаем музыку и смотрим все вся ли лента загорается при работе музыки. Если лента работает только в самом начале или наоборот всегда горит крутим потенциометр. Опытным путем делаем так чтобы вся лента работала. Все удачи в самоделках и отличных идей.
Цветомузыка на Arduino

Присоединяйтесь!

Не стесняйся, общайся. Мы любим встречать интересных людей и заводить новых друзей.