请教如何自己动手制作机械键盘?

本题来自 @知科技 发起的圆桌 想买一个新键盘 »,更多相关话题欢迎关注讨论。本人程序员今天在淘宝上看到一款机械键盘: Qwerkywriter ,地…
关注者
368
被浏览
269,891

16 个回答

我准备用一两个月来回答这个问题。因为我准备着手自己做一个机械键盘。而且,真的是从0开始做,不同于一般的买配件组装。如果有什么不正确的地方,还请各位键圈的大佬多多指正。

首先呢,我们来看一下做一个机械键盘需要哪几样东西。

一个完整的机械键盘需要的配件和配料呢?

1)机械轴,欧美叫switch,日本叫“轴(じく)”,就是我们每个按键下面的小开关,这个部件我们是没有办法DIY的,一般我们直接购买,比如:樱桃轴(黑、红、绿、蓝、茶各取所需)、国产的佳达隆轴、凯华轴等,或者欧姆龙轴、Alps轴。但是,欧姆龙轴我不知道他的触角是不是和樱桃轴一样,我不熟悉,所以不敢用,而且,欧姆龙轴没有匹配的客制化键帽,除非你去买一些拆机量产键帽来用。alps轴,我知道的基本上都是拆老机器弄下来,一般不是真爱,很少有人敢尝试。这回我用类似樱桃轴的一种国产轴。

上图为ALPS轴外观,下图为国外某ALPS粉丝自制的60键盘

2)PCB。这个是一个键盘的灵魂,也是比较难弄的部分。如果没有一点电气知识和动手能力的话,一般人还搞不了。很多人基本是直接购买的,而且都是一些普通的配列,淘宝上可以买到GH60,或者一些客制化的60、68、75、87等配列的PCB来用。但是如果你要自己做一块的话,怕是不容易。这次我要做的是一款类人体工学布局(Ergonomics)的客制化键盘,在国内,还很少做这个吧。哈哈。幸好我有一个好朋友Astro,帮我搞定。我只要把配列告诉他就行。

3)定位板。定位板是将轴卡在板子上,作为轴体的支撑的部分,一般会用1.5mm后的碳纤维板、铝板、钢板、或者甚至铜板,每种材质的手感、声音都不同,给人带来的愉悦感也都不一样。当然,还可以不用定位板,直接把轴焊接在PCB上面的,而且有些量产键盘也会这样。一些粉丝认为这样手感很好(玄学吧可能)。这次我会自己画图,找外边加工。

4)外壳。这个部分是直接暴露在外部的机械键盘的盒子,也是我们判断一个键盘好不好看的很大的因素。一个好的客制化机械键盘由于外壳的造型、材质、颜色、质感的不同会给人带来不同的愉悦感。而且,外壳的形状,也是直接映射了作者的审美和对于自己键盘的理解。这次我会自己画图设计,委托外部加工。

5)键帽。这个部分可以因人而异,可以用拆机键帽,或者买一些便宜个客制化键帽。由于这次我的配列比较奇葩,所以准备使用美国SP生产的SA键帽,是一种复古的高球帽。

SA客制化高球帽SONG

6)其他辅材。包含螺丝(外壳、定位板用)、大键用的卫星轴(或者平衡杆)、组键盘用到的各种辅材(焊材、轴间纸、润滑油等)

7)软件。由于各个作者的习惯不同,用的软件不同,可能需求也不一样。我只说一下我需要用到的软件。

i) http://www.keyboard-layout-editor.com,键盘布局设计网站。这个网站真的是很好用,提别是像我这样的小白们的福音。

ii) builder.swillkb.com/,这个网站是用来自动生成定位板数据的网站。也是一个神器啊。我一直觉得基础软件老外真的很给力,而且很多都是出于Contributor的姿态,都是免费分享的,很敬佩。

iii) Adobe Illustrader,这个用来编辑定位板平面图;铭牌、配重等平面矢量图的制作。

iv)CAD看图软件,我不用CAD来画图,但是由于中间环节的切换和给别人分享图,需要这个来确认一下文件的正确性。

v)Solidworks,这个用来画外壳、定位板立体图、键盘上的一些装饰用的配件(比如配重、铭牌什么的),设置可以组装各个配件到一起,包含键帽模型安装上去的整体外观确认。甚至可以渲染,如果你要更完美一点的话。

