返回首页

一把开源人体工学键盘的构建流程-Corne

详细记录了Corne分体式人体工学键盘的制作过程,包括零件清单、焊接组装步骤以及QMK固件的配置和使用方法。

  一个月前我做了第一把客制键盘 ergodox。毕竟是第一次做键盘,整个过程还是挺曲折的,第一次用电烙铁各种不熟练,好在这把键盘应该是教程最多最详细的了,一点点地啃文档和视频最后还是做完了。总共花费不到四百吧,用的最普通的 pcb 外壳和键帽。唯一优点就是便宜,毕竟动辄两千的 ergodox-ez 不是普通人买得起的。

  当然 ergodox 还不能算是退烧键盘,实际使用过程中大拇指区那几个小键基本用不到,而且体积也偏大,出街是不用想了。也是逛 github 时无意间找到了一把分体式人体工程键盘Corne,第一次看到就很惊艳,结合了 planck 和 ergodox 的优点,而且大拇指区的按键位置很合理。当然配列这个因人而异,mechanical-keyboard里涵盖了目前绝大部分的开源机械键盘,找一个自己喜欢的配列做就行了,里面还包含了一些从零开始飞线和设计 pcb、外壳的教程,非常适合新手入坑客制化。下面简单介绍下 Corne 的组装流程。

零件清单

名称数量备注
pcb2
Pro Micro2Pro Micro会送排针
四针OLED显示屏2
SK6812mini54轴灯×42,底灯×12
二极管42贴片式,比如1N4148 SOD123
凯华热插拔底座42
耳机插座3.5MM2PJ-313D可用
机械键盘轴体开关42
轻触开关23×6×5mm可用
定位板、夹层、底板2
m2螺丝246mm左右
m2铜柱14各种长度的铜柱多备点,个人用的9mm和4mm的铜柱
m5螺丝815-50mm
m5螺母16
3.5mm音频线1TRS、TRRS均可

  所有零件除了芯片全部都是国产的,不算键帽外壳全部用亚克力一把的成本也就不到三百吧。这里亚克力板我一共用了三层,分别是 1.5mm 的定位板(补充:后来觉得 1.5mm 的亚克力太脆了就换成 pc 材质了),3mm 的 pcb 和定位板间的夹层,4mm 的底板,再加上 pcb 板一共四层,手感比较扎实适合线性轴。轴体我上的凯华 box 红,批发八毛一个,相比 cherry 和佳达隆良心多了。

焊接组装

亚克力结构
亚克力结构
背板
背板
简单贴两张图吧,官方 doc 里介绍的已经很详细了,可参考我的完整组装视频。谈几点要注意的:

  • 官方 doc 里 Pro Micro 是热插拔的,我感觉没必要就用 Pro Micro 自带的排针直接焊在 pcb 上了。正好也省的额外买排针排母。
  • 热插拔底座贴在 pcb 上直接上锡就行了,我视频里有焊盘预上锡,其实没必要的。不过焊二极管时还是最好要在其中一边的焊盘上预上锡。
  • 焊 led 灯时温度不要过高,烙铁接触 led 灯的不宜过长,不然很容易烧毁。当然温度低的弊端就是不容易上锡,再加上我电烙铁用的不太熟练导致最后焊的很难看,反正平时看不到也就无所谓了。(20190911 补充:买个好点的焊台和熔点低的焊锡丝就不用担心 led 烧毁了)
  • 焊灯时要记得焊几个灯就测试一下,默认固件通上电全部灯都是红色的,虚焊会出现不亮或者变成其他颜色。SK6812mini 四个引脚分别是电源、接地、数据输入、数据输出,如果出现不亮的情况打开 Kicad 参照电路图就很容易确定是哪些引脚虚焊了。

组装时要注意两层亚克力板间上 m5 螺丝的位置要塞一块填充片,厚度是和用的铜柱高度一样的,组装完成的示意图:

填充片
填充片
20190417 233043
RGB效果
RGB效果

