В прошедшие выходные было сделано два дела:
- Изготовлено дно из стеклотекстолита для панели управления.
- Установлена на место декоративная решётка правой половинки.
Блог обо всём.
В прошедшие выходные было сделано два дела:
Сегодня я начерно собрал панель управления (см. рис. 1). Вставил плату в корпус, и установил дно. В финале панель управления будет выглядеть именно так, только я с экранчика ещё защитную плёнку сниму.
Я поражаюсь, насколько просто в наше время делать плотную компоновку всех деталей. Это всё исключительно из-за того, что есть возможность делать трёхмерные модели и заниматься подгонкой не вживую, а на компьютере. Ну и, само собой, объёмная печать даёт такие возможности, о которых в период моего активного радиолюбительства в студенческие годы я и мечтать не смел.
К сожалению, проверочная сборка показала, что материал для дна я выбрал неудачно. Дно я сделал из стенки вентиляционного короба (см. рис. 2).
Оказалось, что этот пластик слишком легко гнётся. И получается «лыжа», т.е. середина немного провисает. Панель управления будет крепиться к декоративной решетке баяна именно через дно. И надо чтобы дно было способно сохранять плоскость, как это делает сама плата. Нужно брать более жесткий материал. Похоже, надо ехать на радиорынок за листиком стеклотекстолита.
Ну и прикинул, как панель управления будет выглядеть на декоративной решетке:
Вполне приемлемо.
Я сегодня занимался механическими недоделками в своём MIDI-баяне. В частности, сделал постоянное нормальное крепление жгута проводов, соединяющих левый и правый полукорпусы.
Крепление сделал, воткнул разъём и решил на всякий случай проверить, работает ли оно после перепайки разъёма.
И внезапно обнаружил, что переключение «пресетов» отлично работает при отключенном левом полукорпусе, но глючит при подключенном.
На поиск бага ушло 5 часов. Баг оказался дурацкий: я забыл, что один из членов структуры — это 2-битовое поле. И в одном месте я самым беспечным образом обращался с ним, как с обычным целым. И не мог понять, почему не срабатывает проверка на index == number_of_elements. А элементов там 4. А поле — 2-битовое. Ага.
Я про это вспомнил только тогда, когда психанул и напихал в прошивку «отладочную печать» через светодиоды панели управления. И очень удивился когда после 3 стало 0. А потом ка-а-ак понял!

Готов нарисованный ранее корпус для панели управления.
Кнопки вставлены «просто так», платы внутри корпуса пока нет, и вместо зкранчика пока синий скотч.
Выглядит, вполне ожидаемо, как «корпус, напечатанный на 3D принтере». Пока пусть будет так, как есть. В будущем, может быть, я сподоблюсь как-то отшлифовать наружную поверхность, чтобы было гладко и блестяще (или хотя бы матово).
Печать заказывал здесь.
Поскольку прошивка готова, и датчики настроены, нужно продвигаться к следующему этапу: 3D печать корпуса панели управления и кнопок. Эскиз расположения кнопок и светодиодов на плате у меня был, на его основе и разрабатывал модель корпуса.
Сначала сделал модель самой печатной платы, чтобы по ней проверять правильность расположения отверстий в корпусе и правильность размеров кнопок. Потом нарисовал корпус, кнопки, и объединил всё в сборку. Очень удобно всё это делать в Компас 3D: делаешь сам корпус временно невидимым, и можешь проверять, как кнопки располагаются относительно микровыключателей, запаянных на плату. Как раньше без таких программ жили — решительно непонятно.
Вроде норм. Единственное место, которое мне не нравится — это расположение левой «стрелки» вплотную к экрану. Надо было разнести ещё миллиметра на 3. Но уже поздно; расположение элементов определяется платой, а её я переделывать совершенно точно не буду.
Теперь надо прицениться к печати этого корпуса и 22-х кнопок (16 на Ø10 мм, и 6 на Ø15 мм).
Взрыв-схема сборки панели управления выглядит так:
Сегодня вечером после работы я закончил работу над прошивкой MIDI-баяна. Даже не верится. Реализовал все функции, которые хотел:
Когда закончу работу над механической частью (герметизация технических отверстий в корпусе и крепление декоративной решетки правой клавиатуры), запишу видеоролик с демонстрацией этого всего.