vi)PCB设计软件:kicad-pcb.org/,emmm,这个我也不懂是哪个,全部委托朋友来做。

好了,以上就是大概需要的材料原料以及一些软硬件。


2019年6月9日(周日)

其实呢,这个项目已经准备了很久了,只是我一直比较懒,没有怎么推进。键盘键位的布局早在我日常间隙就设计好了。现在就把它变为现实。

首先,我们在KLE网站上,设计好的键盘配列,如下。

设计好的键盘配列

大家可以看到,这个键盘是比较奇葩的人体工学键盘的样子,左右手的键分隔开,并且将必备的几个重要功能键保留,尽量做到精简高效。这个布局数据68键盘的变形,同时我参考了国外EM7,Alice等客制化键盘,以及Leopold的FC660右侧的布局。

决定了配列后,将Raw data全部拷贝,打开builder.swillkb.com/网站,粘贴进【Plate Layout】框内。在【Switch Type】选择第二项或者第三项。其他选项适当勾选,因为一句话难以介绍,还是大家自己摸索一下的好。然后点击最下边的【Draw My CAD】生成粗略的定位板图。

Plate & Case Builder 界面

生成粗略的定位板的样子:

然后,保存SVG格式到本地。我们现在并不是在做最终版的定位板,这次生成的定位板主要是为了要每个轴的位置矢量图。

拿illustrador打开SVG文件,编辑轴孔的外形,以及大致的定位板边框。然后导出成DWG文件。

导出后的样子。

做这个的目的是为了做一张定位板,用来确认每个键的位置和间隙是不是有问题。因为键位数据细小的差距就会导致定位板、PCB、外壳无法完美匹配,我必须小心。 我刚刚把图发个一个做定位板的供应商,希望两三天后能拿到。如果定位板空隙没有问题的话。我就会把键位的数据发给我的朋友做PCB,同时,我开始左手画外壳,定位板的设计图。


2019年6月12日

今天拿到了淘宝定制的简易定位板。材质是1.5mm厚度的碳纤维板,由于是激光切割,厂家基本上当天就做好,完后发出了货。

下面确认一下每个键的位置对不对。拿出我的茶轴,安在轴孔上,然后将事先准备好的键帽安在轴上。

确认一下没个键的空隙是不是和当初设计的间隙一样。确认之后感觉还不错。“计划通!”

然后,准备制作PCB。上次忘记提醒大家,在KLE编辑好你的键盘布局之后,需要保存一下的。你需要注册一个kle的账号,编辑好你的键盘布局之后,点击右上角的【save】就可以保存好配列。然后需要用的时候,点击最右上角的账户名称,出来下拉菜单【My Layouts】就可以从新载入你上次保存的键盘配列。切记,一旦保存好之后,就不要乱动配置了。

再次载入我上次的配列。然后拷贝【Raw Data】给我的朋友Astro,他就可以通过配列的数据,通过软件制作一张PCB,当然,PCB的外轮廓尺寸大小, 还需要我最后画好外壳之后,在Solidworks里面确认是否匹配,因为外壳,PCB,定位板,轴体,键帽之间一定要完美镶嵌,不然,就是组装不起来了。确认OK后,才会下订单找PCB厂家做。

我呢,接下来就要画外壳了。

点击KLE页面右侧的【download】,下载SVG文件。会得到一个包含键帽轮廓尺寸的矢量图,注意,这回导出的不是定位板图,这次导出的是键帽轮廓图。拿到这个图之后,就可以根据这个图来画金属外壳了。

用AI打开的样子,

但是,实际上这个颜色信息并不完全需要,我们只需要键帽外轮廓的矢量图。编辑一下如下:

然后导出为DWG文件,稍后Solidworks中使用,根据这个来画键盘的上盖。


2019年6月25日:

关于PCB的制作方法,可能不太适合一点基础都没有的朋友。这是我朋友Astro写的,不过也能大概看个梗概吧。

1. 设计原理图:对于键盘来说,重要的部分就是主控模块(现在客制化PCB一般采用ATMEGA32U4,主要是软件支持比较好,而且可以使用各种Arduino的库,方便折腾),以及按键矩阵了。主控模块的电路基本是按Atmel的参考设计来做,按键矩阵就根据自己的需求改咯。如下就是一个60键盘的按键矩阵:

