Давно хотелось попробовать сделать что-то цветомузыкальное на микроконтроллере и ленте RGB. В сети есть много вариантов внешнего исполнения таких устройств и много вариантов скетчей (программ) для микроконтроллеров с разными алгоритмами визуализации.
Для себя поставил следующие цели:
- сделать светильник в виде «столбика» индикатора уровня звука;
- светильник должен работать на микроконтроллере, чтобы можно было экспериментировать с алгоритмами визуализации;
- светильник должен управляться как физическими кнопками, так и через web-интерфейс;
- светильник должен иметь еще какие-то функции, чтобы от него была польза.
В итоге получилась первая версия светильника.
Общее описание самоделки
Самоделка представляет собой пластиковый светильник в виде индикатора уровня аудиосигнала, установленного на подставке. В подставке находятся «мозги» (микроконтроллер), 7-ми сегментный 4-х разрядный дисплей, микрофон, кнопка управления и разъем питания.
Управление режимами работы светильника осуществляется кнопкой и/или web-интерфейсом.
Светильник-цветомузыка позволяет:
- быть просто светильником – ночником. Цвет и яркость свечения могут быть установлены настройкой;
- работать в одном из 8 режимов визуализации музыки;
- визуализировать звуки, получаемые от микрофона светильника;
- отображать на 7ми сегментном дисплее текущее время и режимы работы светильника.
Питание светильник получает от внешнего блока питания 5V (2A).
Кнопка позволяет:
- настроить подключение светильника к домашней сети (по WiFi). Для настройки подключения необходимо перед подключением БП зажать кнопку – при этом светильник поднимет точку доступа D1_ColorMusic и будет ждать подключения и ввода данных для подключения к роутеру (SSID и пароль). Для установки параметров подключения необходимо со смартфона или ноутбука подключиться к точке доступа D1_ ColorMusic. В браузере перейти по адресу http://192.168.4.1 и заполнить в открывшейся форме поля SSID и Password. После нажатия кнопки «Сохранить» светильник попытается подключиться к локальной сети.
- включить/выключить свечение светильника (однократный клик);
- переключить режим работы: светильник или 1 из 8 режимов визуализации. Режимы переключаются циклически (двойным кликом). При этом дисплей показывает номер режима.
- установить яркость свечения светильника (от 5 до 255 с шагом 10). Управление осуществляется удержание кнопки. Направление изменения яркости (увеличение или уменьшение) при очередном нажатии кнопки и ее удержании меняется на противоположное. В момент удержания кнопки дисплей отображает текущую величину яркости. Светильник синхронно с изменением величины меняет свою яркость;
- режимы и настройки сохраняются при следующем включении светильника.
Светильник при включении подключается к WiFi-роутеру домашней сети, на дисплее бегущая строка покажет IP-адрес, который назначил ему роутер. Далее светильник получает данные о времени из сети интернет.
Таким образом, светильник, когда не светит, то просто показывает текущее время.
Итак, приступим:
Материалы и инструменты:
Для работы нам понадобятся:
- 3D принтер и пластик (2 цвета: черный и прозрачный);
- паяльник с припоем;
- соединительные провода для пайки;
- термоусадочные трубки;
- канцелярский нож;
- надфили, наждачная бумага и/или нож для обрезки заусенцев;
- плотный картон;
- 6 болтиков М4х8 с гайками;
- клеевой пистолет;
Электронные компоненты (ссылки приведены исключительно для получения информации о внешнем виде и параметрах компонентов): - блок питания 5V на 1,5-3A;
- ESP8266 D1 mini – микроконтроллер – 1 шт.;
- микрофон с автоматическим усилением MAX9814 – 1 шт. (опционально – если аудиосигнал будет поступать через микрофон ).
- цифровой дисплей TM1637 – 1 шт.;
- светодиодная адресуемая лента WS2812B 60 диодов на 1 метр – 1 шт.;
- кнопка без фиксации – 1 шт.;
- штекер и разъем для подключения блока питания – 1 шт. (штекер опционально);
- аудиоразъем для наушников 3,5мм – 1 шт. (опционально – если аудиосигнал будет подаваться по кабелю);
- однорядный штекер и гнездо 1х40 (шаг 2.54) - 1 шт.
- двухсторонний прототип, 3x7 см, универсальная печатная плата для Arduino (или аналогичный материал для монтажа электронных компонентов) – 1 шт.
Также может понадобится клей для пластика. Детали корпуса спроектированы так, чтобы они плотно соединялись. Но в силу разных параметров усадки пластика может потребоваться зафиксировать некоторые детали клеем.
Если будет создаваться тестовый макет, то для макетирования можно использовать макетную плату и набор проводов типа Dupont.
Шаг первый: печать корпуса
Корпус светильника состоит из 2х основных блоков: подставка и светильник. Подставка состоит из 2х деталей: корпус подставки и дно. Дно должно плотно вставляться снизу корпуса. При необходимости его можно зафиксировать клеем.
Светильник состоит из 3х деталей: задняя крышка, передняя крышка, рассеиватели. Задняя и передняя крышка печатаются черным пластиком. Рассеиватели – прозрачным. Для данной конструкции необходимо напечатать и соединить между собой 3 комплекта. Рассеиватели должны плотно входить в пазы передней крышки. При необходимости нужно использовать наждачную бумагу (если рассеиватели не входят в пазы) или клеем зафиксировать рассеиватели (если они свободно выпадают).
Примечание: площадку для монтажа RGB-ленты можно также напечатать, но я использовал для этой цели плотный картон – вырезав 3 элемента нужного размера (129мм х 38мм).
По ссылке ниже размещен архив с файлами деталей для 3D принтера.
Ссылка на архив:
В прилагаемом архиве моделей задний корпус светильника представлен в 2-х вариантах: крепежные отверстия с двух сторон и крепежные отверстия только с одной стороны. Необходимо распечатать 2 шт первого варианта и 1 шт второго.
При печати рассеивателей рекомендуется напечатать 1 штуку и проверить, как деталь входит в свой паз. Если необходимо – скорректировать размер детали масштабом (на этапе нарезки). В связи с разбросом параметра усадки пластика мне потребовалось уменьшить деталь и установить масштаб 99% по X и Y.
Все детали светильника, кроме корпуса подставки, печатаются без поддержек. Но так как площадь печати значительная, то во избежание отслоения детали от стола принтера рекомендуется печатать с режимом «брим». Корпус подставки печатается с поддержками. На фото модели режим «брим» не показан.
Печатать можно любым пластиком, но желательно в высоком качестве. После печати детали при необходимости обрабатываются надфилем, наждачной бумагой или ножом для обрезки заусенцев.
В результате мы получим следующие элементы для сборки светильника:
- дно подставки;
- корпус подставки с отверстиями для крепления элементов;
- 3 комплекта: задняя и передняя крышка с рассеивателями.
Из плотного картона вырезаются 3 панели для крепления светодиодной ленты.
Шаг второй: сборка светильника
Для сборки светильника необходимо винтами М4 скрутить задние корпусы между собой.Закрепить элементы на задней стенке подставки. Примерить дисплей и микрофон – при необходимости подогнать отверстия, чтобы элементы плотно садились в них.
Полученную 3х секционную конструкцию прикрутить к корпусу подставки.
RGB-лента нарезается по 8 светодиодов по линиям разреза и наклеивается по 2 на секцию (2 на каждой картонке). При этом необходимо следить за тем, чтобы стрелка на ленте указывала всегда снизу вверх. Шилом в нужных местах прокалываются отверстия для проводов.
Провода припаиваются согласно схеме подключения: питающие жилы соединяют параллельно ленты RGB. Секции RGB-блоков подключаются друг к другу последовательно.
Для соединения секций можно использовать маленькие 3х-контактные разъемы (при наличии) или нарезать такие разъемы из однорядных разъемов (штекер, гнездо). Штекер бокорезами отрезается по линии между контактами, а приемная часть режется по 4му гнезду. По бокам приемная часть («мама») обрабатывается надфилем.
3 вводных провода припаиваются в нижней части секции (стрелка адресной ленты должна смотреть вверх). При этом средние контакты параллельных лент секции внизу замыкаются (т.е. ленты включаются параллельно. И к контактам типа «папа» припаиваются линии «+5V», «DIN», «GND». Места припаивания проводов к разъемам изолируются термоусадочной трубкой или заливаются клеевым пистолетом.
Сверху к контактам разъема типа «мама» припаиваются линии «+5V», «DO», «GND». Линия «DO» берется с любой из лент. Перед пайкой необходимо зачистить соответствующие контакты ленты, т.к. они покрыты лаком. Зачищать можно кончиком канцелярского ножа аккуратно, т.к. контактные площадки очень тонкие.
Далее все 3 секции устанавливаются в свои корпуса в нужной ориентации (стрелками вверх) и соединяются друг с другом разъемами. Необходимо внимательно следить за качеством пайки и полярностью соединения разъемов: «+5V» одной секции должно соединяться с «+5V» другой. Соответственно и «GND». Линия «DO» должна соединяться с «DIO» верхней секции.
Вводной разъем нижней секции должен выходить в корпус подставки.
Шаг третий: тестовая сборка
Для прошивки микроконтроллера использовать прилагаемый в архиве скетч:
Если Вы уверены в себе и в электронных компонентах – то можете пропустить данный шаг.
На данном этапе необходимо по приведенной схеме соединить все элементы и проверить их работоспособность.
Для тестовой площадки можно использовать макетную плату PCB без пайки и провода типа Dupont.
Внимание! Нельзя для питания схемы при подключенной светодиодной ленте использовать порт микро-USB микроконтроллера!!! Так как схема питания МК не рассчитана на ток, который потребляет лента. Используйте внешний источник в соответствии с представленной схемой.
Я использовал питание от USB только на этапе отладки. При этом лента была ограничена 8-ю диодами (т.е. одна полоска) и в скетче количество диодов также было установлено в 8.
Собираем макет устройства, подключаем к компьютеру с установленной программой Arduino IDE. Подключаем необходимые библиотеки (указаны в начале файла скетча), компилируем, загружаем в МК, предварительно выбрав нужную плату (LOLIN(WEMOS) D1 R2 & mini).
Включаем – убеждаемся, что устройство работает. Если не работает – проверяем корректность подключения элементов в соответствии со схемой, а также качество соединений.
Шаг четвертый: установка и монтаж электронных компонентов
Когда все проверено – можно собирать электронную схему на печатной плате. Не привожу свой монтаж, так как каждый мастер делает свой вариант, как ему удобно. Соединение печатной платы с дисплеем, микрофоном, питанием, кнопкой и адресной лентой производится с помощью тех же разъемов, которыми соединяются ленты. Гнездо типа «мама» крепится на плату, а штекер припаивается проводами к соответствующему элементу.
Печатная плата крепится ко дну подставки клеевым пистолетом.
Светильник собран.
Для доступа к настройкам лампы необходимо подключить ее к локальной сети (при включении зажать кнопку, подключиться к точке доступа лампы и указать нужный SSID и пароль). После подключения к локальной сети на дисплее будет отображен бегущим текстом выданный роутером IP. Этот IP нужно ввести в строке браузера. Если все сделано корректно – откроется окно настроек. Для сохранения настроек в памяти МК нужно нажать кнопку «Сохранить».
Демо работы светильника:
Камера не передает сочности цветов – в реальности цвета насыщенные.
Заключение
Скетч для загрузки в микроконтроллер приведен для примера. Это первая версия, которая будет дорабатываться. Гнездо аудиоразъема добавлено на перспективу – в данной версии не используется. Но если нужен вход по аудиопроводу, то нужно вместо микрофона подключить через резисторы провода к аудиоразъему («земля», «правый канал», «левый канал»).
За основу реализации брались проекты с сайта и с сайта . Правки, доработки и комментарии вносились выборочно. Поэтому код не оптимизирован и местами выглядит коряво.
Вы можете найти другие реализации скетчей в сети, внести в них требуемые настройки и правки, а при наличии навыка можете написать свою программу и выводить нужные показатели на цифровой дисплей: например, счетчик подписок, данные погоды, атмосферное давление и т.д.
При данной реализации светильника выявлены следующие особенности:
- так как опрос аналогового пина данного микроконтроллера происходит с высокой частотой, то в таком режиме отключается WiFi. Т.е., если работает цветомузыка, то устройство исчезает из локальной сети и управлять через WEB-интерфейс не получится. Чтобы вернуть работоспособность WiFi нужно одиночным нажатием кнопки выключить свечение лампы (отключить работу алгоритма визуализации).
- подключение микрофона как указано на схеме у меня работает отлично. Но в Вашем варианте может потребоваться настройка модуля путем использования выводов «Gain» (Усиление) и «AR» (Автоматический уровень). Описание вариантов использования этих контактов можно найти в сети: они либо «висят», либо подключаются к GND или VDD.
- я не использовал рекомендуемую обвязку для ленты и микрофона, но если у Вас будут проблемы, помехи или ложные срабатывания, то попробуйте добавить соответствующие электронные компоненты в цепи микрофона/ленты. Информация есть по ссылкам, приведенным выше.
- первоначально планировалось использовать 3 ряда ленты для более яркого свечения. Но по факту оказалось достаточно 2. Вы можете использовать даже 1 ряд.
Направления развития и улучшений для версии 2:
- использование ESP32 S2 mini вместо D1 для решения проблемы с WiFi;
- обновление прошивки по OTA;
- добавление цветовых эффектов (например, работа только с одним частотным диапазоном);
- добавление настроек в WEB-интерфейс;
- подключение к «Умному дому» по протоколу MQTT – для возможности управления работой светильника;
- синхронная работа нескольких светильников (с разными частотными диапазонами);
- необходимо обеспечить лучшее рассеивание света, чтобы размыть «точки» светодиодов. Есть несколько направлений: удалить от рассеивателя вглубь корпуса светодиоды (вместе с панелью); на рассеивателях изнутри сделать рифленую текстуру и т.д.
Для себя позиционирую этот светильник, как устройство для экспериментов – добавлять функциональность по мере появления идей.
С наступающим Новым годом!
Успехов в реализации и новых идей!