欢迎光临散文网 会员登陆 & 注册

初级QMK编译入门教程(2)——硬件部分

2021-06-08 15:34 作者:拆哪都行  | 我要投稿

书接上文,上一篇都是软件编辑方面的工作,看起来很考验耐心,毕竟真男人都是玩硬的!所以这篇开始详解硬件部分的工作吧!


开始之前,先上几张效果图吸下睛。


首先,要设计一个键盘壳子,并且用3D打印机打印出来。

完成上面那句话的工作,大概用了一周的时间吧……主要时间花在造型设计、建模和做效果图上了……打印的话,一宿就够了。


建模软件我使用的是3DS MAX,版本2015-2018都行不用刻意追新。


具体建模方法,不是一两句话能说明白的……也跟键盘改装的距离比较远,所以就不详述了……当然,也可以去淘宝上直接购买打印好的外壳,搜索店铺:做东做西。(毫无带货痕迹)



有些事,说着简单,但是做起来难啊……比如外壳的设计和打印,入上图从右到左,一共经历了三版,才算基本定稿了。绿色第一版,做好以后,发现前面放RGB灯条的空间做小了,网上查的尺寸跟收到的实物不同……于是做了中间黑色的,是第二版,结果发现一个第一版就存在的问题,就是键帽间距多留了。于是做到左边灰色的第三版,算是修整了所有重大漏洞。



大概看下效果,定位板之间的立柱顶到底板,增加支撑力。


接下来是惊心动魄的飞线环节,为了不造成恐慌,先放一张接线图,方便大家理解。

其实只是看着乱,原理还是挺简单的。参照之前固件中设定的针脚,逐个对应上去就行了。



装轴,装屏,装电位器,然后飞线。强迫症玩家请自动屏蔽此图。



红框中就是RGB电路板,一共有8颗灯珠。



线接到开发板上,图中接线不是最终版,后面因为改动了固件内的针脚设置,所以又改动图中接线。

测试好硬件部分没有问题以后,盖上后盖,四角贴上防滑贴。忘记里面那些漫天飞舞的电线吧……



刷入上篇文章介绍的固件以后,OLED显示不正常,RGB也无法调节。所以下一步要对之前的代码进行再次编辑。


关于旋钮帽的选择……其实是件很纠结的事情……所以只能买一大堆回来试着看效果了……



上一篇帖子中,使用的是全文本的方式进行编程,过程很不直观,而且容易出错。经过这段时间的学习,发现了一个相对简单一点的编程办法。其中几个网站的试用方法在我之前改路透社小键盘的帖子里有比较详细的介绍,这里就大概说下流程,不细讲了。






首先来到我们熟悉的http://www.keyboard-layout-editor.com/。



手动摆一个跟小键盘相同的配列图。左上角的按键代表编码器的按钮。然后复制代码到kbfirmware.com(以下简称KBF)



然后KBF会生成一个布线图,与我上面接的不太一样,后面又按照这个布线重新走了一下。最大的不同就是将我之前规划的5X4布局改成了6X4布局。

在PINS页面中设置行列对应的开发板针脚,WS2812 RGB灯光对应的针脚。

在keymap页面中设置按键定义。

在SETTINGS中设置WS2812 LEDs数量为8,也就是RGB灯条的灯珠数量。

最后在COMPILE页面中,点击Download .zip


解压缩这个压缩文件以后,进入到KB文件夹以后,我们会看到与之前在QMK文件夹中看到的键盘案例一样的文件架构。不过,这里并不是要将这个文件编译成固件,而是从这些文件中找到自己需要的代码片段,覆盖到之前编辑的代码中。




打开之前编辑的config.h文件(上图左),再打开KBF下载的config.h文件(上图右),将新修改的部分代码复制到之前的文件中。主要是修改行列数、针脚定义和RGB灯光设置。



后来经过测试,KBF的RGB代码直接复制过去以后,由于加载了全部RGB动画效果,所以开发板容量直接就装不下了……所以注释掉上图那行加载全部动画的代码,单独选两条灯光效果添加上,即便如此,开发板的空间使用量也达到了97%。



最后还要添加一行代码,将OLED默认的128*32分辨率改成128*64。这样就可以避免上面提到的OLED屏幕显示不正常的问题了。



打开MAK01.H和KB.H,替换部分代码。通过学习KB.H可以发现一个规律,就是上下两种键值是相同的,我之前编辑的代码中没有做到这点。



打开两个keymap.c,将KBF上下载的键值覆盖原有键值。将键层2上的代码改为RBG控制按键,并且添加了一个RESET按键,省得每次刷固件都要去按开发板上的按钮了。具体键值可以去QMK网站查询。修改后的键值代码如上图。


由于OLED的分辨率提高了,可以显示的内容增加了一倍,之前代码中显示的内容不能满足。所以对之前的代码进行了丰富。主要修改就是将之前显示层名称改成了显示层按键定义。这样只要看OLED屏上的提示,就可以知道当前的按键定义了。

OLED代码简介:

每组显示内容的开头代码。


显示文字内容的开头代码。后面的括号引号中,为要显示的文字。


换行。如果没有这个代码,所有文字将在同一行显示。


代码的修改策略就是,增加行显示的内容,保持原有代码架构不变。



大概标注一下代码与显示效果的关系。基本上,代码中绿色文字就是最终要显示出来的。


关于OLED,还可以实现更多功能,但无奈本人技术有限,所以暂时只能根据原有代码的架构进行简单修改。


关于RGB效果,目前代码只编写了手动调节的功能,包括颜色、亮度、纯度。其实QMK还有很多预设的RGB动画效果,只不过直接开启全部预设效果的话,开发板的空间直接就不够用了,只能手动挑选几条效果了。


关于PCB,其实也在考虑之中,就目前来看,数量比较少,单独折腾PCB也没什么太大必要。后面如果需要的朋友多的话,可以考虑增加。


关于这个键盘的定位,我觉得更像是一个固件编写的学习和测试用键盘,因为一般键盘常见的元素基本在这个键盘上面都有体现了。对于学习QMK编程来说,就很方便了。属于麻雀虽小,五脏俱全的性质。


代码修修补补以后,就可以用MSYS2生成固件了。然后刷入开发板,键盘就可以正常工作了。

生成固件方法见:https://www.zfrontier.com/post/detail/19335

刷固件方法见:https://www.zfrontier.com/post/detail/18651


最后刷几张完成图吧,手机直拍无修图,灯光亮度降低了很多,不然直接过曝。照片中,OLED屏有显示不全的问题,是因为手机摄像头与OLED刷新率不太匹配的缘故,实物观看没有这个问题。

滚动的杀马特RGB效果也可以实现……只不过……上年纪了,实在是有点驾驭不了了,单色常亮就行了……


这篇帖子拖拖拉拉的就写到这里吧,由于来来回回改了好多次。这么长的帖子,我自己都没有耐心重头校对了……所以如果有疏漏或者逻辑不通畅的地方,烦请各位看官留言斧正。有说的不够清楚的地方,也可以留言,我会尽我仅有的所能去解答。


初级QMK编译入门教程(2)——硬件部分的评论 (共 条)

分享到微博请遵守国家法律