華為“天才少年”稚暉君又出新作,從零開(kāi)始造“客制化”智能鍵盤

整理 | 于軒
時(shí)隔四個(gè)多月,打破拖更記錄的華為“天才少年”,有著“野生鋼鐵俠”之稱的稚暉君,終于在7月24日發(fā)布了他的最新項(xiàng)目視頻。
在本次視頻中,稚暉君打造了一把模塊化機(jī)械鍵盤,并稱其為“很實(shí)用的生產(chǎn)力工具”。稚暉君將這把理想鍵盤命名為“瀚文”,由自己從頭設(shè)計(jì),并加入了智能交互模塊,不僅可以安裝各種APP,還可以實(shí)現(xiàn)指紋解鎖等功能。
隨后,這一視頻還被華為官方轉(zhuǎn)發(fā),并評(píng)論“太厲害了!”


不滿“客制化”鍵盤,稚暉君選擇自己做
稚暉君表示,此次項(xiàng)目的想法源于幾個(gè)月前的居家辦公經(jīng)歷。對(duì)于程序員和打游戲的這一類群體,往往對(duì)鍵盤的要求非常高,甚至可以稱為“吃飯的家伙”。正因如此,市場(chǎng)上一部分玩家對(duì)于電腦外設(shè)的性能和外觀的極致追求,也就催生了一種叫做“客制化”的圈子。
但接觸下來(lái),他發(fā)現(xiàn)很多“客制化”總是以“換殼為本”,還有很大的進(jìn)步空間。于是,稚暉君決定自己從零構(gòu)思,設(shè)計(jì)一把真正的“客制化”鍵盤。
稚暉君認(rèn)為,無(wú)論想做什么樣的新概念鍵盤,首先要保證它打字作用的基本屬性,所以他的第一步是把鍵盤本身的性能做到極致。相較于“客制化”的圈子里一般以工業(yè)設(shè)計(jì)為大頭,軟硬件方面都是采用現(xiàn)成的參考設(shè)計(jì)和開(kāi)源固件,稚暉君為了保證能夠有最大程度的開(kāi)發(fā)度自由,于是選擇自己從頭設(shè)計(jì)電路硬件以及固件代碼。


硬件設(shè)計(jì)三步走
首先從硬件來(lái)說(shuō),鍵盤的原理其實(shí)很簡(jiǎn)單,每個(gè)鍵軸就是一個(gè)獨(dú)立的開(kāi)關(guān),按下導(dǎo)通為0,彈起斷開(kāi)為1,通過(guò)控制器芯片檢測(cè)按鍵的高低電平就可以知道按鍵是否被按下。

雖然聽(tīng)起來(lái)很簡(jiǎn)單,然而稚暉君表示,真實(shí)的情況卻有點(diǎn)復(fù)雜,他在設(shè)計(jì)中就遇到不少問(wèn)題:
1、常規(guī)的鍵盤有100個(gè)左右的按鍵,如果每個(gè)按鍵都接一根導(dǎo)線到MCU的引腳,那么就需要MCU有100多個(gè)引腳,這顯然是極其浪費(fèi)且不太現(xiàn)實(shí)的。正因如此,所以市面上的鍵盤基本都使用一種叫做矩陣鍵盤的形式來(lái)檢測(cè)按鍵。

比如說(shuō)對(duì)于4行×4列、共16個(gè)按鍵組成的矩陣,單獨(dú)連接的話需要16個(gè)IO,而矩陣掃描只需要4+4=8個(gè)IO。
2、如果采用矩陣掃描的方式設(shè)計(jì)電路,那么由于按鍵之間不再是獨(dú)立連接,而是存在一定的耦合,就會(huì)出現(xiàn)沒(méi)被按下的按鍵也會(huì)被觸發(fā)的情況,也就是俗稱的“鬼鍵”問(wèn)題。

為了解決這個(gè)問(wèn)題,稚暉君設(shè)想在按鍵下面再添加一個(gè)二極管,可以有效防止誤觸發(fā)的問(wèn)題。

3、想要提升鍵盤的手感,PCB設(shè)計(jì)的時(shí)候就要做減震處理,因此需要在PCB鍵軸之間挖出很多長(zhǎng)槽。那么矩陣鍵盤和一堆二極管的模式就會(huì)使PCB走線變得很麻煩。

所以為了從硬件根本上重構(gòu)鍵盤掃描電路,稚暉君設(shè)計(jì)了一個(gè)相當(dāng)完美的方案,那就是使用移位寄存器來(lái)實(shí)現(xiàn)按鍵掃描。
他使用1×n的矩陣,即基于移位寄存器的并行輸入轉(zhuǎn)串行輸出功能,把每個(gè)按鍵都看作寄存器的一位,這樣每加載一個(gè)時(shí)鐘信號(hào)都可以依次讀出每個(gè)按鍵的狀態(tài)。

基于這個(gè)方案,稚暉君的設(shè)計(jì)就有了以下優(yōu)勢(shì):
1、極其節(jié)省IO。不管掃描多少按鍵都只需要一根數(shù)據(jù)線、一根時(shí)鐘線以及一根鎖存線、3個(gè)IO。
2、掃描速度極快。74HC165系列芯片的最高時(shí)鐘速度超過(guò)50MHz,也就是理論上每秒能掃描5千萬(wàn)個(gè)按鍵。由于用不了那么高,稚暉君在實(shí)際使用中通過(guò)硬件SPI接口模擬時(shí)序,掃描頻率為4MHz。
3、電路極其簡(jiǎn)單。減去了所有二極管。

