如何从0开始diy一把机械键盘?(一)

科技   2024-07-25 22:03   广东  
    最近一直居家休息,闲着没事开始琢磨键盘的问题。之前曾经因为一些邪火加键盘不顺手生气砸毁了自己的K580,一怒之下下单了Q12MAX,结果后来冷静下来又退掉了。众嗦粥汁,键盘作为平常接触最多的输入设备之一,键盘好不好用直接决定了工作效率高低以及打游戏的节奏。而由于一些工作需要以及个人习惯的问题,现在市面上绝大多数的键盘都不太符合我的使用习惯。于是经过了几秒钟的大胆思考,根据自己的一些技能,我决定干脆自己从0开始diy一把键盘。
(当然你们也看到标题了,这篇文章截止目前目前并没有实物完成,只包含了前期的部分工业设计和pcb layout,看起来会比较枯燥。)

一、PCB设计
    首先,diy机械键盘需要确认自己的真实需求是什么样的。为何我在前面说市面上绝大多数的键盘都不符合我的使用习惯呢?因为我有个很邪门的习惯就是左手小键盘(比如财务、绘图、设计、程序等等)。要么就是厂商没有相关产品,要么就是产品奇贵(这里点名批评某1200+的一体式左手机械键盘),以至于我现在的设备是78配列+无线小键盘的神奇布局。然后就是需要完整的F区和部分功能区。其实很多人忽略的一点是,小键盘区在不开启numlock锁的情况下是可以当做功能区使用的,所以功能区大部分键位可以通过小键盘区实现。
    确认了需求后,接下来就是设计配列。但是在这之前,我特意去嘉立创的开源广场查看了嘉立创是否有相关的开源工程。可由于左手小键盘需求确实很低,嘉立创开源社区也没有相关的项目。
    但是我找到了一个以STM32F103为主控的96配列机械键盘项目。仔细查看了一下键位,基本符合我对键位的需求,出于开源项目基础不用白不用的心态,我决定在这个项目上加入一些自己的需求。
    基于原项目为GPL3.0协议,且本项目为本人基于原项目改版,本人对本项目不持有任何著作、许可、专利权,且承诺在项目完成后对本项目的所有图纸、设计、程序开源。
    确定基础后,首先需要键盘的配列扒出来。所用到的网站就是客制化圈子里大家常用的keyboard-layout-editor。这个网站可以自定义配列,配合其他网站和工具,可以对机械键盘的一大部分设计快速化,节约出大量的时间。具体的使用方式这里不再赘述,总之用到的按键就添加,用不着的按键就删,调整键位上下左右箭头移动即可,网上存在大量的教程有兴趣的可以去看下。
    我根据自己的使用习惯,大概确定了自己的键位布局。
    至于右边为什么凸出来一块,我只能说我实在想不出来有什么好的办法隐藏掉这一块了,不过干脆留做设计余量吧,以后说不定要无线化就不用继续找空间塞无线模块。
    然后我们可以在网站上复制自己的配列数据,到另一个网站上生成自己的定位板。
    网站名为Plate & Case Builder,只需要自己将上面的数据复制进去,就会生成一个和自己要做的PCB大小完全一致的定位板,但是考虑到你需要固定他,建议自己用CAD在上面画好孔位。
    别问为什么,这样选就是了。
    之后你会得到一张下面这样的图,记得保存为dxf格式,我们之后要用这个图的布局做PCB和定位板。
    接下来就是利用这张CAD,将原项目的PCB修改成自己所需要的形态。
    先说一下原项目的问题所在,原项目最大的问题是热插拔部分并没有采用现在非常成熟的凯华热插拔轴座方案,而是采用了老旧的铜鸡眼方案。考虑到我个人是个很讨厌机械键盘换轴且有坏了就扔坏惯的人,这个方案其实影响不大,但是会让很多“发烧友”很不舒服。但是我个人的观点是,键盘键盘,首先他得是个键盘,先满足正常输入的需要,再说其他的进阶需求。况且铜鸡眼改轴座要重新设计PCB封装原理图要重画足足96个位置,想想心态都崩了,直接算球,下个版本再改。
    其次是原PCB上直接设计了Type-C母头,这个其实不是什么问题,不如说是我在改PCB的时候对外壳设计完全没有思路,所以干脆将USB接头以SH1.0的插头呈现出来,到时候直接转接线+转接板搞定一切。
    这次用到的软件自然是嘉立创EDA,主要是之后打板什么的会更方便,器件什么的都比较全,不多说,懂的都懂。
    因为原PCB的固定孔位实在是有点过于离谱,我直接将孔位重新设计了,并根据设计孔位的CAD图纸进行重新布线,主打一个手感坚实梆硬。
    软弹,什么软弹,是不认识的孩子呢(无感情)。
    最终PCB大概长这样。
    背面大概是这样的
    虽然省略了中间很多繁琐的步骤,但是还是得说明一下。其实不仅是单一主控可以承担键盘矩阵的工作,还有另一种解决方案就是稚晖君视频中提到的的主控+移位寄存器方案。移位寄存器的最大优势就是在于最终移位寄存器到达主控只需要占用三个引脚,大大节约了主控引脚和IO资源,且增减ROW&COL只需要将新的寄存器并联至电气链路即可。但是考虑到选定了方案改图太过麻烦,只好作罢。况且移位寄存器方案的按键延迟可能会存在一定的问题,所以还是选择了最常见的主控直接控制阵列的方案,但是相对的,主控也没有富裕的IO去支持无线模块了。选择STM32的另一个原因就是F103的开发文档非常齐全而且我也相对比较熟悉,之后如果是需要自己开发固件的话更容易加快工作进度。
    其实如果是以三模作为需求之一且对配列完整度不做要求即小配列的话,完全可以直接考虑ESP32或者nRF52810起手,但是考虑到开发难度和需求问题,果断还是STM32。

