ErgoSNM 是我自己設計並製作的分離式人體工學機械式鍵盤,並且有可以取代滑鼠功能的軌跡球。
之前我已經完成有線版本了,現在是要把它改成無線的。
更多資訊請看ErgoSNM——有軌跡球的分離式人體工學QMK鍵盤 (v2.1) 與 ErgoSNM Keyboard | SideraKB。
架構
雖然就目前來說,我認為無線鍵盤的首選韌體應該是 ZMK 而非 QMK,但是我對 ZMK 和 Zephyr 還不夠熟悉,而且我想要有 Vial 的功能,所以目前還是用 QMK。
為此我參考了 Mitosis 的設計。左右半鍵盤各使用一個 nRF52840 做鍵掃描,再將鍵狀態透過 Gazell 2.4GHz 無線通訊傳給接收器。接收器由一個 nRF52840 和一個 ATmega32U4 組成,nRF52840 為 Gazell central 端接收兩半鍵盤的鍵狀態,再透過 UART 傳給 ATmega32U4。ATmega32U4 運行 QMK 並直接使用 UART 傳入的鍵狀態。
另外,右半還有一個軌跡球(PMW3360),其資料一樣是透過上述的方式傳到 QMK 內處理。
PCB
這次一樣請 JLCPCB 生產 PCB。
目前的版本是 Rev 3.0-Alpha,只變更了左右半的主 PCB,其餘零件就延續 Rev2.1 的使用。
主要就是把 MCU 從 RP2040 改成 nRF52840,但是因為我不想處理天線,所以用的是現成的模組 E73-2G4M08S1C。我原本也有考慮 Raytac 的 MDBT50Q,但是底部焊盤對我這個焊接技術不怎麼樣的人實在是有點麻煩(雖然我有加熱台就是了)。
另外是電池我預計採用的是 eneloop 3 號電池 1.2V。不使用鋰電池是因為我覺得如果兩半同時沒電的話要接兩條 USB 充電,好像有點怪,所以我選擇用換電池的方式。到底適不適合還要再看。
另外 LDO 的輸出入電容我畫成 0402 的了,之後應該會改成 0603。
測試
這是第一版的測試,可以看出延遲相當嚴重。
這個修改後的版本,延遲已經改善許多了。修改的部分主要是把 QMK 的 UART 接收程式從 matrix_scan()
改到 pointing_device_task_kb()
內。
後續
其實無線版的 ErgoSNM 對我來說最大的困難是 Zephyr,我花了不少時間在看 Devicetree 怎麼用。
目前的傳輸看起來還不夠好,可能會再想辦法改善。還有比較重要的是耗電量的問題。
不夠如果 QMK 實在是無法滿足需求的話,我還是會直接換去 ZMK。對我來說 ZMK 有這些好處:
- ZMK 是寬鬆的 MIT License,而 QMK 是 GPL。
- 用 ZMK 的話就不用額外的接收器,可以直接用 BLE 藍牙。
- ZMK 已經有包含功耗在內各方面最佳化。
留言可能不會立即顯示。若過了幾天仍未出現,請 Email 聯繫:)