Helloqiu's Blog

helloqiu 的博客

记录自制的第一把分体式键盘

完成图
加入长亭已经快两个月了,在被公司大佬的 Ergodone 吸引之后,终于也忍不住入了分体式键盘的坑。
总的算起来,靠每天 在公司摸鱼的时间 一个小时的时间前后花了大概三天就做了出来,还是挺快的。
这篇文章就用来记录一下制作这个键盘的过程。

0x0 选择键盘

做一个键盘的第一步当然是选择喜欢的键盘啦~
在 GitHub 上其实有许多开源的键盘,一般都会提供 PCB 和教程。同样也有一个 repo 记录了许多开源的键盘以及介绍:https://github.com/help-14/mechanical-keyboard,可以方便的快速找到喜欢的键盘。
这次我选中的键盘叫 Redox,repo 地址在这里:https://github.com/mattdibi/redox-keyboard
效果图
从 repo 中的效果图可以看到,它的配列大概是 6x5 的设计,相比于 Ergodone 这种比较大的键盘来说少了不少的按键,但这种设计的优点是键盘的尺寸也变小了。它的固件使用的是 QMK firmware,这样刷写固件和自定义按键都会比较方便。

0x1 需要的材料

由于这次要做的键盘基本属于全客制化,所以套件什么的肯定是没有的,所以一切都需要我们自己去做。

PCB

从官方的 repo 里我们可以找到作者提供的 PCB 文件,如果不需要更改的话,可以直接把里面的一个叫 gerber_files.zip 的文件发送给淘宝做 PCB 的卖家进行打样。我找的卖家最少一次做 5 个,费用是 140 元。
如果你是一个高段位玩家,需要对 PCB 进行一些更改,作者同样提供了设计文件,可以使用 Kicad 进行更改。
更改完成后,需要点击这里重新生成 gerber 文件。
导出文件
之后最好逐层检查一下生成的文件,因为一旦制作出了板子发现有问题就只能重新做了。
检查文件
淘宝做好的 PCB:
pcb

原件单

原 repo 里有一份 Bom list,所以我就直接翻译一下了。

原件名称 数量
1N4148 直插式二极管 70
PJ-320A 4p 3.5mm 音频接口 2
4.7kΩ 直插式电阻 2
6mm x 6mm x 4.3mm 轻触欧姆龙开关 2
Arduino Pro Micro 2
TRRS 线(四段的音频线就可以) 1
M3 8mm 自攻丝螺丝 10
USB micro 线 1
你喜欢的键盘轴 70

当然,组装键盘还需要电烙铁,螺丝刀等工具。

外壳

外壳是所有材料中最头疼的,最终我选择了 3d 打印。在 thingiverse 上可以找到 redox 的外壳文件:https://www.thingiverse.com/thing:2886662
打印的话找淘宝的卖家大概花费是100块左右,但是其实精度并没有想象中的高,在把轴插到定位板的这个环节中由于定位板精度不够,我只能用小刀人工校正QAQ
外壳

0x2 焊接

完全参考 repo 中的说明:https://github.com/mattdibi/redox-keyboard/tree/master/redox
焊接的话由于全都是直插式的原件所以并不是很困难,需要注意的是要分清楚二极管的正负
由于焊接的过程中并没有拍照片所以这一部分就完全参考官方的说明吧。T_T

0x3 固件

编译固件

根据 QMK 文档中的介绍,最简单的构建方式是使用 docker,官方提供了包含编译工具的一个 image,直接把源码挂载进去编译就可以了。
运行

1
docker run -e keymap=$键盘布局 -e keyboard=$键盘名称 --rm -v $源码路径:/qmk:rw edasque/qmk_firmware

建议根据作者的说明在 config.h 中启用 EE_HANDS,这样左右手刷写相同的固件就可以了。
之后静静等待奇迹的发生。如果一切顺利,编译好的固件会出现在源码的根目录。

写入固件

往 Arduino Pro Micro 中写入固件的话需要用到 avrdude
首先我们由于启用了 EE_HANDS,需要写入 EEPROM:

1
avrdude.exe -p atmega32u4 -P $串口号 -c avr109 -U eeprom:w:./qmk_firmware/keyboards/lets_split/eeprom-righthand.eep #左手使用 lefthand

在 EEPROM 中写入左右手的信息就不用我们为左右手编译两个不同的固件了。
之后就可以写入真正的固件了:

1
avrdude.exe -p atmega32u4 -c avr109 -U flash:w:"C:\code\qmk_firmware\redox_rev1_default.hex":i -P $串口号

用笔戳一下 reset 开关,固件就会开始写了。

0x4 定制布局

打开 \keyboards\redox\keymaps\default\keymap.c,按键的布局都在这里,可以根据 QMK 的布局指南 来修改。
分享我的布局:

1
2
3
4
5
6
7
8
9
10
11
12
13
/* QWERTY
* ,------------------------------------------------. ,------------------------------------------------.
* |`-Lyr2| 1 | 2 | 3 | 4 | 5 | Lyr1 | | Lyr1 | 6 | 7 | 8 | 9 | 0 |--Lyr2|
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
* | Tab | Q | W | E | R | T | [{ | | }] | Y | U | I | O | P | = |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
* | Esc | A | S | D | F | G | PgUp | | End | H | J | K | L | ;: | ' |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | PgDn | | Home | N | M | , | . | Up | Shift|
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
* | del | + | - |*(Alt)|/(Ctr)| Bcksp| Gui | |Enter |Space | Alt | \ | Left | Down | Right|
* `------------------------------------------------' `------------------------------------------------'
*/

修改完之后重新编译&写入就可以了。