2. 生成PCB并完成布线:

完成原理图后,设置各种器件封装后就可以生成网表以供PCB布线软件使用。PCB布线是最主要就是要精确的摆放各个按键封装的位置。这时候可以导入前面生成的定位板文件来辅助定位:

那些白色线条就是导入定位板数据,这样最终的成品就能正确的焊上按键而不会相互干涉啦。

3. 生产:原理图,pcb都校验过后就可以发工厂打样啦。现在x宝快速打样厂的选择也很多,基本上下单到收货也就3天左右。而且有些打样厂还可以负责SMT贴片,这样板子到手基本上焊上按键,刷入固件就可以使用了。

4. 键盘固件:键盘电路版收到后,需要对主控刷入键盘固件,这样才能被操作系统识别为一个键盘,目前比较主流的固件有tmk, qmk。这些固件的功能都非常强大,而且可以很方便的定制。基本上按照他们的教程,半天时间就能做出一个功能全面的键盘固件,而且可以按照自己的需求进行定制。固件生成完毕后,可以使用QMK toolbox刷入主控:

基本上到这,一块板子就完工了。

其中使用的EDA软件是KiCAD(开源,免费);

键盘固件QMK(github.com/qmk/qmk.git,开源,GPL协议)。


2020年6月18日。接着继续去年的内容更新。

蓦然回首,发现正好要一整年了。哈哈。看我这个懒人。


去年做好的键盘布局,由于疏忽,github的账号里保存的配列都搞丢了。害得我,又去找帮我做pcb的朋友把配列图找回来,谁知道他保存的也是旧版的,得,有重新编辑了一下,确保和去年的基本一致。然后重新在x宝打样了一块临时定位板,按照之前的流程确认了键位。话不多说,就开始给外壳画图。

由于外壳是全铝合金的,需要CNC加工,所以在别人的推荐下,还是使用我的老朋友Solidworks。说道客制化键盘的外壳。根据作者的喜好可以随意配置。最简单的60键盘的外壳,可以只需要一个底壳,加上一个定位板。这种外壳设计容易,加工简单高效,通用性强,在x宝上可以找到很多,比如搜“GH60”,就能找到很多可以适配GH60 PCB的外壳和定位板。

有些客制化的作者,为了满足更高端客户的喜好呢。会设计更复杂的键位配列,和外壳。比如我的一个朋友设计的CA66:键盘外壳分上、下两个部分,同时为了装饰好看,还配有纯铜的铭牌(铭牌可以找老板专门雕刻喜欢的图案),以及在键盘下部会有凹刻的装饰性文字。

↑CA66客制化键盘,键帽为SA 128K for AE复古键帽

当然还有更为复杂的设计,怎么好看怎么来。

那么我怎么办呢。我还是走简单容易的道路吧,键盘主要为上壳、下壳、铭牌。基本上就简简单单的配置。

折腾了好几天,主要部件如下:

基本的外形决定了。之后还需要确认几个关键的尺寸。比如PCB的大小,要保证PCB的尺寸不会和外壳干涉,还有type-C接口的高低位置也必须和外壳配合好。等pcb的外形拿到后,我再拟合到模型中看看有没有问题。如果solidworks软件中没有问题,那么做出来的安全性就会很高。

TBC

键盘作为电脑录入设备,现在几乎是人手一把 ,人手几把了。常打字的人一定知道机械键盘的好处,力道均匀,触电稳定。市面上也有很多种常卖的机械键盘了,比如全键盘,缩小键盘,有线,无线,蓝牙,等等。

机械键盘的、键位布局连接方式,是选取一款合适的机械键盘的最重要的三点了。

作为程序员,一个红轴的,缩小布局的,带蓝牙的机械键盘,是干活时候最理想的不过的好帮手了。市面上满足以上几点的不少见,然而,同时满足以上几点的也不多见,让我们来看看。

1. filco minila air(之前叫错名字了,不应该叫圣手一代。。。)

这款应该是很优秀的一款了,他有67个按键,方向全键盘樱桃轴两个FN键(不得不说,非常方便) ,milia短空格蓝牙连接,用户编程,,啧啧啧,简直完美。

