Iasonas Christoulakis
Published © LGPL

Measure SpO2, Heart Rate and BPT Using Arduino

The Pulse Express board makes it simple to get the three vital parameters - SpO2, Heart rate and Blood Pressure trending (BPT)

AdvancedWork in progress20 hours41,825

Things used in this project

Hardware components

ProtoCentral Pulse Oximeter & Heart Rate Sensor based on MAX30100
ProtoCentral Electronics ProtoCentral Pulse Oximeter & Heart Rate Sensor based on MAX30100
×1
Jumper wires (generic)
Jumper wires (generic)
×1
RGB Backlight LCD - 16x2
Adafruit RGB Backlight LCD - 16x2
×1
Nano 33 BLE Sense
Arduino Nano 33 BLE Sense
×1
ProtoCentral Electronics ProtoCentral Pulse Express optical PPsensor with MAX30102 and MAX32664D
×1

Software apps and online services

Arduino IDE
Arduino IDE
Processing
The Processing Foundation Processing
Google Flutter

Story

Read more

Schematics

Gihub

Protocentral pulse express

Pulse Oximeter

We use only 3.3V and GND pin.
The protocol that attributes is the I2C (SCA,SCL)

Code

CODE FOR SERIAL MONITOR OUTPUT

C/C++
#include <Wire.h>
#include "MAX30100_PulseOximeter.h"
 
#define REPORTING_PERIOD_MS     1000
 
PulseOximeter pox;
uint32_t tsLastReport = 0;
 
void onBeatDetected()
{
    Serial.println("Beat!");
}
 
void setup()
{
    Serial.begin(115200);
    Serial.print("Initializing pulse oximeter..");
 
    // Initialize the PulseOximeter instance
    // Failures are generally due to an improper I2C wiring, missing power supply
    // or wrong target chip
    if (!pox.begin()) {
        Serial.println("FAILED");
        for(;;);
    } else {
        Serial.println("SUCCESS");
    }
     pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);
 
    // Register a callback for the beat detection
    pox.setOnBeatDetectedCallback(onBeatDetected);
}
 
void loop()
{
    // Make sure to call update as fast as possible
    pox.update();
    if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
        Serial.print("Heart rate:");
        Serial.print(pox.getHeartRate());
        Serial.print("bpm / SpO2:");
        Serial.print(pox.getSpO2());
        Serial.println("%");
 
        tsLastReport = millis();
    }
}

Credits

Iasonas Christoulakis

Iasonas Christoulakis

9 projects • 31 followers
Biomedical Engineer MedispLab Instructor Former General Manager at IEEE NTUA Student Branch
Thanks to Medisp Lab.

Comments