MAX30102心率血氧传感器怎么接线?Arduino读血氧饱和度和心率避坑

2026-10-21 09:39:41 36阅读

想给项目加一块能测心率和血氧的“脉搏计”,MAX30102是很合适的选择。它用红光和红外光做PPG光学测量,手指一压就能读出心率(BPM)和血氧饱和度(SpO2),做健康手环、睡眠监测、桌面小气象台都能用。这篇把接线、读数和坑一次讲清楚。

MAX30102心率血氧传感器模块特写,手指按压读取心率的健康监测场景

MAX30102怎么接线:I2C两线

MAX30102走I2C总线,硬件接线就四根:VIN接3.3V、GND接地、SDA接Arduino的A4、SCL接A5(UNO上),再加上一根可选的INT中断线(接一个数字脚)。注意它务必用3.3V供电,别直接怼5V,省得发热或烧坏。因为和很多I2C器件共用A4/A5,时要把其他器件的地址错开。

MAX30102心率血氧传感器与Arduino的I2C接线图,含VCC/GND/SCL/SDA

这张图把VIN、GND、SDA、SCL四根线连接标得明明白白,模块上还有红、绿两个光源管窗和一颗黑色感光窗,手指按在窗口上挡住外界光就能采样。

代码思路:采样后算心率血氧

推荐用Adafruit MAX30105或SparkFun的MAX3010x库,几行就能初始化并连续读取红光和红外两个通道的原始ADC值。真正的难点在算法:一个是硬件采样要稳,手指贴合别晃动;二是数据要经过滤波和滑动窗口,提取出脉搏产生的周期峰值,峰值间隔换算成心率;血氧则要比较红光和红外两个通道吸收比例,用查表或经验公式估算。手写算法较绕,可以先跑通库自带的示例,再慢慢替换成自己的滤波。

避坑三个点

一是传感窗口对位置极敏感,初始要在手指标定好手指放法和力度,别一抖就丢信号。二是环境光会干扰,尽量让传感器窗口贴紧皮肤遮光。三是MAX30102采样需要稳定供电和较快的循环节奏,别在主循环里塞太多delay阻塞采样,否则心率会飘。把采样放中断里或用while快速采集一批再处理,读数会稳很多。


作者:电机传感器师
链接:https://www.aiddithome.com/p/6384b7681de67.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
3条评论
第三次终于亮了
1楼 · 2026-10-21 09:39:42

把采样放中断里读,主循环别塞delay,数值才稳

板砖搬不动
2楼 · 2026-10-21 09:39:41

一定要给它3.3V,怼5V轻则发热重则烧

阿强焊点总飞
3楼 · 2026-10-21 09:39:41

手指贴合别晃动,采样就稳,否则心率乱跳