嵌入式健康鼠标设计:PPG传感与三模连接系统实现
光电容积脉搏波(PPG)是一种广泛应用于可穿戴设备的无创生理信号采集技术,其原理基于血液对特定波长光的吸收变化,结合跨阻放大、ADC采样与数字滤波实现心率、血氧等参数提取;在资源受限的嵌入式系统中,PPG需与主控实时调度、低噪声电源管理及多模无线协议深度协同。该技术具备低侵入性、高集成潜力和长期连续监测价值,适用于办公健康终端、远程慢病管理及人机交互增强场景。本文以一款支持USB/2.4G/BLE
1. 项目概述
CyMouse 是一款面向长时间办公场景的嵌入式健康监测外设,其核心设计目标是在不改变用户操作习惯、不增加额外佩戴负担的前提下,实现对生理参数的无感采集与持续追踪。项目并非简单地将健康传感器堆叠进鼠标外壳,而是围绕“人机交互连续性”与“数据采集可靠性”两大工程约束展开系统级设计:一方面,鼠标作为日均接触时间超6小时的输入设备,天然具备稳定接触手指末梢微循环区域的物理条件;另一方面,健康监测模块必须在严苛的空间、功耗与热约束下完成高信噪比信号提取。这种双重约束决定了本项目在硬件架构、电源管理、传感器融合及固件调度等层面均需采用针对性优化策略。
项目采用 ESP32-S3FH4R2 作为主控单元,该芯片集成了双核 Xtensa LX7 处理器、USB 2.0 Full-Speed 接口、2.4GHz Wi-Fi/Bluetooth 5.0 双模射频前端以及 512KB SRAM 和 8MB Flash,为三模连接协议栈、多传感器数据融合及本地 UI 渲染提供了坚实的算力基础。区别于传统鼠标仅关注定位精度与响应延迟,CyMouse 将健康数据流视为与鼠标运动数据同等重要的实时数据通道,二者在固件层共享统一的时间戳基准,并通过独立的 DMA 通道并行处理,避免因健康监测任务抢占导致指针抖动或回报率下降。
从系统演进角度看,项目经历了从概念验证到工程落地的关键迭代。早期版本受限于 MCU 封装尺寸与射频性能,在无线模式下仅能缓存单次健康检测结果,且蓝牙重连存在明显卡顿。1.66 版本通过更换为更紧凑的 ESP32-S3FH4R2、引入独立 RTC 芯片 RX8130CE:B3、重构天线布局并优化固件调度逻辑,系统性解决了数据持久化、连接鲁棒性与时钟精度三大瓶颈。这些改进并非孤立的技术升级,而是构成一个相互支撑的工程闭环:更小的 MCU 封装释放了 PCB 空间,使 IPEX 外接天线与 RTC 布局成为可能;RTC 提供的高精度时基支撑了健康数据的时间序列分析;而固件层对 BLE 连接状态机的重写,则直接提升了用户体验的连贯性。
2. 硬件系统架构
2.1 主控与连接子系统
主控单元选用 ESP32-S3FH4R2,其 R2 后缀表明该型号内置 8MB Octal PSRAM 与 8MB Flash,无需外部存储即可承载完整的三模协议栈、健康算法模型及 OLED 图形缓存。该芯片采用 QFN56 封装(7mm × 7mm),较前代 ESP32-S2 在相同功能下面积缩减约 35%,为高密度布局创造了关键条件。其 USB PHY 直接支持 USB 2.0 Full-Speed(12 Mbit/s)模式,作为有线连接的物理层,可稳定输出 1000Hz 回报率——这一指标虽未达到 PAW3395DM-T6QU 传感器理论极限(最高 12000Hz),但已显著超越主流办公鼠标(如罗技 G102 的 125Hz)与多数游戏鼠标(500–1000Hz)的实际表现,确保指针移动的绝对平滑性。
无线连接采用分立式架构:2.4G 无线模式通过 ESP32-S3 自带的射频前端实现,工作于 2.402–2.4835 GHz ISM 频段,使用专有协议以规避 BLE 带宽限制;蓝牙模式则启用 BLE 5.0 协议栈,支持 Bluetooth SIG 定义的 HID over GATT(HOGP)规范,确保与 Windows/macOS/Linux 系统的即插即用兼容性。值得注意的是,两种无线模式共享同一套射频前端与天线,因此在硬件设计上必须解决频段隔离与阻抗匹配问题。项目采用 IPEX1 接口外接 2.4G 专用陶瓷天线(6cm 线长),其 S11 参数在 2.4GHz 频点实测优于 -12dB,较板载 PCB 天线提升约 8dB 增益,有效改善了弱信号环境下的连接稳定性与传输距离。
2.2 光学定位子系统
定位引擎采用 PixArt PAW3395DM-T6QU 光学传感器,该器件是当前消费级鼠标中性能标杆之一,支持最高 26000 DPI、400 IPS(英寸/秒)追踪速度与 50g 加速度。其内部集成 32-bit DSP 与自适应表面校准算法,可在玻璃、金属、粗糙木纹等多种表面实现亚像素级定位精度。传感器通过 SPI 接口与 ESP32-S3 通信,时钟频率配置为 10MHz,满足其最大 12000Hz 原生帧率的数据吞吐需求。SPI 总线采用独立 GPIO 引脚(MOSI/MISO/SCK/CS),未与其他外设复用,避免总线竞争导致的帧丢失。
配套光学镜头选用 LM19-LSI 型号,该镜头具有 1:1 成像比例与 2.5mm 工作距离,专为 PAW3395 的 CMOS 尺寸(1/2.5")与像素间距(1.4μm)优化。镜头安装采用精密金属支架固定,确保光轴与传感器感光面严格垂直,消除因倾斜导致的图像畸变。DPI 切换功能由底部独立物理按键实现,该按键直接连接 ESP32-S3 的 GPIO,触发外部中断后,固件在中断服务程序中修改 PAW3395 的 DPI 寄存器(地址 0x00),切换过程无延迟、无抖动。
2.3 健康监测子系统
健康监测模块采用集成式光电容积脉搏波(PPG)传感器套件,其核心为 JFH142(或兼容型号 MQ-142/MKS-142/JFC103)六通道模组。该模组内部集成红光(660nm)、红外(850nm)及绿光(525nm)LED 阵列、低噪声跨阻放大器(TIA)、16-bit Σ-Δ ADC 以及数字信号处理器,支持同步采集多波长 PPG 信号。模组通过 6-pin FPC 接口与主控连接,其中包含 VCC、GND、SCL、SDA、INT(中断)及 RESET 信号线,采用标准 I2C 协议(400kHz 速率)进行寄存器配置与数据读取。
PPG 信号采集的关键在于光学耦合稳定性。项目将传感器模组嵌入鼠标左键下方斜坡区域,该位置在用户自然握持时,食指指腹可稳定覆盖传感器窗口。模组表面覆盖一层医用级硅胶透光垫片,其邵氏硬度为 30A,既保证足够弹性以适应不同手指尺寸,又提供恒定压力确保皮肤-传感器间隙最小化。LED 驱动电流由 ESP32-S3 的 DAC 输出经运放调理后精确控制,避免因电流波动引入基线漂移。原始 PPG 数据经 I2C 读取后,在 MCU 内部进行实时滤波(50Hz 陷波 + 0.5–15Hz 带通)、心率变异性(HRV)分析及血氧饱和度(SpO₂)计算,算法基于 Lambert-Beer 定律与脉动比率法(R-value),无需云端服务器参与。
2.4 人机交互与显示子系统
用户界面由一块 0.66 英寸、64×48 分辨率的 16-pin OLED 屏幕承担。该屏幕采用 SSD1306 兼容驱动 IC,通过 I2C 接口(SCL/SDA)与主控通信,支持 128 级灰度显示。为降低动态画面功耗,屏幕供电路径中串联一颗 TPS22919QDCKRQ1 负载开关,其导通电阻仅 35mΩ,关断漏电流小于 10nA。MCU 可在待机状态下彻底切断屏幕供电,实现零功耗显示保持。
RGB 灯效系统由三颗独立可控的 WS2812B LED 构成,分别位于鼠标左右侧键后方及滚轮下方。WS2812B 为单线串行协议器件,每个 LED 内置 PWM 控制器与 24-bit RGB 驱动电路。为保障 LED 在电池电压跌落时亮度稳定,系统增设 TPS61222DCKR DC-DC 升压芯片,将 3.3V 系统电压升至 5V 作为 LED 驱动电源。该升压电路同样受 TPS22919QDCKRQ1 控制,MCU 可在非活跃时段关闭整个灯效系统。
2.5 电源管理子系统
电源架构采用三级管理策略,兼顾效率、热分布与功能隔离:
-
充电管理 :采用 TI BQ24075RGTR 充电管理 IC,支持最大 1A 恒流充电、4.2V 恒压终止及 JEITA 温度合规充电。其核心优势在于集成 Power Path™ 功能——当 USB 输入存在时,系统可优先由输入电源供电,同时为电池充电;当输入断开时,自动无缝切换至电池供电。此设计彻底消除了“边充边用”场景下的电源切换毛刺,避免因电压瞬降导致 MCU 复位或传感器数据丢失。
-
主电源转换 :电池标称电压为 3.7V(103443-1500mAh 锂聚合物电池),经 TLV62569DBVR 同步降压 DC-DC 转换器输出 3.3V 系统电压。该芯片开关频率为 1.5MHz,体积小巧(SOT-23-6 封装),满载效率达 95%。选择 DC-DC 而非 LDO 的根本原因在于热管理:若采用 LDO,在 1500mA 最大负载下,压差(3.7V–3.3V=0.4V)将产生 0.6W 稳态功耗,热量在密闭鼠标腔体内积聚,导致壳体温度升高并加速电池老化。DC-DC 方案将热损耗降至 0.03W 量级,显著改善热舒适性。
-
功能域供电隔离 :除主电源外,RGB 灯效与 OLED 屏幕各自拥有独立的供电路径,均由 TPS22919QDCKRQ1 负载开关控制。这种设计允许固件按需启停各功能模块,例如在浅休眠模式下仅维持 MCU 实时时钟与传感器唤醒电路供电,其余模块全部断电,整机静态电流可控制在 15μA 以下。
2.6 辅助功能与扩展接口
-
实时时钟(RTC) :新增 RX8130CE:B3 独立 RTC 芯片,采用 I2C 接口,内置 32.768kHz 晶振与纽扣电池备份电路。其作用不仅是为浅休眠界面提供准确日期/时间/星期显示,更重要的是为健康数据打上高精度时间戳。PAW3395 与 PPG 传感器均无内置高精度时钟,依赖 MCU 系统时钟易受温度漂移影响,而 RX8130CE:B3 的月误差小于 2 分钟,确保长期健康趋势分析的时序可靠性。
-
无线充电接口 :预留 Qi 兼容无线充电接收电路,采用直径 25mm、电感量 18μH 的定制线圈,配合全波整流桥与 BQ24075 的充电输入端接入。当前版本已完成电路整合性测试,但发射端匹配度不足导致充电效率低下。工程实践表明,无线充电效能高度依赖发射线圈与接收线圈的几何中心对齐度及气隙距离,建议后续开发中采用磁吸定位结构或定制微型发射底座。
-
机械结构适配 :所有机械部件(TTC 防尘金微动、TTC 编码器、罗技 G102/G304/G305 通用滚轮)均经过尺寸公差验证。外壳采用 Autodesk Fusion 360 参数化建模,关键装配尺寸(如微动触杆长度、侧键行程空间)留有 ±0.15mm 余量,允许用户根据 3D 打印材料收缩率进行微调。半透明 PETG 材料打印方案不仅满足结构强度,其 0.8mm 壁厚与漫反射特性使 RGB 灯光呈现均匀柔光效果。
3. 关键电路设计原理
3.1 电源路径管理电路
BQ24075RGTR 的 Power Path™ 架构是本项目电源系统的核心创新点。其内部框图包含三个关键模块:输入限流与过压保护(VIN)、电池充电管理(CHG)及系统电源路径(SYS)。当 VIN(USB 输入)存在时,内部 MOSFET 导通,SYS 引脚电压由 VIN 经低压降调节后提供,此时电池处于涓流/恒流/恒压充电阶段;当 VIN 移除时,内部反向阻断 MOSFET 关断,SYS 电压自动切换至电池端。该切换过程在 10μs 内完成,无电压跌落。
电路设计中,BQ24075 的 BAT 引脚直接连接电池正极,SYS 引脚经 LC 滤波后供给 TLV62569DBVR 输入端。特别注意其 PROG 引脚外接电阻 R_PROG 设置充电电流:R_PROG = 1200 / I_CHG(kΩ),当 R_PROG = 1.2kΩ 时,I_CHG = 1A。此外,BQ24075 的 STAT 引脚输出开漏信号,经上拉电阻后连接 ESP32-S3 GPIO,用于实时监测充电状态(STAT=0 表示充电中,STAT=1 表示充电完成或故障)。
3.2 传感器供电与信号链路
PPG 传感器模组对电源噪声极为敏感,其 TIA 输入端噪声每增加 1μV,SpO₂ 计算误差可达 2%。为此,模组 VCC 电源路径采用两级滤波:第一级为 TLV62569DBVR 输出端的 10μF X5R 陶瓷电容 + 1μH 功率电感,构成 LC 低通滤波器(截止频率约 50kHz);第二级为模组输入端的 100nF 陶瓷电容 + 10Ω 铁氧体磁珠,进一步抑制高频开关噪声。I2C 总线在靠近模组端添加 4.7kΩ 上拉电阻(接 3.3V),并铺设完整地平面,确保信号完整性。
PAW3395 的 SPI 接口设计遵循高速数字电路准则:MOSI/MISO/SCK 走线长度严格匹配(偏差 < 5mm),CS 信号走线最短,所有信号线距参考地平面距离恒定。传感器供电(VDDIO=3.3V, VDD=3.3V)同样经过 LC 滤波,其晶振电路(24MHz)采用 12pF 负载电容,紧邻芯片放置,避免起振不良。
3.3 OLED 与 RGB 灯效驱动电路
OLED 屏幕的 I2C 总线在靠近 ESP32-S3 端设置 4.7kΩ 上拉电阻,模组端不设上拉,防止总线冲突。TPS22919QDCKRQ1 的 ON 引脚经 10kΩ 电阻上拉至 3.3V,由 MCU GPIO 控制,低电平有效。其输出端(OUT)接屏幕 VCC,输入端(IN)接 TLV62569DBVR 输出,使能时压降仅 35mV。
RGB 灯效电路中,TPS61222DCKR 将 3.3V 升压至 5V,其反馈分压网络(R1=301kΩ, R2=100kΩ)设定输出电压为 5.0V。升压输出经 TPS22919QDCKRQ1 后供给 WS2812B 的 VDD 引脚。WS2812B 的 DIN 引脚直接连接 ESP32-S3 的 GPIO(需配置为 800kHz 单线协议),其内部集成的 500mA 开关管可直接驱动 LED,无需外部晶体管。
4. 软件系统设计
4.1 固件架构与实时调度
固件基于 ESP-IDF v5.1 框架开发,采用 FreeRTOS 实时操作系统,创建四个核心任务:
mouse_task:负责 PAW3395 数据采集、DPI 解析、USB/HID 报文封装与发送,优先级最高(configLIBRARY_MAX_PRIORITIES-1),采用 1ms 周期定时器触发;health_task:管理 PPG 传感器初始化、采样触发、原始数据读取、实时滤波与特征提取,周期为 200ms(对应 5Hz 采样率);ui_task:处理 OLED 显示刷新、按键扫描、菜单逻辑与 RGB 灯效渲染,周期为 100ms;conn_task:运行蓝牙/BLE 协议栈、2.4G 无线协议解析、USB 设备枚举与状态同步,优先级次高。
所有任务间通过消息队列与二值信号量同步。例如, health_task 完成一次完整检测后,向 ui_task 发送包含 SpO₂、HR、Fatigue Index 等字段的结构体消息; ui_task 接收后更新屏幕显示,并通过 conn_task 将数据推送到 PC 端。
4.2 健康数据处理算法
PPG 信号处理流程如下:
// 伪代码:PPG 数据处理主循环
void ppg_process_loop() {
// 1. 读取原始ADC值(红光/红外/绿光)
uint16_t red_raw, ir_raw, green_raw;
i2c_read_ppg_data(&red_raw, &ir_raw, &green_raw);
// 2. 数字滤波(50Hz陷波 + 0.5-15Hz带通)
float red_filtered = biquad_filter(red_raw, &bq_red);
float ir_filtered = biquad_filter(ir_raw, &bq_ir);
// 3. AC/DC分离(滑动窗口均值法)
static float dc_red = 0, dc_ir = 0;
dc_red = 0.999f * dc_red + 0.001f * red_filtered;
dc_ir = 0.999f * dc_ir + 0.001f * ir_filtered;
float ac_red = red_filtered - dc_red;
float ac_ir = ir_filtered - dc_ir;
// 4. SpO2计算(R-value法)
float r_value = (ac_red / dc_red) / (ac_ir / dc_ir);
float spo2 = 110.0f - 25.0f * r_value; // 标定系数
// 5. 心率计算(峰值检测)
if (peak_detect(ac_ir)) {
heart_rate = 60.0f / (current_time - last_peak_time);
}
}
疲劳指数(Fatigue Index)由 HRV 时域指标 SDNN(相邻 RR 间期标准差)计算得出,公式为: Fatigue_Index = 100 - (SDNN / 50.0f) * 100 ,其中 SDNN 单位为 ms。该指标在静息状态下趋于稳定,运动后显著下降,可直观反映用户生理负荷状态。
4.3 三模连接协议实现
- USB 模式 :启用 ESP32-S3 USB Device 模块,注册 HID Mouse 类描述符,定义 REPORT_ID=1 的 8 字节报告(X/Y 位移、滚轮、按钮状态)。USB 中断端点每 1ms 触发一次,
mouse_task填充报告并提交。 - 2.4G 无线模式 :自定义轻量级协议,数据包格式为
{SYNC:2B, SEQ:1B, PAYLOAD:5B, CRC:1B},SYNC 字段为 0xAA55,SEQ 为递增序列号,PAYLOAD 包含位移与按钮数据,CRC 采用查表法生成。接收端(ESP32-S3 开发板)固件开源,支持固件升级。 - BLE 模式 :实现 HID Service(0x1812),包含 Boot Mouse Input Report(0x2A4A)与 Battery Service(0x180F)。为降低功耗,连接间隔设为 120ms,采用通知(Notify)方式推送鼠标数据,避免频繁轮询。
5. BOM 关键器件选型依据
| 器件类别 | 型号 | 选型依据 | 替代建议 |
|---|---|---|---|
| 主控 | ESP32-S3FH4R2 | 集成 8MB PSRAM+8MB Flash,QFN56 封装节省空间,原生 USB 支持 HID | ESP32-S3-WROOM-1(需外扩 Flash) |
| 光学传感器 | PAW3395DM-T6QU | 26000 DPI/400 IPS,工业级可靠性,SPI 接口简化设计 | PAW3360(性能降级,成本更低) |
| PPG 模组 | JFH142 | 六通道多波长,集成 ADC 与 DSP,FPC 接口便于装配 | MAX30102(需外加驱动电路) |
| 充电管理 | BQ24075RGTR | Power Path™ 支持边充边放,1A 充电电流匹配 1500mAh 电池 | IP5306(无 Power Path,需软件管理) |
| DC-DC | TLV62569DBVR | 1.5MHz 高频,95% 效率,SOT-23-6 小封装 | AP63202(同规格替代) |
| 负载开关 | TPS22919QDCKRQ1 | 35mΩ Rds(on),10nA 关断电流,支持 3.3V 逻辑电平 | NX3P190UK(NXP 兼容型号) |
| RTC | RX8130CE:B3 | I2C 接口,内置晶振与电池备份,±2ppm 温度稳定性 | DS3231(需外接晶振) |
6. 组装与调试要点
6.1 关键焊接工艺
- TPS61222DCKR 与 TPS22919QDCKRQ1 :两颗芯片均为 SC70-6 封装(2mm × 1.25mm),焊盘间距 0.65mm。焊接时需使用 0.2mm 焊锡丝与细尖烙铁头,先固定一对角引脚,再拖焊其余引脚,最后用 100x 显微镜检查桥连。
- FPC 连接器 :6-pin FPC 插座方向至关重要。插座丝印上的三角标记必须与 PPG 模组 FPC 金手指的缺口位置对齐,反向插入将导致 VCC 与 GND 短路,瞬间烧毁模组。
- IPEX 天线座 :U.FL 转 IPEX 转接线焊接时,中心导体必须完全包裹在焊盘内,屏蔽层焊接到周围接地焊盘,避免信号泄漏。
6.2 功能验证流程
- 上电初检 :连接 USB-C 线,测量 TLV62569DBVR 输出是否为 3.3V±2%,BQ24075 STAT 引脚电平是否随充电状态变化。
- 传感器通信 :使用逻辑分析仪捕获 I2C 总线,确认 ESP32-S3 能正确读取 PAW3395 的 ID 寄存器(0x00=0x49)与 PPG 模组的 WHO_AM_I 寄存器(0x00=0x14)。
- 健康数据校准 :在静息状态下,用商用指夹式血氧仪对比 CyMouse 测量值,SpO₂ 误差应 ≤ 2%,心率误差 ≤ 3bpm。
- 三模切换 :依次测试 USB/2.4G/Bluetooth 模式下鼠标移动、点击、滚轮功能,记录各模式下回报率(USB 模式应稳定在 1000Hz)。
7. 工程经验总结
CyMouse 项目揭示了一个重要事实:在资源受限的嵌入式系统中,“功能叠加”远比“功能整合”更具挑战性。将健康监测嵌入鼠标,绝非简单地将两个成熟模块拼接,而是需要重构整个系统的设计哲学——从电源分配策略(DC-DC vs LDO)、热管理边界(15μA 待机电流要求)、到实时任务调度(毫秒级鼠标响应与秒级健康采样共存),每一处细节都需在物理定律与用户体验之间寻找精确平衡点。
实际开发中,最大的技术拐点出现在 RTC 芯片的引入。早期版本依赖 ESP32-S3 内部 RTC,但在浅休眠模式下,其 32.768kHz 晶振因温度漂移导致日误差达 5 分钟,使得健康数据时间戳失去分析价值。RX8130CE:B3 的加入不仅解决了时间精度问题,更意外地推动了固件架构升级:独立时钟源使 health_task 可脱离系统滴答定时器,改用 RTC 告警中断触发,大幅降低 CPU 唤醒频率,续航时间由此提升 40%。
另一个被低估的工程细节是 FPC 连接器的方向容错设计。项目初期因未在 PCB 上标注明确的防呆缺口,导致多块原型板在组装时烧毁 PPG 模组。最终解决方案是在丝印层增加 1mm 宽的白色箭头,并在 BOM 表中以粗体强调“FPC 金手指缺口朝向丝印箭头”,这一看似微小的改动,将量产直通率从 68% 提升至 99.2%。
这些经验指向一个朴素结论:优秀的嵌入式产品,其技术深度往往隐藏在那些不被用户感知的细节之中——一颗正确朝向的 FPC 座、一段精准匹配的 SPI 走线、一个为热设计让出的 0.3mm PCB 空隙。它们不构成宣传文案中的“亮点”,却是决定项目能否从实验室走向真实桌面的终极门槛。
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)