但事实上呢,打开某东你会发现,全球购的标价要1059元,好贵啊,并且它Del的位置也太六了吧,常用的home,end也只能组合键,电池竟然是干!电!池!!!

2.tada68pro

这款价格看上去就舒服多了只要不到500块,就能得到方向全键盘樱桃轴,蓝牙连接,用户编,,啧啧啧。

然而呢,del还是太别扭了吧(右上角的下面一个位置),右上角是一个很重要的盲位,居然给了波浪线(黑人问号.),独立home,end也是依然么有哇,再者键位已经紧张,长长的空格占地面积显得就。。。

3.其他不带独立方向键,del的键盘,排版直接抄袭标准104键主键区,用过都知道,那简直再碰都不想碰啊;;;

所以:我们的需求

  1. 缩小的键盘排版,方便携带。
  2. 无线的蓝牙设计,方便连接。
  3. 电池要充电的锂电池,方便使用。
  4. DEL位置要好一点,有独立的home end,独立的方向键,空格短一些多放一些功能按键。
  5. 樱桃轴,红。
  6. 价格合理,尽量便宜。

在DIY之后,我们将做出的贡献是

  1. 缩小的键盘排版,72键。
  2. 蓝牙
  3. 锂聚合物充电电池。
  4. DEL右上角,下面紧接独立的home end,独立方向键、必须的,milia3x空格,左右两个fn(非常方便了就),APP键、完全可编程(固件级别的可编程)。
  5. 樱桃轴、必须的,PCB三脚樱桃轴原理图库,电路原理图,钢板设计图。
  6. 成本价格300人民币!!!!!!!


真实设计:

效果图:

下面来详细说一下制作过程喽:

================================

寒假到了快考试了,忙。

未完待续。。

qsy

===============================续:2018年1月18日 :

下面来详细说一下制作过程喽:

1.矩阵键盘

行列扫描,可以使用少量端口去检测大量 输入。按键个数 = 输出端口数 * 输入端口数。

每次只让一行输出高,输入端口读到高电平的位置,表示 这个 位置的按键被按下了。因为此时其他行都是低电平,所以即使按下了,也不会影响此行的读入数据值。

然后再置高下一行,重复。

2.蓝牙模块

使用了xm-04-hid-k蓝牙键盘模块。某宝有售。

每次给模块 的数据是键盘 的状态,一共可以给六个键盘数据,也就是同时 可以处理六个按键 。若无 按键按下,则不输出,若 按下 了一个键,输出这个键;若始终只有一个键保持按下 ,则不输出;若这个键弹起则,输出0.

所以 ,代码要能检测到键盘的变化,并且要记录上次检测的结果,若与上次检测结果相同则不给模块发数据,检测到哪个键盘离开,改 相应 位置上 的 键值为0.

同时 ,还有抖动 过滤。

也就实现以下几个函数:

3.PCB,钢板

为更好的固定键帽位置,以及提高按键手感 ,我们需要在键盘上增加一层金属限位板。PCB布局要和钢板完全一致不然装不上,经过测量 与测算,我们做出了以上的按键layout,只要将轴的形状测量好,并把卫星轴的 位置掏出来,应该可以完成钢板的设计:

万能 的某宝:

原理图里面还加了一些开关,充电 电路等跟PCB一起画出来:

4.组装调试

我们会陆续将其开源到qiaosiyi/key-board 上面。

有希望一起动手制作的小朋友 [勾引]。

============================

未完待续

2018年1月18日

qsy

============================续:2018年1月19日

minila的卫星轴刚到,所以才把中间的凹凸键换下来,才能焊接轴,不知道有没有发现之前打字有很多多出来的空格,,,那是因为没装卫星轴,不能焊接轴脚,空格是虚挂上去的,会打多出来空格符。而且上面用了一个白shift右键,其长度也是不够3x的所以缝隙就显得大了。装好轴和键帽的样子:[装配结束]

再上传一段,打这段字时,录制的视频:

再上传一段,打这段字时,录制的视频,再打一遍:

https://www.zhihu.com/video/937494958173900800

====================

未完待续。

2018年1月19日01:28:05

qsy