Modern technology gives us many things.

DIY клавиатура из фанеры

86

Уровень сложности Простой Время на прочтение 8 мин Количество просмотров 2.6K Python *DIY или Сделай сам Из песочницы

DIY клавиатура из фанеры

Клавиатура из фанеры

Введение

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

Фантазии и реальность

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

Проводов тоже хотелось минимум. Проводной сплит подразумевает два провода — один от компа и один между половинками. Два что-то многовато, один — уже получше, но всё ещё слишком много. Вот ноль меня полностью устраивает.

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

В общем программа максимум: беспроводной сплит клавиш на 40-50, без светодиодов.

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

Комплектующие

Всё железо покупал на Алиэкспрессе:

  • В качестве мозга выбрал Raspberry Pi Pico, он доступен по цене и в интернете полно мануалов по сборке на нём сборке клавиатур,

  • Свичи (переключатели) Gateron полноразмерные коричневые,

  • Кейкапы (кнопки) чёрные из ABS пластика,

  • Диоды 1N4148, подробнее о них позже.

  • Много энтузиазма и немного времени по вечерам.

Лэйаут. Распределение клавиш

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

Чтобы уменьшить размеры и сохранить функционал умные люди используют слои, когда на одной кнопке висит несколько действий в зависимости от кнопки модификатора. Все мы пользуемся слоями, даже не зная об этом. Зажимая например Shift — буквы становятся большими, а цифры выдают знаки препинания. На ноутбуках кнопка Fn тоже переопределяет некоторые клавиши. Вооружившись этим знанием я начал мержить (объединять) клавиши.

DIY клавиатура из фанеры

Распределение клавиш по слоям

Отделение агнцев от козлищ

Альфы

Все кто сам является модифиатором должны быть доступны всегда, это Ctrl, Shift, Alt. Сюда же суперважные Esc, Tab, Win, Enter, BackSpace, а также кнопки направлений. Царь всея клавы пробел будет дублироваться и на правой и на левой половине.

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

Неприкасаемые

Без сожалений выбрасываю правые Ctrl, Alt, Shift, а также ScrLock, Pause (последний раз пользовался ею под DOS) и CapsLock (гневные сообщения буду писать с зажатым Shift). Это минус 6 кнопок.

Читать на TechLife:  Большие скидки и смартфоны в подарок: Infinix объявляет новогоднюю акцию

Беты

На укороченных и ноутбучных клавиатурах отсутствует Num блок, который похож на калькулятор. Казалось бы первый кандидат на удаление. Но в блендере Num блок переключает вид, что суперудобно и быстро. Казнить нельзя, помилую и помещу их на левую половину в той же конфигурации что и в обычной клавиатуре, ибо привычка. Сюда же поместятся и плюс, минус, ноль, умножить и точка. На левую половину потому что удобно переключать виды левой рукой не отрывая правой от мыши. Минус 15 клавиш.

Второй претендент F1-F12. Тоже бесполезные кнопки, занимающие целый верхний ряд. Однако: закрыть приложение Alt-F4, переименовать F2, обновить окно F5, полноэкранный режим F11. Часто они нужны, придётся тоже сохранить. Они отправятся под правую руку. Это ещё минус 12 кнопок и очистили верхний ряд.

Следом идут цифровые клавиши 1..0 и -+. И они занимают целый ряд. Переселяем их в левую половину аналогично Num блоку. Это ещё минус 12 кнопок и минус один ряд.

Гаммы и омежки

  • Home, End, PageUp и PageDown удобны для навигации в коде и браузере. Вешаю их на соотв. кнопки направлений: лево, право, верх, вниз с модификатором Fn.

  • Del чрезвычайно важен (когда-то я отказался от минимаковской клавы ибо там не было Del). Вешаю поверх BackSpace

  • Insert товарищ редкий, но полезный. Вешаю его на Enter.

  • PrintScreen прекрасен, перегружаю им левый пробел.

  • Главная литера кириллицы Ё перегружает Esc.

Итого 48 клавиш. Прекрасный результат, работаем дальше.

Корпус

Корпус можно было бы напечатать на 3D принтере, но хотелось чего-то более душевного. Поэтому он будет сделан из берёзовой фанеры.

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

DIY клавиатура из фанеры

Макет для сплита на картоне

DIY клавиатура из фанеры

Макет для монолита на картоне. В центре конnроллер Rasperry PiPico

DIY клавиатура из фанеры

Макет в блендере

