传感器原理与应用课程项目。基于 MAX30102 光电容积脉搏波(PPG)的指尖夹式监测原型: 下位机做信号采集与特征提取,上位机做实时可视化,配套一篇 IEEE 会议格式论文。
把手指夹进传感器,系统实时给出:
- PPG 波形 —— 原始红外通道脉动波形
- 心率(BPM) 与 平均心率
- RR / PPI 间期 —— 脉搏间期,用作短时 HRV 的近似
- 短时 HRV —— 由有效脉搏间期估算
- 灌注指数 PI —— 脉动分量 / 直流基线,反映末梢灌注强弱
- 信号质量状态 ——
Checking/Weak Signal/Motion/Good四态
设计重点不是"再做一个心率显示屏",而是把信号质量当成一等输出:低成本的生理传感器在接触不良、手指移动时照样会吐数字, 用户很容易把噪声当成生理变化。所以界面上会明确告诉你当前这一次测量到底值不值得看。
MAX30102(指尖夹,红光/红外)
│ I²C
Arduino(读红外通道 → 峰值检测 → PPI → HR/HRV/PI → 质量判定)
│ 串口 115200 bps 的 key-value 文本帧(约 10 Hz)
Python 上位机(PyQt6 + pyqtgraph,约 50 ms 读一次,0.12 s 刷一次)
└─ 波形 / 数值面板 / 质量与 HRV 反馈
抗误读机制:手指接触阈值 → RR 范围过滤 → 间期跳变剔除 → PI/幅值质量评估 → 四态状态机。
ST_Project/
├── PulseWave_PI_with_figures.tex 论文正文(IEEEtran,pdflatex)
├── figures/ 正文插图,文件名与 tex 中 \includegraphics 一一对应
│ ├── fig1_system_architecture.png
│ ├── fig2_wiring_overview.png
│ ├── fig3_ppg_principle.png
│ ├── fig4_processing_pipeline.png
│ ├── fig5_experimental_conditions.png
│ ├── fig6_monitoring_results.png
│ └── ppg_principle_delta_t.png 心率测量原理 Δt 示意图(论文未引用,备查)
├── src/
│ └── oximeter_UI.py 上位机 GUI(PyQt6 + pyqtgraph + pyserial)
└── slides/ 汇报用流程图为素材(竖版 / 左栏版 / 结论页)
注:
\graphicspath{{figures/}}已指向figures/,配图按figN_*命名,因此在仓库根目录直接pdflatex PulseWave_PI_with_figures.tex即可找到全部插图。
编译论文(需要 TeX Live / MiKTeX,含 IEEEtran)
pdflatex PulseWave_PI_with_figures.tex
pdflatex PulseWave_PI_with_figures.tex # 跑两遍让交叉引用收敛运行上位机(需先烧录 Arduino 固件并确认串口)
pip install pyserial numpy PyQt6 pyqtgraph
python src/oximeter_UI.py打开后在界面顶部选择对应串口,点 Connect,把手指放进夹子等待状态进入 Good。
本项目是课程演示与工程验证原型,不是医疗器械。PPG 对指压、肤色、环境光、运动伪迹、 末梢温度都很敏感,输出只应作为趋势参考;由 PPG 推算的脉搏间期也只是 ECG RR 间期的近似。
A Finger-Clip Peripheral Circulation Monitoring System Based on PPG Features and Perfusion Index —— Sensor Principles and Applications Project
关键词:Photoplethysmography, PPG, MAX30102, Arduino, heart-rate variability, perfusion index, peripheral circulation, signal quality