EEWorld 电子工程世界

文章数:10499 被阅读:12671786

推荐内容
账号入驻

自己动手,DIY一把低功耗蓝牙、USB双模机械键盘

最新更新时间:2024-06-06
    阅读数:
虽然现在自己组装一把属于自己的客制化键盘,已经是一件非常容易的事了,想要什么配件都很容易买到,但总归是没有自己DIY更合自己心意。想必你也曾经在B站看过很多DIY键盘的视频,EEWorld也曾发起过DIY的活动,其中便有网友DIY了属于自己的那把键盘。(原帖汇总地址: https://www.eeworld.com.cn/auf14KG

jj1989|作者
电子工程世界论坛|来源

市面上支持蓝牙的机械键盘较少,同类产品多使用经典蓝牙,功耗较高。而无线键盘对功耗要求较敏感。本作品使用低功耗蓝牙(BLE)作为无线数据传输。同时支持蓝牙和USB连接,在无线模式下,借助于BLE的优势,可以实现超长续航。网络上可以搜索到的关于DIY键盘的文章比较多,这里对于重复性的东西就不做过多介绍,主要还是着重说一下BLE部分。

BLE方案选择


第一个版本中,BLE部分使用的是Nordic的NRF51822,主控芯片与51822通过串口进行通信。当时硬件上面只使用了RX和TX两根线,没有使用硬件流控。这样在串口通信的时候,因51822内部还在跑softdevice,会导致数据丢包。而我这里测试的情况是根本无法通信,一发送数据,51822就复位重启。经调试发现是出现了通信错误。这里解决的办法一是使用硬件流控,二是换方案。本来一开始打算使用Dialog的14580,考虑到开发周期最后才选了51822。这次时间比较充足,看来还是要换回Dialog。使用14580需要外挂flash,当然代码稳定后就不需要了。考虑到元器件是要自己一个个徒手焊接,还是选择14583。与14580相比,其内部集成了1Mbits的flash,可以少一颗物料,但价格就要贵很多了。看来鱼和熊掌不可兼得啊。目前方案验证基本OK,PCB还没有开始修改。先来一张PCB的3D效果图。

图1

硬件改进


在第一版的基础上,将做如下改进。
  • Mini-USB接口换成Type-c接口。
  • 蓝牙芯片由NRF51822换成DA14583,并增加EEPROM。
  • 复位按键更换为霍尔传感器,使用磁铁复位。
  • PCB定位孔调整。

改进说明:1.换成Type-c接口,虽然没什么用,但也算是与时俱进吧,现在很多电脑已经提供此接口。2.增加一片AT24C02,用于存储蓝牙设备的绑定信息。存储多个设备的绑定信息,可以实现键盘在多个蓝牙设备之间切换使用。3.键盘组装好后,要想按键复位,需要在外壳上打一个孔,这太影响美观了。换成低功耗的霍尔传感器,只需要磁铁在旁边吸一下即可复位主控芯片。4.第一版键盘设计的时候没来得及设计外壳,PCB的定位孔没有过多考虑。这一版需要调整一下,结合后面设计的定位钢板,调整孔的位置和大小,使用M3的螺丝固定PCB。

注意事项


Type-c接口支持正反插,引脚比较多,第一次使用差点搞错了。这里的键盘使用的是母头,标准Type-c母头引脚定义如下:

图2
在淘宝上购买的Type-c母头如下:

图3

使用的贴片形式,本来打算上直插,但PCB厚度为1.6mm,直插的引脚太短,怕不牢固。这贴片的估计也好不到那里去。卖家没有引脚定义图,我只有用万用表试,将购买的type-c公头与母头连起来,然后一个一个引脚挨着测试。测试结果,引脚指向自己,从左到右依次为:GND、VBUS、CC、RFU1、D+、D-、D+、D-、CC、RFU1、VBUS、GND。这里购买的接头与标准定义的不一样,省掉了一些引脚。但这里真正需要用到的,除去电源和地外,就只有D+和D- 。只要D+和D-不要搞反了,就没问题。

PCB设计


需要注意的地方也就蓝牙天线部分了。由于体积限制,使用的陶瓷天线,仅使用软件计算了一下阻抗匹配。第一版的天线信号质量很差,这是第二次搞天线,心里也完全没底。有没有这方面的老司机,求带啊。主控使用的STM32L053R8T6,USB部分全速也就12Mbps,两根USB信号线按照一般布线连通就能正常工作,就没有去注意信号完整性方面的东西。目前板子已经打样,坐等调试。最后来一张PCB的3D图。

图4

PCB焊接


这次PCB打样还挺快,周一下单,周五就收到,采用的是无铅工艺。话说这键盘以后每天跟身体接触,还是无铅的更安全、环保一些。但收到的PCB跟有铅工艺的没区别,包装、说明都一样,也没有注明工艺是否有铅。咨询了一下客服,得到了一个比较简单的判断方法。即拿一张白纸,稍微用力摩擦焊盘,白纸与焊盘摩擦部分变黑即含铅,否则无铅。测试了一下,本次PCB确实是无铅的。打样回来的PCB如下图。

图5

图6

接下来就是焊接PCB。对蓝牙部分期待比较大,先从蓝牙部分着手。下班后立即投入焊接工作当中。这应该算是第一次真正焊接QFN封装的芯片,本想叫公司的老司机帮忙,想了想还是自己来,练一下手。焊接还算顺利,感觉还不错,不过忘了拍照。天线部分的电感选用的0402,第一次焊接这么小的器件,有点痛苦,一直担心器件会不会烫坏。

焊接完后,烧录程序进行测试。公司电脑上没最新的代码,烧录了一个老版本的进去后,搜索不到蓝牙信号。什么情况?检查了一下芯片焊接,没有问题。怀疑天线部分的0402元器件短路,重新焊接了一下,还是不行。索性把天线部分元器件全部去掉,但还是不行。难道是程序有问题?于是烧录另一个程序,终于有了信号,原来是代码问题。在没有天线的情况下,手机靠近芯片,信号都还可以,突然有点小激动,马上把天线部分焊接完整。用lightblue测试一下,信号强度还不错,比起之前好太多。此芯片内部集成巴伦,外围只需几个元器件。

真想一口气把板子焊接完成,但蓝牙部分硬件调试耽误了很多时间,只能留到周末去搞。在今天下午,又去公司焊接了几个小时。由于使用的无铅焊锡丝,其熔点相对有铅焊锡丝要高一些,焊接起来没无铅的那么顺手。搞了一下午,总算把基本部分焊接完成。剩下按键和LED背光部分没有焊接。如下图:

图7

图8

实际上只是焊接了一小部分,剩下的才是大头。

现在已经可以测试了,烧录好STM32的代码,连接Type-c数据线到电脑,"咚"一下,熟悉的声音出现,设备管理里面成功识别出HID键盘,如下图:

图9


用镊子短接按键测试一下,也能正常输入。剩下未焊接的就只有等到后面有空再搞了。由于USB接口换成了Type-c,支持正反插,使用起来很方便,不用再去找方向啦。

又经过了几个小时的焊接,PCB总算焊接完成。由于使用的无铅焊锡,焊接过程是相当痛苦,焊接出来也是很难看,只能说勉强能用。经网友的提醒,大致算了一下,焊接点数差不多上千,体力活啊。灯珠使用的是3528封装的RGBLED。PCB上打一个孔,放置灯珠,然后用焊锡将焊盘与引脚连通,这个焊接过程考验的是耐心。本来不打算焊接灯珠,因为要使用不透光的键帽。后面想了一下,还是搞一个完整的出来,毕竟这个灯珠是新买的,质量比较好,想看一下效果如何,有没有色差。之前使用的是别人给的,色差很严重。来两张点灯图。最后一排不亮,似乎焊接哪里出了问题。

图10

LED灯是一行一行地扫描点亮,照片显示出来只亮了四排。

图11

接下来就是清洗PCB板。板子太大,没有合适的容器浸泡,用一个自封袋搞定,如下图:

图12

然后就是焊接按键。在这之前,先把卫星轴安装好。这里使用的国产卫星轴,没法跟原厂的樱桃卫星轴相比。

图13

之后将装好按键的定位钢板与PCB合体。定位板是之前在淘宝上加工的不锈钢板。键帽是下血本在咸鱼上淘的,侧刻不透光。

图 14

这里需要检查按键的每一个引脚是否都对应好了焊盘。否则当焊接了一半,发现有引脚没对应到孔位,操作起来就很麻烦了。

图15

接下来又是焊接,不过这个焊接起来就很轻松了,很快就搞定,如下图:

图16

来一张特写,灯珠部分焊接很难看。先这样吧,反正装上壳子后就看不见了。

图17

现在终于可以接上USB数据线码字啦。手里没有Type-c数据线,使用了一个Type-c转Micro-USB头。到这里键盘就基本成型了,已经可以用来码字啦。整个效果如下图。

图18

图19

这里使用的是Cherry红轴。平时使用的青轴,这是第一次使用红轴码字,感觉很不一样。敲击很轻盈,回弹也可以,没有青轴的机械声音。总之,完全不一样的感觉。

外壳设计


外壳准备使用木头制作。有一个朋友是做实木家具定制的,打算找他帮忙。问了一下,说我这个精度较高,他那里搞不定。我这个需要使用雕刻机,并要用好一点的木材,才配得上此键盘。浏览了一下淘宝,发现上面有木材并提供加工服务,具体能不能达到要求还没有细问,先把图纸画好再说吧。下面是外壳的3D图。

图 20

简单渲染了一下,效果还可以。

图 21

最近发现论坛上有DIY雕刻机的帖子,并提供了各种资料,可以很容易的自己做一台出来。难道为了这个键盘外壳,我要先自己做一台雕刻机?外壳尺寸是124X315mm,小的雕刻机还不能一次性加工完成。各位有没有什么好的建议。

功耗优化


该键盘的一个特点是使用的低功耗蓝牙(BLE),因此功耗优化是重点。
现在对系统做如下处理:
  • 主控部分:连续10分钟无按键,主控进入休眠状态。
  • 蓝牙部分:5分钟内无设备连接,进入休眠状态。
  • 通过任意按键唤醒系统。
先来看一下,未做优化时,功耗多少。测试条件为关闭LED,开启蓝牙,键盘正常工作。

图22

得益于L系列的低功耗,尽管没有做优化,功耗也不是很高,电流仅9.5mA,其中蓝牙部分的电流接近1mA。这里使用的是一块4000mAh的大电池,不优化也可以连续工作十几天。

接下来,进行功耗优化。这里配置STM32的睡眠模式为STOP模式,这样可使用外部中断唤醒。按下任意按键即可唤醒键盘。当关闭蓝牙设备,STM32进入睡眠后,测得系统整体电流如下图。

图 23

从图中可以看到睡眠后整个系统电流为38uA。待机一天下来,消耗的电量为0.912mAh,不足1mAh,功耗较低。另外,在蓝牙模式下,长时间无按键,是否需要断开蓝牙连接并进入休眠,需要进一步测试。考虑到蓝牙唤醒后再自动连接到设备,需要一定的时间,可能会影响到使用体验。

目前测试来看,当主控睡眠时关闭蓝牙,短时间内唤醒后,蓝牙可以立即连接上,体验上基本没影响。目前系统睡眠时,直接切断了蓝牙部分的电源。蓝牙部分的功耗及控制方案后面有时间再来优化。

这里的主控选用的STM32L系列,其低功耗模式相对其它系列要复杂一些,可配置的选项比较多。键盘在工作时,主频为最大的32MHZ,实际使用不需要这么高的频率,可以降低频率以进一步降低功耗。关于主控部分的功耗优化,还有很多地方可以操作,这里仅做了一个简单测试。后面有时间再来进一步完善。

最后贴一张功耗调试时的照片。功耗调试时就不能连接USB了,需要频繁的插拔USB线,于是搬出了上一版本的键盘,国产G青。个人觉得还是青轴码字舒服。各位喜欢什么轴呢?欢迎跟贴讨论。

图24

功能演示视频


功能测试



最后再来几张键盘的特写。

图25

图26

图27

图28

图29

图30

图31

总 结


很久以前就打算DIY一把机械键盘,但由于种种原因一直未能开始。恰逢遇到某论坛的一次电子制作活动,索性就报名参加了,然后就有了第一版的键盘。当时由于时间及设计上的一些问题,未能实现蓝牙功能。此次参加EEWorld的DIY活动,在第一版的基础上,更换了蓝牙硬件方案,对键盘进行了优化和升级。目前已经基本实现了最初的设想,后续软件部分还需进一步完善。

回顾了一下,从此次DIY的第一篇帖子到此贴,刚好整整两个月时间。在这两个月时间里面,利用业余时间,基本按照计划一步步完成了该键盘从无到有的制作。其中感觉最难的就是板子的焊接。由于使用的无铅工艺,焊接起来相比第一版,难度增加不少。在网友的提醒下,查看了一下PCB的报告,总共1400多个焊点,全程手工焊接。现在回想起来,有种不小的成就感。

整个键盘制作过程是充满快乐与痛苦的,而当看到最终的成品时,内心是无比喜悦的。这也许就是DIY的魅力所在,痛并快乐着!

· END ·








About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved