IBM Model M: Unix layout и новый контроллер

Вспомнил, что у меня давно лежат три клавиши под Unix layout и решил переделать раскладку в своей IBM Model M. Изменения следующие:
  • Control на месте CapsLock;
  • Escape на месте тильды;
  • Backspace на месте обратного слэша;
  • Вместо 2U Backspace две 1U-клавиши — обратный слэш и тильда;



«Раздваивание» backspace, естественно, требует хирургии в форме полного вскрытия клавиатуры и дальнейшего bolt mod'а. На нижний левый мод (тоже помеченный как Control, других клавиш не нашлось) назначен Fn. На слое лежат мои привычные стрелки на IJKL и пара макросов.

Удобно ли это? Мне сложно сказать. Мой, так сказать, daily driver последний год — Kinesis Advantage, так что за более-менее стандартными плоскими клавиатурами приходится работать редко. Адаптация заняла примерно полчаса, вначале постоянно промахивался по бэкспейсу и жал тильду. Пользователи Emacs и Vim наверняка будут довольны, им вроде как регулярно приходится использовать Control, а вимерам ещё и Escape поближе нужен.

Тем временем, мне пришлось уступить ещё один контроллер (обрез уже давно без контроллера лежит — ремонтировал залитую клавитуру 4-го поколения, куда пришлось поставить классическую мембрану), точнее, поменяться. В итоге мне достался контроллер от 1390120, эмки первого поколения без светодиодов. Точнее, они там, может быть и поддерживаются, разъём есть, но в похожих 1390131 резисторы распаяны не на контроллере, а на дочерней плате. В общем, пришло время нарисовать свой контроллер.

Конечно, это очередной велосипед. Контроллеры под Model M не делал только ленивый. Но обычно это либо что-то в единичном экземпляре, собранное на макетной плате (когда-то мне и самому пришлось сделать контроллер под M-122 на Blue Pill), либо с разными сложностями. Например, Colossus от известного ремонтника Phosphotglow или вот такой Bluetooth-контроллер.

Итак, цели следующие:

  • Функционал. Да просто контроллер с поддержкой QMK и возможностью подключения родной дочерней платы со светодиодами или её замены. Она нужна, например, владельцам 1390120 и терминальных эмок. Им останется просверлить корпус и приклеить сверху шильдик (Unicomp производит LED-шильдики старого дизайна под IBM). Всякие подсветки и энкодеры всё равно ставить некуда.
  • Цена. Платы, хоть и по габаритам больше 100 мм, но всё равно обошлись примерно в $2.30 за основную плюс дочернюю для светодиодов с учётом распределения стоимости доставки по другим проектам. Можно ещё удешевить, если дочернюю прилепить к основной, сделать её отламываемой. Разъёмы TE Connectivity Tri-Mate всё ещё производятся, но их придётся закупать в Штатах. Пока их жду, отпаял от двух ненужных контроллеров. Сделал на плате футпринты под два контроллера: Teensy 2.0++ и Black Pill. Teensy противоречит требованиям бюджетности (даже китайский пиратский клон стоит $9), но новичкам работать с ним легче — шить загрузчик не нужно, да и сам загрузчик удобный. Black Pill стоит существенно дешевле — $2.50 с учётом доставки.
  • Простота сборки. Люди даже без опыта пайки должны иметь возможность скачать Gerber'ы, получить платы и всё собрать. По возможности никаких SMD. Паяется готовая контроллерная плата и пара разъёмов. Но тут я про этот принцип забыл, и разместил SMD-резисторы под светодиоды. Впрочем, они крупные, 0805. Не думаю, что у кого-то реальные сложности с ними возникнут. Впрочем, платы нужно всё равно переделывать (см. ниже причины).
  • Micro USB или Type C в расчёте на готовые breakout-платы с Aliexpress.

Всё было спешно нарисовано в KiCAD за один день и отправлено в производство, так как не хотелось затягивать получение плат под другие проекты (платы для Cherry G80-3700 и Kinesis). Ну и конечно, я не мог не наделать ошибок:

USB. Breakout-плату под Type C крепить действительно нечем, но на Micro USB варианте есть пара отверстий. Можно было бы про них вспомнить и предусмотреть соответствующие в плате контроллера, чтобы разъём крепить на двух коротких стойках.

Black Pill. Про пины A11 и A12 я помнил, что там висит USB. Но не удосужился заглянуть в схему и не заметил, что набортный светодиод тут висит на B12 (в Blue Pill на C13). Пришлось джампером пересадить его на A13. На фотографии видно, что я ещё перекинул Row5 с A2 на B0, но это я уже ночью сослепу подумал, что на A2 висит джампер Boot1, а он на самом деле на B2, так что необходимости в этом не было.

Когда начал писать прошивку (см. github), выяснилось, что настоящие программисты уже давно нормально встроили поддержку ARM (точнее, ChibiOS) в QMK, так что сейчас уже не нужно возиться с отдельным matrix.c. Достаточно определить пины в config.h, в общем, стало почти так же удобно, как с AVR, только притащить в проект конфиги ChibiOS и ld-скрипт.

Вариант на Teensy заработал с первого раза без проблем, а вот с Black Pill пришлось повозиться и переназначить пару пинов (см. выше). И надо бы ещё номиналы резисторов уменьшить, так как я не учёл, что в Black Pill 3,3 В — светодиоды совсем тускло светятся. Прошивка загрузчика выполняется так же, как и на Blue Pill: перекидываем джампер Boot0 и заливаем stm32duino. Скрипт maple_upload, который дёргал виртуальный COM-порт через какое-то Java-приложение работать сейчас уже отказался, ругаясь как раз на Java, но он не особо и нужен. Таймаута по умолчанию вполне достаточно, чтобы успеть запустить процесс прошивки.

В общем, даже с такой простой платой нужна вторая ревизия. С STM32 в QMK сейчас вроде бы совсем всё хорошо, так что подумываю выкинуть вообще футпринт Teensy 2.0++ и оставить только Black Pill (или плату на STM32F411CEU6). Причём можно попробовать, если бэкплейт клавиатуры не будет мешать, развернуть Black Pill, чтобы он разъёмом как раз смотрел в сторону дырки в корпусе клавиатуры, и можно было бы обойтись без дополнительных USB-разъёмов.

Комментарии

Популярные сообщения