Потом я перечертил модель в LibreCad (бесплатный аналог автокада) и отправил чертёж моему хорошему товарищу, который занимается лазерной резкой фанеры.

DIY клавиатура из фанеры

Выкройка в LibreCAD для лазерной резки

Как из конструктора склеил нужные детали столярным ПВА. Получилось две части: нижняя коробка и верхняя крышка с отверстиями под свичи. Затем покрывал их акриловым лаком в три слоя. Давал каждому слою сутки просохнуть и зашлифовывал наждачкой зерном 120, 240 и 1000. Акриловый лак нетоксичен и не имеет запаха, поэтому сушить можно в жилом помещении.

DIY клавиатура из фанеры

Разложенные элементы корпуса перед склейкой

Для скрепления половин взял анодированные чёрные болты M4 под внутренний шестигранник. Они отлично подошли к деревянному корпусу и чёрным кейкапам.

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

Монтаж и пайка

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

Читать на TechLife:  Приёмник с чередованием во времени

У контроллера 26 ног, а клавиш 50. Как же их подружить? Оказывается подключаются кнопки матрицей или таблицей, где кнопка — узел или ячейка матрицы, на столбцы подаётся сигнал, а со строк он снимается. У меня 50 кнопок. 48 из них помещаются в матрицу 8×6, ещё две в один столбец. Итого матрица 9×6, а это 9 + 6 = 15 ног из 26 доступных. Ещё потомкам останется.

Есть нюанс: если замкнуть какой-то столбец на строку, а потом замкнуть ещё один на ту же строку, то мы получим замыкание столбцов. А это ложные срабатывания или маскировка одних кнопок другими, что безобразие. Этому городу нужен герой и тут на сцену выходят диоды. Они не дают току течь обратно со строк в столбцы. Лайфхак: ноги у диодов длинные, так что я делал строки просто спаивая диодам ноги.

DIY клавиатура из фанеры

Принципиальная схема использование диодов

DIY клавиатура из фанеры

Матрица клавиш

DIY клавиатура из фанеры

Распаяные столбцы и строки

DIY клавиатура из фанеры

Матрицы припаяны к контроллеру. На листе стартовый лэйаут

Сперва я распаял матрицы для обеих половин, а потом уже столбцы и строки паял к любым свободным ногам контроллера. А потом перепаял половину, ибо сперва сделал матрицу 13×4, а её было оч неудобно описывать в коде.

Код

Этот этап меня пугал больше всего. Ведь нужно будет разобраться в строении чипа, как он опрашивает кнопки, как формирует сигнал на комп, каким протоколом оборачивает и проч и проч и проч. Но оказалось, что все эти вопросы давно порешали энтузиасты и делятся своими трудами в открытом доступе.

Самый простой путь оказалось использовать инструмент с сайта http://kmkfw.io/. Он позволяет настраивать клавиатуру просто меняя текст в блокноте. Никакой сторонний софт ставить не надо. Сам управляющий скрипт написан на пайтоне.

Здесь есть пошаговая инструкция http://kmkfw.io/docs/Getting_Started. На русском она звучит примерно так:

  1. С оф сайта Raspberry скачай CircuitPython вот здесь https://circuitpython.org/board/raspberry_pi_pico/

  2. Удерживая кнопку Boot на плате PiPico подключи usb кабель. Устройство определится как флешка.

  3. Скопируй скачанный .UF2 файл на эту «флешку»

  4. Отключи usb кабель и подсоедини обратно через пару минут. Он обнаружится как CURCUITPY.

  5. Скачай последнюю версию KMK с гитхаба https://github.com/KMKfw/kmk_firmware/archive/refs/heads/master.zip

  6. Из архива скопируй папку KMK и boot.py в корень «флешки».

  7. Также в корне создай или скопируй из примера файл code.py, сюда и нужно будет писать свой код.

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

По программе: нужно указать кол-во столбцов и строк матрицы клавиш (На этом этапе я перепаял половину клавиш, чтобы они удобнее умещались в таблицу). А потом массивом перечислить коды кнопок http://kmkfw.io/docs/keycodes/. Очень важно не забывать сдабривать массивы запятыми после каждого элемента, и после последнего тоже, или почитать как в пайтоне описываются массивы.

Финальный код файла Code.py

