站内搜索
更多
4键8K回报率磁轴小键盘
专业版

4键8K回报率磁轴小键盘

简介

专为游玩OSU等音游打造的磁轴小键盘,能够实现基本的HID输入与上位机设置键盘参数。基于STM32F405RGT6与USB3300外部PHY。具体参数请查看描述页。

简介: 专为游玩OSU等音游打造的磁轴小键盘,能够实现基本的HID输入与上位机设置键盘参数。基于STM32F405RGT6与USB3300外部PHY。具体参数请查看描述页。
星火计划2026
复刻成本:50

开源协议

GPL 3.0

创建时间:2026-04-02 14:17:50更新时间:2026-07-13 09:21:56

描述

视频链接:

附件中有简单的实际使用演示视频。具体介绍视频暂未发布

项目简介

本项目是一款专为 OSU! 等4K音游打造的磁轴小键盘。采用 STM32F205RET6 为主控,通过 DRV5055A1 线性霍尔传感器采集磁轴按键行程,配合外部 ULPI PHY(USB3300 方案)实现 USB 2.0 HS 连接,回报率最高可达8kHZ
键盘配备 4 颗磁轴(默认 Z/X/C/V,键位可自由映射)、EC11 旋转编码器 与 ENC_KEY,并预留 0.91 寸 OLED 接口,规划实现离线设置菜单与快捷翻页。灯效采用 WS2812B实现。
设备通过 Boot HID 键盘 完成游戏输入,并通过 Vendor HID 协议 配合 Python 上位机进行触发阈值、RT 灵敏度、键位映射、磁轴校准等配置;参数写入片内 Flash,断电不丢失。

项目功能

1. 基础 HID 输入

固件以 复合 USB 设备 枚举:接口 0 为 Boot Keyboard,接口 1 为 Vendor HID(64 字节自定义报告)。

6 槽物理按键映射hid_keyboard_api.c):

槽位默认功能说明
0–3Z / X / C / V磁轴通道,边沿触发上报
4↑ / ↓EC11 编码器旋转(短脉冲,约 15 ms)
5EscENC_KEY 按键
  • 磁轴槽 0–3 的 HID 键码可通过 Vendor OUT 命令 0x300x33 单独修改。
  • 触发判定基于滤波后的行程值,边沿变化即上报,保证按键响应及时。

2. 磁轴行程采集

采样:双 ADC + DMA 循环缓冲,TIM2 TRGO 触发扫描,约 7.9 kHz
滤波:3 点中值 + EMA 基线跟踪(main.c)。

3. 磁轴校准

支持消除霍尔/装配差异导致的通道满量程不一致(mag_calib.c):

方式操作说明
手动两点静止 → 触底分步采集 rest/bottom EMA
自动校准静止 → 按到底 → 松开固件自动识别端点,单键一次行程
清除单通道 / 全部清除校准数据并标记 Flash 脏

校准成功后自动应用建议触发/释放阈值(约 2.0 mm / 1.5 mm),并可通过上位机保存到 Flash。校准过程中对应通道暂停 HID 触发,避免误报。

4. Rapid Trigger(RT)

参考 Wooting 磁轴键盘的峰值追踪逻辑(hid_adc_keys.c):

  • RT 关闭:经典滞回——超过触发阈值按下,低于释放阈值松开。
  • RT 开启:在按压过程中追踪峰值与谷值,按 灵敏度(mm) 判定释放与再触发。
  • 每通道可独立设置灵敏度;参数持久化于片内flash

5. 参数配置与 Flash 持久化

Vendor OUT 命令(与 vendor_hid_protocol.py / vendor_out_cmd.c 一致):

类别命令功能
阈值0x000x07各通道触发/释放阈值(travel 量纲)
RT0x10RT 开关
RT0x110x14各通道统一灵敏度(mm)
RT0x150x18各通道再触发灵敏度(Split 模式)
键位0x300x33各磁轴槽 HID 键码
存储0x20提交当前 RAM 参数到 Flash
回读0x21请求参数镜像(经 Vendor IN 上报)
校准0x40 / 0x41单通道校准 / 清除全部

Flash 布局:扇区 7 @ 0x08060000(128 KB),含 magic、版本号、CRC32、阈值、RT、键码、校准端点等。上电 UserParam_LoadAndApply() 自动加载;改参后防抖写入(约 400 ms)或上位机显式提交。

6. USB 高速与 Vendor 遥测

┌─────────────┐    Boot Keyboard     ┌──────────┐
│  hid_adc_keys│ ──────────────────► │ 操作系统  │
│             │    Vendor IN (64B)   │          │
│             │ ──────────────────► │ 上位机 GUI│
│             │ ◄── Vendor OUT ────── │          │
└─────────────┘                       └──────────┘
  • Vendor IN v5(最高 8 kHz):序列号、按键掩码、四通道 travel_pos、触发/释放阈值、RT 参数、校准状态等。
  • 回报率切换:开机时若 ENC_KEY 按下,Vendor 遥测设为 8 kHz;否则 1 kHz(main.c)。
  • 说明:Boot 键盘报告为边沿触发,受 Windows kbdhid 驱动限制,实际按键回报率通常低于 8 kHz;高频优势主要体现在 Vendor 遥测、调参监控与低延迟触发逻辑。

