华为“天才少年”稚晖君又出新作,从零开始造“客制化”智能键盘

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

易百纳社区

时隔四个多月,打破拖更记录的华为“天才少年”,有着“野生钢铁侠”之称的稚晖君,终于在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”。他表示这个项目纯粹是为了满足个人对理想键盘的幻想,接下来会把“瀚文”作为之后的主力设备。本次项目的软硬件都将开源,欢迎大家在此基础上继续开发。

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

易百纳社区

易百纳社区

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

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

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 1 1 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
易百纳技术社区
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

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

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区