使用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;
    
    }
    
    }
    

    血氧计算方式参见 文档

    作者:jackyvan

    物联沃分享整理
    物联沃-IOTWORD物联网 » 使用ESP32和max30102传感器制作血氧检测设备

    发表回复