动机
最近在学习使用MAX30102传感器,但网络上的文章大都只是给出示例代码而没有较为详细的介绍,本文章结合官方文档和网上资料,记录并分享我对该传感器的认识。文章末尾给出基于Arduino的简单的MAX30102库,注释较为详细。该代码在ESP8266上可运行,但只实现了简单的数据访问。
MAX30102简介
MAX30102脉搏血氧仪和心率传感器包含两个LED,分别发射红光(RED)和红外光(IR),光线照射进人体组织后一部分被吸收,另一部分反射光被集成的光电传感器捕获、转变为电信号。两种光的电信号都会呈现出具有直流(DC)成分的交流(AC)信号,AC成分的频率就是脉搏频率,使用任何一个电信号就能获得心跳频率。
血氧浓度(SpO2)的计算需要同时使用两个电信号,估算SpO2,以下线性近似公式来自MAX3010X用户手册:
R = AC red / DC red AC ir / DC ir SpO 2 = ( 104 − 17 R ) × 100 % \begin{align} R &= \frac{\text{AC}_\text{red}/\text{DC}_\text{red}}{\text{AC}_\text{ir}/\text{DC}_\text{ir}} \\ \text{SpO}_2 &= (104-17R) \times 100\% \end{align} RSpO2=