Введение
Я уже писал в блоге про свое новое хобби - механические клавиатуры. Отличное хобби, за исключением того, что довольно дорогое. Собрать неплохую кастомную клавиатуру обойдется примерно в 250$, а купить готовую - еще дороже. Поэтому и возникла идея попробовать собрать максимально дешевую механическую клавиатуру.
Основная идея в том, чтобы купить недорогую механическую клавиатуру самого начального уровня (можно даже б/у) и переделать ее.
На чем будем экономить:
- свичи берем из клавиатуры-донора
- планку для свичей берем из клавиатуры-донора
- кейкапы берем из клавиатуры-донора
- плату не покупаем, используем плату Atmega32U4 и паяем свичи через диоды к ней
- корпус из оргстекла
Казалось бы, а зачем вообще переделывать, если можно просто купить и использовать механическую клавиатуру начального уровня?
Чем наша клавиатура будет лучше донора:
- поддержка QMK прошивки
- более удобный форм-фактор
Самое основное: мы получаем поддержку QMK. Это прошивка, которая позволяет очень тонко настраивать клавиатуру.
Только часто возможностей QMK:
- заменять коды любых клавиш на любые
- макросы: при нажатии на клавишу может выполняться произвольный код, генерироваться несколько кодов нажатия и т.д.
- слои: можно создавать несколько слоев и переключаться между ними, каждый слой может содержать свою логику
- гибкое управление подсветкой (обычной и RGB): можно создавать свои эффекты подсветки или использовать готовые
- обратная связь: при желании с компьютера на клавиатуру можно передавать события, на которые клавиатура будет реагировать, например, менять цвет подсветки при переключении раскладки
Поэтому при покупке клавиатуры или платы, будет очень полезна поддержка QMK.
Подготовка
Для начала нам понадобится:
- Клавиатура-донор
- Плата Atmega32U4
- Диоды
- Коннекторы
- Латунные распорные винты
- Оргстекло
- Провода
- Паяльник
- Колодка для платы
Ссылки на все это есть справа от статьи - ровно это я и использовал. Единственное, что я не использовал - это hotswap-коннекторы, так как хотел сделать максимально дешевую клавиатуру. Hotswap-коннекторы позволяют сделать клавиатуру с заменяемыми без пайки свичами, что полезно, если один из свичей выйдет из строя, либо если вы хотите попробовать другие свичи.
Съемник также можно не покупать, обычно он входит в комплект с клавиатурой.
Пора начинать
Сначала нужно аккуратно разобрать нашу клавиатуру-донор. В первую очередь снимаем кейкапы с помощью съемника (того, что из пластика).
Далее так же аккуратно извлекаем свичи, используя металлический съемник и располагая его вертикально.
После - снимаем саму металлическую пластину, на которой держались свичи. Бывает, что винты находятся с лицевой части, а бывает, что сзади.
Теперь нам нужно определиться с тем, какой форм-фактор будет у нашей новой клавиатуры. Форм-факторов бывает довольно много, обозначаются они обычно в процентах от полного форм-фактора, такого, как у клавиатуры Redragon surara. Поэтому ее лучше всего использовать в качестве донора: у вас на выбор довольно много вариантов, как ее "урезать", а так будет большое количество свичей в запасе.
Также клавиатуры могу иметь один из двух стандартов: ANSI (с однострочным ENTER-ом) и ISO (с двухстрочным ENTER-ом). Но это вы изменить не сможете.
Но есть нюанс: так как вместо полноценной платы мы используем Arduino-подобную Atmega32U4, то мы ограничены количеством ее пинов. У той, что я использовал и ссылку на которую разместил, всего 18 пинов. Будущую клавиатуру нужно разбить как бы на сетку, часть пинов будет использоваться для рядов, а часто - для столбцов. Если в клавиатуре всего 5 рядов, то столбцов может быть максимум 13.
Я остановился на форм-факторе 60% ANSI. Такая клавиатура имеет 5 рядов. Правда в первом и втором рядах сверху клавиш 14, а не 13, в третьем - 13, зато в 4 - 12, а в последнем - вообще 8. Таким образом клавиши две клавиши из первого и второго ряда можно "повесить" на последний ряд, в котором есть запас, или на 4 и 5 ряды, как удобнее. Это не имеет особого значения, просто в QMK прошивке нужно будет это прописать.
Следующий шаг: отпиливаем от металлической планки лишнее, так, чтобы остался нужный нам форм-фактор. И можно вставляем обратно свичи и кейкапы. Уже видно, какая будет клавиатура в итоге :)
Ну и теперь нужно запастись терпением, а также проводами. Я использовал обычную витую пару. И начинаем паять. Свичи, как обычные выключатели, имеют 2 пина, замыкаемые при нажатии. Один пин каждого свича одного столбца нужно припаять к одному пину платы, второй пин каждого ряда - через диод - к другому пину платы.
Выйдет примерно следующее:
Далее из оргстекла я выпилил нижнюю часть корпуса с местом под плату (решил сделать ее не под клавиатурой, а на виду - сверху)
По моей задумке плата должна была быть быстросъемная, для чего и нужны коннекторы. Кстати, мне это как минимум 1 раз уже пригодилось: повредился разъем платы (неудачно дернули провод), и для ремонта я просто вынул старую плату и вставил новую, перепаивать ничего не пришлось.
Выпиливаем из того же оргстекла крепление для платы, в котором будут вклеены коннекторы.
И вклеиваем в нее коннекторы, установив в них плату, чтобы после схватывания клея размеры между коннекторами были точные.
Просверлив обе делали, прикручиваем нижний лист к планке клавиатуры через распорные винты, и с помощью них же крепим площадку для платы к нижнему листу.
Ну и последние: припаиваем провода к колодке разъема.
Прошивка
Qmk является проектом с открытыми исходными кодами, размещенными на github.
Для создания своей прошивки, проще всего взять за основу готовую прошивку для похожей клавиатуры (имеющей тот же форм-фактор и основанной на Atmega32U4), скопировать директорию, заменить в конфигах название и модель клавиатуры, скомпилировать и прошить клавиатуру.
Вот дерево файлов и директорий прошивки:
Я скопировал эти файлы (уже не помню с какой прошивки) в созданную директорию с именем nixoid.
В файле rules.mk прописываем путь к версии прошивки: DEFAULT_FOLDER = nixoid/rev1.
В файле rev1/rev1.h должна быть корректная схема соответствия клавиш на раскладке и тому, какие ряды и столбцы клавиши занимают.
В файле rev1/config.h - обозначено, к каким пинам платы подключены ряды, а к каким - столбцы.
Соответствия пинов и их названий:
Это основные моменты. К сожалению, описать все, что касается Qmk, в одной статье невозможно. У проекта есть неплохая документация, и комьюнити на github, так что разобраться несложно.
Итоговый вариант клавиатуры:
Вывод
Самое основное: сколько же я сэкономил? Клавиатуру донора я купил по скидке примерно за 2000 руб, на все остальное ушло также примерно 2000 руб в сумме. Финальная стоимость в 4000 руб меня устроила, я добился, чего хотел - сделать дешевую механическую клавиатуру с поддержкой qmk и новым для меня форм-фактором.
Для сравнения: если собирать кастомную механическую клавиатуру на готовой плате без донора, то по стоимости это выйдет в 3-5 раз дороже, в зависимости от выбранных свичей, кейкапов и корпуса.
После использования клавиатуры могу описать ее плюсы и минусы.
Из плюсов:
- низкая стоимость
- удобный форм-фактор (вместо отсутствующих f1-f12 используется спецклавиша и цифры, а вместо стрелок - правые модификаторы, которые я и так не использую)
- удобная быстрая замена платы - можно даже иметь 2 платы с разными прошивками и менять их при необходимости
- поддержка qmk делает из обычной клавиатуры очень крутую :)
Из минусов:
- не очень удачное расположение платы - легко вырвать разъем, дернув провод
- подсветки иногда не хватает
В ближайшее время хочу собрать также бюджетную клавиатуру форм-фактора 40%. Почему бюджетную? Да просто у меня уже есть 2 основных клавиатуры, и тратить на клавиатуру в 40% не хочется, использоваться она будет крайне редко, скорее всего.
В отличии от описанной в статье, для нее я заказал набор кейкапов (они там не стандартные), планку, а также буду использовать хотсвап коннекторы. Ну и Atmega32U4 будет расположена уже под клавишами и разъем будет надежно закреплен.