MAX30102血氧心率模块怎么接线?Arduino手指测血氧和I2C地址避坑

电机传感器师硬件DIY 2026-10-16 19:55:36 4阅读 举报

想自己做个测血氧心率的小玩意,MAX30102是绕不开的选择。它把红光和红外两个LED加一个光电二极管整合在一个小模块里,手指往上一按,就能通过反射光的差异算出心率和血氧饱和度,很多智能手环就是它的亲戚。这篇聊聊接线和最常见的几个坑。

MAX30102是什么原理

它靠两路LED发光,红外(850-1000nm左右)被含氧的红细胞吸收得多,红光(600-750nm)被含氧少的吸收多,光电接收端把反射回来的光转成信号,再靠算法从波形里识别出每一次搏动,进而算BPM和SpO2。模块内部有LED驱动和环境光抑制电路,比用分立元件省心太多。

MAX30102怎么接线

模块是I2C接口,电源注意一下:传感器本体要3.3V,很多板上已经把电平和推挽处理好了,VIN接3.3V、GND接地、SDA接A4、SCL接A5就行。别拿5V直接怼VIN,我见过把板子烧了的。库用SparkFun MAX3010x或者MAX30105,都能兼容这颗。

接线图里红-电源、黑-地、黄-SCL、蓝-SDA,颜色对齐就万无一失。那个INT脚是中断输出,可以暂时不管,普通读取用不上。

手指怎么放才能读准

代码里先begin,再setPulseAmplitudeRed把红光亮度调低点,用setPulseAmplitudeGreen(0)关掉绿灯(这颗没有绿灯,但库是通用的,关掉省心)。读的时候用小橡皮筋把食指轻轻固定到传感器上,松紧合适才稳定,手一抖读数就乱跳。

判断手指有没有放上去,用IR值做阈值最直观——手指没盖住时IR读数很高,盖住了明显掉下来,很多人靠这个打印提示让使用者把手指按好。血氧数值波动大也别慌,多数是手抖或握太紧,放松、压紧、稳住,读数就顺了。

测不准的两个隐藏坑

一是地址,MAX30102固定是0x57,如果I2C扫描找不到,先确认是不是模块供电问题,很多所谓坏板其实是供电不稳。二是别在强光下测,手指贴着传感器时尽量避开强光,不然环境光干扰会把波形搅得乱七八糟,读数自然就不准了。

版权声明:
作者:电机传感器师
链接:https://www.aiddithome.com/p/ba5c79e1398ad.html
来源:硬件DIY
实践版权归作者所有,未经允许请勿转载,若此实践存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
深圳打工人Alan
1楼 · 5小时前

强光下测不准是真的,遮一下光数值马上正常

锡点
2楼 · 5小时前

手指松紧要稳,拿橡皮筋固定一下读数就顺了,不然一直乱跳

胶佬憨憨
3楼 · 5小时前

IR值判断手指有没有放上去这招很实用,省得看半天不知道为啥是0

拆机党
4楼 · 5小时前

VIN千万不能怼5V,我烧过一块板,血泪教训