Arduino + max30102 + DSP = SpO2
Once I saw an oximeter on Ali, I wondered how it worked. And when I figured it out, I was surprised at its simplicity and decided to repeat it.
Having figured it out a little, it turned out to be not so complicated and ended up with the following modules:
ready-made measuring module for max30102 (heart of oxygenation measurement). The module can of course be any, the main thing is that based on max30102.
brains to control the above, a module on stm32f103.
and then where to put all this led display on the i2c.
- : https://github.com/Jasoji/stm32-max30102 , .
, .
, . , 60-80, . . , .
. max30102.c max30102_cal, :
if (R >= 0.36 && R < 0.66)
spo2 = (uint8_t)(107 - 20 * R);
else if (R >= 0.66 && R < 1)
spo2 = (uint8_t)(129.64 - 54 * R);
, . , ... . .. , . .
, ( max30102 ). , .
, max30102 . , . .
.
:
( )
. , , :
if(s.red > s.iRed) { // <o:p>
sampleBuff[0].red = s.iRed;
sampleBuff[0].iRed = s.red;
} else {
sampleBuff[0].red = s.red;
sampleBuff[0].iRed = s.iRed;
}
.
, .
. - ).
108, 101. . , . . , :
, - .
.
.
SpO2 = aR2+bR+c
R = (ACred/DCred) / (ACired/DCired)
a,b,c - ( , ). max30102 .
ACred - .
DCred - . .
.. .
.
, .. , . . , .
, .
:
1. , . , .
2. , .
. ( ).
.
.
, .
.
... .
, . , . , 99% 95%, .