MAX30102心率血氧传感器怎么接线?Arduino测心率+血氧教程

2026-10-19 13:08:56 64阅读

想做一个能测心率血氧的小设备、给健康类项目做个传感器端,MAX30102是常见的选择。它利用光电容积脉搏波(PPG)原理,用红光加红外光照射皮肤,通过血液对光的吸收变化推算心率(BPM)和血氧饱和度(SpO2)。这篇文章把接线和读取讲清楚。

认出引脚:四根要接,几个内置不用管

MAX30102模块板上有一颗感光窗,内含红光(约660nm)和红外光(约880nm)两个LED。引脚最常用的是VIN(电源)、GND(地)、SCL(I2C时钟)、SDA(I2C数据)四根,外加一个可选的INT中断脚。模块还引出IRD、RD两个脚,那是红/红外LED灯的驱动腿,芯片内部自己处理,正常使用不用接。

它通过I2C通信,默认地址是0x57。模块板载了I2C上拉电阻,所以接线不需要额外加电阻,这是它省心的地方。

接线:四根I2C线,供电可5V可3.3V

MAX30102接到Arduino Uno:VIN接5V(也能接3.3V,模块板载稳压)、GND接地、SCL接A5、SDA接A4。A4/A5正是Uno默认I2C口。INT脚可选,想用中断驱动读取就接到一个数字脚,不用就先悬空。

接线表:VIN→5V(或3.3V)、GND→GND、SCL→A5、SDA→A4、INT→可选接数字脚。

小提醒:SDA和SCL一定要分别对应A4和A5(或SDA/SCL丝印),两根接反了会报“找不到传感器”。这是这块板最常见的手误。

读取数据:SparkFun库,手指放上感光窗

软件上用SparkFun的MAX30105库(或MAX3010x系列库,用I2C通信的版本)。流程:建一个对象,setup里begin并把采样率、LED电流设好,loop里循环读intCappedHeartRate和氧饱和度这一类结果,打印出来或显示在屏上。

关键在测量姿势:把手指轻轻按在模块的感光窗上盖住,不要用力压死,也最好保持静止。光线能透过皮肤打到传感器,血液脉冲带来的光吸收变化,就是算法算心率的原始数据。手别乱动、别让指尖离开窗口,读数才稳。

读不到、数值乱跳,几个高频坑

最常见是“MAX30102 was not found”。先查SDA/SCL有没有接反,再确认供电给的是5V还是3.3V(都能用但要真给上),第三可能是引脚没焊牢——很多DIY只插一半排针,接触不良就找不到设备,焊牢就好。数值乱跳或读不出,多半是指放得太用力、手指太干、或者检测窗被指纹和油污糊住,清洁一下、换个手指再试。

还有一点:模块功耗不高,但USB供电不稳时LED点亮的电流波动会影响读数,条件允许给个干净的5V供电。数据不要只取单次,取几秒平均值判心率更靠谱。

MAX30102是给健康/可穿戴小项目加“生理信号”很低门槛的一块板。四根I2C线、一个SparkFun库、手指往感光窗上一放,就能读到心率和血氧,做健康监测、情绪反馈小装置都可以从这里起步。


作者:工位上的小周
链接:https://www.aiddithome.com/p/5efb85dd2d41e.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
5条评论
装过才知道
1楼 · 2026-10-19 13:08:58

做健康监测小件很合适,四根线就能出数据

学生党玩机
2楼 · 2026-10-19 13:08:57

检测窗保持干净,指纹糊住会读不出来

默默点赞的路人
3楼 · 2026-10-19 13:08:57

数值别取单次,采几秒取平均才靠谱

周五下班搞一搞
4楼 · 2026-10-19 13:08:56

SDA和SCL接反直接找不到传感器,这个是手误重灾区

好说好说
5楼 · 2026-10-19 13:08:56

手指别用力压死、保持静止,读数稳很多