代友po,原作者:https://github.com/ziteh
上一篇:#1aCx23NS (Key_Mou_Pad)
各位板友好,許久不見
距離上次發文已經過了好久,不知道還有沒有人記得我
畢竟後來在忙碩論,之後又要找工作什麼的,比較沒時間
今天是來分享 ErgoSNM 的最新進度:Rev 3.0
正如標題所述,ErgoSNM 最一開始的目標就是要無線化
之前的 Rev 2.1 已經完成有線的版本了,而且我自己每天都在用
現在總算進入無線的部分了
本文也發在我的Blog:https://ziteh.github.io/posts/ergosnm-v3-0-1
---
架構
雖然就目前來說,我認爲無線鍵盤的首選韌體應該是 ZMK 而非 QMK,
但是我對 ZMK 和 Zephyr 還不夠熟悉,而且我想要有 Vial 的功能,
所以目前還是用 QMK。
爲此我參考了 Mitosis 的設計。
左右半鍵盤各使用一個 nRF52840 做鍵掃描,
再將鍵狀態透過 Gazell 2.4GHz 無線通訊傳給接收器。
接收器由一個 nRF52840 和一個 ATmega32U4 組成,
nRF52840 爲 Gazell central 接收兩半鍵盤的鍵狀態,再透過 UART 傳給 ATmega32U4。
ATmega32U4 運行 QMK 並直接使用 UART 傳入的鍵狀態。
另外,右半還有一個軌跡球(PMW3360),其資料一樣是透過上述的方式傳到 QMK 內處理。
---
PCB
https://i.imgur.com/gvY1YEr.jpg
https://i.imgur.com/vDko2f6.jpg
這次一樣請 JLCPCB 生產 PCB。
目前的版本是 Rev 3.0-Alpha,只變更了左右半的主 PCB,其餘零件就延續 Rev2.1 的使用。
https://i.imgur.com/92FLv6v.png
主要就是把 MCU 從 RP2040 改成 nRF52840,
但是因爲我不想處理天線,所以用的是現成的模組 E73-2G4M08S1C。
我原本也有考慮 Raytac 的 MDBT50Q,
但是底部焊盤對我這個焊接技術不怎麼樣的人實在是有點麻煩(雖然我有加熱台就是了。
另外是電池我預計採用的是 eneloop 3 號電池 1.2V。
不使用鋰電池是因爲我覺得如果兩半同時沒電的話要接兩條 USB 充電,好像有點怪?
所以我選擇用換電池的方式。到底適不適合還要再看。
另外 LDO 的輸出入電容我畫成 0402 的了,之後應該會改成 0603。
---
測試
這是第一版的測試,可以看出延遲相當嚴重。
https://youtu.be/BIOsrYmRqe4
這個修改後的版本,延遲已經改善許多了。
修改的部分主要是把 QMK 的 UART 接收程式從 matrix_scan() 改到 pointing_device_task_kb() 內。
https://youtu.be/EPGxoYIOgcI
---
後續
其實無線版的 ErgoSNM 對我來說最大的困難是 Zephyr,我花了不少時間在看 Devicetree 怎麼用。
目前的傳輸看起來還不夠好,可能會再想辦法改善。還有比較重要的是耗電量的問題。
不過如果 QMK 實在是無法滿足需求的話,我還是會直接換去 ZMK。
對我來說 ZMK 有這些好處:
1. ZMK 是寬鬆的 MIT License,而 QMK 是 GPL。
2. 用 ZMK 的話就不用額外的接收器,可以直接用 BLE 藍牙。
3. ZMK 已經有包含功耗在內各方面最佳化。
總之,Rev 3 應該還要很久才可以完善...
---
附帶一提
我之前有提過想寫一系列的 QMK 教學,目前已經把比較重要的部分都寫好了,
如果有人也想要自己做一把 QMK 鍵盤的話,可以參考看看,也歡迎和我討論。
https://ziteh.github.io/posts/diyqmkkeyboard-0/
然後我把所有和鍵盤有關的 repo 都移到新開的組織:SideraKB
https://github.com/siderakb
---
相關連結
GitHub repo: https://github.com/siderakb/ergo-snm-keyboard
Rev 2.1 Docs: https://siderakb.github.io/docs/ergosnm/rev2
謝謝觀看~
--