Measure SpO2, Heart Rate and BP Trends (BPT) Using Arduino © GPL3+

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

  • 19 respects

Components and supplies

Apps and online services

About this project


Are you aware of the oxygen level in your blood or the oxygen level that your body requires? Would you like to record your heart rate and BP at any time of the day without much effort? High physiological stress and high altitudes can be a reason for varying levels of oxygen. The human body is generally capable of adapting itself to such extreme conditions but hypoxemia is always a possibility.

What we want to present in this article is a unique and easy way to measure PPG and calculate spO2, heart rate and Blood Pressure trending (BPT) with surprisingly high accuracy.

How is pulse express unique from any other Pulse Board?

There are several Pulse boards available with different form factors and applications. ProtoCentral also provides the popular MAX30102-based breakout board in a variety of versions, but Pulse Express stands out by integrating the MAX32664D Biometric sensor hub. Typically PPG is the output from the optical sensors and it is up to the user to calculate other vitals such as Heartrate, spO2 etc, but the MAX32664D sensor hub does all the vitals calculations and gives you the final output.

  • Built in the shape and size of a finger, it is ideally suited to measuring vitals with a Velcro strap hole to connect the finger on board.
  • Internal algorithm for measuring Pulse Heart Rate, Pulse Blood Oxygen Saturation (SpO2), Estimated Blood Pressure trending.
  • Integrates a high-sensitivity pulse oximeter and heart rate sensor (MAX30102) and biometric sensor hub (MAX32664D).
  • In-built accelerometer for robust detection and compensation of motion artifacts.

What is Pulse Oximetry and why is it important?

Pulse oximetry (percentage of SpO2 concentration in blood) has been used as a key health indicator for many decades. Although the original academic development was made in 1935, the modern basis for determining the SpO2 concentration using light sources and photosensor(s) was developed by Takuo Aoyagi and Michio Kishi in 1972. When commercially feasible, SpO2 concentration measurement devices have made huge gains in medical applications. Since 1987, the Standard of Care (SoC) for the administration of a general anaesthetic has included pulse oximetry. All modern hospital bedside equipment include an SpO2 module based on the same fundamentals, albeit with minor modifications.

Pulse oximetry is used to measure the level of oxygen (oxygen saturation) in the blood. It's a simple, painless measure of how well oxygen is being sent out from your heart to parts of your body, such as your arms and legs. It can be used to check if there is enough oxygen in the blood and to check the health of a person with any condition that affects blood oxygen levels.

Blood Pressure Trend is NOT the same as absolute blood pressure measurement. BPT uses an algorithm to look at changes in the shape of the PPG signal and correlate them to changes in BP from a given calibrated baseline BP. This is still useful because it is not possible to take continuous BP recordings from traditional cuff-based sphygmomanometer devices.

Changes in BP or the BP trend (BPT) prove to be valuable in cardiovascular care and monitoring of high-risk patients.

Hardware Overview

Protocentral Pulse Express comes with all the basic things for you to get started with reading PPG signal and get basic measurements It consists of a MAX32664-D Biometric Sensor Hub along with a MAX30102 pulse sensor and logic level converters.You simply have to hook it up with Arduino as shown in the following table.

Why Arduino Nano BLE?

If you're wondering why we used an Arduino Nano 33 BLE instead of a regular Arduino, I think it is because we haven't written about it yet. If this is meant to be used as a wearable device, then a small form-factor and some wireless capability would help. Using the new ArduinoBLE library, we intend to turn this into a BLE-based pulse-ox and BPT monitoring device.

A Flutter-based mobile app is in development to see the output from the device and will be coming soon.

Coming soon ....

What we did

We have designed the ProtoCentral Pulse Express with integrated high-sensitivity optical sensors (MAX30102) and MAX32664D biometric sensor hub to read PPG signals and perform finger based heart rate, spo2 and blood oxygen saturation measurements. The board is connected to the Arduino NANO 33 BLE using a standard I2C interface. Connections are made as shown in the following table:

Using the ProtoCentral Pulse Express Arduino Library uploaded to the NANO interfaced with the Pulse Express Pulse Oximeter and the Heart Rate Monitor makes it much easier to read the PPG and the measured SPO2, the heart rate and the estimated BP. The output is seen on the serial monitor and the serial plotter.

Arduino Example 1 - Raw PPG output

You can use this example to read the raw PPG signals without loading any of the algorithm data.

Upload the example code to your Arduino and open the Arduino serial plotter with baud rate of 115200.

Arduino Example 2 - BPT-estimation-mode

This example configures the sensor in algorithm mode to enable the sensor to start calculating the Spo2, BP systolic and diastolic and HR values.

You may add your actual BP readings from a cuff clinical BP meter would give better accuracy for the BP algorithm.

You can add 3 different BP readings to code in Example2-BPT-estimation-mode.ino file. as shown below.

The board will start in calibration mode once you upload the library, you will have to keep your finger on the sensor untill the calibration progress reaches 100%.

The board will switch to estimation mode once the calibration process is completed. It takes 10 to 20 seconds for the algorithm to gather enough samples to give good values

Where do we go from here?

We had a good experience interfacing with this board and made sure it saves the user a lot of time instead. We tested to demonstrate that the device is very stable, but there are still more tests to assess the robustness of the device.

We would like to see what can be built with this board, including BLE-connected wearable pulse devices or finger-based health applications. We will soon post another Hackster article on the performance of this device in the presence of BLE and mobile applications. Please leave your thoughts in the comments below.


ProtoCentral OpenView GUI
Visualize your data with OpenView
ProtoCentral Pulse Express Arduino Library



Similar projects you might like

Measure Heart Rate and SpO2 with MAX30102

Project tutorial by SurtrTech

  • 256 respects

Using the MAX30100 wearable pulse sensor with Arduino

Project tutorial by Team Protocentral

  • 25 respects

Heart Rate Monitor Using IoT

Project tutorial by Team Technopaths

  • 41 respects

Heart Rate Monitor (Wearable and Wireless Using ECG)

Project tutorial by Dmitry Dziuba

  • 71 respects
Add projectSign up / Login