Ардуино робот играет музыку на винных бокалах
Всем привет! Сегодня я расскажу про то, как я собрал ардуино робота, играющего музыку на винных бокалах.
И так давайте все по порядку.
Для реализации проекта мне понадобятся винные бокалы, шаговый двигатель , автомобильное реле, драйвером шагового мотора a4988 и управлять всем этим делом будет ардуино нано.
Бокалы
Я перепробовал звучание разных бокалов которые нашел у себя в доме и как оказалось современные бокалы звучат как то очень слабо, возможно в этом есть Китайский след. А вот старые хрустальные фужеры звучат приятно и громко. Только у меня их оказалось всего 7 шт. Что в последствии выльется в ограничение проигрываемых нот. Не хватило всего 1 бокала для проигрывания полноценной мелодии от начала до конца. Пришлось воспроизводить только небольшие кусочки мелодий.
Сразу оговорюсь я не музыкант и у меня нет музыкального слуха. По этому подгонка тональности бокалов к нотам оказалась для меня самой сложной задачей из этого проекта. Так что заранее прошу меня простить за ошибки в звучании нот.
Про молоточек
Ударный молоточек сделал из автомобильного реле купленного в ближайшем авто-магазине. Удалил с него корпус и спилил лишние контакты, а на якорь припаял медную проволоку диаметром 1 мм. Этот медный провод я извлек из силового кабеля, который используется для бытовой проводки 220 В. В качестве самого молотка колотушки, я использовал кусочек деревянного, мебельного шканта.
Просверлил в нем отверстие и нанизал его на кусок провода из меди, после чего для надежности капнул сверху клеем момент.
Для управлением этой барабанной палочкой я использовал старый, советский транзистор KT972, управление которым осуществляется с контроллера через резистор от 270 до 510 Ом. Для гашения отрицательных импульсов самоиндукции параллельно катушке припаял выпрямительный диод 1N4007. Такой можно найти в любой отслужившей свой срок светодиодной лампочке или в старой бытовой технике. Транзистор можно заменить на любой другой в том числе и на MOSFET. С минимальным током перехода не менее 1 А.
Соленоид с молоточком разместил на пластиковой рейке. После чего его нужно сбалансировать. Так как дисбаланс будет вызывать вибрацию. Для этого на противоположной стороне рейки прикрутил металлическую гайку, предварительно подобрав ее по весу. Далее приклеиваем рейку на распечатанную 100 лет назад на 3D принтере шестеренке.
Что бы выравнять ударный механизм по высоте с бокалами я приклеил ШД на пластиковую банку через прокладку из вспененного полиэтилена. Прокладка нужна, что бы банка не усиливала шум мотора.
Шаговый двигатель
ШД использовал HANPOSE 17HS4401. Для максимальной скорости вращения, попробовал полношаговый режим, но в этом режиме есть один недостаток, мотор очень громко работает и его жужжание очень сильно выделяется на на фоне звука бокалов. Пришлось пожертвовать скоростью и использовать режим полушага(1/2), а это в свою очередь 400 шагов на один оборот вала. В таком режиме шаговый двигатель начал работать заметно тише, но и почти в 2 раза медленнее. Хотя этого вполне хватает для проигрывания спокойной музыки.
В проекте использовался драйвер шагового двигателя A4988. Но где то на форумах я прочитал про тихий драйвер TMC-2100, но к сожалению на момент сборки проекта у меня такого не нашлось и пришлось подстраиваться к пониженной скорости мотора. Отказавшись от библиотеки «A4988.h» мне удалось с выжать с ШД максимум.
Подсветка
Подсветка сделана всего на одном светодиоде ws2812 который я отрезал от светодиодной ленты.
Цвет светодиода изменяется рандомно в пределах семи основных цветов, от белого до красного. Для управления им я использовал библиотеку NeoPixel. Для снижения боковой засветки на светодиод приклеил пластиковое кольцо.
Схема
Соединил все компоненты по нарисованной мной схеме. Установил переключатели на драйвере шагового двигателя в режим полудуплекса. На соленоид и мотор подал 15 В. Так как молоточек для соленоида тяжеловат и при 12 В иногда бывает он не до конца притягивает якорь, Еще для уменьшения щелчков якоря я приклеил на сердечник электромагнита кусочек ткани.
Используемые в схеме компоненты:
Шаговый двигатель 17HS4401Драйвер шагового двигателя A4988
Плата расширения для драйвера шагового двигателя
Транзистор MosfetРеле автомобильное на 30 А
Музыка
Мелодию можно написать самому или найти готовую на сайте musicboxmaniacs. Если вы будете использовать готовую мелодию, то для начала у нее нужно убрать многоголосость, это значит, что в одном музыкальном такте не должно быть более одной ноты. После чего перенести ее в ручную следующем порядке: самая низкая нота имеет значение 0 и так далее до самой высокой. В моем распоряжении всего 7 бокалов, а это значит, что и нот не должно быть больше 7. Для простых мелодий этого будет достаточно. И еще есть пустой такт, его значение в массиве равно 255. Звук бокалов подстраивается под нужную ноту при помощи воды. Для понижения тона нужно подливать в него воду. Для точной подстройки можно воспользоваться приложением для смартфона «Тюнер пианино» из play Google.
Скетч для ардуино
Алгоритм работы кода следующий — в массиве хранятся ноты пронумерованные в порядке возрастания от самой низкой равной 0 и до самой высокой равной 6. Каждой ноте соответствует свой бокал. Пустой такт нумеруется значением 255.
Тактирование мелодии происходит по таймеру и темп музыки можно задавать в настройках кода. Для этого нужно указать требуемое количество тактов за одну секунду. Но имейте ввиду всему есть предел и настанет момент когда мотор не будет успевать за темпом музыки и начнет пропускать ноты. Особенно при переходе с самой высокой тональности на самую низкую или наоборот. Кстати чем больше будет бокалов тем меньше шагов нужно прокручивать между нотами.
С каждым тактом из массива выбирается текущая и следующая нота, которая преобразуется в соответствующее количество шагов и отправляется на выполнение в шаговый двигатель. Алгоритм считывает ноты с опережением на 1 шаг, что дает возможность заранее переместить молоточек к следующему бокалу .
Все настройки находятся в шапке скетча и прописаны в директивах define.
Заключение
Спасибо, что дочитали до конца!
Надеюсь эта статья вам понравилась и вы сможете воспользоваться моей наработкой в своих проектах.
Если у Вас остались вопросы и замечания, то можете задать их в комментариях. Я с удовольствием на них отвечу.