MAX30102 pulse oximeter module
MAX30102 module pinout, address 0x57, the 1.8 V pull-up problem on cheap purple boards, finger placement, and why it is not a medical device.
Community draft — report a mistake
3.3 V or 5 V? Many purple modules pull SDA/SCL up to 1.8 V. That usually still reads on 3.3 V boards, but some don't — if the scanner can't find 0x57, use a module whose pull-ups go to 3.3 V.
The MAX30102 shines red and infrared LEDs into your fingertip and measures the reflected light. The pulsing signal gives heart rate, and the ratio between red and IR gives an estimate of blood oxygen (SpO₂).
It’s a favourite student exhibition project, paired with an OLED.
Not a medical device. Readings from a DIY sensor are for learning only. Never use them to make health decisions — use a certified pulse oximeter.
Prices are indicative (Oct 2026) and vary by seller.
Pinout
| Pin | What it does |
|---|---|
VIN | 3.3–5 V supply |
SDA | I2C data |
SCL | I2C clock |
INT | Interrupt output (active LOW) |
IRD | IR LED driver pin — leave unconnected |
RD | Red LED driver pin — leave unconnected |
GND | Ground |
I2C address:0x57
Library
SparkFun MAX3010x Pulse and Proximity Sensor Library by SparkFun Electronics
Arduino IDE → Library Manager → search the name above. Each guide lists the exact version we compile against.
Use it with
Common errors
Values jump wildly
Press the finger lightly and keep it still — pressure stops blood flow. Shield it from room light.
Scanner finds nothing at 0x57
The 1.8 V pull-up issue: try another module, or on purple boards fix the pull-ups to 3.3 V as described by the seller.
Heart rate takes 10+ seconds to settle
The algorithm needs several seconds of clean samples. Average over a few beats before showing a number.