По следам предыдущих публикаций.
Сделал сводку по основным «джазовым» аккордам — см. рис. 1. Это для «До». Для остальных нот — всё по аналогии (у баянистов здесь не должно возникать вопросов).
На схеме в «числителе» указаны готовые аккорды, которые надо нажимать, а в «знаменателе» — басы. Нужный джазовый аккорд получается при одновременном нажатии баса и «готовых» аккордов.

Эта информация будет полезна, например, для игры т.н. «turnaround progression» которая используется в очень многих джазовых произведениях:
Dm7 - G7 - Cmaj7 - A7
С момента публикации предыдущей заметки было сделано весьма много. Но работа велась исключительно над прошивкой, поэтому никаких фотографий или видео пока нет. (Какое-то видео запишу потом, когда всё сделаю; это будет видеопрезентация моего MIDI-баяна.)
А пока докладываю о том, что было сделано за всё это время:
И в данный момент а баяне уже можно довольно комфортно играть, не тратя кучу времени на настройку звуков при каждом включении.
В исходниках уже 3910 строк; продолжаю работу над прошивкой.

Пока я нахожусь вдали от компьютера, приходят в голову разные мысли. Одна из них — это вопрос: способен ли будет мой баян перегрузить MIDI out порт командами в том случае, когда будут меняться настройки всех трёх активных midi каналов при нажатии кнопки «смена пресета». Для каждого канала надо будет установить примерно 15 параметров. Один параметр — это одна midi команда из 3-х байтов. Т.е. при смене пресета нужно будет отправить порядка 50 байт, и мне было интересно, сколько времени это может занять; будет ли эта задержка заметна во время игры.
А тут выдалось время на то, чтобы посчитать.
Скорость обмена данными у MIDI интерфейса — 31250 бод. То есть порядка 2900 байт в секунду. То есть порядка 1000 midi-команд в секунду. То есть мои несчастные 15 команд пролетят за 15 миллисекунд.
То есть можно вообще на этот счёт ни о чём не беспокоиться. Можно будет «щёлкать регистрами» во время игры сколько угодно. Главное, чтобы синтезатор был в состоянии обрабатывать команды с такой скоростью.
Очень хочется добраться до компа и продолжить доводить прошивку баяна до рабочего состояния, реализуя все задуманные функции.

В эти выходные я закончил настройку датчиков левой клавиатуры, начисто прикрутил плату датчиков, просверлил в деке отверстие, вывел жгут проводов от левой клавиатуры в герметичный объём, и подключил левую клавиатуру к общей схеме.
Можно играть обеими руками.
По механике — осталось герметизировать все отверстия и придумать, как крепить жгут проводов, идущий из одного полукорпуса в другой.
Черновая проверка датчика давления показала, что отработка нештатных ситуаций прошивкой работает отлично. 🙂 При одновременной работе датчика давления и большого количества музыкальных клавиш переполнялась внутренняя очередь MIDI-сообщений и прошивка вылетала в индикацию внутренней ошибки (баян перестаёт реагировать на внешние раздражители и высвечивает на светодиодах код ошибки). Видимо, очередь на 4 MIDI-сообщения была слишком маленькой; увеличил до 7. И слегка поменял внутреннюю логику разгребания этой очереди и отправки команд в синтезатор через MIDI-out порт.
Сейчас всё работает чётенько. 🙂
Но с прошивкой ещё возиться и возиться. Это для отладки электроники и механики там сейчас есть всё, что надо. А для игры не хватает ещё много чего. Продолжу работу над баяном после 15 августа. А пока другие дела.