The MAX30102 is a pulse oximeter and heart-rate sensor designed for non-invasive health monitoring applications. It utilizes photoplethysmography (PPG) technology to measure blood oxygen saturation (SpO2) and heart rate. The sensor integrates red and infrared LEDs, a photodetector, optical elements, and low-noise electronics in a compact package, making it ideal for wearable devices, fitness trackers, and medical monitoring systems.
The MAX30102 is a highly integrated sensor with the following key specifications:
Parameter | Value |
---|---|
Operating Voltage | 1.8V (core) and 3.3V (LEDs) |
Current Consumption | 600 µA (typical, during active operation) |
LED Wavelengths | Red: 660 nm, Infrared: 880 nm |
Communication Interface | I2C (7-bit address: 0x57) |
Sampling Rate | Programmable (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 Name | Pin Number | Description |
---|---|---|
VIN | 1 | Power supply input (1.8V or 3.3V) |
GND | 2 | Ground |
SDA | 3 | I2C data line |
SCL | 4 | I2C clock line |
INT | 5 | Interrupt output (active low) |
RD1 | 6 | Red LED cathode (internally connected) |
IRD1 | 7 | Infrared LED cathode (internally connected) |
NC | 8 | No connection |
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 "MAX30105.h" // Include the MAX30102 library
MAX30105 particleSensor; // Create an instance of the sensor
void setup() {
Serial.begin(9600); // Initialize serial communication
Serial.println("Initializing MAX30102...");
// Initialize the sensor
if (!particleSensor.begin()) {
Serial.println("MAX30102 not detected. Check connections.");
while (1); // Halt execution if the sensor is not found
}
// Configure the sensor
particleSensor.setup(); // Default settings
particleSensor.setPulseAmplitudeRed(0x0A); // Set red LED brightness
particleSensor.setPulseAmplitudeIR(0x0A); // Set IR LED brightness
}
void loop() {
// Read data from the sensor
long redValue = particleSensor.getRed(); // Red LED value
long irValue = particleSensor.getIR(); // IR LED value
// Print the values to the serial monitor
Serial.print("Red: ");
Serial.print(redValue);
Serial.print(" IR: ");
Serial.println(irValue);
delay(100); // Delay for stability
}
Sensor Not Detected:
Inaccurate Readings:
No Data Output:
By following this documentation, you should be able to successfully integrate and use the MAX30102 in your projects.