自制(亚克力飞线) 机械键盘 QMK(tmk) firmware

Posted

版权声明:如需转载,请署名:Fengz,并注明出处: https://sync.sh

有一个小伙伴做了一个视频到B站,可以点这里

首先,先感谢 老杨 无私地给我带路。

因为市面上的键位布局都不太满意,主要是喜欢这个创作的过程,所以就萌生了自己做一个的想法。如果市面上的布局合适,个人建议还是直接买套件。如果想先了解大概过程,可以看YANG (不是前面提到的老杨)的: 全球首发,DIY了史上第一把可编程无线优联40%机械键盘

一、定位板和外壳

1、布局键位

首先,使用 KLE 网站做出自己想要的布局(建议用 github 登录,方便保存布局)。网站操作比较简单,先从“Preset”选一个比较相近的,这样改起来比较快。

操作提示:

  1. 修改按键宽度,点选对应按键,然后下面PropertiesWidth后面输入框 ,可以通过滚轮调整。
  2. 增加按键:直接点 Add Key
  3. 删除按键:点选对应按键后,点"Delete Keys"。
  4. 移动按键:点选对应按键,修改PropertiesXY
  5. 修改按键名称:修改修改PropertiesTop Legend

修改到自己合适的键位为止,布局是最好看看自己日常打字时拇指的位置,用 VBN这三个按键的位置作参考,布局最下边一列。当然还有各种宽度键帽的购买难易程度。

这个是我的(在Raw data),我这个不需要卫星轴,也就是不需要使用 CAD了,但是需要4个1.25x,4个1.75x,键帽不好凑齐,最后我放弃了。

[{c:"#c13828"},"Esc",{c:"#cccccc"},"Q","W","E","R","T","Y","U","I","O","P",{c:"#96938e"},"Back<br>Space"],
[{w:1.25},"Tab",{c:"#cccccc"},"A","S","D","F","G","H","J","K","L",{c:"#96938e",w:1.75},"Enter"],
[{w:1.75},"Shift",{c:"#cccccc"},"Z","X","C","V","B","N","M",{w:1.25},"<\n.",{c:"#c13828"},"Up",{c:"#96938e"},"Del"],
["Ctrtl","Super","App",{w:1.25},"Alt",{c:"#f67f00",w:1.75},"Fn",{w:1.75},"Space",{c:"#96938e",w:1.25},"Fn1",{c:"#c13828"},"Left","Down","Right"]

下面这个是要卫星轴的,图纸要改,但是只要2个1.25x,2个1.75x,2个2x。

[{c:"#c13828"},"Esc",{c:"#cccccc"},"Q","W","E","R","T","Y","U","I","O","P",{c:"#96938e"},"Back<br>Space"],
[{w:1.25},"Tab",{c:"#cccccc"},"A","S","D","F","G","H","J","K","L",{c:"#96938e",w:1.75},"Enter"],
[{w:1.75},"Shift",{c:"#cccccc"},"Z","X","C","V","B","N","M",{w:1.25},",",{c:"#c13828"},"Up",{c:"#96938e"},"Del"],
["CTRL","Super","App","Alt",{c:"#f67f00",w:2},"Fn",{w:2},"Space",{c:"#96938e"},"Fn3",{c:"#c13828"},"Left","Down","Right"]

二、生成定位板或外壳

  1. 打开http://builder.swillkb.com/,将上一步的 'Raw data' 内容贴入 Plate Layout,其他默认,然后点 Draw MY CAD 预览,默认会得到一个铝合金的定位板,放到 CAD 软件里面打印成纸张,比划一下,改改就能用(如果有卫星轴不能直接用于亚克力,请往下看)。
  2. 这个网站支持直接生产夹心样式的外壳套件。在 Case TypeSandwich,然后预览(因为这个工具很方便,建议边修改边预览)。
  3. 增加 USB 口,USB CutoutON。后面 Location填数字,0是中间,负数是向左边移动,正数是向右边移动。只支持在键盘的顶部出 USB ,如果需要在侧面,就不要设置这个选项了,导出后自己在 CAD 软件修改。
  4. 增加螺钉孔。Mount Holes,第一个是数量,第二个是孔径,如果用M2螺钉,设置成2,如果要用铜柱,应该是3.4。第三个空是位置,看着预览改吧,一般和下一步的边缘设置成一个数。
  5. 设置边缘。可选,一般入门还是选吧。。。ON!,上下左右,边缘,建议值是7或者6。
  6. 设置圆角,Plate Corner,建议值是3。

最后就是预览,在 CAD 软件细改。 重点是要选好螺钉孔大小。我40%键盘用了6个 M2 螺钉,可以参考别人的图片。 注意: 这个站点生成的 CAD 文件是给铝合金或PCB使用的,如果用亚克力做,卫星轴的开孔位置要加宽,需要修改,可以参考淘宝那些亚克力板子。

