天天看點

用ESP32+max30102制作血氧檢測

材料

  • ESP WROOM 32位開發闆
  • MAX30102 心率血氧傳感器
  • 0.96寸 4P OLED顯示屏

因為MAX30102和 OLED顯示屏都是通過I2C跟ESP開發闆連結,是以需要自定義一對接口(SLC、SDA)。LED用預設的 PIN21,PIN22,MAX30102用PIN5,PIN23

是以初始化的時候

LED用

SSD1306Wire display(0x3c,SDA, SCL);//21,22 即預設Wire
           

MAX30102用Wire1

``

Wire1.begin(5, 23); //自定義sda scl端口

if (!particleSensor.begin(Wire1, I2C_SPEED_FAST)) //Use default I2C port, 400kHz speed
{
...
}
           

心率計算可以使用以下,原理是檢測ir資料是否為有效心跳資料,如果是則檢測跟上一次有效心跳資料擷取到的時間間隔(毫秒),用60/(delta/1000)計算60秒内有多少次有效心跳,這個數值不穩定,是以要用一個平均值

if (checkForBeat(ir) == true)
{
Serial.print("IR=");

Serial.print(ir);

//We sensed a beat!

long delta = millis() - lastBeat;

lastBeat = millis();


beatsPerMinute = 60 / (delta / 1000.0);

if (beatsPerMinute < 255 && beatsPerMinute > 20)

{

rates[rateSpot++] = (byte)beatsPerMinute; //Store this reading in the array

rateSpot %= RATE_SIZE; //Wrap variable

  

//Take average of readings

beatAvg = 0;

for (byte x = 0 ; x < RATE_SIZE ; x++)

beatAvg += rates[x];

beatAvg /= RATE_SIZE;

}

}
           

血氧計算方式參見 文檔

繼續閱讀