print(«Starting») import board from kmk.kmk_keyboard import KMKKeyboard from kmk.keys import KC from kmk.scanners import DiodeOrientation from kmk.modules.layers import Layers keyboard = KMKKeyboard() # Layers keyboard.modules.append(Layers()) FN = KC.MO(1) FS = KC.MO(2) keyboard.col_pins = ( board.GP0, board.GP1, board.GP2, board.GP3, board.GP4, board.GP5,) keyboard.row_pins = ( board.GP10, board.GP11, board.GP12, board.GP13, # Left Side board.GP21, board.GP20, board.GP19, board.GP18,) # Right Side keyboard.diode_orientation = DiodeOrientation.COL2ROW keyboard.keymap = [ # Base layer [ # Left Side KC.ESC, KC.Q, KC.W, KC.E, KC.R, KC.T, KC.TAB, KC.A, KC.S, KC.D, KC.F, KC.G, KC.LSFT, KC.Z, KC.X, KC.C, KC.V, KC.B, KC.LCTL, KC.LWIN, FS, KC.LALT, FN, KC.SPC, # Right Side KC.Y, KC.U, KC.I, KC.O, KC.P, KC.BSPACE, KC.H, KC.J, KC.K, KC.L, KC.SCLN, KC.QUOT, KC.N, KC.M, KC.COMMA, KC.DOT, KC.UP, KC.ENT, KC.SPC, FN, KC.SLSH, KC.LEFT, KC.DOWN, KC.RIGHT, ], # FN layer [ # Left Side KC.GRAVE, KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.TRNS, KC.N4, KC.N5, KC.N6, KC.MINS, KC.EQUAL, KC.TRNS, KC.N7, KC.N8, KC.N9, KC.N0, KC.NO, KC.TRNS, KC.TRNS, KC.TRNS, KC.LALT, KC.TRNS, KC.NUMLOCK, # Right Side KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.DEL, KC.NO, KC.NO, KC.MINUS, KC.EQUAL, KC.LBRC, KC.RBRC, KC.NO, KC.NO, KC.NO, KC.NO, KC.PGUP, KC.INS, KC.PSCR, KC.TRNS, KC.BSLASH, KC.HOME, KC.PGDN, KC.END, ], # FS Layer [ # Left Side Only for F1-F9 KC.TRNS, KC.F7, KC.F8, KC.F9, KC.F10, KC.F11, KC.TRNS, KC.F4, KC.F5, KC.F6, KC.F12, KC.F13, KC.TRNS, KC.F1, KC.F2, KC.F3, KC.F14, KC.F15, ] ] if __name__ == ‘__main__’: keyboard.go()

Читать на TechLife:  В России продают новейший кроссовер Geely до официального запуска

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

Я обклеил кнопки бумажным скотчем и писал на нём символы клавиш, садился работать. Если что-то не устраивало, тут же менял значения в блокноте, замазкой правил на скотче и писал новые, и работал дальше. И так, пока кнопки не заняли свои места. Потом скотч снял и белым перманентным маркером нанёс символы на кнопки.

DIY клавиатура из фанеры

Кнопки ищут своё место в жизни

Лайфхак. Удобно использовать экранную клавиатуру windows, потому что во время переопределения кнопок часть из них может оказаться неопределённой и с клавиатуры не получится их ввести. Чтобы её включить нужно правой кнопкой кликнуть по панели задач и поставить галку напротив «Показать кнопку сенсорной клавиатуры».

Клавиатура готова!

Смета

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

Raspberry Pi Pico

300

Свичи 50 шт

800

Кейкапы 50шт

1000

Диоды 1N4148 100шт

65

Резка корпуса

700

Болты M8 10шт

300

Белый маркер

100

Софт Blender, LibreCAD, блокнот

бесплатный

Удовольствие от сборки

бесценно

Итого

3300

Заключение

Клавиатура получилась компактной и функциональной. Правда необходимо ещё привыкнуть к новому положению некоторых клавиш. В биосе она тоже работает, однако не выводит комп из сна.

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

В основном остаётся творческая работа: решить какой формы будет клавиатура, выбрать на свой вкус свичи и кейкапы и решить где какие кнопки расположить.

DIY клавиатура из фанеры

Сравнение со старой клавиатурой

DIY клавиатура из фанеры

Немного близких ракурсов

DIY клавиатура из фанеры

Клавиатура с торца как слоёный пирог

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

Спасибо за внимание, всем хорошего настроения!

Теги:

  • клавиатура
  • клавиатура из дерева
  • кастом
  • raspberrypi
  • raspberry pi
  • pi pico

Хабы:

  • Python
  • DIY или Сделай сам

Источник

Каталог товаров с купонами и промокодами онлайн

Оставьте ответ

Ваш электронный адрес не будет опубликован.

©Купоно-Мания.ру