Skip to main content

MAX30102 Sensor Oximeter and Heart Rate Sensor

The MAX30102 Sensor is an integrated digital pulse oximeter and  Heart Rate Sensor great for its precision and reliability in Health monitoring. With its dual-wavelength LEDs (red and infrared) and high-sensitivity photodetector, the MAX30102 accurately measures blood oxygen saturation (SpO₂) and heart rate (BPM) in real time. Its programmable LED current, 18-bit ADC resolution, and configurable sampling rates enable developers to optimise performance across applications, including wearable fitness devices, medical monitoring systems, and IoT-based health solutions.

Featuring a compact form factor, low power consumption, and an I²C interface, the MAX30102 can be easily used in microcontroller-based projects such as ESP32 and Arduino platforms. With stable long-term performance, it provides reliable and continuous physiological data, making it an essential component for health monitoring, research, and automated wellness systems.

MAX30102 Sensor Quick Specifications

Parameter Specification
Sensor Type Integrated Pulse Oximeter & Heart Rate Monitor
Communication Interface I²C (Address: 0x57)
Operating Voltage 1.8V (Core), 3.3V (LEDs), Module: 3.3V-5V
Current Consumption 600μA (Active), 0.7μA (Standby)
ADC Resolution 18-bit
LED Wavelengths Red: 660nm, Infrared: 880nm
Sample Rate Range 50-3200 samples per second (configurable)
FIFO Buffer Depth 32 samples
Package Type 14-pin OESIP (Optical Enhanced System-In-Package)
Temperature Sensor Built-in (±1°C accuracy, -40°C to +85°C)

MAX30102 Pinout Configuration

Understanding the MAX30102 pinout is essential for proper sensor integration. The MAX30102 pin diagram clearly outlines essential connections such as VIN for power, SDA/SCL for I²C communication, and dedicated IRD/RD pins for LED control.

Pin

Function

         Description

VIN

Power supply

5V Supply input

SCL

I²C Clock

Serial clock line for communication

SDA

I²C Data

Serial data line for communication

INT

Interrupt

Signals when new data is ready

IRD

Infrared LED Control

Controls the infrared LED

RD

Red LED Control

Controls the red LED

GND

Ground

Connect to system ground

Key Features and Technical Specifications of MAX30102 Sensor

The MAX30102 sensor incorporates advanced features that make it suitable for professional health monitoring applications. The MAX30102 datasheet from Analog Devices highlights several advanced features that distinguish this sensor from alternatives like the MAX30100:

  • High-Precision 18 Bit ADC promotes maximum signal resolution and minimum noise level in SpO2 and heart rate measurement.

  • Dual LED Configuration provides independent control of Red (660nm) and Infrared (940nm) LED's which includes programmable current (0 to 50 mA).

  • I2C Communication has a standard two-wire interface with a 7-bit address 0x57 to facilitate microcontroller integration.

  • Ultra Low Power Consumption 600 µA when measuring in active mode, but only 0.7 µA when in power-save mode; both are perfect for battery-operated/portable devices.

  • A 32 Level FIFO buffer allows the internal memory to hold multiple data, thus decreasing the frequency of interrupts needed by the microcontroller.

  • Programmable Sample Rates from 50 to 3200 samples/second allow you to provide multiple options to fit your application requirements.

  • Ambient Light Cancellation (ALC) & circuits allow up to 200µA of interference from ambient light to be eliminated.

  • Built-In Temperature Sensor measures the die temperature with a temperature range of -40°C to +85°C, and is accurate to ±1°C to assist with calibration.

  • Flexible LED Pulse Width range is from 69 µs to 411 µs, thus allowing you to optimise both current consumption and measurement accuracy.

  • Operating Voltage range supports operation using onboard regulators that provide 1.8 V to the sensor IC and 3.3V to 5V to the module.

MAX30102 Sensor Alternatives and Comparison

When selecting a pulse oximeter sensor, it's important to understand the available MAX30102 sensor alternatives and their comparative advantages of MAX30102, MAX30101, MAX30105, MAXREFDES103 / MAXREFDES117

