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

Наблюдая за тем, как она крутит ручки и переключает тумблеры, я вспомнил о панели управления синтезатором и задумался, а можно ли создать музыкальную версию доски Монтессори? Что-то простое, тактильное и креативное, не требующее нажатия кнопок для поддержания звука. 

Год спустя я решился воплотить эту идею в жизнь. И так как у меня не было опыта в создании такого рода устройств, то проект стал для меня поводом изучить микроконтроллеры, САПР, проектирование печатных плат и 3D-печать.

В результате получился портативный синтезатор-секвенсор — музыкальная игрушка с функциями синтезатора и секвенсора в которой есть встроенный синтезаторный модуль, динамик, элементы управления темпом, громкостью, тональностью и инструментами (ползунки и «крутилки»), OLED-экран с танцующей пандой. И всё это в корпусе, напечатанном на 3D-принтере.

Прототип вы видите на фото, а демонстрация финальной версии в конце статьи.

Первые опыты с макетной платой Arduino

Я начал проект с набора Arduino Inventors Kit, которому уже лет 15. (правда имел смутное представление о том, как его использовать). Первая цель простая — собрать базовый MIDI-контроллер на макетной плате Arduino.

Если бы я мог получить показания потенциометра, сопоставить их с 12 дискретными значениями — по одному для каждой ноты в октаве — и отправить MIDI-сообщения, то сделал бы небольшой шаг в правильном направлении. А если бы смог снимать показания с одного, то значит могу и с четырех.

Оказалось, что преобразовать сигналы с потенциометров в MIDI-сообщения довольно просто — с помощью библиотеки Arduino MIDI. А чтобы перевести MIDI-сообщения в звуки, я написал небольшой скрипт на Python, который перехватывал MIDI-сообщения и перенаправлял их на Mac по MIDI, где их дальше распознавала Logic Pro (программа на Mac для создания музыки). Теперь я мог «играть» на макетной плате:)

Прототип
Прототип

Добавляем синтезаторный модуль и экран

Как только я освоился с подключением потенциометров и поворотных энкодеров (электромеханическое устройство, которое преобразует вращательное движение в цифровой или аналоговый сигнал), то решил перенести функцию синтеза звука с Logic Pro на мою макетную плату и купил синтезаторный модуль (или модуль MIDI-синтезатора) SAM2695 за 12,95 долларов со встроенным усилителем и динамиком. 

SAM2695 — это микросхема, которая MIDI-сигналы переводит в аудио (если по-простому). Внутренняя работа микросхемы остается для меня загадкой, но с ней процесс пошёл быстрее. Плюс я перешёл на плату Elegoo Nano (аналог Arduino) из-за того, что она дешевле, а аналоговых контактов больше.

Далее добавил небольшой OLED-дисплей для визуальной обратной связи и персонализации и использовал графическую библиотеку u8g2 для монохромных дисплеев. Но в Nano так мало оперативной памяти, что я не мог буферизировать весь кадр. Приходилось обновлять экран небольшими фрагментами, а большие обновления происходили настолько медленно, что иногда мешали считыванию данных с энкодера и приводили к задержкам при воспроизведении нот в быстром темпе. Мне ещё предстоит поработать над устранением блокировок при обновлении экрана, но пока я смирился с небольшими задержками. 

Примечание: скорее всего при вращении одного из регуляторов (энкодера) прерывался звук, потому что Arduino блокирует поток обработки пока обновляется экран.

Я добавил маленькую танцующую панду, которая осталась после урока по пиксельной графике.

Ранний прототип макетной платы
Ранний прототип макетной платы

Также я открыл для себя симулятор микроконтроллера Wokwi. Он позволяет создавать виртуальные схемы и тестировать код, не таская с собой хрупкий прототип. У них есть бесплатный онлайн-симулятор и платный плагин д��я VS Code, который позволяет создавать схемы в IDE.

Wokwi в VS Code
Wokwi в VS Code

Как только у меня появилась рабочая схема, пришло время заняться проектированием корпуса и сборкой полноценной версии синтезатора.

Приключения в САПР

Я искал готовые корпуса, но ни один из них не подходил по размеру, и все они были либо чёрными, либо бежевыми. Поэтому решил изучить основы САПР (Системы Автоматизированного Проектирования), а корпус напечатать на 3D-принтере Bambu Labs A1 Mini, который принадлежит моего другу.

Я скачал Fusion 360 и следовал туториалу. По вечерам у меня был всего час (может два) свободного времени и я продвигался медленно. Никогда раньше не пользовался программами для автоматизированного проектирования, поэтому постоянно переключался между изучением программы и попытками добиться хоть какого-то прогресса в проектировании. Новичкам я настоятельно рекомендую курс «Изучите Fusion 360 за 30 дней» от Product Design Online и это отличное видео от wermy.

После нескольких недель проб и ошибок у меня наконец-то была готова 3D-модель...

Дизайн корпуса — версия 1
Дизайн корпуса — версия 1

...которую я смог напечатать:

Корпус — 3D-печать
Часть корпус, напечатанного на 3D-принтере

Сборка прототипа

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