固件設(shè)計(jì),性能拉滿
鍵盤硬件問(wèn)題解決了,下面就來(lái)到了固件。目前市面上絕大多數(shù)的客制化鍵盤都是使用像QMK、ZMK這樣的開(kāi)源固件,但它們往往為了適配大量的鍵盤型號(hào),導(dǎo)致存在代碼臃腫、性能優(yōu)化不足、擴(kuò)展性不太好等問(wèn)題。
因此,基于高性能的ARM主控,稚暉君自己開(kāi)發(fā)了一套鍵盤固件,基本上把全速HID設(shè)備的性能都拉到了頂。他在固件中實(shí)現(xiàn)了HID設(shè)備枚舉、1kHz的硬實(shí)時(shí)報(bào)文以及1ms的超低延遲。

超高刷新率的全按鍵獨(dú)立RGB燈控制,支持NKRO也就是所謂的全鍵無(wú)沖;添加每個(gè)按鍵獨(dú)立的濾波算法,支持Bootloader更新固件,支持多層鍵位映射配置。
此外,設(shè)計(jì)中還有很多的時(shí)間細(xì)節(jié),稚暉君表示稍晚會(huì)將固件代碼開(kāi)源,感興趣的小伙伴可以前去倉(cāng)庫(kù)閱讀源碼(地址:https://github.com/peng-zhihui)

不只炫酷,效率提升也不在話下
在結(jié)束電路硬件以及固件代碼的設(shè)計(jì)后,鍵盤本體的硬核部分基本就搞定了,項(xiàng)目也終于來(lái)到了外觀設(shè)計(jì)環(huán)節(jié)。稚暉君請(qǐng)了好友@Xikii廠長(zhǎng)幫忙設(shè)計(jì)加工(此前自動(dòng)駕駛自行車、機(jī)械臂等外殼零件就出自他手)。

組裝完成后,稚暉君提到了在構(gòu)思這個(gè)項(xiàng)目時(shí)的思考——什么才是智能鍵盤?
稚暉君表示,如果參考智能手機(jī)的定義,智能鍵盤應(yīng)該有各種傳感器,能夠隨時(shí)安裝各種APP,不斷獲取新能力?;凇澳K化”的思路,他給鍵盤加上了不止一塊屏幕。
鍵盤由三部分組成,除了本體之外,還有一個(gè)帶USB-HUB功能的底座,以及一個(gè)可以替換成各種場(chǎng)景的智能交互模塊。智能交互模塊可以安裝各種APP,首先模塊搭載了一塊電子墨水屏幕,可以自定義顯示各種內(nèi)容,比如喜歡的圖片、天氣預(yù)報(bào)、電腦狀態(tài),或者任何其它想要顯示的信息。

稚暉君表示會(huì)把這個(gè)模塊二次開(kāi)發(fā),所需要的通信協(xié)議和驅(qū)動(dòng)都封裝成SDK,方便大家基于SDK開(kāi)發(fā)各種交互應(yīng)用。
在電子墨水屏幕上還有一個(gè)小屏幕,一塊OLED以及一個(gè)電機(jī)。此外,稚暉君還加入了一個(gè)智能滾輪,結(jié)合旁邊的OLED屏幕,可以把它模擬成彈性開(kāi)關(guān)來(lái)當(dāng)做自定義的按鍵,向上推打開(kāi)任務(wù)視圖,向下推顯示桌面,它還能成為一個(gè)動(dòng)態(tài)儀表,實(shí)時(shí)顯示電腦的CPU占用的信息等。
稚暉君認(rèn)為作為生產(chǎn)力工具,他理想中的鍵盤不應(yīng)該只有炫酷的功能,還應(yīng)該實(shí)際解決一些效率提升的問(wèn)題,于是他給鍵盤添加了指紋識(shí)別模塊;還在空格鍵的下方添加了一個(gè)電容式的觸摸按鍵條,其功能可以自定義,比如用它快速切換桌面、標(biāo)簽、音樂(lè)以及復(fù)制/粘貼等。


不同場(chǎng)景擴(kuò)展模塊,玩轉(zhuǎn)“瀚文”鍵盤
稚暉君將這次嘗試模塊化鍵盤DIY的作品命名為“瀚文”,英文名是“Hello Word”。他表示這個(gè)項(xiàng)目純粹是為了滿足個(gè)人對(duì)理想鍵盤的幻想,接下來(lái)會(huì)把“瀚文”作為之后的主力設(shè)備。本次項(xiàng)目的軟硬件都將開(kāi)源,歡迎大家在此基礎(chǔ)上繼續(xù)開(kāi)發(fā)。
另外,稚暉君還表示,由于開(kāi)發(fā)時(shí)間有限,項(xiàng)目還有很多可以完善的地方。他還為大家提供了一些額外的思路,構(gòu)思了一些用于“瀚文”的其他場(chǎng)景模塊,比如用于直播場(chǎng)景的擴(kuò)展模塊:

3D建模場(chǎng)景的擴(kuò)展模塊:

用于視頻剪輯場(chǎng)景的模塊:

用于音樂(lè)制作的模塊:

最后,稚暉君透露,未來(lái)有時(shí)間的話,自己也許會(huì)嘗試都實(shí)現(xiàn)一下。另外,下一期視頻會(huì)是一個(gè)主線的機(jī)器人項(xiàng)目。期待他下個(gè)設(shè)計(jì)的到來(lái)!
參考鏈接:
https://www.bilibili.com/video/BV19V4y1J7Hx

如何做一個(gè)炫酷的墨水屏電子鐘?

看似簡(jiǎn)單的光耦電路,實(shí)際使用中應(yīng)該注意些什么?

在“古董級(jí)” 諾基亞功能機(jī)上跑Linux是怎樣的畫(huà)風(fēng)?表示想擁有一個(gè)
