最近闲来无事,得到了一块MAX30102,手头刚好有多余的Arduino控制板,就跑了个官方的案例,发现测出来的脉搏和心率还是挺准的,三星手机用过这个系列的芯片,但是有一些细节是需要我们注意下的。
首先我们先来简单的了解下MAX30102这款传感器:Maxim公司的MAX30102是高灵敏度血氧和心率生物传感器,包括内部的LED,光电检测器,光学元件,以及环境光抑制的低噪音电子学。单个1.8V电源,内部LED电源5.0V,通信通过标准的I2C接口进行,工作温度-40℃ 到 +85℃,微细5.6mm x 3.3mm x 1.55mm 14引脚封装,主要用在可穿戴设备以及健美辅助设备。
目前在较多的主要以上下图形式的最多,一般我们以I2C通讯协议为主,官方的例子也是运行在I2C协议下。
工作原理如下图所示,主要通过血液及血管的动态改变,反应出透光率的关系进行测算。
引脚我主要是用排针焊接的,主要把 VIN SDA SCL GND给焊接上了,方便下面接线,当然也可以做成防反插的接口,具体看使用情况而定。
通过实际测试,需要注意的是,传感器要做绝缘处理,最好是用绝缘胶带将裸露的电阻焊盘包裹住、否则人体在接触到传感器本身的电阻时,会产生一个短暂的短路,导致使用过程中出现各种卡死。
接线:
VIN Arduino的5V管脚(3.3V也可以)
SCL Arduino的A4管脚
SDA Arduino的A5管脚
GND Arduino的GND管脚
注意(如果下面程序上传成功后,红色LED识别器不亮,试试把A4 A5的管脚换过来插,有的国产主板是反着来的)
将下载的源码复制到ArduinoIDE的libraries下,提取码为4txy。
打开文件夹,找到examples文件夹
打开examples文件夹,用IDE软件打开箭头标记的程序上传。
很多人不明白这几个数据分别是什么,这里我给大家标记上了,脉搏平均在60~110,跳跃幅度较大,大家还可以把脉搏数据精确到3位小数,看起来更加直观,心率一般比较稳定,我的是在60左右,心率的数据校准需要点时间,所以BMP一直是0的话,可以调整手指的角度,及避免强光照射到模块的红色LED识别器。
串口默认波特率为9600,如若出现乱码,修改成115200试试,最后,可以结合TFT彩屏、OLED做个简单的血氧检测仪。