PTT推薦

[鍵盤] 自製QMK無線分離式鍵盤分享(代po

看板Key_Mou_Pad標題[鍵盤] 自製QMK無線分離式鍵盤分享(代po作者
wk415937
(wk4)
時間推噓11 推:11 噓:0 →:1

代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

圖 自製QMK無線分離式鍵盤分享(代po

我沒上過PCB Layout的正式課程,只會連連看
不過這也不是什麼高頻或射頻電路,應該沒什麼差吧?

雖然我看完PMW3360的Datasheet覺得滿單純的
不過要實際完成軌跡球的功能估計還要花一段時間
畢竟還有硬體要設計

===

按鍵的Layout我其實還沒有定案
主要是我不確定要預留給軌跡球多大的空間
還有我也打不定按鍵數量的主意

目前的設計主要是參考Moonlander和ErgoDox EZ
但我自己也不是很滿意
未來再做調整

目前是這樣:
https://i.imgur.com/x8M3q6R.jpg

圖 自製QMK無線分離式鍵盤分享(代po

外殼的話也要等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

還有就是我只是一個窮研究生
平常要搞論文和計劃的東西
閒來無事才有空開發鍵盤

而我爲了開發這個鍵盤已經花了不少錢了
有時候聽到同學說又花了好幾萬去遊戲上
然後我連幾百幾千的電子零件都快沒辦法買
就覺得自己好廢
之前也沒想到開發會這麼花錢

接下來因爲我的銀彈也要見底了
再買零件就要沒錢吃飯了
所以開發進度可能會變慢


未來有進展,且大家有興趣的話再來分享
謝謝

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.69.229.102 (臺灣)
PTT 網址

observer011702/25 20:35ESP32-S2/S3應該就有內建USB支援,但S2不支援藍牙

ryanbug02/25 20:36跪… 三模好強

a61906302/25 22:03期待後續

gn0174666602/25 22:34期待後續

LanceOwO02/25 23:06神人跪推

HyDroGen252802/25 23:11推 最近也在打樣sofle跟nRFMicro

arnoldliu02/26 01:45好厲害

racket198402/26 02:09

racket198402/26 02:12目前nrf52840的方案都不怎麼省電喔

yys31002/26 11:11

Fm4n02/26 11:56推 神人

leeyutsung02/26 21:27推實作