Современные IT очень сложно представить без клавиатуры. Эта досочка с кнопками сопровождает человечество еще со времен печатных машинок и до сих пор остается надежным и верным помощником при работе с информацией. Даже распространение сенсорных экранов и доступного и точного голосового ввода мало повлияли на популярность этого способа ввода.

Конструкций клавиатур за это время придумано великое множество, и каждый проходит свой путь от «пользуюсь тем, что выдали вместе с компьютером» до «нашел ту самую, идеальную». Кого-то удовлетворяют простые мембранные клавиатуры из ближайшего магазина. Кому-то их оказывается мало, и он открывает дивный мир клавиатур механических. Кто-то идет еще дальше в тюнинг: меняет переключатели, кейкапы, добавляет шумоизоляцию, полностью перестраивает «внутренний мир» своей клавиатуры. Кого-то даже такая глубокая переработка не удовлетворяет, и он обращается к клавиатурам кастомным.

Меня зовут Александр Обливальный, я разрабатываю ПО для объектных СХД в YADRO, и мой клавиатурный путь можно описать тремя словами: «Мне дали попробовать».

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

Спустя несколько лет мне дали попробовать механику, и это стало открытием века. Клавиатура возрастом больше года ощущалась практически как новая, без пропусков символов и без свойственной мембранным клавиатурам «ватности». Это было очень хорошее решение, но, увы, тоже с недостатками. Все мои механики были довольно крупными, занимали много места в рюкзаке, а по эргономике напоминали Mitsumi Classic, что досталась мне когда-то с первым компьютером.

Я начал очень осторожно поглядывать в сторону кастомных клавиатур в формате «сплит». Это могло закончиться ничем, так как пайка клавиатуры с нуля казалась мне делом достаточно сложным, неоправданно долгим и затратным. Но осенью брат дал мне на тест клавиатуру Sofle, которая у него лежала без дела. Она-то и сподвигла меня перейти Рубикон и погрузиться в клавиатуростроительство.

Далее я расскажу историю своего проекта — с приключениями и счастливым концом.

Постановка ТЗ

Я минимально настроил новую игрушку от брата под свое видение прекрасного, привык к меньшему числу клавиш, иному их расположению и понял: «Она мне нравится!» Две половинки давали массу преимуществ: их легко расположить на столе, они прекрасно помещаются в рюкзак и занимают там минимум места. Можно даже сидеть в мягком кресле с ноутбуком на коленях, разложить половинки на подлокотниках и почувствовать себя капитаном космического корабля :) Скорость печати пострадала минимально, а вот комфорта прибавилось.

Где-то в тот момент появилась первая мысль: «Хочу такую же, но с перламутровыми пуговицами». При всех плюсах и достоинствах устройство, что дал мне брат, до звания «клавиатура мечты» недотягивало. Урезанная прошивка, отсутствие RGB-подсветки, не самые приятные переключатели и кейкапы, корпус отпечатан в странной палитре — красный с фиолетовым. По отдельности каждый недостаток не являлся критичным, но вместе они ощутимо портили общее впечатление от достаточно интересного устройства.

Отталкиваясь от желания исправить эти недостатки, я сформировал ТЗ для будущей клавиатуры:

  • Проект Sofle RGB в основе, чтобы добавить подсветку. Плату и все электронные компоненты я планировал заказать одним набором, поэтому смотрел и на другие популярные проекты. В качестве альтернативы выступали Lily58 и Corne. Но у них либо отсутствовали удобные поворотные энкодеры, либо было еще меньше клавиш, что создавало бы ощутимый дискомфорт.

  • Белый корпус и белые полупрозрачные кейкапы. Хотелось получить визуально чистое устройство, может быть, с небольшими цветовыми акцентами.

  • Все провода должны быть белыми в тканевой оплетке.

  • Прошивка Vial — форк QMK c удобным интерфейсом для настройки клавиатуры. Первое время я планировал активно настраивать раскладку клавиш под себя и хотел делать это без компиляции и перезаливки прошивки на устройство.

  • Переключатели Gateron Mint. Их я мог взять из сломанной клавиатуры, которую было лень отнести в сервис. Сами свитчи мне нравились, поэтому почему бы и да.

  • Срок — успеть за новогодние праздники. Грандиозных планов на предстоящие каникулы у меня не было, я планировал спокойно посидеть дома с паяльником и отдохнуть от суеты вокруг.

С этими вводными я и приступил к реализации проекта по созданию клавиатуры мечты.

Проекты Lily58 (источник) и Corne (источник)
Проекты Lily58 (источник) и Corne (источник)

Пайка клавиатуры

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

Комплект для сборки (фото с маркетплейса)
Комплект для сборки (фото с маркетплейса)
Подбор и расстановка кейкапов
Подбор и расстановка кейкапов
Сами кейкапы (фото с маркетплейса)
Сами кейкапы (фото с маркетплейса)

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

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

К сожалению, уложиться в новогодние каникулы у меня не получилось. Чтобы спаять первую половину, потребовалось два вечера, и потом еще полторы недели, чтобы эту половину заставить хотя бы кое-как стабильно работать. Проблем было много: циклические перезагрузки контроллера, спам отдельными символами, в какие-то моменты клавиатура просто отказывалась запускаться. Причем все это происходило одновременно, и угадать, что случится после очередной перезагрузки, было крайне сложно. Спокойствия это не добавляло, как и простоты в отладке.

В какой-то момент у меня получилось победить все перезагрузки и заставить клавиатуру стабильно запускаться, но спам символами никак не поддавался и доводил до отчаяния. Пришлось вспомнить, что в моем дипломе написано «бакалавр электроники/микроэлектроники» и что символы на клавиатуре обычно организуются в строки и столбцы. А затем догадаться, что где-то на моей плате между этими строками и столбцами получилось очередное незапланированное замыкание, которое надо найти и устранить.

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