关于螺钉选取: 一般使用M2螺钉,有沉头和普通螺钉两种,如果需要用沉头的,需要先联系做亚克力的店铺,问号能不能做,不能做的话就只能用在买沉头垫片了。 因为亚克力做沉头似乎比较麻烦,我这次就选择不做沉头的。下面以我的实际情况举例: 因为不用沉头,老杨建议是使用铜柱子,铜珠是螺母在亚克力里面,键盘上下都拧螺钉进去。 例如亚克力一共厚13.5mm,那么我们买13mm的铜柱,上下都用垫片,把垫片厚度(2mm)算进去,加起来就是17mm,可以买8mmM2螺钉,两边拧进去,中间应该还有1mm才碰到,我觉得稍微短一点也行。

二、准备电路元件

  1. 二极管。作用就是使用简单行列布局时,按键不会冲突,不用二极管的那些键盘是分析按键使用情况,键位布局不是直接横竖排列的(其实不用管,买了焊就是了)。因为是没有PCB的方式,所以二极管使用直插式的(也就是不是贴片),型号是 'IN4148',一个轴一个。
  2. 轴。
  3. 主控:arduino pro micro 32U4 ,这个看个人了,这个最广泛,才十几块。

三、焊接键盘矩阵(Matrix)

1. 焊接行二极管

1. 将所有轴放到定位板上,注意统一方向。建议将引脚那边放到上面,可以参看后面放二极管的图片。为不造成误会,说明一下图上左上角的是退格键(从板子背部看)。

  1. 准备二极管。为了方便焊接(增加与轴脚的接触面,方便上锡)以及避免搞错正负极(二极管,黑色那边负极,这个不用管,按图片来),建议如下图折弯。

  1. 先像下图那样放置二极管然后焊接,放一个焊一个(图中左上角轴上蓝色圈那个是焊接点),先焊完顶部一行。最后一个也是向右边折,折出来这个后面主控就接这里,请记住了,我后面会提到。

  1. 焊完顶部一行后,先按图片第二个轴上红色线段所示,用钳子(指甲刀?)剪断二极管多出来的引脚。

  2. 将二极管黑色管脚(未焊接)的管脚用镊子按图中黄色箭头方向折90°撘到另外一个二极管的管脚上。按这个方法将第一行的所有二极管管脚折90°,撘在一起,然后用电烙铁将这些搭接点焊接上。

  3. 使用同样方法,将所有行的二极管都焊接上。焊完后请根据二极管外观,看一下有没有正负极焊错的。成果如下图。

2. 连接列线路

在说如何连接列之前,先拿出大杀器:QMK Firmware Builder

  1. 访问 QMK Firmware Builder 先将第一步提到的 'Raw data' 粘贴到 Paste layout here... 那个文本框内,然后点击 Import

  1. 如无意外,将对得到一个如下图的连线图(这个是正面的,要钩上面那个Flip才与我们看到的一致)。

  1. 我们重点看黑色线,红色横线我们已经焊接完了,就是我们焊接的二极管。
  2. 我们按图上所示,将每个轴另外一个脚焊接起来,这里用的是有绝缘层的线(我用的线淘宝有,叫OK线,一卷就够用了)。这里描述一下我的接法,先剪一段,然后一头去掉2毫米的外皮,去外皮直接用指甲一拉就好。然后像二极管那样弯一下靠到第一行轴的另一个脚上,焊接上。然后另外一头从底下穿过二极管的行线路(这样线能固定好,美观些),把线拉好,在第二行轴脚的位置上,量好位置,用指甲压住,把线拉一下,线芯就出来了,在轴脚上绕一圈,焊接上。以此类推,接完剩下的。 至于为什么要按给出的图连线,是为了后面配置键盘矩阵时直接偷懒。。。而且给出的连发是最简单,最合理的。连完后,应该像下图一样。

到此,键盘矩阵已经焊接完成,建议稍停一下,看看每个脚没有有焊错,特别二极管正负极有没有接反。

四、将键盘矩阵接入主控

  1. 将Pro micro 按下图中有黑色标注的引脚填上焊锡,一共16个。

  1. 取16段 OK线,都取20厘米吧。一头拔去1毫米的外皮。加热 Pro micro 刚刚填入焊锡的孔,等融化后将 OK 线插入。依次接入16根。如下图。

  1. 按 Pro micro 的图片,先接 ROW 线路,一共4根,接到上面焊接二极管时提到的每行最后一个二极管弯出来的引脚那里。可以根据主控的位置,适当截断 OK线的长度,在布线时我是从之前的线路下方通过的,这样线也被固定了,不会乱走。主控我是布局到中间的,大家可以根据自己情况进行调整。

  2. 接着按 Pro micro 图片的 COL 所示,从 COL1 到 COL12,对应连接到键盘最顶一行从左到右的轴上,焊接的轴脚是上面接OK线,列连接的那一个轴脚。(我刚开始就接错了,头晕接到二极管那里了,刷了固件后没反应,还好老杨一眼就看出来了。。。) 下面这个图,就是接错的。。。

注意:不按图片接也行,只是线太多了,接乱了可是噩梦!

到此,主控接入键盘矩阵的工作已经完成了,离完成不远了。

