

The MAX30102 is a pulse oximeter and heart-rate sensor module manufactured by Analog Devices (formerly 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. Below are its key technical specifications:
| Parameter | Value |
|---|---|
| Supply Voltage (VDD) | 1.8V |
| LED Supply Voltage (VLED) | 3.3V to 5.5V |
| Operating Current | 600 µA (typical) |
| Standby Current | 0.7 µA (typical) |
| Measurement Wavelengths | Red: 660 nm, Infrared: 880 nm |
| Communication Interface | I²C |
| I²C Address | 0x57 (default) |
| Operating Temperature Range | -40°C to +85°C |
| Package Size | 5.6 mm x 3.3 mm x 1.55 mm |
The MAX30102 module has the following pin configuration:
| Pin Name | Pin Number | Description |
|---|---|---|
| GND | 1 | Ground |
| VDD | 2 | Power supply for the internal circuitry (1.8V) |
| VLED | 3 | Power supply for the LEDs (3.3V to 5.5V) |
| SDA | 4 | I²C data line |
| SCL | 5 | I²C clock line |
| INT | 6 | Interrupt output (active low) |
The MAX30102 is straightforward to use in a circuit, but proper configuration is essential for accurate measurements. Below are the steps and considerations for using the module:
The following example demonstrates how to interface the MAX30102 with an Arduino UNO to read heart rate and SpO2 data. This code uses the SparkFun MAX3010x Library, which can be installed via the Arduino Library Manager.
#include <Wire.h>
#include "MAX30105.h" // Include the SparkFun MAX3010x library
MAX30105 particleSensor; // Create an instance of the MAX30105 class
void setup() {
Serial.begin(9600); // Initialize serial communication at 9600 baud
Serial.println("Initializing MAX30102...");
// Initialize the MAX30102 sensor
if (!particleSensor.begin()) {
Serial.println("MAX30102 was not found. Please check wiring/power.");
while (1); // Halt execution if the sensor is not detected
}
// Configure the sensor for heart rate and SpO2 measurement
particleSensor.setup(); // Use default settings
particleSensor.setPulseAmplitudeRed(0x0A); // Set red LED brightness
particleSensor.setPulseAmplitudeIR(0x0A); // Set IR LED brightness
}
void loop() {
// Read raw data from the sensor
long redValue = particleSensor.getRed(); // Red LED data
long irValue = particleSensor.getIR(); // IR LED data
// Print the raw data to the serial monitor
Serial.print("Red: ");
Serial.print(redValue);
Serial.print(" IR: ");
Serial.println(irValue);
delay(100); // Delay for 100 ms before the next reading
}
Sensor Not Detected:
Inaccurate Readings:
I²C Communication Failure:
Q: Can the MAX30102 measure SpO2 and heart rate simultaneously?
A: Yes, the MAX30102 can measure both SpO2 and heart rate simultaneously using its red and infrared LEDs.
Q: What is the maximum sampling rate of the MAX30102?
A: The MAX30102 supports a maximum sampling rate of 3200 samples per second.
Q: Is the MAX30102 suitable for continuous monitoring?
A: Yes, the MAX30102 is designed for low-power operation, making it suitable for continuous monitoring in wearable devices.
Q: Can the MAX30102 be used with a 5V microcontroller?
A: Yes, the MAX30102 can be used with a 5V microcontroller, but ensure proper voltage levels for VDD (1.8V) and VLED (3.3V to 5.5V). Use level shifters if necessary for I²C communication.