基于Arduino pro micro的客制化机械键盘设计

2020-11-10 04:40耿烽淇高琪琪王振马睿刘飘
机电信息 2020年30期

耿烽淇 高琪琪 王振 马睿 刘飘

摘要:伴随着新时代和全面小康社会的到来,电脑已经成为很多家庭必备的家用电器之一,而键盘作为电脑一个重要的外设设备也备受人们的关注。鉴于此,基于自主设计的原理图,设计了一种客制化键盘,硬件上由内核为ATmega32U4的Arduino的微型专业开发板、触发压力较轻的cherry茶轴和PCB板组成;软件设计上,主要是在kbfirmware开源软件上设计键盘的排列方式、符号按键以及一些特殊的键位,之后导出源文件再烧录到键盘的主控板上即可;而键盘的壳体设计是在123D_Design软件上设计出键盘的底盖和上盖,并将其用3D打印机打印出来。

关键词:Arduino pro micro;客制化键盘;机械键盘

0    引言

随着社会的快速发展,电脑已经成为人们获取信息、完成工作的一个重要工具。尤其是对于学生和上班族来说,电脑更是他们学习和工作中必不可少的工具。而键盘作为电脑重要的外设输入设备,其性能显然非常重要,因为若是键盘的手感较重或噪声过大会对自己或者身边的人造成不好的影响,所以一个键盘的触感、外观、做工、键位布局、噪声、键位冲突等问题都是需要我们考虑的。在选购键盘的时候,要结合自己所处的环境以及自己的打字习惯选择一个适合自己的键盘。一个合适的键盘除了能不给别人造成困扰外,也方便了自己,提高了效率。因此,我们动手制作了一种适合自己的键盘,来满足我们的需求。

1    硬件构成

本项目用的是内核为ATmega32U4的Arduino的微型专业主控板(Arduino pro micro),选择这个板子主要有以下几个原因:(1)引脚相对较多,有14个数字输入/输出端口、8个模拟输入端口和4个10位的ADC引脚等等,便于开发者使用;(2)价格实惠,性价比较高;(3)体积较小,而且主控板上有一个PTC保险丝和二极管可以起到保护电源电路和纠正RX、TX电路的作用;(4)采用ATmega32U4的单片机可用于模拟HID设备,可以配合其他传感器模块做键盘输入;(5)使用开发板微型USB接口编程,支持USB串口下载。

Arduino pro micro引脚如图1所示。

2    电路设计

设计时选择了矩阵扫描键盘的方案,主要是因为使用的Arduino pro micro主控板引脚虽然不少,但是毕竟有限,如果要使用具备更多引脚的微处理器,花费将会增加,功耗也会更大。

机械键盘原理图如图2所示,从图中可以看出:当按键未被按下时,电路中没有电流通过,按键两边的电压为高电平;当按键被按下后,主控板给按键两边线路通入低电平,电流通过电路后键盘就能识别到是哪一个按键被按下。但是现实中我们使用的键盘都是多行的,如果仅仅只是这样设计可能会扰乱主控板的读取,导致主控板读取到错误的信息。所以,给每一个按键开关都配置了一个二极管来限制电流的流向,也就是阴极应该面向输出(列),阳极应该对着输入(行)。这样设计就可以使按键按下时不出现主控板被扰乱的情况;同时,一系列的二极管也可以起到防止电路短路的作用。

3    Cherry轴体的选择

众所周知,机械键盘有不同的轴体。对于喜爱机械键盘的人来说,采用cherry家用的轴体做的键盘都是很值得信赖的。轴体最广义的分类大概包括红轴、黑轴、青轴和茶轴。

(1)红轴:它的触发压力较小,使得它在按压的时候不弹手也不费力气。

(2)黑轴:虽然比较静音,但是触发压力大,手感较重,长时间使用会产生一定的疲惫感。