Когда пришло время соединять две половинки корпуса…

Корпус — сверху и снизу
Корпус — сверху и снизу

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

сборка v1
Процесс сборки первой версии устройства

После сборки я дал дочери немного протестировать «устройство» и таки убедился, что иду в верном направлении — ей понравилось. 

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

Проектирование печатной платы

Я снова вернулся на YouTube, чтобы со скрипом осваивать незнакомый мне процесс, хотя и продолжал использовать Fusion 360, в котором есть собственный пакет для проектирования электроники. 

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

Освоив азы я смог разместить схему на двухслойной плате. Одно из преимуществ Fusion в том, что вы получаете полную 3D-модель собранной печатной платы, что значительно упрощает проектирование корпуса.

Проектирование печатной платы в Fusion 360
Проектирование печатной платы в Fusion 360

Когда я закончил, то экспортировал файл с проектом печатной платы и загрузил его на JLCPCB (китайская компания-производитель печатных плат). Минимальный заказ на 5 плат обошелся мне в 35,41 фунта стерлингов с учётом доставки. Заказ пришел через пять дней. 

Готовые печатные платы у меня на руках. Я был поражён тем, что мне всё это вовсе не снится.

Источник питания

Для первой версии я решил использовать 4 батарейки типа АА и встроенный в Arduino преобразователь напряжения, чтобы обеспечить стабильное напряжение в 5 вольт.  Мне казалось, что 6 В от моих четырех батареек должно быть достаточно для платы. Но плата постоянно перезагружалась. Я упустил из виду тот момент, что чтобы на плате было 5 В, на VIN Arduino требуется подавать напряжение 7–12 В, а мои новые батарейки обеспечивают в лучшем случае 6 В.

На следующей итерации я решил избавиться от одной из батареек и добавить Adafruit Miniboost, чтобы обеспечить питание 5 В для Arduino от комбинации 4,5 В от трёх батареек AA. Это позволило мне немного уменьшить вес и обеспечить синтезатор стабильным питанием на более длительный срок.

Финальная версия

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

Нижняя часть корпуса с батарейным отсеком.

Печатная плата, установленная в корпусе.

Внешний вид корпуса в САПР.

А так уже вживую — печатная плата в корпусе финальной версии.

Задняя панель с батарейным отсеком.

И готовый синтезатор!

Видео с демонстрацией работы синтезатора.

Размышления о том, что делать дальше

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

Мои цели в этом проекте были такие:

  1. создать что-то простое, чтобы с «музыкальным инструментом» мог бы разобраться и ребёнок;

  2. но при этом игрушка должна быть достаточно сложной, чтобы дочь не забросила её через полгода.

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

Также нужно устранить некоторые недочёты, например, ту же задержку при обновлении дисплея. Я также планирую обновить Elegoo Nano до ESP32, что должно упростить процесс прошивк�� и добавить больше возможностей для создания интересной графики на дисплее.

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

Проблемы не только технические: они связаны с регулированием и финансами. Сертификация безопасности (UKCA/CE и FCC в США) может стоить от 5000 до 10 000 фунтов стерлингов и выше. 

Производство — ещё одно препятствие. Корпус, напечатанный на 3D-принтере, подойдёт для прототипа, но для реального продукта, скорее всего, потребуются детали, изготовленные методом литья пластмасс под давлением, а это дорого. Даже для небольшого тиража потребуется больше средств, чем я могу себе представить

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


Примечание переводчика, если позволите.

В оригинале Аластера Робертс, инженера-программиста (software engineer) из Лондона, который для трёхлетней дочки сделал с нуля портативный секвенсор (Step Sequencer). История мне показалась не столько интересной, сколько «реальной». При должном упорстве путь автора можно повторить и сделать для своего ребёнка что-то подобное. В зависимости от талантов, опыта и упорства, как более простое, так и более сложное. А пока я переводил, разбирался с терминами и адаптировал перевод в более-менее читаемый текст, пост набрал уже 200+ комментариев на Hacker News и получил высокую оценку от читателей.

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

Как купить «Гибсон» и не потерять голову (в том числе свою)
Привет, я Кирилл, фронтенд-лид. Это значит я не просто иду по таскам, а строго слежу, чтобы созвоны ...
habr.com

Также в блоге есть другие интересные статьи:

Как мы запустили подписку в Альфа-Банке и собрали миллион подписчиков за полгода
Я  Булат Хазимуратов , дизайнер в Daily Banking. Работаю над продуктами ежедневного пользования в мо...
habr.com
Как я бросил курить за день, но потратил на это год
Мой стаж как больного человека, зависимого от никотина, 11 лет. С июня сего года я больше не употреб...
habr.com
Есть ли ответ на вопрос «Почему AI любит добавлять в тексты много длинных тире?»
В AI-текстах так часто используется длинное тире, что на эту тему пишут статьи вида «Длинное тире — ...
habr.com
Пять моих принципов, чтобы жить, строить карьеру и не унывать без зрения
?  «Слепые не видят преград — только дедлайны» Сложности в трудоустройстве есть у некоторых всех. В...
habr.com

Комментарии (0)