Три проблемных контакта на фото как раз отсоединены
Три проблемных контакта на фото как раз отсоединены

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

Это добавило мотивации закончить проект, потому что я уже начал уставать от особенностей аналогового мира. На работе очень быстро привыкаешь, что все либо работает, либо нет. Конечно, случаются плавающие баги, но они скорее исключение, чем правило. Реальный мир доводил меня до истерики своим непостоянством: сегодня замыкание есть, завтра его нет, потому что какой-то микроскопический шарик припоя попал в колодку и срабатывает, только если вставить пин под определённым углом и немного нагреть. Мне, привыкшему к «цифре», столкнуться с таким поведением было очень некомфортно.

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

Я долго искал причину в ней, это казалось мне логичным, так как именно ведомая половинка не запускалась. Однако проблема крылась в другой, ведущей части, где я посадил очередную «соплю», подававшую 3 В питания на шину данных, что и приводило к таким печальным последствиям. Чтобы это понять и найти проблемное место, у меня ушло еще несколько дней вдумчивого и не очень тыканья мультиметром в обе половины под аккомпанемент множества «WTF?!» в голове.

После замыкания этих двух контактов на ведомой половинке она начинала работать до следующей перезагрузки клавиатуры
После замыкания этих двух контактов на ведомой половинке она начинала работать до следующей перезагрузки клавиатуры

Печать корпуса

Ура, половинки работают условно стабильно, объединяются в Вольтрона полноценную клавиатуру и красиво переливаются огоньками. Можно приступать к изготовлению корпуса. Тут я не ожидал никаких сложностей: у меня уже несколько лет дома трудится 3D-принтер, а хорошую модель я нашел заранее. Нужно было всего лишь запустить печать.

Реальность оказалась совершенно иной. Заказанный для клавиатуры пластик пролежал пять дней в духовке и даже после этого выдавал совсем не тот результат, что я ожидал. Это сейчас я знаю, что проблема была не в избытке влаги, а в неправильных настройках: я давно не работал с PLA и совсем забыл, что ему нужно для счастья и ровной укладки. Тогда же я ругал (незаслуженно) производителя, принтер, Омниссию и самого Бога-Императора. Пришлось достать из закромов PETg, у которого проблем с печатью не было, но цвет был не идеально белый, а скорее светло-черный.

Вот так получилось с PETg-пластиком
Вот так получилось с PETg-пластиком

Сейчас я уже исправил профиль для печати PLA-пластиком, в ближайшее время перепечатаю корпус и получу красивый цвет, как и задумывал.

Возвращаемся к пайке и продолжаем сборку

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

Пины контроллеров сделаны в два ряда для взаимозаменяемости левой и правой половины
Пины контроллеров сделаны в два ряда для взаимозаменяемости левой и правой половины

Терпение мое кончилось, терять было нечего: я решил удалить эти колодки и заменить их новыми. К сожалению, паяльного фена у меня не было, поэтому я уничтожил корпуса колодок кусачками, оставив только пины. А сами пины уже без особых сложностей выпаял по одному. Замена легко нашлась в ближайшем магазине радиодеталей, так как тут использован стандартный шаг — 2,54 мм.

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

Контроллеры клавиатуры должны быть защищены напечатанными боксами. Но я испортил родные колодки бокса, а совместимые оказались раза в полтора выше
Контроллеры клавиатуры должны быть защищены напечатанными боксами. Но я испортил родные колодки бокса, а совместимые оказались раза в полтора выше

Вначале мне казалось, что самое сложное в подобных проектах — это достать плату и электронную начинку. Как бы не так! Их всегда можно заказать на маркетплейсах, часто в виде готовых наборов. Настоящая проблема — это найти, заказать и не забыть всю мелочевку: провода, монтажные стойки, винтики, нужный пластик для корпуса, кейкапы и т. д. Винтики я перезаказывал раза три, так как каждый продавец по-своему понимает винт M2x3 и несколько раз приходило совсем не то, что нужно.

Прошивка

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

Для финального устройства я не стал изобретать велосипед, а просто взял уже готовую прошивку из GitHub PandaKeyboards, производителя моего набора. В ней есть все, что мне необходимо от клавиатуры, а имеющиеся ограничения на мою работу не влияют. Хотелось бы иметь более информативные экраны, отображающие воспроизводимую музыку, номер используемого слоя клавиш и другую служебную информацию. Но для этого нужно глубже залезать в прошивку, а у меня сейчас на это нет ни сил, ни времени, ни желания. Скорее всего, я совсем отключу эти экранчики и не стану сильно переживать по этому поводу — клавиатура будет «походной».

Клавиатура в деле

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

Краткий вывод из всего проекта такой: «Не боги горшки обжигают». При известном желании и настойчивости можно собрать себе клавиатуру, не обладая какими-то специфическими навыками в электронике. А работать с ней особенно приятно: я сам сделал ее именно такой, какой хотел.

«Провод мечты» для соединения половинок будет другим
«Провод мечты» для соединения половинок будет другим

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

Где-то я увидел, что между половинками клавиатуры при работе кладут мышку. Это оказалось очень удобно, так что я использую свою Sofle RGB именно так
Где-то я увидел, что между половинками клавиатуры при работе кладут мышку. Это оказалось очень удобно, так что я использую свою Sofle RGB именно так

Останавливаться только на этой модели я точно не планирую. Она станет походным устройством для работы в коворкинге и командировках, а домой я хочу более эргономичный вариант. Осталось только выбрать между популярными Daktyl или High Plains Drifter. Это тоже открытые проекты, но с куда более сложной сборкой и отладкой. Выглядит как приключение на очередные каникулы...