

The MAX30102, manufactured by Azil Selsabile (Part ID: MAX30102), is a pulse oximeter and heart-rate sensor designed for non-invasive monitoring of vital signs. It utilizes photoplethysmography (PPG) technology to measure blood oxygen levels (SpO2) and heart rate. The module integrates red and infrared LEDs, a photodetector, optical elements, and low-noise electronics, making it a compact and efficient solution for wearable health devices and medical monitoring systems.








The MAX30102 is a highly integrated sensor module with the following key specifications:
| Parameter | Value |
|---|---|
| Supply Voltage (VDD) | 1.8V |
| LED Supply Voltage (VLED) | 3.3V |
| Operating Current | 600 µA (typical) |
| Standby Current | 0.7 µA (typical) |
| Measurement Wavelengths | Red: 660 nm, IR: 880 nm |
| Communication Interface | I²C (up to 400 kHz) |
| Operating Temperature | -40°C to +85°C |
| Dimensions | 5.6 mm x 3.3 mm x 1.55 mm |
The MAX30102 module has the following pinout:
| Pin Name | Pin Number | Description |
|---|---|---|
| GND | 1 | Ground connection |
| VDD | 2 | Power supply for the internal circuitry (1.8V) |
| VLED | 3 | Power supply for the LEDs (3.3V) |
| SDA | 4 | I²C data line |
| SCL | 5 | I²C clock line |
| INT | 6 | Interrupt output (active low) |
| NC | 7 | No connection (leave unconnected or grounded) |
| NC | 8 | No connection (leave unconnected or grounded) |
0x57. Ensure no address conflicts with other devices on the I²C bus.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 the MAX30102 library
MAX30102 sensor; // Create an instance of the MAX30102 class
void setup() {
Serial.begin(9600); // Initialize serial communication
Wire.begin(); // Initialize I²C communication
// Initialize the MAX30102 sensor
if (sensor.begin() == false) {
Serial.println("MAX30102 initialization failed. Check connections.");
while (1); // Halt execution if initialization fails
}
Serial.println("MAX30102 initialized successfully.");
}
void loop() {
int heartRate = 0;
int spo2 = 0;
// Read heart rate and SpO2 values
if (sensor.readHeartRateAndSpO2(heartRate, spo2)) {
Serial.print("Heart Rate: ");
Serial.print(heartRate);
Serial.print(" bpm, SpO2: ");
Serial.print(spo2);
Serial.println(" %");
} else {
Serial.println("Failed to read data. Ensure proper sensor placement.");
}
delay(1000); // Wait for 1 second before the next reading
}
Sensor Not Detected on I²C Bus
Inaccurate Readings
Initialization Fails
Data Not Updating
Q: Can the MAX30102 measure SpO2 and heart rate simultaneously?
A: Yes, the MAX30102 is designed to 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 sampling rates up to 3200 samples per second, configurable via its registers.
Q: Is the MAX30102 suitable for continuous monitoring?
A: Yes, the low power consumption and integrated features make it ideal for continuous monitoring in wearable devices.
Q: Can the MAX30102 be used with 5V microcontrollers?
A: Yes, but you must use level shifters for the I²C lines, as the MAX30102 operates at 1.8V logic levels.