

The MAX30102 is a pulse oximeter and heart-rate sensor module manufactured by Analog Devices (ADI) / Maxim Integrated. It utilizes photoplethysmography (PPG) technology to measure blood oxygen saturation (SpO2) and heart rate. The module integrates red and infrared LEDs, a photodetector, optical elements, and low-noise electronics in a compact package, making it ideal for wearable health monitoring devices.








The MAX30102 is designed for low-power operation and high performance in compact systems. Below are its key technical details:
| Parameter | Value |
|---|---|
| Supply Voltage | 1.8V (core) and 3.3V (LEDs) |
| Operating Current | 600 µA (typical) |
| Standby Current | 0.7 µA |
| LED Wavelengths | Red: 660 nm, Infrared: 880 nm |
| Communication Interface | I²C (7-bit address: 0x15) |
| Sampling Rate | Configurable (up to 1000 samples per second) |
| Operating Temperature Range | -40°C to +85°C |
| Package Dimensions | 5.6 mm x 3.3 mm x 1.55 mm |
The MAX30102 has 8 pins, as described in the table below:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VIN | Power supply input (1.8V for core, 3.3V for LEDs) |
| 2 | GND | Ground |
| 3 | SDA | I²C data line |
| 4 | SCL | I²C clock line |
| 5 | INT | Interrupt output (active low) |
| 6 | RD | Red LED cathode |
| 7 | IR | Infrared LED cathode |
| 8 | NC | Not connected |
Below is an example of how to interface the MAX30102 with an Arduino UNO to read heart rate and SpO2 data:
#include <Wire.h>
#include "MAX30102.h" // Include a library for MAX30102 (e.g., SparkFun MAX3010x)
MAX30102 sensor; // Create an instance of the MAX30102 class
void setup() {
Serial.begin(9600); // Initialize serial communication at 9600 baud
Wire.begin(); // Initialize I²C communication
if (sensor.begin() == false) {
Serial.println("MAX30102 not detected. Check connections.");
while (1); // Halt execution if the sensor is not detected
}
Serial.println("MAX30102 initialized successfully.");
}
void loop() {
int heartRate = sensor.getHeartRate(); // Read heart rate
int spo2 = sensor.getSpO2(); // Read SpO2 level
if (heartRate != -1 && spo2 != -1) { // Check if readings are valid
Serial.print("Heart Rate: ");
Serial.print(heartRate);
Serial.print(" bpm, SpO2: ");
Serial.print(spo2);
Serial.println(" %");
} else {
Serial.println("Error reading data. Ensure proper sensor placement.");
}
delay(1000); // Wait 1 second before the next reading
}
Sensor Not Detected
Inaccurate Readings
No Data Output
Can the MAX30102 measure SpO2 and heart rate simultaneously?
What is the maximum sampling rate of the MAX30102?
Is the MAX30102 suitable for continuous monitoring?
Can the MAX30102 be used with a 5V microcontroller?