top of page

The MAX30102 is an advanced pulse oximeter and heart rate sensor module that uses photoplethysmography (PPG) to measure SpO₂ (blood oxygen saturation) and heart rate. It communicates via I²C interface, making it ideal for microcontrollers like Arduino, ESP32, ESP8266 (NodeMCU), and Raspberry Pi.

 

Key Features

 

  • Supply Voltage: 1.8V (core), 3.3V to 5V (interface)
  • Interface: I²C (7-bit address: 0x57)
  • Integrated LEDs: Red & IR (for SpO₂ and HR detection)
  • Operating Current: 600 µA (typical)
  • Sampling Rate: Configurable
  • Onboard Temperature Sensor
  • Applications: Wearable devices, fitness trackers, IoT health monitoring systems.

 

How It Works

 

  • The sensor shines red and IR LEDs into tissue (e.g., fingertip).
  • Blood absorbs light differently depending on oxygen saturation.
  • A photodiode detects reflected light, and the sensor computes:
    • SpO₂ → Oxygen saturation
    • Heart Rate → Beats per minute (BPM)
  • Data is read via I²C communication.

 

Pin Configuration

 

Pin

Description

VCC

Power (3.3V or 5V)

GND

Ground

SCL

I²C Clock

SDA

I²C Data

INT

Interrupt Output (optional)

 

 

Arduino Wiring (Example)

MAX30102

Arduino

VCC

3.3V or 5V

GND

GND

SCL

A5 (or D1 on ESP8266)

SDA

A4 (or D2 on ESP8266)

 

Arduino Code Example

Uses the SparkFun MAX3010x library

#include <Wire.h>

#include "MAX30105.h"

#include "heartRate.h"

MAX30105 particleSensor;

void setup() {

  Serial.begin(9600);

  Serial.println("Initializing MAX30102...");

  if (!particleSensor.begin(Wire, I2C_SPEED_STANDARD)) {

    Serial.println("MAX30102 not found. Check wiring!");

    while (1);

  }

  particleSensor.setup(); // Default: 69 sample avg, 50Hz sample rate

  particleSensor.setPulseAmplitudeRed(0x0A); // Red LED brightness

  particleSensor.setPulseAmplitudeIR(0x0A);  // IR LED brightness

}

void loop() {

  long irValue = particleSensor.getIR();

  if (checkForBeat(irValue)) {

    static long lastBeat = 0;

    long delta = millis() - lastBeat;

    lastBeat = millis();

    float bpm = 60 / (delta / 1000.0);

    Serial.print("BPM: ");

    Serial.println(bpm);

  }

  Serial.print("IR: ");

  Serial.println(irValue);

}

 

 

 Libraries Needed

  • SparkFun MAX3010x Sensor Library
  • [heartRate.h (included in SparkFun library)]

 

Applications

 

Remote patient monitoring
Smart healthcare IoT systems
Fitness & wearable devices
Stress monitoring

 

Package includes: 1xSensor

MAX30102 PULSE OXIMETER/HEART-RATE SENSOR MODULE I2C INTERFACE

SKU: SEN001
R₣3,000Price
Quantity
    No Reviews YetShare your thoughts. Be the first to leave a review.
    bottom of page