(3)青轴:触发建程较长,有强烈的段落感,会发出清脆的“咯啪”的声音,造成很大噪声。

(4)茶軸:它是最接近薄膜键盘的轴体,同时触发压力也较轻,属于万能轴。

综上所述,最后选择了茶轴,因为它兼顾了青轴的段落感和红轴的安静,并且还具有薄膜键盘的特性。无论是打字还是玩游戏都会比较舒服,是一种游戏和办公结合的轴体。

4    壳体方案

因为我们做出来的键盘和市面上一般的键盘区别较大,所以用3D建模软件123D_Design来设计键盘的上盖和底盖,如图3、图4所示。

5    软件设计

kbfirmware开源软件—qmk固件方案设计流程:

(1)根据TEX Kodachi的键列,在keyboard-layout-editor上设计好布局图。

(2)将keyboard-layout-editor生成的RAW数据复制到kbfirmware中,点击Import。

(3)kbfirmware上自动生成一个一个键盘矩阵,接着进行固件的自定义设置。

(4)在设置绕线的时候,因为机械键盘都有防冲二极管,所以要区分感知引脚和驱动引脚,红色线的Rows代表驱动引脚,灰色线的Columns代表感知引脚。

(5)设计页面上的Specify the diode direction指的是二极管方向,引进原理图后可以看出机械键盘的二极管负极接驱动引脚,正极接感知引脚。

(6)因为kbfirmware中线与线的连接都是点对点的连线,会造成线与线的相交,最好在Excel中建立表格,确定每一个按键的驱动引脚和感知引脚的数字,再填到kbfirmware中去。

(7)设计KEYMAP键列时,kbfirmware支持全键盘自定义。键盘可以自定义多个层并进行切换,点击需要修改的按键,就能显示其键值。

(8)接下来就按照自己的喜好去设置键盘的PRIMARY主键位、SECONDARY辅助键位、KEYPAD数字键盘、FN功能键和其他一些手动输入的键等等。

(9)Settings设置:在这里可以自定义键盘的名字,Windows系统能够识别出这个名字,并且还可以查看固件的大小以及相关主板的名字。

(10)所有的设置完成后,要保存配置JSON文件到电脑中,方便下次编辑。

6    特殊键位设计

设计的时候为了方便使用和节省材料,在键盘上设置了两个Fn功能键,一个是在空格键的左边,按下按键后键盘第一行的字母键会变成数字的功能键,可以充当0~9来使用。另一个是在空格键的右边,当按下这个Fn键时,键盘第一行的字母键会变成Fn功能键,用来实现改变电脑音量、屏幕亮度以及刷新等一些功能。通过这样的设置,就能将键盘上的按键尽可能地利用起来,以节省材料,降低成本。除此之外,还设计了一些常用的组合键,例如:Ctrl+A为关闭当前网页。这一系列组合键都是根据我们日常用键盘的习惯设置的。

7    结语

通过设计一个客制化的机械键盘,可以满足我们对于机械键盘的各种需求。因为无论是轴体还是键帽,或者是键盘上的一些特殊功能键,我们都可以凭着自己的喜好去选择和设置。这样设计出来的键盘才完完全全适合自己,能够最大程度上方便自己日常的学习和工作。

[参考文献]

[1] 陈吕洲.Arduino程序设计基础[M].2版.北京:北京航空航天大学出版社,2015.

[2] MARGOLIS M.Arduino权威指南[M].2版.杨昆云,译.北京:人民邮电出版社,2015.

[3] BANZI M.爱上Arduino[M].于欣龙,郭浩赟,译.北京:人民邮电出版社,2011.

[4] 翟新彦.电脑键盘上的功能键[J].农村电工,2009(4):37.

[5] 承建.电脑该用键盘还是触摸屏[J].个人电脑,2016(9):60.

收稿日期:2020-09-07

作者简介:耿烽淇(1999—),女,河南南阳人,研究方向:物联网技术应用。