The SparkFun Pulse Oximeter and Heart Rate Sensor is an I2C based biometric sensor, utilizing two chips from Maxim Integrated: the MAX32664 Biometric Sensor Hub and the MAX30101 Pulse Oximetry and Heart Rate Module. While the latter does all the sensing, the former is an incredibly small and fast Cortex M4 processor that handles all of the algorithmic calculations, digital filtering, pressure/position compensation, advanced R-wave detection, and automatic gain control. We've provided a Qwiic connector to easily connect to the I2C data lines but you will also need to connect to two additional lines. This board is very small, measuring at 1in x 0.5in (25.4mm x 12.7mm), which means it will fit nicely on your finger without all the bulk.
The MAX30101 does all the sensing by utilizing its internal LEDs to bounce light off the arteries and arterioles in your finger's subcutaneous layer and sensing how much light is absorbed with its photodetectors. This is known as photoplethysmography. This data is passed onto and analyzed by the MAX32664 which applies its algorithms to determine heart rate and blood oxygen saturation (SpO2). SpO2 results are reported as the percentage of hemoglobin that is saturated with oxygen. It also provides useful information such as the sensor's confidence in its reporting as well as a handy finger detection data point. To get the most out of the sensor we've written an Arduino Library to make it easy to adjust all the possible configurations.
The SparkFun Qwiic connect system is an ecosystem of I2C sensors, actuators, shields and cables that make prototyping faster and less prone to error. All Qwiic-enabled boards use a common 1mm pitch, 4-pin JST connector. This reduces the amount of required PCB space, and polarized connections mean you can’t hook it up wrong.
SparkFun Pulse Oximeter and Heart Rate Sensor
MAX30101 - Pulse Oximeter and Heart-Rate Sensor
MAX32664 - Ultra-Low Power Biometric Sensor Hub
If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.
Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels
If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.
Skill Level: Competent - You will be required to reference a datasheet or schematic to know how to use a component. Your knowledge of a datasheet will only require basic features like power requirements, pinouts, or communications type. Also, you may need a power supply that?s greater than 12V or more than 1A worth of current.
See all skill levels
Based on 5 ratings:
Evaluated performance using SFE example sketches, and compared to a CVS pulse oximeter. After reducing the number of samples being averaged on the MAX303101/32664, the response time was close to on par with the store bought finger clip type device. Consistent pressure is important, be sure to prepare for that. Takes about 2-4 seconds after placing on finger until data is available, sometimes up to ~6s. Worth playing around with, still figuring out settings.
Qwiic system is easy and the instructions for this project were great!
Works on Arduino out of the box. Had to get the correct library with the Arduino library tool. An update to the instructions on Sparkfun might be in order. I bought this to monitor my Heart Rate and O2 levels in case I got the virus. Not a medical device but very good in a pinch. Building a wearable sensor with a Raspberry Pi zero and a small display so I'm in the process of writing python code to run the sensor. Will make the code available on request.
I was trying to purchase a pulse oximeter, but with Covid-19, they were sold out everywhere. I happened to see a tweet from someone who had incorporated one of these into a project, so I decided to do the same. I combined the example code with the example code for a small OLED display and created a 'homemade' pulse oximeter.
Is the most accurate of all the sensors I´ve tried