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





















