Clinical Biometrics: The H-P.O.D. Oximeter
A basic heart rate sensor just counts pulses. The Homemade Pulse Oximetry Display dives into advanced physics (Beer-Lambert law). By manipulating two entirely different wavelengths of light, the Arduino can literally calculate exactly how much oxygen is chemically bonded to the hemoglobin molecules inside your bloodstream in real-time.

The Dual-Beam Optics (MAX30102)
The MAX30102 I2C Module is the core engine of this project. It features two extreme LEDs (Red at 660nm, and Infrared at 880nm).
- Oxygenated blood (from the lungs) wildly absorbs Infrared light while letting Red light pass right through.
- Deoxygenated blood (returning to the heart) wildly absorbs Red light while letting Infrared light pass through.
- The incredibly complex chip fires the Red LED, takes a reading, shuts it off, fires the IR LED, and takes a reading. It does this 100 times a second!
The AC/DC Mathematical Ratio (SpO2)
The Arduino processor reads the massive data payloads from the I2C bus.
- The raw light signals are split into two components mathematically: AC (the pulsing arterial blood) and DC (the static tissue, bone, and venous blood).
- The Arduino calculates the
R-Value.R = (AC_Red / DC_Red) / (AC_IR / DC_IR) - A massive, complex calibration table inside the C++ code parses that ratio block into a percentage:
SpO2: 98% Oxygen Saturation!. - If the number drops below 90%, the Arduino recognizes severe hypoxia and commands an alarm buzzer to scream!
The Hardware Rig
- Arduino Mega or ESP32: Highly recommended. This project uses heavy mathematical libraries that will max out an Uno's internal SRAM instantly.
- MAX30102 Pulse Oximeter and Heart-Rate Sensor.
- A 1.3" I2C OLED Display: Required to draw the scrolling, high-resolution electrocardiograph (ECG) wave visually.
- Velcro Finger Strap: Holding the sensor perfectly flush against the capillary bed is the hardest, most critical part of this build.