二、工业设计
    工业设计方面,我预计了两个方案。
    第一个方案就是采用现在比较流行的堆叠方案。现在客制化出于廉价化的成本考虑,更多的堆叠方案材料采用的是亚克力堆叠。但是亚克力堆叠有几个比较严重的问题。第一点是亚克力堆叠在切割后边缘会极其锋利,需要自行打磨之后再使用,我就不止一次被亚克力边缘划破手。而自己打磨的边缘出于手工的问题肯定会有一些不和谐的地方存在,多多少少会有些不舒服;第二点就是亚克力本身硬度不高,很容易出现表面划痕,如出现严重磕碰边缘也会出现白色磕碰纹,即使哑光表面也很难避免;第三就是廉价感极重,毕竟大塑料,这个倒是很正常。但是谁不想花最少的钱做出来最高级的东西呢?
    于是乎我最终决定,堆叠方案直接采用三段式设计,第一层即底壳,采用约5mm厚实木木板配合M2六角螺母。选用木板的原因是木板相对来讲韧性更强耐磨,而且有极强的可再加工性,更重要的是木板相对来讲成本相当低。这里告诉大家一个小窍门,如果实在是找不到好用的木板板材,可以直接去某宝搜索实木菜板,有奇效,别问我怎么知道的(手动狗头)。这里中间的孔位计划采用滚花铜柱配合强力胶的设计,因为我的孔位大小设计的是与预计使用铜柱完全相符。其实本来打算孔位设计小0.1然后用液氮冷却了铜柱后塞进去搞过盈配合。但是考虑到木材是纤维且M2铜柱这东西实在太小,冷却了也不一定有0.1的温度变形,干脆就冷却后塞进刚好的孔位并在回温后往里面灌502得了..反正木材打磨一下再上木器漆也问题不大。
    第二层考虑到效果和可加工性,目前是有两个选择,一个是用亚克力直接切出来一个厚度8mm预留Type-C口的中框并自行攻usb接口螺丝位。这种可以在安装rgb灯位后利用边缘泄露出的光对键盘进行一个装饰,或者为之后想要升级rgb边框进行设计预留;第二种就是直接cnc一个8mm厚的铝合金边框出来。这种设计可以极大加强键盘的观感且提升键盘的刚性,可以说除了贵没有什么缺点。总之我是暂定了第二种,主要是因为6061铝合金cnc加工成本在可接受范围,其他的没有什么特殊的原因,毕竟大不了自己再往上打两个固定usb接头的1.97mm孔。
    第三层就是定位板层,这一层我打算采用一些新型材料如FR4或是碳纤维板。但是经过实物比对之后,我选择了1.5mm碳纤维板,因为这种材料相对来讲不仅韧性更强,而且颜色相对来讲会更协调,因为堆叠结构不可避免的会在边缘有分层体现,黑色最起码要比黄色或者绿色来得百搭一些。
    第四层就是顶层,这一层更多的是起固定和装饰作用,因为主要结构都已经被一体式定位板压盖在了下面,主要意义就是防止整个堆叠结构散架,其他的其实意义不大。材质计划使用哑光黑色亚克力,主打一个便宜。
    第二个方案就是一体成型cnc铝坨坨,大概就是把上面的底板和边框部分加起来并预留usb孔位。但是因为时间问题我还没画图,等画完图直接补充到下一篇文章里面吧,毕竟这篇文章是有点枯燥,太长你们也不看(手动狗头)。
    好了本篇文章就到这里吧,我是Nagisa,等到下一篇文章我搞定了实物我们再见。

电脑吧评测室
欢迎关注电脑吧评测室,我们是电脑DIY硬件产品爱好者。买电脑、DIY硬件配置推荐、硬件咨询、新产品评测、什么产品值得买,都可以关注我们。
 最新文章