Feature MAX30102 MAX30100 MAX30101 MAX30105
LEDs Red + IR (2 LEDs) Red + IR (2 LEDs) Red + IR (2 LEDs) Red + IR + Green (3 LEDs)
ADC Resolution 18-bit 16-bit 18-bit 18-bit
FIFO Depth 32 samples 16 samples 32 samples 32 samples
Max Sample Rate 3200 sps 1000 sps 3200 sps 3200 sps
Power Consumption 600μA (typical) 1000μA (typical) 600μA (typical) 600μA (typical)
Temperature Sensor Yes (integrated) Yes (integrated) Yes (integrated) Yes (integrated)
Primary Application SpO₂ + Heart Rate SpO₂ + Heart Rate SpO₂ + Heart Rate Multi-LED Bio-sensing
Best For Wearables, Low Power Budget Projects High Performance Research, Particle Detection

Note: Complete technical details and application circuits can be found in the MAX30102 datasheet. The breakout module discussed in this article is commonly available from SparkFun or similar vendors

MAX30102 Module Schematic and Circuit Design

The MAX30102 module schematic reveals the sensor's internal architecture and external component requirements. The MAX30102 datasheet specifies that the sensor chip requires 1.8V for internal operation, while the LEDs operate at 3.3V.

MAX30102 Module Schematic Diagram showing voltage regulators, I2C pull-up resistors, LED connections, and photodetector circuit

Key Components in MAX30102 Module:

✓ Voltage Regulator (AP2112K) - Provides a stable 3.3V output when powered from a 3.3V-5.0V input for the LED's power supply (VLED).

LDO Voltage Regulator (TLV70018) - Produces a regulated 1.8V supply voltage necessary for the MAX30102's VCore.

✓ Decoupling Capacitors - 4.7uF & 0.1uF are used on both rails of VLED & VCORE to reduce power rail noise and to improve stability of circuits powered by those rails.

✓ I²C Pull-Up Resistors - 4.7K ohms pull up both SDA & SCL (21,22) to VDD. Very important to have a resistor between VDD and these two signals. Refer to the hardware issues below regarding this topic.

✓ LED Filter Capacitors - For reducing the amount of power delivered to the LEDs.

Important: MAX30102 Hardware Issue

Some MAX30102 breakout boards have a hardware design issue where the onboard 4.7 kΩ I²C pull-up resistors are connected to the module’s 1.8 V supply. Since most microcontrollers use a 3.3V I²C bus, this low pull-up voltage prevents the sensor from appearing in I²C scans and stops proper LED operation. To resolve this, the 1.8V trace supplying the pull-ups must be disconnected, and the resistors should be rewired to the 3.3V supply instead. After rerouting the pull-ups to 3.3V, the MAX30102 becomes detectable on the I²C bus and functions correctly.

Interfacing MAX30102 with Arduino

Connecting the MAX30102 sensor with Arduino is straightforward using the I²C communication protocol. Shown below is the wiring configuration used to interface the MAX30102 sensor with Arduino.

Arduino Uno connected to MAX30102 sensor showing I2C wiring SCL SDA VIN GND connections circuit diagram breadboard

The MAX30102 sensor communicates with Arduino using the I2C protocol. The SDA pin of the sensor connects to Arduino’s A4, while the SCL pin connects to A5. Power is supplied through the VIN and GND pins.

Arduino to MAX30102 Wiring Connections:

MAX30102 Pin Arduino Uno Pin Connection Notes
VIN 5V (or 3.3V) Power supply input; module accepts 3.3V-5V
GND GND Common ground connection
SCL A5 (SCL) I²C clock line (on Mega: Pin 21)
SDA A4 (SDA) I²C data line (on Mega: Pin 20)
INT Optional (any digital pin) Interrupt pin for event-driven operation (not required for basic use)

Programming MAX30102 with Arduino IDE: Library Installation and Code

To program the MAX30102 sensor, you need to install the appropriate MAX30102 library in the Arduino IDE.

Installing the MAX30102 Library:

  1. Open Arduino IDE
  2. Navigate to Sketch → Include Library → Manage Libraries
  3. Search for "MAX30105" or "SparkFun MAX3010x"
  4. Install SparkFun MAX3010x Pulse and Proximity Sensor Library by SparkFun Electronics
  5. The library supports MAX30102, MAX30105, and MAX30101 sensors

