代po
第一次在PTT發文,若有什麼問題還請告知
謝謝
原作者的Blog:
https://ziteh.github.io/categories/%E8%87%AA%E8%A3%BDQMK%E9%8D%B5%E7%9B%A4/
===
先來簡短介紹一下這個鍵盤
這個鍵盤姑且暫名爲「ErgoSNM」
其中SNM代表「Say NO to Mouse」
具體來說,此鍵盤想達成:
- 完全無線的分離式人體工學鍵盤
- 三模(藍牙、2.4GHz與USB)
- 整合軌跡球並取代滑鼠功能
- 可以輕鬆變更Keymap(QMK VIA)
- 機械軸熱插拔
- 開源
算是針對一個非常非常小眾的需求
這個鍵盤開發也過了好一段時間了
最近總算有點初步的成果
所以就來獻醜了
先放目前的進度:
https://youtu.be/wOW2UQZ-kfk
是的,它看起來還不像是一個鍵盤
但其實最重要的功能都已經完成了
該影片展示了目前已經可以作爲藍牙鍵盤連線使用
左右兩側可以進行無線通訊
且當另一側斷電後重啓會自動重連
(只展示4個按鍵,但增加按鍵數量這點可以說是豪無難度)
(黑色的USB線只是提供電源而已)
還有影片裡沒拍,但QMK VIA的功能也有了
===
再來講一下比較實際的東西
首先,此鍵盤單一一側的架構大致是這樣:
[PC]
|
| <BLE HID>
|
nRF51822_1
|
| <SPI>
|
ATmega32U4 ---<USB HID>--- [PC]
|
| <UART>
|
nRF51822_2
|
| <Gazell>
|
另一側的nRF51822_2和2.4G接收器
這個鍵盤「目前」使用的韌體是QMK
QMK燒錄在Pro Micro ATmega32U4(以下簡稱32U4)上
而藍牙等無線功能是由nRF51822(以下簡稱nRF51)SoC所提供的
然而,現在它的架構很畸形
每一邊的鍵盤都要有一個32U4和兩個nRF51
之所以會用到兩個nRF51是因爲:
第一個燒錄Adafruit的韌體,爲QMK提供藍牙HID功能
第二個是與另一側溝通,並執行鍵盤矩陣掃描等主要功能
(我不使用QMK進行鍵盤掃描,QMK的鍵值透過UART取得)
但這樣的IC運用真的滿浪費的
主要是受到QMK架構設計的限制
不然其實每一側應該只要一個nRF52840就可以取代上面那一堆了
雖然QMK也可以透過ChibiOS來對ARM進行支援
或是使用ZMK、BlueMicro取代QMK應該也可以
大不了我全部自己寫也不是辦不到
但我還太菜+太懶,所以目前就先這樣子
目前的架構其實已經可以做到三模了
USB和藍牙都是直接透過鍵盤上的QMK達成
而2.4GHz的部分則需要專用接收器
不過這個專用接收器實際上也只是另一個QMK
接收器和兩側的鍵盤之間透過Gazell連接
===
軌跡球的部分我打算使用PMW3360達成
這個光學sensor滿多人在用的
它使用SPI進行通訊
IC已經買回來了
PCB lay好剛送廠還沒來
https://i.imgur.com/zFIg3IH.jpg
我沒上過PCB Layout的正式課程,只會連連看
不過這也不是什麼高頻或射頻電路,應該沒什麼差吧?
雖然我看完PMW3360的Datasheet覺得滿單純的
不過要實際完成軌跡球的功能估計還要花一段時間
畢竟還有硬體要設計
===
按鍵的Layout我其實還沒有定案
主要是我不確定要預留給軌跡球多大的空間
還有我也打不定按鍵數量的主意
目前的設計主要是參考Moonlander和ErgoDox EZ
但我自己也不是很滿意
未來再做調整
目前是這樣:
https://i.imgur.com/x8M3q6R.jpg
外殼的話也要等Layout確定後再3D CAD
===
然後這個鍵盤的程式與電路等資料之後會開源
目前因爲檔案實在是有點亂
加上有些License的問題暫時沒放上GitHub
整理好後就會丟上去了
至於開源授權的方式我儘可能使用MIT
但QMK的部分只可能是GPL
nRF5的部分我還不太清楚它們SDK的License要求
硬體的部分用MIT應該是沒什麼問題
===以下閒聊
在做這個鍵盤的時候,遇到最多問題的應該是nRF51
我自己常用的MCU是STM32
並使用libopencm3
原本我想說MCU不也就這樣
結果在使用nRF51的時候非常不順利
先是SDK版本搞錯
再來是編譯的問題
然後是組語的問題
接著是RAM的問題
... ...
而且我超討厭Keil MDK
SEGGER ES 也一堆問題
我差點就要去用ARM-GCC了
結果我最後還是只好用Keil
然後上面有提到,如果不使用QMK的話
IC的數量可以變成一邊一個nRF52840
但這應該要我完全自己寫韌體才行
雖然之前被nRF51822搞死,但我也差不多瞭解它了
nRF5 SDK的功能還滿完整的
不過這應該還是一個不小的工程
或著使用ESP32應該也可以做大
但它沒有內建USB的支援
這樣還是要多一個IC
還有就是我只是一個窮研究生
平常要搞論文和計劃的東西
閒來無事才有空開發鍵盤
而我爲了開發這個鍵盤已經花了不少錢了
有時候聽到同學說又花了好幾萬去遊戲上
然後我連幾百幾千的電子零件都快沒辦法買
就覺得自己好廢
之前也沒想到開發會這麼花錢
接下來因爲我的銀彈也要見底了
再買零件就要沒錢吃飯了
所以開發進度可能會變慢
未來有進展,且大家有興趣的話再來分享
謝謝
--