刷固件

  一般固件在焊好板子前就提前刷好了,这样方便测试 led 和显示屏是否正常,减少返工的可能。不得不吐槽,Pro Micro 的 bootloader(Caterina)应该是我用过的 bootloader 里最难用,唯一优点可能就是便宜吧。当然如果实在不喜欢 Caterina 也可以把 bootloader 换成 dfu 或者 qmk-dfu 的,有能力的可以尝试下。replace_pro_micro_bootloader_with_qmk_dfu

  固件毫无疑问使用了目前最强开源键盘固件 qmk,配置好环境后(参照https://docs.qmk.fm/#/newbs_getting_started)一行命令就完成了编译刷固件等所有操作。(windows 下环境配置因国内网络环境问题需要更换源比较麻烦,linux 下环境配置相对简便很多)

sudo make crkbd:default:avrdude

  当然也可以先编译 hex,后刷固件

make crkbd:default
sudo avrdude -p atmega32u4 -P /dev/ttyACM0 -c avr109 -U flash:w:crkdb_rev1_default.hex

  直接刷会显示Detecting USB port, reset your controller now...,这时轻触两下 reset 开关,没有开关的话就用镊子短接两次 RST 和 GND 一般就成功了。

  实际刷固件的过程中也是遇到了非常多的问题,各种不稳定,而且每次都会报各种不同的错误,一上午的时间查了各种资料只成功了两三次,这些问题在我之前用 Halfkay 和 dfu 时从来没遇到过。后来无意间把线从机箱前置 usb2.0 接口换成后置 usb3.0 接口就稳定了,所以如果你也遇到相同问题换台电脑或者换个接口试试吧(也不一定,比如我的笔记本不管哪个接口都不行…)

固件配置

  QMK 功能实在太多啦。。想了解更多 QMK 功能还是参考官方文档,列几个常见问题。

键位布局

  很多人觉得键位这么少的键盘根本没法用,其实只要花时间把 qmk 官方文档大概看一下就知道现在开源键盘有多强大了。40 键盘适应后完全可以应对编程和日常工作。40 配列能尽可能减少打字过程中手的移动,再加上分裂空格的存在,甚至比我之前用 60 键盘的效率还高,附上我目前打字使用的配列(keymap)。

切层逻辑

  平常使用键盘用的最多的估计就是 Fn 切层键了,tmk 中关于切层逻辑的设置比较少,TAPPING_TERM 如果设置不当高速打字下还是会出很多问题,想要实现更复杂人性化的切层逻辑就只能修改源代码了。qmk 在 tmk 基础上新增了几个选项,个人最常用的就是 PERMISSIVE-HOLD IGNORE-MOD-TAP-INTERRUPT TAPPING-FORCE-HOLD 这三个(参考tap-hold-configuration-options)。设置得当可以解决 SpaceFn 高速打字时的痛点。注意 TAPPING_FORCE_HOLD 会和切层功能TT()冲突,不过这个切层功能很少用就是了。

减少固件体积

  Corne 默认固件编译完就达到了 28000+bytes 的体积,想加入一些常用功能如鼠标键或蜂鸣器之类的就很难了,减少固件体积的方法:

  • rules.mk文件中添加
EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization

  flto刷完以后一些键的功能有问题,暂不清楚原因。

  DUSE_Link_Time_Optimization倒是没发现什么问题,能减少个约 300bytes 的体积,聊胜于无。

  • Disable 不用的灯效,Disable 某些不用的特性。比如Tap DanceLeader Key之类的。40 键盘两层就可以容纳所有字母数字符号了,太复杂的功能反而用不上。一些常见的 features 体积

  • 换成 AT90USB1286 等芯片,拥有更大的 FLASH 内存,即使加入所有 qmk 特性也不用担心会超内存,连 Planck Rev6 都用上 STM32F303 了。等今年所有事忙完可能会填这个坑吧,pcb 倒是不难搞,ai03 那开源了不少,改改配列就行了。有时间得学下怎么焊芯片和 type-c 接口。


End

   也是逛 github 过程中无意间发现了 tmk、qmk 这些优秀的开源固件,让我踏入了客制化大坑。开源的存在让我这些没有硬件编程经验的小白也能很快入门并上手,很享受这种发现问题并解决的过程。接下来工作压力不断变大没时间折腾了,等年底有空再把坑补上…