Год назад мне прилетела вожжа под хвост и захотелось странного. Вожжа выглядела вот так:
Это patchblocks, проект с кикстартера. Несколько абсолютно одинаковых модулей, соединяющихся в модульный синтезатор. Каждый модуль выполняет разный функционал благодаря тому, что прошит своим софтом из простого редактора…
В этом проекте прекрасно всё. Мне особенно понравилась красота и низкий финансовый порог входа при производстве небольших партий. То есть отсутствие литья пластмасс. И при этом штука выглядит красиво: «самодельность» придаёт ей особый шарм. Это же просто платка, аккумулятор и два куска оргстекла! Вау!
Когда я это увидел, моя пирамида Маслоу затупилась о страничку браузера. Хочу придумать так же круто!
Хотелки
В голове созрел детальный план работ:
- Придумать что-то крутое
- ???
- PROFIT!!!
План готов, осталось только его неукоснительно соблюдать.
Я увлекаюсь музыкой и синтезаторами. Уже пришёл в ту стадию, когда больше синтезаторами, нежели музыкой. За давностью уже не помню, как оформлялась мысль. Но в итоге я решил сделать какой-то модульный и кастомизируемый пульт управления чем-нибудь. Например, цифровыми синтезаторами или видеоредактором. То есть крутилки, кнопочки, слайдеры, индикаторы всякие. Ну что-то вроде этого, но без ограничений размеров:
Хардварные хотелки к этому нечто:
- Модульность. Максимально похожие модули, которые можно комбинировать простым способом. Короче лего.
- Пользователь обязан суметь очень просто сделать уникальное, удобное для своей задачи расположение модулей. И при этом не устать.
- Простая логистика. Идеально, если готовый модуль можно взять на производстве печатных плат одним куском, положить в пакет и отдать пользователю. А он уже сам всё себе соберёт. Да ещё и удовольствие получит от процесса. И не устанет.
- Красивость результата. Получившаяся в результате сборки пользователем кастомная железка обязана хорошо выглядеть. Никаких проводов, джигурды, изоленты и ожогов от пайки.
- Умность модулей. Нужно сделать так, чтобы можно было подключать их сразу много к какой-нибудь arduino через простой железный интерфейс. Вместе модули должны предоставлять какой-то единый программный интерфейс так, чтобы в коде не морочиться.
Первый блин
Проще всего придумывать абстрактное нечто решая задачу поконкретней. Нам же много чего придумать предстоит, желательно конкретизировать хоть что-то.
Для начала решил спроектировать модуль из четырёх потенциометров. Можно было бы взять кучу таких модулей и собрать себе матрицу из кучи потенциометров. Все любят матрицы из кучи потенциометров!
Идея простая. Есть платка с микроконтроллером, который опрашивает потенциометры и отправляет эту дату куда-то.
Управляющий микроконтроллер выбирал исходя из цены и мощи. Хотя, зачем я вру? Наткнулся на статью «НЕ Arduino за 55 центов» и просто влюбился в этого малыша! STM32F030F4P6 классный. У него не так много ног, но 9 из них с 12-битным АЦП и куча 16-битных ШИМ-портов.
Много времени занял выбор способа соединения модулей. Пересмотрел гору вариантов штекеров и разъёмов. Хотелось, чтобы соединение было простым. Оно не должно боятся механических нагрузок, быть надёжным и не должно выходить за край корпуса. А ещё ему должно быть абсолютно всё равно, каким боком пользователь соединяет модули. Через пару недель бицепс указательного пальца пришёл наконец в тонус от ежедневного скроллинга. Стало понятно что нужного разъёма просто нет в природе.
В итоге остановился на швейных кнопках. Получилось вот так:
С момента описываемых событий прошёл уже год. К сожалению, верхние крышки из оргстекла потерялись и фотографий с ними не осталось. Небольшое представление о том, как оно должно было выглядеть можно получить по модельке:
Из плюсов такого решения:
- Вся железка (кроме крышки) сделана из фольгированного текстолита. Все детали корпуса вместе с электроникой могут располагаться на одной печатной плате, и приходить одной большой деталькой прямо с завода. Пользователю останется только отломить их и собрать корпус.
- Кнопочки соединяются и разъединяются достаточно легко и с таким чудесным «хрум», что долгое время это был мой личный антистресс гаджет. Очень приятное ощущение.
- Соединение кнопками достаточно прочное. Модули держатся друг за друга хорошо: не болтаются, не люфтят.
Видео работы соединения:
Минусы тоже есть:
- Боковые стенки должны проводить электричество и при этом коммутировать с основной платой, на которой находится вся электроника. Мне удалось добиться надёжного механического и электрического соединения. На вертикальной плате есть краевые разъёмы с зубцами. На фотке видно верхний такой разъём. Нижний вставляется в гальванизированные прямоугольные отверстия в основной плате. Правда, боковые платы пришлось забивать в основную плату при помощи молотка и мягкой подкладки. Не то чтобы меня это сильно расстраивало, но UX прямо скажем не очень.
- Модули имеют направление. Нельзя соединить два модуля любой стороной.
- Монтаж компонентов в отверстия очень портит на ощупь нижнюю часть платы. Потенциометры поверхностного монтажа бывают, конечно. Но не факт, что получится найти абсолютно все необходимые детали с поверхностным монтажом. Мало ли, что может понадобится в будущем?
- Очень сложно угадать с высотой боковых стенок. Не до конца ведь понятно, какие конкретно компоненты захочется поместить внутрь? Пришёл к какому-то среднему значению. Но с этим средним значением те же потенциометры, например, едва выглядывают над верхней крышкой.
Интерфейсики
Из всех просмотренных вариантов стандартных железных интерфейсов мне больше всего понравился I2C. Можно соединить всех со всеми и они там сами разберутся. Но тут есть засада с адресами. Куча одинаковых потенциометров должна как-то отличать друг друга. А лучше всего, если куча будет отличать друг друга согласно своему собственному расположению относительно других.
В этом варианте «красивой железки» пожертвовал четырьмя пинами микроконтроллера на благо адресации. Мы знаем где у модуля входы, а где выходы. Назначим левый верхний модуль в массиве модулей главным.
На словах объяснить получается плохо. Попробую проиллюстрировать адресацию одной строчки на примере марширующих солдат:
Массив из строчек и столбцов модулей адресуется как-то так же. Просто нарисовать солдат с двумя входными портами несколько сложнее.
Забросил
Жаль было забрасывать разработку железки, в работе над которой провёл много прекрасного времени. Но с прототипами так бывает. Поигравшись с таким формфактором, потихоньку отказался от него. Оказалось, что можно решать задачу красивой железки гораздо проще и веселее. Об этом я расскажу в следующих сериях. А этой статьёй хотел отдать дань уважения прекрасной железке, с которой у нас не сложилось. Прости, Кнопочка. Дело не в тебе, просто я полюбил другую.
Источник