STM_Keyboard 是一个基于 STM32G431 微控制器的开源高性能磁轴小键盘项目(4 Key Keypad)。本项目利用霍尔传感器实现 Rapid Trigger (RT) 功能,专为音乐游戏(如 osu!)和极速响应需求设计。
项目包含完整的底层驱动、模拟信号处理、OLED UI 交互以及炫酷的 RGB 灯效系统。
- 动态触发/释放:抛弃传统机械轴的固定触发点,通过霍尔传感器实时检测磁通量变化。
- 自定义参数:
- 触发键程 (
Position Threshold):自定义按下的触发深度。 - RT 灵敏度 (
Speed Threshold):自定义快速触发 (Trigger) 和快速释放 (Release) 的速度阈值。
- 触发键程 (
- 模拟算法:内置 ADC 滤波与状态机算法,确保触发精准无误触。
- 可视化配置:板载 OLED 屏幕,无需上位机即可通过触摸按键调整键盘设置。
- 流畅动画:内置 UI 动画引擎,支持多种缓动函数 (
Ease-In,Ease-Out,Elastic等),提供丝滑的菜单切换体验。 - 实时状态:显示 CPS (Clicks Per Second)、当前模式图标及参数数值。
- 独立灯珠控制:每个按键对应独立的 RGB 灯光。
- 动态效果:
- 按压反馈:按下按键时触发渐变/爆闪效果。
- 空闲特效:支持彩虹轮询 (
Rainbow Cycle) 等待机动画。 - 参数可调:支持调节亮度、流光速度及样式。
- 键盘输出模式 (Keyboard Mode):USB HID 免驱,电脑识别为标准键盘/小键盘,超低延迟。
- 设置模式 (Settings Mode):通过板载触摸按键 (ESC/Mode) 调整 RT 参数、灯光及校准。
详细的硬件清单如下:
- 主控芯片: STM32G431CBT6 (170 MHz Cortex-M4, Math Accelerator)
- 轴体传感器: 霍尔传感器 TLE4968 (配合磁轴)
- 电压基准: TLV431 (ADC 高精度可调节稳压源,确保模拟量采样稳定)
- 显示屏: 0.96寸 / 1.3寸 OLED
- 按键布局: 4 x 磁轴按键 + 2 x 触摸功能键 (Mode, ESC)
STM_Keyboard/
├── Core/
│ ├── Inc/ & Src/
│ ├── keyboard_controller.c # 核心键盘逻辑、RT算法实现
│ ├── oled_controller.c # OLED UI 绘制与动画管理
│ ├── rgb_controller.c # RGB 灯效控制
│ ├── adc_controller.c # 霍尔传感器数据采集与滤波
│ └── usb_device.c # USB HID 设备描述符配置
├── Drivers/ # STM32 HAL 库
└── USB_Device/ # USB 协议栈实现
本项目使用 STM32CubeIDE 进行开发。
- 克隆仓库:
git clone https://github.com/UnikoZera/STM_Keyboard.git
- 导入项目:
- 打开 STM32CubeIDE。
- File -> Open Projects from File System -> 选择项目目录。
- 编译烧录:
- 点击
Build生成.elf/.bin文件。 - 使用 ST-Link 或 DAPLink 连接开发板进行
Debug或Run。
- 点击
- USB HID 键盘通讯
- ADC 霍尔采样与滤波
- Rapid Trigger 基础算法
- OLED 基础菜单与图标
- RGB 灯效基础框架
- 上位机驱动软件 (计划中)
- 更多自定义灯效模式
Project resurrected and currently in WIP (Work In Progress) state.