五、配置固件

  1. 访问 QMK Firmware Builder 先将第一步提到的 'Raw data' 粘贴到 Paste layout here... 那个文本框内,然后点击 Import。查看下面的 WIRING部分,ROWS我这是4,COLUMS是12没错。二极管方向 Specify the diode direction.应该是 Column to Row,上面使用的就是这个方法,同时也是建议使用的方法。

  2. 点击PINS进入主控针脚设定。首先选取主控型号,Pro Micro 选取的是 ATmega32u4。下面是配置行列接入的针脚。这里使用的是别名,可以查找下图绿色字体部分(请忽略第一个字母P

  1. QMK Firmware Builder 这里的 Rows 和上面我们接键盘矩阵使用的图片:

上一步参考的是 ROW 1 - ROW 4,而这里配置使用的是 ROWS 0,1,2,3。程序员一看就懂,看不懂就分两行写,一个从1开始数,一个从0开始。。。

如果按上面接法,应该是:

Rows Columns
0 D1 0 D7
1 D0 1 E6
2 D4 2 B4
3 C6 3 B5
4 B6
5 B2
6 B3
7 B1
8 F7
9 F6
10 F5
11 F4
  1. 配置keymap,配置MACROS,这个不写,我还没玩得转。

  2. 配置QUANTUM,这个不敢动。

  3. SETTING,我使用了默认。这里可以点击 SAVE Configuration,便于下次修改配列时重新配置一次 WIRING 和 PINS 部分。

  4. 下载,点击COMPLITE,点击Download.hex,下载编译完成的固件,对,不用自己编译,省事。

六,刷入固件

1.上电,并复位。要想 Pro Micro 进入刷机模式,就需要点击复位键,就是让 Pro Micro 针脚 GND 和 RST 接在一起(在图右上角,从上到下依次是:RAW,GND,RST)有两种方法可选:一是每次想刷固件时拆开一下,用镊子短接。二是接一个按钮。我选择了接线。QMK虽然有提供软件 REST,但我用下来还想不太好用。

  1. 想上面说的那样,给 GND和RST两个孔填上焊锡,减两段OK线,接上,这两根线的另一端我接到了插针座上,刷机的时候我就用插针线短接两下,接点触式开关也行,随便。然后我把它放到了空格的位置上。(打算不用卫星轴了,所以有这么多空间,准备用贴纸把这几个洞封上)(Rest接孔在这个轴的左边那里)

因为现在我电脑上只有 Manjaro 这一个 Linux系统,所以 Windows 如何刷软件部分我就不写了。 QMK官方有提供图形工具:qmk_firmware_flasher

下面介绍 Linux 下如何刷。

  1. 安装 avrdude。 pacman -S avrdude

4.进入到保存 hex 的目录,以下使用 XXX.hex 为列。 avrdude -p atmega32u4 -P /dev/ttyACM0 -c avr109 -U flash:w:XXX.hex 不需要 sudo

  1. 直接刷会提示没有设备。要接入键盘,RST 两下,然后马上运行上面的命令,似乎只有8秒? 不行就多试验几次。可能你的不是/dev/ttyACM0,不行再检查修改吧。

  2. 根据提示,一般就成功了, Yeah!

七,封胶,组装

拔掉电脑上的USB!!!

  1. 建议刷固件时,所有键都配置一个按键,然后测试一下,等所有按钮都有反应时再装。(Linux下使用xev命令就好了)
  2. 在每个轴上点上热溶胶,记住要在另外一边把轴按到底。每个都固定好。

  3. 键盘那一边接上 MicroUSB线,根据亚克力外壳的开口位置,放置主控,放置之前,先在主控上面用电工胶布贴一下,放置与键盘矩阵部分相接发生短路。将主控放平,确定固定后能顺利接上 MicroUSB 连接线(这就是我为什么要求现在就接上,我做的时候,没留意,固定好了后发现太靠轴了,线接不上。。。)热溶胶如果固化后,热溶胶枪头能能让它重新融化的,不过很麻烦。粘好后会很难看,不用介意,我的是这样的:

因为键帽没到,先随便装着用一下。(这篇文章从焊接二极管开始就是用这个键盘的。除了标点外,其他都很适应了,我使用的是拼音输入法,数字选字.QMK很强大的,我选字用的是右空格,直接按是空格,按着再按w就是2,功能很强,一起交流吧)

增加:加了个RGB灯,在D3,也就是板上的TX0口。从GND和VCC接的电源,还不错。(ws2812)

参考:

  1. http://www.40percent.club/2016/08/self-flashing-planck.html
  2. https://deskthority.net/workshop-f7/brownfox-step-by-step-t6050.html

感谢: 1. K.T.E.C 后勤部所有成员,特别是老杨。

感谢以下软件(工具)的作者:

  1. https://github.com/qmk
  2. http://www.keyboard-layout-editor.com/.
  3. http://qmk.sized.io/ (域名已改为: http://kbfirmware.com/ )
  4. http://builder.swillkb.com/

-EOF-