Introduction: Blood Oxygen Heart Rate Meter

This instructables show how to use MAX30102, XIAO and a tiny display to build a blood oxygen and heart rate meter.

Step 1: Sensor & Algorithm

This project use Maxim Integrated MAX30102 Biosensor to detect pulse oximeter and heart rate. However, the official sample is not so accurate, so will use the MolecularD algorithm instead.


Step 2: Hardware Preparation


The pulse oximeter calculation algorithm requires some memory. Arduino classic family does not have enough memory for data buffer. And also I want all components can fit in a 400 hole breadboard, so I need a smaller one. I have a Seeeduino XIAO in hand.


Any Arduino_GFX supported display should be ok, I have a 1.14" 135x240 color display in hand.


Maxim Integrated MAX30102 Biosensor.

Step 3: Breadboard Connection

Here are connection summary:

XIAO    -> Display  -> MAX30102
VCC     -> VCC, BLK -> VCC
GND     -> GND, CS  -> GND
GPIO  0             -> INT
GPIO  2 -> RST
GPIO  3 -> DC
GPIO  4             -> SDA
GPIO  5             -> SCL
GPIO  8 -> SCL
GPIO 10 -> SDA

Step 4: Program

  1. Follow Seeeduino XIAO software install guide if not yet:
  2. Download source code:
  3. Open BloodOxygenHeartRateMeter.ino in Arduino IDE
  4. Press upload

Step 5: How to Use?

  1. Plug USB power
  2. Wait "Put on finger" message show
  3. Put your finger on the MAX30102 sensor, "Measuring..." message show
  4. Hold and wait few seconds, blood oxygen and heart rate figures show

Step 6: Cross Check Figures

I have cross check the readings with Apple Watch Series 6, MolecularD algorithm can give very precise figures that comparable with Apple Watch.