《2025 DigiKey AI应用创意挑战赛》基于树莓派5的MAXREFDES117血氧与心率采集系统设计
本帖最后由 qintian0303 于 2026-1-20 09:46 编辑项目名称
基于树莓派5的MAXREFDES117血氧与心率采集系统设计
项目概述
随着可穿戴医疗设备和家庭健康监测需求的快速增长,基于光电容积描记法(Photoplethysmography,PPG)的心率(Heart Rate,HR)与血氧饱和度(SpO₂)测量技术,因其非侵入、成本低、结构简单等优势,已被广泛应用于智能手环、血氧仪及远程医疗设备中。
本项目基于 树莓派5(Raspberry Pi 5)作为核心计算与控制平台,结合MAXREFDES117参考设计模块(核心器件 MAX30102),实现了一套完整的生理信号采集、处理、分析与可视化系统。系统能够实时采集红光(RED)与红外光(IR)反射信号,通过软件实现信号调理、心率与血氧饱和度估计,并在手指佩戴与移除时具备智能状态识别和信号质量评估能力。
项目最终实现了如下目标:
实时采集并显示PPG波形
稳定估算心率(HR)与血氧饱和度(SpO₂)
自动识别手指是否佩戴
提供SignalQuality(信号质量)指示
在信号无效时抑制错误数据显示
项目背景
PPG(光电容积描记)是一种通过检测组织对特定波长光的吸收变化,从而反映血容量变化的光学检测技术。当心脏搏动时,血管内血容量周期性变化,导致光的吸收率发生变化,通过光电传感器即可获得相应的时间序列信号。
相比传统的心电(ECG)测量方式,PPG具有如下优势:非侵入式,佩戴舒适;硬件结构简单,成本低;易于集成至嵌入式与可穿戴设备.PPG技术已成为当前心率和血氧监测的主流方案。
硬件减少
本次用到传感器模块为MAXREFDES117,是Maxim Integrated(现 Analog Devices)推出的一款参考设计板,核心传感器为 MAX30102。该芯片集成了:双波长LED(红光660nm、红外光880nm);高灵敏度光电二极管;模拟前端(AFE);FIFO缓冲区;I²C通信接口。MAX30102 被广泛应用于商用血氧仪和智能穿戴设备,具有成熟的硬件性能基础,非常适合教学与科研使用。
主控选择的是树莓派5,作为新一代ARM单板计算机,具备更强的CPU性能;稳定的Linux运行环境;丰富的GPIO / I²C 接口;良好的Python生态支持,相比传统 MCU,树莓派更适合进行算法验证、可视化显示和快速开发,非常适合作为信号处理与系统集成平台。主要因为本次选择的是显示屏就是树莓派出品的5寸触摸屏,用起来显示更方便。
系统总体介绍
本系统整体分为硬件采集层、信号处理层、参数估计层、状态管理层和可视化显示层4个个部分,各模块之间解耦清晰,结构合理。
系统工作流程如下:
MAX30102通过I²C向树莓派传输原始RED/IR数据,软件驱动读取 FIFO 数据并进行初步解析;
PPGProcessor对信号进行滤波、直流去除与质量评估;
HRSpO2Estimator进行心率与血氧估计;
主程序根据佩戴状态与信号质量进行显示控制;
以上内容分别对应一个python文件
主要算法
1、PPG波形实时采集与显示
系统能够以约100Hz的采样频率连续读取MAX30102 FIFO数据,并实时绘制:
红光 AC 波形
红外光 AC 波形
RED 与 IR 差分波形
通过动态Y轴缩放与惯性调节机制,保证波形显示稳定、不抖动,便于观察心搏特征。
2、心率(HR)估计
心率估计基于红外光 AC 信号,主要步骤包括:
峰值检测(基于自适应阈值)
RR 间期计算
移动平均与指数平滑
系统对异常 RR 间期进行约束,防止由噪声引起的错误心率估计。
3、血氧饱和度(SpO₂)估计
血氧估计采用经典的 Ratio-of-Ratios 方法:
𝑆𝑝𝑂2=110−25×(𝐴𝐶𝑅𝐸𝐷/𝐷𝐶𝑅𝐸𝐷)(𝐴𝐶𝐼𝑅/𝐷𝐶𝐼𝑅)SpO2=110−25×(ACIR/DCIR)(ACRED/DCRED)
系统对 AC / DC 分量进行最小阈值限制,并对结果进行区间约束(85%–100%),避免异常值输出。
4、手指佩戴自动识别
系统通过红外光DC分量(IR_DC)判断手指是否佩戴:
IR_DC低于阈值 → 判定为无手指
IR_DC稳定且高于阈值 → 判定为已佩戴
采用计数防抖机制,避免状态频繁切换。该方法在信号稳定阶段依然可靠,避免将“稳定佩戴”误判为“无手指”。
5、 Signal Quality(信号质量)评估
为提高系统可靠性,引入信号质量评估机制,综合考虑IR DC强度以及IR AC能量(RMS),信号质量被分为三个等级:
GOOD:信号稳定可靠
FAIR:信号可用但存在轻微干扰
POOR:信号不可靠
当信号质量为POOR时,系统自动冻结HR/SpO₂显示。
6、状态机与显示策略
系统采用状态机思想区分:
无手指
有手指但信号差
有手指且信号好
不同状态下显示策略不同,有效提升用户体验与系统可信度
物料清单
名称
功能
树莓派5-8g
主要用于可视化显示控制以及基本驱动和数据处理
显示屏
可视化显示参数
MAXREFDES117
生理参数前端采集与处理
软件平台与系统架构
软件环境
Python 3
smbus2(I²C 通信)
matplotlib(实时波形显示)
Linux 用户态程序(装这个还是挺慢的)
软件模块划分
采用模块化的方式继续设计
模块
文件
功能
传感器驱动
max30102_driver.py
I²C读写
信号调理
ppg_processor.py
滤波、质量评估
参数估计
hr_spo2_estimator.py
HR/SpO₂
主程序
main.py
状态管理与显示
作品实物图
演示视频
视频地址:
【基于树莓派5的MAXREFDES117血氧与心率采集系统设计】 https://www.bilibili.com/video/BV1oVk3BhEV2/?share_source=copy_web&vd_source=2a202874768d99b0acaa1aceb9a9b93e
项目文档及代码
代码附件:
项目文档附件:
页:
[1]