Midi-Блютуз-Клавиатура На Esp32



MIDI-блютуз-клавиатура на esp32

Несколько лет назад мне попалась компактная драм-машина от известного подросткового инженерного дела.

Тогда меня очень поразила идея использовать печатную плату как часть корпуса и элемент дизайна устройства.

С тех пор мне тоже захотелось собрать похожее по стилю устройство.

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



Идея

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

Но какой смысл во всей этой компактности, если рядом висит длинный USB-кабель? Тут-то я и вспомнил про ESP32, который вроде бы поддерживал Bluetooth, и относительно свежую и перспективную технологию MIDI-BLE.

Миди через Bluetooth

Спецификация BLE-MIDI появилась не так давно в 2017 году и позволяет передавать MIDI-команды через Bluetooth с относительно небольшой задержкой в 10-20 мс (для сравнения, у обычного USB — 4 мс).

Технология успешно поддерживается всеми современными операционными системами, в частности iOS начиная с версии 8, Android начиная с версии 6, а также Windows 10 и Mac OS начиная с High Sierra. Все работает очень хорошо, а главное, вы можете без всяких проводов подключить контроллер к iPhone и играть на синтезаторе в каком-нибудь Garage Band. Реализовать все это программно на практике оказалось не так уж и сложно.

Все, что вам нужно сделать, это создать устройство BLE с правильным UUID MIDI Service и UUID MIDI Feature, после чего вы сможете связываться с подключенным устройством с помощью коротких пакетов BLE, аналогичных по структуре обычным MIDI-сообщениям (с добавлением двух служебных байтов).

) Не думаю, что имеет смысл в сотый раз рассказывать об устройстве MIDI-протокола — статей на эту тему бесчисленное множество.

Что ж, вы можете прочитать классный урок по MIDI-BLE. здесь

Доказательство концепции

Первое, что вам нужно сделать, это поддержать свою идею каким-нибудь простым и работающим прототипом; После получаса исследований на Github я загрузил чей-то скетч в ESP, который, к моему удивлению, смог обнаружить мое устройство и даже отправить миди-команды на компьютер.

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

.

Проблему отсутствия ветвей у ESP32 решили путем их расширения с помощью мультиплексора CD74HC4067. Должно было работать так: к CD74HC4067 подключаются кнопки, микроконтроллер поочередно устанавливает разные адреса на адресных шинах мультиплексора и считывает значение кнопки, расположенной по соответствующему адресу, с вывода Common Output микросхемы.

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

Купив кнопки и микросхемы, за вечер собрал вот такой прототип:

MIDI-блютуз-клавиатура на esp32

Тут-то меня и постигло первое разочарование - кнопки.

Кнопки были отвратительными, тугими и оставляли следы на пальцах при активной игре.

Я прекрасно помню, какие кнопки были на моем подростковом инженерном ПО-12, они выглядели точно так же, но были мягкими и гладкими.

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



Хардвар

Прототип как-то работал, концепция устройства была понятна, дело было до печатной платы.

К имеющимся компонентам я добавил лишь кнопки для программирования установленного микроконтроллера, выводы PLS для прошивки и финальной отладки, аккумулятор LiPo и плату зарядки литиевого аккумулятора на базе TP4056. Я так спешил, что забыл добавить LDO для питания ESP32 и банальную кнопку включения.

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

Плату я спроектировал в EASYEDA всего за пару вечеров и отправил в DirtyPCB на печать.

Принципиальная схема

MIDI-блютуз-клавиатура на esp32

Такие платы пришли за 3 недели.



Программное обеспечение

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

Во-первых, я обнаружил, что не все входы АЦП есть на EPS32. одинаково полезно можно использовать вместе с WiFi или Bluetooth, а именно порт ADC2 некорректно работает с Bluetooth. Какой порт я установил для чтения данных из мультиплексора? Ну конечно на него!

MIDI-блютуз-клавиатура на esp32

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

А причина оказалась простой, AMS1117-3.3, который я поставил в схему, совершенно не подходил для питания ESP32 от литиевой батареи, так как падал напряжение на целых 0,7 В.

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

Рамка

И все же использовать устройство с висящей на задней стороне батареей LiPo мне показалось перебором, и я решил сделать небольшой чехол.

Корпуса, напечатанные на 3D-принтере, всегда казались мне слишком самодельными, поэтому я решил вырезать корпус лазером.

За вечер в Fusion360 сделал бампер из акрила 6 мм и чехол.



MIDI-блютуз-клавиатура на esp32



MIDI-блютуз-клавиатура на esp32



Результат

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

Ссылка на Github с исходниками Ссылка на проект с платой Теги: #ESP32 #DIY или Сделай сам #arduino #Bluetooth #BLE #midi

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.