作者wk415937 (wk4)
看板Key_Mou_Pad
标题[键盘] 自制QMK无线分离式键盘分享(代po
时间Fri Feb 25 19:31:34 2022
代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
还有就是我只是一个穷研究生
平常要搞论文和计划的东西
闲来无事才有空开发键盘
而我爲了开发这个键盘已经花了不少钱了
有时候听到同学说又花了好几万去游戏上
然後我连几百几千的电子零件都快没办法买
就觉得自己好废
之前也没想到开发会这麽花钱
接下来因爲我的银弹也要见底了
再买零件就要没钱吃饭了
所以开发进度可能会变慢
未来有进展,且大家有兴趣的话再来分享
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 203.69.229.102 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Key_Mou_Pad/M.1645788696.A.B7B.html
1F:推 observer0117: ESP32-S2/S3应该就有内建USB支援,但S2不支援蓝牙 02/25 20:35
2F:推 ryanbug: 跪… 三模好强 02/25 20:36
3F:推 a619063: 期待後续 02/25 22:03
4F:推 gn01746666: 期待後续 02/25 22:34
5F:推 LanceOwO: 神人跪推 02/25 23:06
6F:推 HyDroGen2528: 推 最近也在打样sofle跟nRFMicro 02/25 23:11
7F:推 arnoldliu: 好厉害 02/26 01:45
8F:推 racket1984: 推 02/26 02:09
9F:→ racket1984: 目前nrf52840的方案都不怎麽省电喔 02/26 02:12
10F:推 yys310: 推 02/26 11:11
11F:推 Fm4n: 推 神人 02/26 11:56
12F:推 leeyutsung: 推实作 02/26 21:27
13F:推 kevingamer: 推,加油,你做的事很有意义 12/25 09:46