首页专栏详情
打赏
华为“天才少年”稚晖君又出新作,从零开始造“客制化”智能键盘
华为“天才少年”稚晖君又出新作,从零开始造“客制化”智能键盘
易百纳技术社区 易百纳技术社区 2022-08-16 19:28:15

易百纳社区

时隔四个多月,打破拖更记录的华为“天才少年”,有着“野生钢铁侠”之称的稚晖君,终于在7月24日发布了他的最新项目视频。

在本次视频中,稚晖君打造了一把模块化机械键盘,并称其为“很实用的生产力工具”。稚晖君将这把理想键盘命名为“瀚文”,由自己从头设计,并加入了智能交互模块,不仅可以安装各种APP,还可以实现指纹解锁等功能。

随后,这一视频还被华为官方转发,并评论“太厉害了!” 

易百纳社区

一、不满“客制化”键盘,稚晖君选择自己做

稚晖君表示,此次项目的想法源于几个月前的居家办公经历。对于程序员和打游 戏的这一类群体,往往对键盘的要求非常高,甚至可以称为“吃饭的家伙”。正因如此,市场上一部分玩家对于电脑外设的性能和外观的极 致追求,也就催生了一种叫做“客制化”的圈子。

但接触下来,他发现很多“客制化”总是以“换壳为本”,还有很大的进步空间。于是,稚晖君决定自己从零构思,设计一把真正的“客制化”键盘。

稚晖君认为,无论想做什么样的新概念键盘,首先要保证它打字作用的基本属性,所以他的第一步是把键盘本身的性能做到极 致。相较于“客制化”的圈子里一般以工业设计为大头,软硬件方面都是采用现成的参考设计和开源固件,稚晖君为了保证能够有最大程度的开发度自由,于是选择自己从头设计电路硬件以及固件代码。

易百纳社区

二、 硬件设计三步走

首先从硬件来说,键盘的原理其实很简单,每个键轴就是一个独立的开关,按下导通为0,弹起断开为1,通过控制器芯片检测按键的高低电平就可以知道按键是否被按下。

易百纳社区

虽然听起来很简单,然而稚晖君表示,真实的情况却有点复杂,他在设计中就遇到不少问题:

1、常规的键盘有100个左右的按键,如果每个按键都接一根导线到MCU的引脚,那么就需要MCU有100多个引脚,这显然是极其浪费且不太现实的。正因如此,所以市面上的键盘基本都使用一种叫做矩阵键盘的形式来检测按键。

易百纳社区

比如说对于4行×4列、共16个按键组成的矩阵,单独连接的话需要16个IO,而矩阵扫描只需要4+4=8个IO。 

2、如果采用矩阵扫描的方式设计电路,那么由于按键之间不再是独立连接,而是存在一定的耦合,就会出现没被按下的按键也会被触发的情况,也就是俗称的“鬼键”问题。

易百纳社区

为了解决这个问题,稚晖君设想在按键下面再添加一个二极管,可以有效防止误触发的问

3、想要提升键盘的手感,PCB设计的时候就要做减震处理,因此需要在PCB键轴之间挖出很多长槽。那么矩阵键盘和一堆二极管的模式就会使PCB走线变得很麻烦。

易百纳社区

所以为了从硬件根本上重构键盘扫描电路,稚晖君设计了一个相当完美的方案,那就是使用移位寄存器来实现按键扫描。

他使用1×n的矩阵,即基于移位寄存器的并行输入转串行输出功能,把每个按键都看作寄存器的一位,这样每加载一个时钟信号都可以依次读出每个按键的状态。

易百纳社区

基于这个方案,稚晖君的设计就有了以下优势:

1、极其节省IO。不管扫描多少按键都只需要一根数据线、一根时钟线以及一根锁存线、3个IO。

2、扫描速度极快。74HC165系列芯片的最高时钟速度超过50MHz,也就是理论上每秒能扫描5千万个按键。由于用不了那么高,稚晖君在实际使用中通过硬件SPI接口模拟时序,扫描频率为4MHz。

3、电路极其简单。减去了所有二极管。

三、固件设计,性能拉满

键盘硬件问题解决了,下面就来到了固件。目前市面上绝大多数的客制化键盘都是使用像QMK、ZMK这样的开源固件,但它们往往为了适配大量的键盘型号,导致存在代码臃肿、性能优化不足、扩展性不太好等问题。

因此,基于高性能的ARM主控,稚晖君自己开发了一套键盘固件,基本上把全速HID设备的性能都拉到了顶。他在固件中实现了HID设备枚举、1kHz的硬实时报文以及1ms的超低延迟。

易百纳社区

超高刷新率的全按键独立RGB灯控制,支持NKRO也就是所谓的全键无冲;添加每个按键独立的滤波算法,支持Bootloader更新固件,支持多层键位映射配置。