Here is the sample code for the interface. Make sure to download and install the required MAX30102 library in Arduino IDE.    

#include <Wire.h>
#include "MAX30105.h"
#include "spo2_algorithm.h"

MAX30105 particleSensor;

#define BUFFER_SIZE 50  // smaller buffer for faster testing

uint16_t irBuffer[BUFFER_SIZE];
uint16_t redBuffer[BUFFER_SIZE]

int32_t spo2;
int8_t spo2Valid;
int32_t heartRate;
int8_t hrValid;

void setup() {
  Serial.begin(115200);
  Wire.begin();

  if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) {
    Serial.println("MAX30102 not found. Check wiring!");
    while (1);
  }

  Serial.println("Place your finger gently on the sensor...");

  particleSensor.setup(); 
  // Optimized LED brightness to avoid saturation
  particleSensor.setPulseAmplitudeRed(0x1F); 
  particleSensor.setPulseAmplitudeIR(0x1F);
}

void loop() {
  // Collect samples
  for (int i = 0; i < BUFFER_SIZE; i++) {
    while (!particleSensor.available())
      particleSensor.check();

    redBuffer[i] = particleSensor.getRed();
    irBuffer[i] = particleSensor.getIR();

    particleSensor.nextSample();
  }

  // Print raw IR/RED values for debugging
  Serial.print("IR=");
  Serial.print(irBuffer[BUFFER_SIZE/2]);
  Serial.print("  RED=");
  Serial.println(redBuffer[BUFFER_SIZE/2]);

  // Run heart rate & SpO2 algorithm
  maxim_heart_rate_and_oxygen_saturation(
    irBuffer, BUFFER_SIZE,
    redBuffer, &spo2, &spo2Valid,
    &heartRate, &hrValid
  );

  // Print results
  Serial.print("SpO2: ");
  if (spo2Valid) Serial.print(spo2);
  else Serial.print("Invalid");

  Serial.print("  BPM: ");
  if (hrValid) Serial.print(heartRate);
  else Serial.print("Invalid");

  Serial.println();

  delay(1000); // Update every second
}

Real-World Applications of MAX30102 Sensor

The versatility and accuracy of the MAX30102 pulse oximeter sensor make it suitable for numerous health monitoring and biomedical applications:

  • Wearable Fitness Trackers: Heart rate data will continue to be collected while exercising, and SpO₂ (oxygen saturation in blood) will be monitored via a Bluetooth-enabled, connected device
  • Smart Companion Watches/Fitness Bands: Health monitoring is available 24/7 due to the low battery consumption of sleep tracking devices
  • Medical-Rated Pulse Oximeters: These units are designed to be used in commercial settings and for consumer-based home therapy; they are not presently an FDA-approved product.
  • Health Monitoring Systems Using IoT Technology: The use of ESP32/ESP8266 technology paired with a cloud-connected Health Dashboard allows patients to experience a complete remote monitoring experience.
  • Detecting Sleep Apnea Patterns: Monitoring overnight SpO₂ to identify poor breathing patterns as well as incidents when the oxygen level drops in the blood
  • Preventing High-Altitude Sickness: It will allow a person to track the amount of oxygen they have in their blood while engaging in activities at high altitudes and within mountain climbing expeditions.
  • COVID-19 Devices: Early identification of blood oxygen levels will indicate the presence of a potential respiratory illness.
    Research and Development of Biomedical Engineering Projects/University Developed Projects/Clinical Trials.
  • Monitoring and caring for Elderly Individuals: Remote monitoring systems are provided for senior living facilities and in-home elderly care.

MAX30102 Sensor Module Dimensions and Physical Specifications

Understanding the MAX30102 dimensions is crucial for PCB layout design and enclosure planning.

MAX30102 sensor module dimensions showing length, width, mounting holes, and component placement
 

The MAX30102 sensor represents a powerful, cost-effective solution for integrating pulse oximetry and heart rate monitoring into embedded systems and wearable devices. 

Component Datasheet

Related Post



Join 20K+subscribers

We will never spam you.

* indicates required

Be a part of our ever growing community.