7. 上位机软件

osu_keyboard_gui.py(依赖 hidapivendor_hid_protocol.py):

  • 无感连接:启动后后台枚举设备,发现即自动连接,断线/拔插后自动重连。
  • 主界面:四通道实时行程(mm)、2×2 参数网格、键盘布局状态指示。
  • 工具菜单
    • 按键映射:四通道 HID 键码配置;
    • 磁轴校准:手动三步 / 单键自动 / 四键依次自动;
    • RT 设置:开关与各通道灵敏度(mm)。
  • 持久化:参数下发后可「写入并保存到芯片」。

8. 灯效(WS2812B)

  • 已实现 PWM + DMA 驱动,4 颗 LED 链挂于 PC6(TIM3)。
  • 当前固件为主循环彩虹演示效果。
  • 规划中:按键状态联动、上位机可配置灯效模式。

9.EC11模拟输入

  • 模拟“↑,↓输入”:编码器正转反转映射为↑↓输入,实现翻页功能
  • ENC_KEY:编码器按下默认映射为“ESC”

项目参数

主控 : STM32F205RET6
霍尔传感器: DRV5055A1 ×4
旋转编码器:EC11(TIM4 正交解码)
显示屏: 0.91 OLED(SPI,引脚已引出,后续可能会更新)
灯效: WS2812B ×4
USB: OTG HS + 外部 ULPI PHY(USB3300)

原理解析(硬件说明)

1.系统供电

  • 系统总电源:由TYPEC接口提供5V电源(VCC),使用ESD5Z6.0实现简单的ESD防护。

Snipaste_2026-07-10_10-41-15.png

  • LDO降压:使用两颗SPX3819M5-3.3芯片实现5V-3.3V降压,分别给数字(3V3)与模拟部分(A3V3)供电
    数字部分供电负责主控与usb3300的供电,模拟部分负责霍尔传感器的供电。数字地与模拟地未分割,主控的VDDA使用一颗磁轴连接A3V3.

Snipaste_2026-07-10_10-47-46.png
Snipaste_2026-07-10_10-45-30.png

  • WS2812B电源:由USB5V经1N5819WS二极管输出供电(VRGB)
  • Snipaste_2026-07-10_10-50-39.png

2.外部PHY实现USB2.0HS

因STM32F405RET6芯片没有内置usb2.0hs phy,所以需要通过ULPI接口配合外部PHY实现USB2.0HS。外部PHY选用USB3300芯片。具体参数请查看数据手册:chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://ww1.microchip.com/downloads/en/DeviceDoc/00001783C.pdf

ULPI接口介绍

ULPI协议,全称为UTMI+ Low Pin Interface,是一种用于USB控制器和USB PHY之间通信的协议。它是基于UTMI(USB 2.0 Transceiver Macrocell Interface)的低引脚版本,旨在减少所需的引脚数量,同时保持与UTMI的兼容性。ULPI通过提供一个8位的双向数据总线,以及其他几个控制信号,实现了与外部PHY的有效连接。
详细介绍请参考:https://blog.csdn.net/huangkangying/article/details/104280372

Snipaste_2026-07-10_17-26-35.png

Snipaste_2026-07-10_11-00-04.png
**注:实测发现PHY芯片的晶振必须并联1MΩ电阻协助起振。不焊接该电阻会造成PHY晶振起振失败,工作异常。
R3(12K)电阻需使用0.1%高精度电阻

3.编码器

编码器使用EC11,编码器信号输出使用了硬件RC滤波,降低软件采样噪声。
编码器原理参考:https://blog.csdn.net/Ammon_Zhang/article/details/84585205

Snipaste_2026-07-10_11-02-24.png

4.RGB

使用4颗内置ic的WS2812B实现RGB,电路如下:

Snipaste_2026-07-10_11-06-01.png
WS2812B单线通讯协议参考:http://zhuanlan.zhihu.com/p/719305231

软件代码

见附件

注意事项

当前发布版本使用的PCB版本与实物图演示版本不同,使用的是未经修改的版本,安装孔位置和外形与发布版不同。
所以图中看到的螺母外露和边缘贴合不严属于正常现象。
发布版本将安装孔位置内移,修复了螺母和螺丝头外露的问题,以及添加了防滑垫安装槽位。

组装流程

非常简单,螺母嵌到底部槽里,再把螺丝拧进去就行。

实物图

当前发布版本使用的PCB版本与实物图演示版本不同,实物图使用的是未经修改的版本,安装孔位置和外形与发布版不同。
所以图中看到的螺母外露和边缘贴合不严属于正常现象。
发布版本将安装孔位置内移,修复了螺母和螺丝头外露的问题

IMG_20260710_113256.jpg

IMG_20260710_113310.jpg

IMG_20260710_113319.jpg
注:本人为建模低手,直接用了三明治结构,外壳设计多有不足,各位轻喷。

更新记录

2026.7.11:发布

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
1
3D.rar
5

附件

序号文件名称下载次数
1
3D.rar
6
2
host.rar
8
3
205RET6.rar
11
4
docs.rar
9
5
上位机使用说明.md
9
6
演示视频.mp4
5
7
演示视频_compressed.mp4
4
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航