導讀:效能、效率拉滿。
本文經授權轉自公眾號程式人生 (ID:coder _life)
時隔四個多月,打破拖更記錄的華為“天才少年”,有著“野生鋼鐵俠”之稱的稚暉君,終於在不久前釋出了他的最新專案影片。
在本次影片中,稚暉君打造了一把模組化機械鍵盤,並稱其為“很實用的生產力工具”。稚暉君將這把理想鍵盤命名為“瀚文”,由自己從頭設計,並加入了智慧互動模組,不僅可以安裝各種APP,還可以實現指紋解鎖等功能。
隨後,這一影片還被華為官方轉發,並評論“太厲害了!”
稚暉君表示,此次專案的想法源於幾個月前的居家辦公經歷。對於程式設計師和打遊戲的這一類群體,往往對鍵盤的要求非常高,甚至可以稱為“吃飯的傢伙”。正因如此,市場上一部分玩家對於電腦外設的效能和外觀的極致追求,也就催生了一種叫做“客製化”的圈子。
但接觸下來,他發現很多“客製化”總是以“換殼為本”,還有很大的進步空間。於是,稚暉君決定自己從零構思,設計一把真正的“客製化”鍵盤。
稚暉君認為,無論想做什麼樣的新概念鍵盤,首先要保證它打字作用的基本屬性,所以他的第一步是把鍵盤本身的效能做到極致。相較於“客製化”的圈子裡一般以工業設計為大頭,軟硬體方面都是採用現成的參考設計和開源韌體,稚暉君為了保證能夠有最大程度的開發度自由,於是選擇自己從頭設計電路硬體以及韌體程式碼。
首先從硬體來說,鍵盤的原理其實很簡單,每個鍵軸就是一個獨立的開關,按下導通為0,彈起斷開為1,透過控制器晶片檢測按鍵的高低電平就可以知道按鍵是否被按下。
雖然聽起來很簡單,然而稚暉君表示,真實的情況卻有點複雜,他在設計中就遇到不少問題:
1. 常規的鍵盤有100個左右的按鍵,如果每個按鍵都接一根導線到MCU的引腳,那麼就需要MCU有100多個引腳,這顯然是極其浪費且不太現實的。正因如此,所以市面上的鍵盤基本都使用一種叫做矩陣鍵盤的形式來檢測按鍵。
比如說對於4行×4列、共16個按鍵組成的矩陣,單獨連線的話需要16個IO,而矩陣掃描只需要4+4=8個IO。
2. 如果採用矩陣掃描的方式設計電路,那麼由於按鍵之間不再是獨立連線,而是存在一定的耦合,就會出現沒被按下的按鍵也會被觸發的情況,也就是俗稱的“鬼鍵”問題。
為了解決這個問題,稚暉君設想在按鍵下面再新增一個二極體,可以有效防止誤觸發的問題。
3. 想要提升鍵盤的手感,PCB設計的時候就要做減震處理,因此需要在PCB鍵軸之間挖出很多長槽。那麼矩陣鍵盤和一堆二極體的模式就會使PCB走線變得很麻煩。
所以為了從硬體根本上重構鍵盤掃描電路,稚暉君設計了一個相當完美的方案,那就是使用移位暫存器來實現按鍵掃描。
他使用1×n的矩陣,即基於移位暫存器的並行輸入轉序列輸出功能,把每個按鍵都看作暫存器的一位,這樣每載入一個時鐘訊號都可以依次讀出每個按鍵的狀態。
-
極其節省IO。不管掃描多少按鍵都只需要一根資料線、一根時鐘線以及一根鎖存線、3個IO。
-
掃描速度極快。74HC165系列晶片的最高時鐘速度超過50MHz,也就是理論上每秒能掃描5千萬個按鍵。由於用不了那麼高,稚暉君在實際使用中透過硬體SPI介面模擬時序,掃描頻率為4MHz。
-
鍵盤硬體問題解決了,下面就來到了韌體。目前市面上絕大多數的客製化鍵盤都是使用像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”。他表示這個專案純粹是為了滿足個人對理想鍵盤的幻想,接下來會把“瀚文”作為之後的主力裝置。本次專案的軟硬體都將開源,歡迎大家在此基礎上繼續開發。
另外,稚暉君還表示,由於開發時間有限,專案還有很多可以完善的地方。他還為大家提供了一些額外的思路,構思了一些用於“瀚文”的其他場景模組,比如用於直播場景的擴充套件模組:
最後,稚暉君透露,未來有時間的話,自己也許會嘗試都實現一下。另外,下一期影片會是一個主線的機器人專案。期待他下個設計的到來!
本文轉自公眾號程式人生 (ID:coder _life)
讀書 | 書單 | 乾貨|講明白|神操作 | 手把手
大資料 | 雲計算 | 資料庫 | Python | 爬蟲 | 視覺化
AI | 人工智慧 | 機器學習 | 深度學習 | NLP
5G|中臺 | 使用者畫像| 數學 | 演算法 | 數字孿生