基于 GP2040-CE 的新时代全彩无线格斗手柄固件 · v0.1.0
GP-Combine 是在 GP2040-CE 基础上深度定制的手柄固件,面向“平民向”玩家:把原版需要电脑/网页才能完成的配置,直接搬到手柄上的一块彩色屏幕里,全程中文引导。项目分为正式版(ESP32-S3 + Pico 双芯)与 Lite 版(单 Pico)两个版本。
-
双芯架构:Pico 负责手柄输入与 WS2812B 灯效,ESP32-S3 负责 240×135 全彩屏幕与菜单,两者以 921600 高速 UART 互联
-
全彩滑动菜单:6 大页面(设置 / 电池 / 灯光 / 背景 / 休眠 / 无线),程序绘制图标 + 内置中文字库
-
按键布局可视化:街机 / HITBOX / WASD / 自定义四套布局,按键按下实时高亮,支持输入历史记录
-
背景图系统:5 档透明度、水平/垂直翻转、反色,可自由更换背景
-
屏保与彩蛋:新增了嘉豪必备的字母雨,更新了原屏保,支持自定义gif作屏保
-
无线手柄模式:nRF24L01 固定信道 + 固定地址,接收端插电脑即用,配对后自动切换输入模式
-
电池检测:Pico 侧 VSYS 采样,屏幕实时显示电量/USB 状态
-
菜单静音:进入菜单自动停止 USB 手柄输出,防止对战时误触 配置助手(PC):引导式定制——背景图自动转分辨率、按键布局可视化编辑、热键/灯序配置、GIF 压缩、配置备份导入导出.支持windows与linux双平台
彩蛋:菜单两个选项之中还有一个选项...这里有个男人...
- 128×64 单色 I2C 屏幕 + 中文滑动菜单(设置 / 显示 / 灯光 / 休眠 / 系统)
- 移植正式版滑动菜单交互:上下滑动动画、滚动条、滑块调节、保存确认弹窗
- 屏保(含 MATRIX)与流水灯效
- 菜单静音:进菜单停止 USB 输出
- 保留原版全部输入能力、RGB 灯效与 Web 配置
- 长按 S2 3 秒进入菜单,十字键 / 左摇杆左右滑动页面,A 确定、B 返回
- 6 大页面:设置 / 电池 / 灯光 / 背景 / 休眠 / 无线,底部缩略方块同步指示当前位置
- 子页面支持上下滑动 + 滚动条 + 丝滑动画;滑块选项按 A 进入调节、B 退出,右侧实时显示数值
- 修改后按 B 返回会弹出「是否立即保存」确认框
- 彩蛋:菜单内右-左交替 12 连击触发
有线延迟采用 GP2040-CE 官方实测数据(v0.7.12,默认 1000 Hz 轮询)。GP-Combine 保留原版完整输入路径,有线延迟与原版一致。
| 输入模式 | 轮询率 | 最小 | 最大 | 平均 |
|---|---|---|---|---|
| XInput | 1000 Hz | 0.45 ms | 1.28 ms | 0.76 ms |
| Switch | 1000 Hz | 0.41 ms | 1.22 ms | 0.72 ms |
| HID | 1000 Hz | 0.42 ms | 1.25 ms | 0.73 ms |
| PS3 | 1000 Hz | 0.52 ms | 1.46 ms | 0.83 ms |
| PS4 | 1000 Hz | 0.55 ms | 2.33 ms | 0.90 ms |
| PS5 | 1000 Hz | 0.55 ms | 2.38 ms | 0.91 ms |
无线链路:Pico → UART(921600) → ESP32-S3 → nRF24(2 Mbps) → 接收端 Pico → USB。按键按下时立即发送,无需等待心跳周期,链路附加延迟约 1 ms。
| 输入模式 | 有线平均 | 无线附加(估算) | 无线总延迟(估算) |
|---|---|---|---|
| XInput | 0.76 ms | ≈1 ms | ≈1.8 ms |
| Switch | 0.72 ms | ≈1 ms | ≈1.7 ms |
| HID | 0.73 ms | ≈1 ms | ≈1.7 ms |
| PS3 | 0.83 ms | ≈1 ms | ≈1.8 ms |
| PS4 | 0.90 ms | ≈1 ms | ≈1.9 ms |
| PS5 | 0.91 ms | ≈1 ms | ≈1.9 ms |
说明:无线延迟为链路估算(UART 帧约 0.2 ms + nRF24 传输/ACK 约 0.4–0.6 ms + 接收端一个轮询周期内上报),实际以使用环境为准。心跳档位(50 / 20 / 10 ms)只影响静止状态的刷新频率,不影响按键按下时的即时发送。
| 引脚 | 功能 | 说明 |
|---|---|---|
| GPIO8 | 屏幕 RST | ST7789 复位 |
| GPIO9 | 屏幕 DC | ST7789 数据/命令 |
| GPIO10 | 屏幕 CS | ST7789 片选 |
| GPIO11 | SPI MOSI | 屏幕数据(写) |
| GPIO12 | SPI SCK | 屏幕时钟 |
| GPIO13 | 屏幕背光 BL | PWM 调光 |
| GPIO43 | UART0 TX | → Pico RX(GPIO1) |
| GPIO44 | UART0 RX | ← Pico TX(GPIO0) |
| GPIO14 | nRF24 CSN | 无线片选 |
| GPIO15 | nRF24 CE | 无线使能 |
| GPIO16 | nRF24 SCK | 无线时钟 |
| GPIO17 | nRF24 MOSI | 无线数据(写) |
| GPIO18 | nRF24 MISO | 无线数据(读) |
| GPIO48 | 板载活动指示 | 板载 WS2812 数据脚,固件按普通 LED 驱动 |
| 引脚 | 功能 | 说明 |
|---|---|---|
| GPIO0 | UART0 TX | → ESP32 RX(GPIO44) |
| GPIO1 | UART0 RX | ← ESP32 TX(GPIO43) |
| GPIO2–5 | 十字键 | UP / DOWN / RIGHT / LEFT |
| GPIO6–13 | 动作键 | B1 / B2 / R2 / L2 / B3 / B4 / R1 / L1 |
| GPIO15 | 保留 | addon 占用 |
| GPIO16–21 | 功能键 | S1 / S2 / L3 / R3 / A1 / A2 |
| GPIO25 | 链路指示灯 | UART ACK 时点亮 |
| GPIO28 | WS2812B 数据 | RGB 灯带 |
| GPIO29 | 电池检测 | ADC(VSYS/3) |
| USB | 手柄输出 | 连接电脑/主机 |
| 引脚 | 功能 | 说明 |
|---|---|---|
| GPIO2 | nRF24 SCK | 无线时钟 |
| GPIO3 | nRF24 MOSI | 无线数据(写) |
| GPIO4 | nRF24 MISO | 无线数据(读) |
| GPIO5 | nRF24 CSN | 无线片选 |
| GPIO6 | nRF24 CE | 无线使能 |
| GPIO25 | 链路/配对指示灯 | 状态指示 |
| USB | 手柄输出 | 连接电脑/主机 |
| 引脚 | 功能 | 说明 |
|---|---|---|
| GPIO0 / GPIO1 | I2C 屏幕 | SDA / SCL(128×64 单色屏) |
| GPIO2–5 | 十字键 | UP / DOWN / RIGHT / LEFT |
| GPIO6–13 | 动作键 | B1 / B2 / R2 / L2 / B3 / B4 / R1 / L1 |
| GPIO14 | TURBO | 连发键 |
| GPIO15 | TURBO LED | 连发指示灯 |
| GPIO16–21 | 功能键 | S1 / S2 / L3 / R3 / A1 / A2 |
| GPIO28 | WS2812B 数据 | RGB 灯带 |
| USB | 手柄输出 | 连接电脑/主机(保留 Web 配置) |
