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 8 ratings:
4 of 4 found this helpful:
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.
Qwiic system is easy and the instructions for this project were great!
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
This is a must-have sensor for the hobbyist who wants to develop a healthcare POC, Initially, I had some issue with the sensor with the setup but when I communicated my issue to the sparkfun support team they immediately dispatch a new sensor. This sensor is much stable and gives a much better accurate reading compared to sensors available from other module makers on the e-commerce platform. highly recommend.
Easy to set up. Good instructions and useful library with plenty of configuration options. Output was more stable than I expected, compared to other sensors. Since it needed 3.3V I/O I used it with an Adafruit M4 feather (I was too lazy to re-solder the jumper on Red Board) and it worked fine.
A rubber band works, but it would be nice to have a finger clip to go with the board.
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.
The library and instructions are perfect. If you order all the suggested parts, you can have this up and running very fast. Literally a few minutes if you are handy with Arduino. Even if you don't know Arduino, you can follow their instructions and learn it in a couple of hours.
Looking for answers to technical questions?
We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.
Log in or register to post comments.
I have purchased this sensor from the sparkfun recenty and trying to get it work on low power but however it is consuming 12mA to 15mA in ideal stage and consumption increased by 10mA when the led of the sensor get flash, so ultimately power consumption becomes almost 18 to 25mA.
Is there any ways to operate the sensor at 1mA to 2mA or even microAmperes?
Can anyone here confirm which version of the MAX32664 is being used here? My doubt is that version A is being used. If so, I'd suggest releasing one with version D, which supports estimated blood pressure as well, or using version Z which can be loaded with the firmware of both A and D to experiment what suits our needs
Is this sensor compatible with the Open Logging Artemis? Really, really hoping it does...
Is there any resource to run python code on a RaspberryPi to read the sensor data or is it arduino and C only?
I am also interested in running this on Raspberry Pi, to date I have not found any resources. Reviewer named campsec said they were working on a python version. Have you found any additional resources?
On the reviews, a couple people have said that they made their own homemade pulse ox. How would you recommend keeping constant pressure? Do you just use a rubber band as shown in the video or did you come up with another way?
I would (will) use some stretch velcro. Found this: https://www.seattlefabrics.com/VELSTRETCHreg-Brand-Elastic-Loop_p_436.html. I will hopefully get my unit in soon, they were back ordered for a bit. You could also use a finger cot or cut-off end of a stretchy work glove, like the heavy black ones auto mechanics use. They're cheap at Harbor Freight.
Great looking product! Can this be purchased with only the solder points on the Qwiic connectors to reduce bulk?
Unfortunately, we don't have that option available; however, the Qwiic connectors can be removed with some simple rework skills.