此外,设计中还有很多的时间细节,稚晖君表示稍晚会将固件代码开源,感兴趣的小伙伴可以前去仓库阅读源码(地址:https://github.com/peng-zhihui)

四、不只炫酷,效率提升也不在话下

在结束电路硬件以及固件代码的设计后,键盘本体的硬核部分基本就搞定了,项目也终于来到了外观设计环节。稚晖君请了好友@Xikii厂长帮忙设计加工(此前自动驾驶自行车机械臂等外壳零件就出自他手)。

易百纳社区

组装完成后,稚晖君提到了在构思这个项目时的思考——什么才是智能键盘?

稚晖君表示,如果参考智能手机的定义,智能键盘应该有各种传感器,能够随时安装各种APP,不断获取新能力。基于“模块化”的思路,他给键盘加上了不止一块屏幕。

键盘由三部分组成,除了本体之外,还有一个带USB-HUB功能的底座,以及一个可以替换成各种场景的智能交互模块。智能交互模块可以安装各种APP,首先模块搭载了一块电子墨水屏幕,可以自定义显示各种内容,比如喜欢的图片、天气预报、电脑状态,或者任何其它想要显示的信息。

易百纳社区

稚晖君表示会把这个模块二次开发,所需要的通信协议和驱动都封装成SDK,方便大家基于SDK开发各种交互应用。

在电子墨水屏幕上还有一个小屏幕,一块OLED以及一个电机。此外,稚晖君还加入了一个智能滚轮,结合旁边的OLED屏幕,可以把它模拟成弹性开关来当做自定义的按键,向上推打开任务视图,向下推显示桌面,它还能成为一个动态仪表,实时显示电脑的CPU占用的信息等。

易百纳社区

稚晖君认为作为生产力工具,他理想中的键盘不应该只有炫酷的功能,还应该实际解决一些效率提升的问题,于是他给键盘添加了指纹识别模块;还在空格键的下方添加了一个电容式的触摸按键条,其功能可以自定义,比如用它快速切换桌面、标签、音乐以及复制/粘贴等。

易百纳社区

五、不同场景扩展模块,玩转“瀚文”键盘

稚晖君将这次尝试模块化键盘DIY的作品命名为“瀚文”,英文名是“Hello Word”。他表示这个项目纯粹是为了满足个人对理想键盘的幻想,接下来会把“瀚文”作为之后的主力设备。本次项目的软硬件都将开源,欢迎大家在此基础上继续开发。

另外,稚晖君还表示,由于开发时间有限,项目还有很多可以完善的地方。他还为大家提供了一些额外的思路,构思了一些用于“瀚文”的其他场景模块,比如用于直播场景的扩展模块:

易百纳社区

易百纳社区

最后,稚晖君透露,未来有时间的话,自己也许会尝试都实现一下。另外,下一期视频会是一个主线的机器人项目。期待他下个设计的到来!


声明:本文转载于互联网平台,不代表本站观点,如有问题请联系站方处理。

1385
1
1
打赏
给作者打赏,鼓励他抓紧创作吧~
评论
0个
内容存在敏感词
相关专栏
打赏作者
易百纳技术社区
易百纳技术社区
您的支持将鼓励我继续创作!
打赏金额:
¥1 易百纳技术社区
¥5 易百纳技术社区
¥10 易百纳技术社区
¥50 易百纳技术社区
¥100 易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区 微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

审核成功

发布时间设置
发布时间:

审核失败

失败原因
备注
Loading...
易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区
易百纳技术社区
在专栏模块发布专栏,可获得其他E友的打赏
易百纳技术社区
回答悬赏问答,被题主采纳后即可获得悬赏金
易百纳技术社区
在上传资料时,有价值的资料可设置为付费资源
易百纳技术社区
达到一定金额,收益即可提现~
收益也可用来充值ebc,下载资料、兑换礼品更容易
易百纳技术社区
活动规则
  • 1.周任务为周期性任务,每周周一00:00刷新,上周完成的任务不会累计到本周,本周需要从头开始任务,当前任务完成后才可以完成下一个任务
  • 2.发布的专栏与资料需要与平台的板块有相关性,禁止注水,专栏/资料任务以审核通过的篇数为准
  • 3.任务完成后,现金奖励直接打款到微信账户;EBC/收益将自动发放到个人账户,可前往“我的钱包”查看;其他奖励请联系客服兑换
  • 4.每周最后三个任务将会有以下奖品掉落:社区热卖开发板、小米音响、视频年度会员、京东卡、华为手机等等
易百纳技术社区
升级提醒
易百纳技术社区

恭喜您由入门

社区送出礼品一份

请填写您的收件地址,礼品将在3个工作日寄出

易百纳技术社区