I made a Pulse Oximeter

I made a Pulse Oximeter using a MAX30102 SpO2 module, an OLED display and an Arduino Nano Microcontroller.

I stitched together and tweaked some (open source) code examples I found online, so I can’t take credit for the actual hard work, but I did assemble the circuit, build/test/compile the code, etc. I have tested it up against medical grade oximeters and it is spot on accurate.

If you are not familiar, the pulse oximeter has revolutionized modern medicine with its ability to continuously and transcutaneously monitor the oxygen saturation of hemoglobin in arterial blood (SaO2). Pulse oximetry is so widely prevalent in medical care that it is often regarded as a fifth vital sign.
I thought its funny that when this technology first came out, they were the size of a VCR and now you can literally create one with 3 components.

OK - enough work, back to Mechanical Pencils!


That kind of stuff is so much fun!

I believe oximeters became a well-known household name during the early days of the pandemic.


indeed. I actually found some of the code on a covid medical device site. Lots of sketchy ventilator designs that are (IMO) are not suited for use on humans on that site… So glad we are past that

Edit – I actually started this project during covid – as a stopgap in case we could not get enough oximeters. But (thankfully) Patrick’s Pulse Oximeter company was not needed. (I work for a healthcare system BTW).


It’s remarkable how Oximeters can actually make pretty accurate assessments of blood oxygen levels without having to penetrate the epidermis. Do you know the physics of how this functions? I’ve no clue.


It uses the Beer-Lambert law (how light absorption works). It shines light on hemoglobin and measures it.


^ I learned that during the C word.


from one of my Biomedical textbooks:

Pulse oximetry uses light to measure oxygen saturation. The amount of light that the finger absorbs depends on several factors:

  • The concentration of the substance that’s in between the light beams and the light detector
  • The length of the light path in that substance
  • The amount of oxygenated hemoglobin
  • The amount of deoxygenation hemoglobin

The hemoglobin in blood absorbs light. Therefore, the amount of light that the finger absorbs is proportional to the concentration of hemoglobin in the blood.

Given that there is an artery and a vein in our finger, one has a high concentration of hemoglobin while the other has a low concentration of hemoglobin, respectively.

The length of the light path depends on the thickness of the artery in the finger. People with thicker arteries are going to absorb more light from the pulse oximeter.

Lastly, we need to cover the difference between the absorption of light in oxygenated hemoglobin and deoxygenated hemoglobin. Oxyhemoglobin absorbs more infrared light than red light, while deoxyhemoglobin absorbs more red light than infrared light.

Since red light and infrared light have different wavelengths, the finger pulse oximeter can detect how much of each wavelength the finger absorbed. Using the ratio between the absorption of red light and the absorption of infrared light, the pulse oximeter can calculate your oxygen saturation.


yay! I wasn’t wrong but your answer isn’t nearly as lazy as mine.


All praise the transistor and the advent of the digital era! Below is the OLV-5100, the first pulse oximeter, I wonder how cumbersome it was to operate a thing like this.


OMG - that’s awesome!