Heart Rate + Blood Oxygen Monitoring with Arduino (2024)


Hello guys. Welcome back to Techatronic. This project aims to interface an Arduino board with a pulse oxygen sensor MAX30102 in order to measure heart rate (BPM) and blood oxygen concentration (SP02). The blood oxygen monitoring with Arduino and pulse rate readings will be shown on a 0.96′′ OLED display.

Pulse oximetry and heart-rate monitoring are combined in the MAX30102, a PPG-based biosensor module (PhotoPlethysmoGraphy). The MAX30102 pulse Oximeter Sensor can be integrated with any microcontroller, including Arduino, ESP8266, ESP32, STM32, or Raspberry Pi Pico, via the I2C communication protocol.

HTML Image as link

Heart Rate + Blood Oxygen Monitoring with Arduino (1)

An average person at rest typically has a heart rate of 65 to 75 beats per minute, or BPM. Athletes may have BPMs that are lower than this range. A healthy individual has an oxygen saturation level, or SpO2, of greater than 95%.

Table of Contents

Components Required

  • Arduino UNO Board
  • MAX30102 Pulse Oximeter
  • 0.96″ SSD1306 I2C OLED Display
  • Push Button Switch
  • Jumper Wires
  • Breadboard

MAX30102 Pulse Oximeter Sensor

An integrated pulse oximetry and heart-rate monitor module is called the MAX30102.This gadget can measure blood oxygen concentration in addition to heart rate. The manufacturer of this sensor is Analog Devices. The module is offered in a range of board configurations created by distinct producers. Click here.

HTML Image as link
Heart Rate + Blood Oxygen Monitoring with Arduino (2)
Heart Rate + Blood Oxygen Monitoring with Arduino (3)

Internal LEDs, optical components, photodetectors, low-noise electronics, and ambient light rejection are all included. In order to facilitate the design-in process for mobile and wearable devices, the MAX30102 offers a comprehensive system solution.

SpO2 Subsystem

A proprietary discrete time filter, a continuous-time sigma-delta ADC, and an ambient light cancellation (ALC) is available in the SpO2 subsystem of the MAX30102. The ALC cancels ambient light and increases the effective dynamic range with the help of internal Track/Hold circuit. The ALC can cancel up to 200 micro Ampere of ambient current. We can program the ADC output data from 50sps (samples per second) to 3200sps.

Temperature Sensor

A temperature sensor is placed on the MAX30102 to calibrate the temperature dependence of the SpO2 subsystem. The SpO2 algorithm used with MAX30102 output signal compensate for the SpO2 error with changes in ambient temperature.

LED Driver

The LED pulses for SpO2 and HR measurements are modulated by integrated Red and IR LED drivers. With proper supply voltage the LED current can be programmed from 0 to 50mA. Based on use cases, we can optimize the SpO2 and HR accuracy and power consumption by programming the LED pulse width from 69 micro seconds to 411 micro seconds.

Technical Specifications

Maximum Current Consumption6mA
Voltage3.3-5V
Sample Rate50Hz – 3200Hz
I2C Address0xAE (Read) & 0xAF (Write)
Temperature Range-40°C to +85°C
Temperature Accuracy±1˚C
ADC Resolution18 bits
IR LED peak wavelength880nm
Red LED peak wavelength660nm

MAX30102 Module Pinouts

PinDescription
VIN This sensor is powered on at 3.3-5V.
SCL I2C serial clock pin.
SDA I2C serial data pin.
INTThis is the active low interrupt pin. It is pulled HIGH by the onboard resistor but when an interrupt occurs it goes LOW until the interrupt clears.
IRDIR LED Cathode and LED Driver Connection Point
RDRed LED Cathode and LED Driver Connection Point
GNDGround Pin

Connections of Blood Oxygen Monitoring with Arduino

Lets see the connections of the MAX30102 Module with the Arduino.

Heart Rate + Blood Oxygen Monitoring with Arduino (4)

Connect Vin and GND pin of the MAX30102 to the 3.3V and GND of the Arduino. Now Connect the SCL & SDA pin of the MAX30102 to the A5 & A4 pin on the Arduino.

Code for Blood Oxygen Monitoring with Arduino

The MAX30102 Sensor has several libraries available for measuring temperature, blood oxygen level, and heart rate. The Sparkfun Electronics library is the most well-liked of all of these libraries.

Heart Rate + Blood Oxygen Monitoring with Arduino (5)


Enter MAX3010x in the search bar to install the library. Search for the SparkFun MAX3010x Proximity and Pulse Sensor Library. To install the library, click the install button.

Let’s connect an Arduino Nano to an OLED display and a MAX30102 to create a portable pulse oximeter. The oxygen saturation and heart rate in real time will be shown on the OLED.

Source Code-

Let’s examine the portable pulse oximeter’s programming section. The code below uses an Arduino, an OLED display, and a MAX30102 sensor to measure and show blood oxygen saturation (SpO2) and heart rate. It has the ability to dynamically modify the display depending on sensor data, filter signal noise for more accurate readings, and switch to a low-power mode when the sensor is not in use. Additionally, the program allows for user interaction by utilizing an EEPROM to store user preferences and a button to switch between display modes.

Testing the Portable Pulse Oximeter Device

Heart Rate + Blood Oxygen Monitoring with Arduino (6)

Then display the message, put your finger here.

Heart Rate + Blood Oxygen Monitoring with Arduino (7)

It will begin measuring the oxygen saturation percentage and pulse rate in BPM as soon as you place your finger on it.

Heart Rate + Blood Oxygen Monitoring with Arduino (8)

The average pulse and oxygen saturation will be shown on the OLED if you press the push button and place your finger on the MAX30102.

Heart Rate + Blood Oxygen Monitoring with Arduino (9)

The device enters sleep mode and the OLED turns off in five seconds if there is no pressure applied to the MAX30102 Sensor. The countdown timer will also be shown on the OLED.

Heart Rate + Blood Oxygen Monitoring with Arduino (10)

After pressing the push button once more, you can activate the OLED again. The gadget will come out of sleep mode as a result. Click here for more projects.

Heart Rate + Blood Oxygen Monitoring with Arduino (2024)
Top Articles
Where to Eat at Newark Liberty Airport
Newark Liberty International Airport (EWR)
Funny Roblox Id Codes 2023
Golden Abyss - Chapter 5 - Lunar_Angel
Www.paystubportal.com/7-11 Login
Joi Databas
DPhil Research - List of thesis titles
Shs Games 1V1 Lol
Evil Dead Rise Showtimes Near Massena Movieplex
Steamy Afternoon With Handsome Fernando
Which aspects are important in sales |#1 Prospection
Detroit Lions 50 50
18443168434
Zürich Stadion Letzigrund detailed interactive seating plan with seat & row numbers | Sitzplan Saalplan with Sitzplatz & Reihen Nummerierung
Grace Caroline Deepfake
978-0137606801
Nwi Arrests Lake County
Justified Official Series Trailer
London Ups Store
Committees Of Correspondence | Encyclopedia.com
Pizza Hut In Dinuba
Jinx Chapter 24: Release Date, Spoilers & Where To Read - OtakuKart
How Much You Should Be Tipping For Beauty Services - American Beauty Institute
Free Online Games on CrazyGames | Play Now!
Sizewise Stat Login
VERHUURD: Barentszstraat 12 in 'S-Gravenhage 2518 XG: Woonhuis.
Jet Ski Rental Conneaut Lake Pa
Unforeseen Drama: The Tower of Terror’s Mysterious Closure at Walt Disney World
Ups Print Store Near Me
C&T Wok Menu - Morrisville, NC Restaurant
How Taraswrld Leaks Exposed the Dark Side of TikTok Fame
University Of Michigan Paging System
Dashboard Unt
Access a Shared Resource | Computing for Arts + Sciences
Speechwire Login
Healthy Kaiserpermanente Org Sign On
Restored Republic
3473372961
Craigslist Gigs Norfolk
Litter-Robot 3 Pinch Contact & DFI Kit
Moxfield Deck Builder
Craigslist Red Wing Mn
D3 Boards
Jail View Sumter
Nancy Pazelt Obituary
Birmingham City Schools Clever Login
Thotsbook Com
Funkin' on the Heights
Vci Classified Paducah
Www Pig11 Net
Ty Glass Sentenced
Latest Posts
Article information

Author: Edmund Hettinger DC

Last Updated:

Views: 6392

Rating: 4.8 / 5 (78 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: Edmund Hettinger DC

Birthday: 1994-08-17

Address: 2033 Gerhold Pine, Port Jocelyn, VA 12101-5654

Phone: +8524399971620

Job: Central Manufacturing Supervisor

Hobby: Jogging, Metalworking, Tai chi, Shopping, Puzzles, Rock climbing, Crocheting

Introduction: My name is Edmund Hettinger DC, I am a adventurous, colorful, gifted, determined, precious, open, colorful person who loves writing and wants to share my knowledge and understanding with you.