Ничего не найдено :(
    В гостях у Самоделкина! » Электроника » Arduino » Светомузыкальная ёлочная звезда на адресных светодиодах и ATmega328

    Светомузыкальная ёлочная звезда на адресных светодиодах и ATmega328

    Здравствуйте, товарищи Самоделкины!


    Приближается Новый год, и по уже сложившейся традиции я снова своими руками ваяю домой праздничные украшения.

    В прошлом году я делился с вами проектом ёлочной звезды на адресных светодиодах. Ещё тогда я говорил о том, что неплохой идеей было бы добавить туда светомузыку. И вот, спустя год, руки наконец-то дошли.

    Как вы можете помнить, вся система состоит из двух компонентов – непосредственно самой звезды, и блока управления, внутри которого микроконтроллер управляет миганием светодиодов. Вот этот самый блок и было нужно доработать. Но я решил не допиливать старый, а сделать с нуля новый. Во-первых, зная мою криворукость, не хотелось случайно что-то испортить. Во-вторых, ещё в процессе написания кода стало ясно, что 8 КБ флеш-памяти 85-й Тиньки не хватает для реализации всех идей (а как выяснилось в процессе написания кода, для полноценной светомузыки этого объёма памяти в принципе не хватит, даже если отказаться от всех остальных режимов мигания).

    Поэтому было принято решение сделать новый блок на гораздо более мощном (в сравнении с ATtiny85) МК ATmega328P.

    Итак, для начала список компонентов. Непосредственно для самой звезды:

    - Светодиоды WS2812B

    - Конденсаторы на 0.1 мкФ по количеству светодиодов

    - Стеклотекстолит

    - Конденсатор 1000 мкФ

    - Резистор на 200-500 Ом

    Для блока управления – тут уже есть некая «разбежка». Я решил делать проект не на плате Arduino, а на голом МК, то есть самому травить плату, паять обвязку и вот это вот всё. Почему так? Ну, во-первых, у меня завалялся микроконтроллер, и я решил наконец-то пустить его в дело. Во-вторых – это просто интереснее и… Ламповее, что ли? Не брать готовые модули, а сделать всё самому, с нуля, и даже когда вся схема находится внутри корпуса и её никто не видит, ты всё равно знаешь, что она целиком и полностью сделана своими руками – по-моему, это офигенное чувство.

    Ну ладно, отвлеклись. В общем, дальше приведу два списка деталей, для обоих вариантов исполнения (кое-где компоненты будут повторяться). На Arduino:

    - Плата Arduino Nano

    - Разъём Mini-Jack 3.5 мм

    - 2 потенциометра на 50 кОм

    - тактовая кнопка

    - диод – с как можно меньшим падением напряжения, в идеале вообще взять диод Шоттки

    - конденсатор 470 мкФ 6.7 В и выше

    - провода по высоте ёлки

    - Разъём для питания от 5 вольт

    На голом МК:

    - Микроконтроллер ATmega328P в SMD-корпусе (обратите внимание, чтобы он был именно с индексом P на конце – распространённые нынче PB имеют другую распиновку, и плата на них не рассчитана)

    - Разъём Mini-Jack 3.5 мм

    - 2 конденсатора 0.1 мкФ типоразмера 0402

    - конденсатор 0.01 мкФ типоразмера 0603

    - резистор 10 кОм типоразмера 0402

    - кварцевый резонатор 16 МГц со встроенными конденсаторами (я брал модель CSTCE16M0V53-R0)

    - диод – то же самое, чем меньше падение напряжения, тем лучше. Я взял ll4148, но в идеале заменить его на более подходящий вариант

    - конденсатор 470 мкФ 6.7 В и выше

    - 2 потенциометра на 50 кОм

    - тактовая кнопка

    - штырьковый разъём 2.54 мм 2х3

    - провода по высоте ёлки

    - Разъём для питания от 5 вольт

    Типоразмеры элементов я указал непосредственно для своей платы, в целом вам ничего не мешает её переделать – файл lay6 я оставлю в конце статьи, как и код прошивки.

    Ну и инструменты – паяльник и/или паяльный фен, программатор USBasp, шуруповёрт и свёрла, чтобы сделать отверстия под компоненты в корпусе.

    Итак, приступим к сборке.

    Первым делом травим платы.

    Вначале пару слов о плате БУ – как вы можете видеть, на ней есть некоторая обвязка для МК, а именно: внешний источник тактирования, конденсатор на 0.1 мкФ по питанию для сглаживания микропульсаций, подтягивающий резистор на 10 кОм от пина RST, чтобы контроллер случайно не перезагрузился от какой-нибудь прилетевшей наводки, конденсатор на пине AREF, конденсатор на 470мкФ и диод. 

    На двух крайних элементах остановимся чуть подробнее. Для чего они вообще нужны? Дело в том, что светодиодная лента – это довольно мощная нагрузка, и как следствие для неё нужен довольно мощный источник питания. А что будет, если мы подключим к плате программатор, забыв перед этим воткнуть туда внешний мощный источник питания? Правильно, питание пойдёт от USB-порта, через программатор, и очень маловероятно, что это приведёт к чему-то хорошему. При полностью включённой ленте программатор можно просто спалить, а если лента достаточно длинная, то и порт компьютера вам спасибо не скажет. Поэтому во избежание подобных ситуаций перед мощной нагрузкой в схеме ставится диод, чтобы питание на неё шло только от внешнего БП. Однако тут мы сталкиваемся с другой проблемкой – напряжение на диоде просаживается, и МК получает не положенные 5 вольт, а чуть меньше. Как правило, это не критично, ведь ATmega может работать и от гораздо более низкого напряжения, но лента вызывает помехи по питанию, от чего МК может начать чуть подглючивать (я с этой проблемой столкнулся, когда отключил программатор от USB-порта – питание на МК пошло не напрямую, а через диод, и звезда тут же начала вести себя неадекватно, но как только я замкнул контакты диода проводами, всё тут же прекратилось). Поэтому рядом с диодом был добавлен конденсатор, для сглаживания этих самых помех, ну и диод лучше брать с как можно меньшей просадкой по напряжению.

    Ладно, ликбез провели, возвращаемся к нашей звёздочке. 


    Для самой звезды у меня тоже есть два варианта трассировки, и написанная мной программа рассчитана именно под второй вариант, где больше диодов. Почему он выглядит именно так – можно узнать, прочитав предыдущую статью ;)

    Вырезаем полученные заготовки.

    Сверлим и лудим.

    Запаиваем компоненты.

    Для тех, кто делает блок управления на Arduino, накидал схемку, что и куда паять.

    После этого соединяем звезду и блок управления проводами, и помещаем всё в корпуса – звезду в звезду, блок управления в блок управления.

    Далее прошивка. На Arduino всё просто – открываем код, загружаем. На голом МК всё чуточку интереснее.

    Во-первых, необходимо установить в вашу среду разработки ядро для работы с ATmega328P. В Arduino IDE открываем Файл -> Настройки -> Дополнительные ссылки для Менеджер плат и вписываем туда строку «https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json»

    Далее заходим в Инструменты -> Плата -> Менеджер плат и вписываем в поиск «MiniCore». Устанавливаем и перезапускаем IDE.

    Теперь мы можем работать с микроконтроллерами линейки ATmega. Выбираем в менеджере плат ATmega328, в дополнительных настройках ставим 328P/328PA, тактирования «External 16 MHz», остальное оставляем по умолчанию.

    Всё, теперь можно прошивать. Нажимаем Записать загрузчик и Загрузить через программатор. Всё готово) 

    После этого остаётся только подключить схему к компьютеру через Mini-Jack и настроить передачу звука – по умолчанию при подключении любого устройства для приёма звука трансляция на динамики прекращается. В Windows это обходится следующим образом.

    Открываем Панель управления -> Звук. Нажимаем правой кнопкой мыши по иконке динамиков и ставим галочку «Использовать по умолчанию». 

    Далее переходим во вкладку Запись. Выбираем устройство Stereo Mix и нажатием правой кнопки мыши выбираем «Включить» и «Использовать по умолчанию». 

    После чего переходим в его свойства и во вкладке Прослушать ставим галочку возле пункта «Прослушать с данного устройства», после чего в выпадающем меню ниже выбираем устройство, на которое будет транслироваться звук (я поставил наушники). Если вы всё сделали правильно, то теперь звезда должна начать реагировать на звуки с комьютера. Только не забудьте вернуть настройки обратно, если вдруг захотите подключить вместо звезды наушники)

    Управление осуществляется следующим образом – одиночное нажатие отвечает за переключение режимов мигания (весь функционал предыдущей версии сохранён), двойное включает и выключает зацикливание (по умолчанию режимы сменяют друг друга раз в 30 секунд), а тройное переключает звезду на музыкальные функции. Музыкальных функций тоже несколько – первая, самая спокойная, когда диоды мерцают в такт музыке. Вторая представляет собой частотный анализатор – каждый луч вспыхивает в зависимости от интенсивности тех или иных частот аудио-спектра. И третий можно описать как «бегущие волны» - от центра и по лучам разбегаются волны, цвет которых также зависит от частоты звука.

    [media=https://youtu.be/OT4R8hv8Fgo]

    Пример работы

    Обратите внимание, что перед запуском музыкальных функций необходимо выключить все поступающие с компьютера или телефона звуки – это нужно для автоматической калибровки, чтобы избежать ненужных шумов. Повторную калибровку можно произвести двойным нажатием кнопки.

    Регулировка светомузыки осуществляется двумя потенциометрами – первым настраивается чувствительность эффектов к звуку, а второй используется только для настройки третьего эффекта, чтобы указать скорость распространения "волн". Также было добавлено сохранение текущего режима в EEPROM-память, и теперь после отключения питания не надо выщёлкивать нужное мигание среди всех прочих)

    Кроме того есть «секретный режим», который включается длительным удержанием кнопки управления, как из обычных, так и из музыкальных функций)

    [media=https://youtu.be/gzR_5HmQGKg]

    https://youtu.be/gzR_5HmQGKg?si=FgxFQZmB4DtuMaW7

    В целом, проект, как и любой проект, сделанный на микроконтроллере, можно дорабатывать, и при этом даже необязательно менять компонентную базу. К примеру, можно добавить новых режимов мигания или светомузыки, или доработать уже существующие для работы со стерео (сейчас в программе используются только данные с правого аудио-канала, но на плате к МК они подключены оба). Или можно заменить аудио-разъём на микрофон, чтобы не мучиться с проводами. К слову, изначально и задумывалось использовать микрофонный модуль MAX9814, однако в процессе я отказался от этой идеи. Словом, придумать можно уйму всего! Но я скорее всего оставлю этот проект таким, каким он получился сейчас. Если, конечно, вы не подкинете каких-нибудь особенно интересных идей)

    Ну и на этом у меня всё) С праздниками всех, счастья и успехов в Новом году!

    boris_m.zip [38.76 Kb] (скачиваний: 1)

    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

    Новогодняя ёлочная звезда на адресных светодиодах и ATtiny85

    0
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    0
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    0
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 0.0 из 10 (голосов: 0 / История оценок)

    Добавить комментарий

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии