Как стать автором
Обновить
2709.84
RUVDS.com
VDS/VPS-хостинг. Скидка 15% по коду HABR15

Играем музыку на двигателях и не только

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров4.5K

Итак, наступило время, чтобы вспомнить ВильЯма нашего Шекспира Моцарта, Баха и иже с ними. А именно подумать об интересных технологических способах извлечения музыки и о том, к чему это может привести.

Самоделки подобного рода нечасто встречаются на просторах сети. Видимо, это связано с тем, что многие люди довольно далеки от профессионального препарирования музыки.

Тем не менее, мы сегодня попробуем в это немножко углубиться. Хоть я и сказал, что музыкальные самоделки не так часты, один из таких типов является весьма старым и хорошо знаком «давно и глубоко сидящим» в информационных технологиях: это извлечение музыки с применением флоппи-дисководов, приводов оптических дисков, жёстких дисков и не только:

Так как подобные компоненты в наше время найти будет не особо легко ввиду их всё меньшего и меньшего распространения (жёсткие диски пока не рассматриваем), то мы пойдём более простым путём.

Если внимательно присмотреться к видео выше, то можно обнаружить, что источником звучащей музыки в большинстве из показанных устройств являются механические приводы, а именно: шаговые двигатели в них.

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

Многие, наверное, замечали, что при работе двигателя в стандартном, не микрошаговом режиме, он издаёт достаточно хорошо слышимый шум, связанный с вибрацией пластин статора при поступлении импульсов электрического тока и соответственно их намагничивании/размагничивании.

Во многих случаях это является негативным явлением, что приводит к потребности бороться с ним (скажем, выставить 3D-принтер на балкон :-)), но не в этом случае, так как именно этот шум нам и нужен.

Насколько мне удалось понять, разбираясь в этом вопросе, условно говоря, способы извлечения музыки из шагового двигателя можно разделить на два варианта:

  • Более профессиональный: для тех, кто хочет разобраться в музыке/нотах досконально и готов сочинять музыку понотно.
  • Более быстрый (и доступный для большинства из нас): прямое непосредственное проигрывание музыки без глубокого вникания в её структуру, что тоже в принципе неплохо, так как зримый результат можно получить очень быстро.

И ниже дано рассмотрение этих двух подходов по отдельности.

▍ Более профессиональный подход


Любопытно, что большинство самодельщиков, прошедших этот путь ранее, не потрудились описать весь процесс, включая теорию, чтобы всё было собрано в одном месте.

Видимо, они исходили из старого принципа немногословных мужчин:

«А чего говорить, если ничего не понятно; а чего говорить, если и так всё понятно» :-))

Итак, если следовать в рамках первого подхода, то в этом нам сильно поможет вот этот мануал, опираясь на который, мы можем узнать частоты всех музыкальных нот:

image
Картинка: instructables.com

Зная их, мы можем узнать период для каждой частоты, то есть если говорить о шаговом двигателе, то продолжительность одного импульса питающего напряжения.

Кроме того, имеет значение и величина паузы между импульсами, следующими один за другим.

В мануале об этом моменте говорится достаточно поверхностно (и даже, на мой взгляд, не совсем корректно). Мне думается, что более корректным будет следующее объяснение (не такое, как в мануале): при появлении импульса питающего напряжения происходит отклонение каждой пластины статора, в ходе которого возникает звук; при снятии питающего напряжения происходит также отклонение пластины статора, но в другую сторону, тоже в процессе излучая звук.

Тут даже, наверное, ещё более корректным будет такое объяснение: при каждом своём отклонении пластины статора ударяют по находящимся рядом пластинам то с одной стороны, то с другой стороны. Это, в свою очередь, возбуждает затухающие колебания как в бьющей, так и в принимающей части.

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

Кроме этих двух моментов, для музыки имеет значение ещё и продолжительность звучания самой ноты. В нашем случае это означает просто количество повторений таких включений и выключений с определённой частотой, а также размер паузы между нотами.

Собственно, если учесть все эти вводные, то на выходе получатся 2 функции:

  • позволяющая проиграть определённую ноту с нужной длительностью;
  • позволяющая задать определённой продолжительности паузу между нотами.

Обе эти функции вы можете найти по ссылке, и если в вас дремлет композитор, то на выходе вы можете получить что-то такое:

Кстати, обратите внимание, что в видео выше шаговые двигатели плотно притянуты к фанерной пластине капроновыми стяжками. Это сделано не просто так, а для того, чтобы вибрации распространялись по фанере и звук был громче (то есть фанера выступает в роли резонатора).

Итак, вроде бы всё понятно и воспринять полученную информацию можно было бы просто в качестве «некой занятной познавательной странички», однако некоторые делают на основе этого весьма любопытные вещи.

Например, как вы думаете, что получится, если взять старую клавиатуру с PS/2 разъёмом, Arduino, шаговый двигатель с драйвером и библиотеку для работы с PS/2?

А вот что: можно старую компьютерную клавиатуру превратить в фортепиано, если назначить на каждую клавишу определённую ноту:

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

Исходники этого проекта со всеми кодами можно найти здесь.

Примечание: так как в проекте выше использована старая PS/2-клавиатура, вам может быть несколько затруднительно найти такую, так как сейчас гораздо проще найти USB-клавиатуру. Поэтому желающие могут принять этот вызов и переписать код, используя Arduino-библиотеку USBHost. То есть в таком соединении Ардуино выступит как Host, а клавиатура как Device. Так как при работе с клавиатурой особых скоростей не нужно, можно взять за теорию этого процесса спецификацию по USB версии 1.1 на русском языке, если кто хочет почитать подробнее обо всём этом. Также достаточно подробно об этом рассказано тут.

И даже это ещё не всё: можно этот проект сделать ещё более интересным, если собрать на основе рассмотренного подхода напольное фортепиано!

Например, вот такого типа:

Как заявляют сами авторы, фортепиано представляет собой модульную конструкцию, расширяемую от одной до восьми октав, где каждая октава управляется отдельной Arduino Mega 2560.

Как можно видеть, после каждого нажатия на клавишу у неё загорается подсветка. Любопытным здесь является то, что пианино имеет также и режим обучения, когда каждая следующая требующаяся клавиша загорается сама по себе без нажатия на неё. Таким образом, фортепиано само подсказывает, на какую клавишу следует нажать дальше.

Описание этого проекта можно найти вот здесь, где в самом низу страницы есть ссылки на скачивание исходников. Для скачивания надо скопировать ссылку, вставить в окно браузера, затем удалить впереди часть адреса, чтобы ссылка начиналась с:

 https://cdn.hackaday...

И нажать Enter.

Также удалось найти примерно аналогичный проект, исходники которого доступны для скачивания:

Кто там хотел «увлекательный фитнес»? Ваш выход ;-)

Он интересен тем, что был собран всего за 24 часа в рамках хакатона, проводившегося в Университете Дьюка, и представляет собой достаточно компактную беспроводную конструкцию, базирующуюся также на Arduino Mega 2560. В качестве беспроводного модуля используется XBee, передающий данные на приёмную часть, представленную Arduino Uno и подключённую к ноутбуку:

image
Картинка: jiananli.wordpress.com

Тут надо отметить, что проект относится к 2013 году, а в наше время гораздо проще взять esp32 и, соответственно, переписать код.

Сами пластины изготовлены из алюминиевой фольги, их состояние мониторится Arduino Mega 2560.

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

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

Исходный код этого проекта, а также фотожурнал процесса сборки можно найти здесь.

▍ Более быстрый подход


Как можно было увидеть выше, в последнем проекте напольного фортепиано уже применялась передача данных в MIDI (Musical instrument Digital Interface)-формате, который позволяет передавать различные акустические параметры.

Для начального ознакомления с этим форматом есть очень хорошая подборка обучающих видео, которые позволяют ознакомиться с форматом, начиная от структуры пакета данных и заканчивая средствами управления, приёма и передачи данных:



Итак, один из самых простых вариантов воспроизведения музыки с помощью шагового двигателя представляет собой прямую передачу MIDI-данных с компьютера на Arduino, на которую устанавливается библиотека MIDI-over-serial, предназначенная для приёма и расшифровки поступающих данных, которые впоследствии с помощью самописного кода переводятся во вращение шаговых двигателей с различной частотой, что и приводит к излучению звука.

А если пошагово, то этот процесс фактически состоит всего лишь из 5 шагов:

  1. Конвертировать любой звуковой файл, который у вас есть в наличии, в файл формата MIDI. Для этого в сети присутствует большое количество различных конвертеров на любой вкус.
  2. Установить виртуальное MIDI-устройство для среды Windows.
  3. Установить приложение HairlessMIDI, позволяющее перенаправить данные MIDI-устройства на вашу Arduino.
  4. Установить приложение MIDImapper, позволяющее перенаправить MIDI-поток из среды Windows в виртуальное устройство, которое мы создали на втором шаге.
  5. Воспроизвести midi-файл с помощью любого проигрывателя, установленного на компьютер, например, Winamp.

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

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

https://cdn.hackaday...

И нажать Enter.

Проект рассчитан на работу с четырьмя шаговыми двигателями:

Вы же можете отключить любое количество из них или подключить дополнительные, соответствующим образом изменив код.

И теперь, вооружившись этими знаниями, вы вполне можете сделать работу своего ЧПУ-станка или 3D-принтера существенно веселее (чем-то даже напоминает органную музыку):

▍ Перспективы?


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

Например, в 2013 году в Берлине появился весьма любопытный проект, состоящий из 6 участников, причём кардинально его отличало от остальных то, что все его участники были роботами — проект Compressorhead.

Все его участники играли на настоящих «человеческих» музыкальных инструментах, будучи роботами, используя специально сконструированные приспособления, схожие с человеческими конечностями:

В качестве основного репертуара группы были композиции стилей Heavy Metal, Hard Rock.

Проект очень сильно прогремел по миру, выступая на абсолютно разных площадках, например, на телевидении:

Открытых площадках:

На ранних этапах выступления группы представляли собой каверы на композиции групп AC/DC, Black Sabbath, Nirvana.

В дальнейшем, в 2015 году разработчики смогли дополнить группу вокалистом Mega-Wattson и женщиной-роботом Helga-Tarr.

Выступление вокалиста можно увидеть в видео ниже:

Популярность группы привела к тому, что она выступала во многих странах, неизменно собирая большие аудитории.

В том числе группа выступила с американской актрисой и рок-исполнительницей, вдовой лидера группы Nirvana Кортни Лав:

При просмотре видео выступлений этой группы сильно «доставил» коммент под одним из роликов:

«Finally! A 100% REAL METAL BAND!!» (орфография сохранена).

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

Мне раньше в одном из своих проектов приходилось сталкиваться с такими устройствами, поэтому при взгляде на этих роботов сразу сложилось некое понимание схемотехники.

Для тех, кому интересно, что такое пневмоприводы, могу рассказать: пневмоприводы обычно представляют собой пневмоцилиндр с поршнем внутри (грубо говоря, как обычный шприц), на который попеременно давит сжатый воздух, то с одной, то с другой стороны.

Для впуска/выпуска сжатого воздуха пневмоцилиндры имеют по одному патрубку с каждого из своих концов.

Так как в тот момент, когда в одну сторону цилиндра подаётся сжатый воздух, то из другой стороны, соответственно, надо этот сжатый воздух выбросить (обычно просто в атмосферу). Так как простой выброс воздуха под давлением будет создавать сильный хлопок, на пневмораспределитель, который управляет работой пневмоцилиндра (о нём ниже), устанавливают глушитель выхлопа — просто колпачок из сваренных друг с другом шариков.

Выхлоп воздуха проходит через него, рассеивается, и, соответственно, шумность выхлопа сильно уменьшается.

Цилиндр запитывается сжатым воздухом под давлением (обычно 8 бар, но бывает и больше), насыщенным парами масла. Для этого используются специальные устройства под названием «лубрикаторы» (стоят, кстати, где-то от рублей 310). Существуют и комплексные варианты подготовки воздуха.

Лубрикатор в самом простом варианте — это, грубо говоря, встроенный в воздушную линию пульверизатор, где воздух, проходя через него, попутно распыляет масло и выходит из лубрикатора уже насыщенный парами.

Цель такого насыщения парами — постоянная смазка поршня и цилиндра тонким слоем масла с целью повышения их срока службы.

Для включения/подачи воздуха используются специальные устройства, называемые пневмораспределителями — по сути, небольшое реле/набор реле, управляемых напряжением в 12 вольт.

Ниже я приложил фотографию своего пневмоцилиндра и пневмораспределителя, оставшихся от прошлого проекта:





А вот как выглядит вкратце схема соединений (кликабельно):



И как это работает (кликабельно):



Для чего вообще используют пневмоприводы: если по-простому, то можно сказать, что это «гидравлика на минималках»:

  • мощный привод (но слабее, чем гидравлика);
  • весьма быстродействующий (быстрее, чем типовая гидравлика);
  • зачастую дешевле и легче по весу, чем электрический привод такой же мощности;
  • отсутствие искрообразования при работе (нет риска воспламенения в опасных средах);
  • так же, как и у электродвигателей, большая мощность передаётся по тонким проводам — здесь большая мощность передаётся по достаточно тонким пневмотрубкам.

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

Скажем, на тот момент достаточно популярными были приводы итальянской фирмы Festo, а тот привод, который был мне нужен, производства итальянской фирмы Camozzi, стоил порядка 3500 руб., при этом тот же самый привод только Российской компании Пневмоаппарат (существующей, кстати, с 1940-х годов!), стоил где-то в районе 350 руб.! По качеству — ничуть не хуже. Порядок цен примерный, т. к. это было давно и совсем точно уже не скажу, не помню.

Таким образом, если кто-то задумается о постройке мощных роботов, и для них потребуются приводы, то можно рассмотреть имеющиеся там пневмоцилиндры и пневмораспределители (и остальное, что может понадобиться), как хорошую и мощную альтернативу электрическим приводам.

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

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

Или, например, такая же группа увлечённых людей, реконструкторы древнеримских легионов, быта Древнего Рима — Leg V Mac, также неоднократно принимавшие участие как в съёмках, так и в различных крупных событиях:

Таким образом, если вы хотите испытать свои силы в создании действительно чего-то выдающегося и интересного, попутно освоив множество новых технологий, то, может быть, этот путь для вас? ;-)

Telegram-канал со скидками, розыгрышами призов и новостями IT 💻
Теги:
Хабы:
Всего голосов 37: ↑36 и ↓1+52
Комментарии12

Публикации

Информация

Сайт
ruvds.com
Дата регистрации
Дата основания
Численность
11–30 человек
Местоположение
Россия
Представитель
ruvds