自称“鸽王”的稚晖君终于更新啦。这次他带来的新项目则是:一把完全客制化、带屏幕模块的机械键盘!
有网友表示,稚晖君的这个新项目,为键圈乃至整个键盘行业提供了新的设计思路,甚至有望改变目前客制化以换壳为本的囧境。
稚晖君表示,在客制化的圈子里,一般都是以工业设计为大头,软硬件方面都是采用现成的参考设计和开源固件,但稚晖君想要最大程度的开发自由,于是他从头设计了键盘电路硬件以及固件代码。
键盘电路的硬件原理很简单,就是一堆开关,每个键轴就是一个独立的开关,按下导通为0,弹起为1,通过控制器芯片就可以检测按键的高低电平,就可以知道某个按键是否被按下。
但是......现实的情况却比理论上复杂一些。
一个键盘有大约 100 个按键,要是给每个按键都接一根导线到 MCU 的引脚,就需要 100 多个引脚,浪费且不显示。因此市面上的键盘都是采用矩阵键盘形式来检测按键。
例如对于4行X4列共16个按键组成的矩阵,单独链接的话需要16个IO,而举证扫描只需要8个IO。
但这样就遇到了第二个问题,矩阵扫描的方式设计电路,按键之间不再是独立链接,存在一定的耦合,所以会出现“鬼键”现象。稚晖君表示我们可以在每个按键下面添加一个二极管来防止误触发。
第三个问题是,为了提升键盘的手感,在设计 PCB 的时候需要做减震处理,在 PCB 建轴之间挖出很多长槽。但矩阵键盘和一堆二极管的模式会导致 PCB 的走线变得非常麻烦。
有解决办法吗?稚晖君使用移位寄存器来实现按键扫描。
具体来说,基于移位寄存器的并行输入、转串行输出功能,把每个按键都看作是寄存器的一位,那么每加载一个时钟信号就可以依次读出每个按键的状态。
这种方案不仅非常节省 IO,而且扫描速度极快,理论上每秒能扫描 5 千万个按键。再来,褪下二极管,电路也变得极其简单。
目前市面上绝大多数客制化键盘都是使用 QMK、ZMK 这样的开源固件,为了适配更多的键盘型号,它们的代码通常都很臃肿,扩展性能也不好,因此稚晖君基于高性能的ARM主控开发了一套键盘固件,基本上把全速HID设备的性能都拉到顶了。
在固件中实现了HID设备枚举,1KHz 的硬实时报文以及1ms的超低延迟,超高刷新率的全按键独立 RGB 灯控制,支持NKRO也就是所谓的全键无冲,添加每个按键独立的滤波算法,支持Bootloader更新固件,支持多层键位映射配置等。稚晖君将这套固件的代码进行了开源。
稚晖君的老粉都知道,在之前的自行车、机械臂项目中,外壳零件都是 up 主 @Xikii厂长帮助加工的,而这次的客制化键盘恰巧就是 Xikii 的老本行。稚晖君这款键盘的工业设计便是基于之前 Xikii 发布的 S98 键盘修改而成。
长这样:
稚晖君表示:键盘左边这个玩意才是这个项目的重点,接下来才是视频正文。
什么才是只能键盘呢?稚晖君表示,参考智能手机的定义与传统手机的区别:智能机有各种传感器,能够随时安装各类 APP,且能不断获取新能力。
于是他给键盘家上了屏幕,还不止一块,所以这是一个模块化的键盘,由三部分组成:键盘主体、一个带 USB-HUB 功能的底座、一块可DIY显示内容的智能交互模块。
智能交互模块搭载了一块电子墨水屏幕,可以自定义显示各种内容,如你喜欢的图片、天气预报、Github贡献墙、电脑剩余电量等状态显示等等……
稚晖君表示,他会把这个模块二次开发的通信协议和驱动都封装成SDK,客制化发烧友们便可以基于SDK开发各种交互应用。
而对于科技小白来说,稚晖君也贴心地配备了配套傻瓜软件工具,只需要鼠标将电脑屏幕上的图片“瀚安”拖入工具中,“瀚安”几乎一眨眼便出现在了墨水屏幕上,比更换手机壁纸还要简单。
稚晖君表示如果只是多了一块屏幕,也不见得智能了多少。
因此他又添加了第二块屏幕,一块OLED,以及旁边一个长得很像电机的电机。
稚晖君曾经发布过一个视频,展示如何通过FOC控制把一个无刷电机模拟成各种物理效果的旋钮。他在这次的设计中融合了滚轮旋钮,可以模拟出任意力反馈效果,如0摩擦力滚动、多档开关、弹簧、阻尼等,所有参数可以动态配置,再结合一旁的OLED屏幕,就可开发出许多有意思的应用。
比如向上推旋钮打开任务视图、向下推显示桌面;或把它模拟成带阻尼的旋钮来调节音量;或模拟成无摩擦的惯性旋钮来滚动页面,由于无摩擦的原因,页面滚动极致丝滑……
更有意思的是,这个旋钮还可以主动旋转,结合OLED屏幕可以显示CPU占用等信息。
不过,稚晖君表示也为了实现所提到的工程效果是需要解决许多难点的,例如, USB2.0的接口最大只能提供5V/500mA 的电源功率,远达不到无刷电机所需的功率,所以稚晖君借用了航母上电磁弹射的设计思路:先蓄电再放电。通过在HUB底座中安装电池和电源管理模块,以及升压电路,将USB输出的小电流能量进行储存,在升压之后提供给点击更大的峰值功率。
此外还需解决其他的难点,如模块间复杂的连接拓扑,通信协议的设计,还有结构设计上的各种干涉问题等。
稚晖君称上述模块只是大大提升了键盘的可玩性,但他认为他理想中的键盘不应该只有这些酷炫的功能,还应该实际解决一些效率提升的问题。
例如在手机已经标配人脸识别、指纹识别很多年的当下,台式机为何仍然要采用传统的输入密码解锁呢?
稚晖君表示windows hello提供了一个优雅的解决方案,可以用特定的配件进行人脸识别或指纹识别,但台式机的指纹识别应该放在哪呢?稚晖君于是在USB HUB的位置插入了一个指纹识别模块,亲测效果极佳。
如果电脑已经装好了人脸识别识别设备,这个设计也不会浪费,可以替换插入鼠标接受器,游戏手柄接收器等实用模块。
完成了以上设计后,稚晖君式奇思又钻了出来:平时在打字时,两个大拇指好像没什么事做?一起按一个空格键,是不是有些浪费?
于是乎,他给键盘侧面贴上了一个电容式触摸按键条。
通过设置,这个触控条可以用来实现切换显示窗口、切换音乐、复制粘贴等等操作。
无论是从电路还是从显示屏、旋钮等,不难看出稚晖君基本都是在键盘功能性上进行设计整合的。
稚晖君在社交平台公布了视频之后,网友评论“看不懂专业技术,但大受震撼”,也有不少网友留言要华为终端进行量产,加入鸿蒙互联。有意思的是,华为B站的官方号也转发了这段视频,并评论称“太厉害了!”。
不少玩客制化的网友表示,稚晖君不是赢在多么天才的构想上,而是作为一名电子工程师对于技术的极致追求(以及对于广大客制化爱好者智商的尊重),这才实现了从“壳制化”迈向“客制化”的重要一步。
此外,还有网友调侃到建议标题改成“我用108天打了个字”。