Comments: SparkFun Pulse Oximeter and Heart Rate Monitor Hookup Guide


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.

  • ksr / about 4 years ago / 2

    Hi the code in examples on the page: Example 1:Config BPM Mode 1 SparkFun_Bio_Sensor_Hub bioHub(DEF_ADDR, resPin, mfioPin);

    Doesn't match the call in github library to the driver SparkFun_Bio_Sensor_Hub::SparkFun_Bio_Sensor_Hub(uint16_t resetPin, uint16_t mfioPin, uint8_t address) {

    Couldn't get anything to work until I changed example to SparkFun_Bio_Sensor_Hub bioHub(resPin, mfioPin);

    The examples in github are correct


    • I just saw the comment when checking a spec in the tutorial. Sorry about the confusion. I think the library was updated after this tutorial was written. I have edited example 1 where it says:

      // Takes address, reset pin, and MFIO pin.
      SparkFun_Bio_Sensor_Hub bioHub(DEF_ADDR, resPin, mfioPin);

      to the following:

      // Takes address, reset pin, and MFIO pin.
      SparkFun_Bio_Sensor_Hub bioHub(resPin, mfioPin);

      The example assumes that you are using the default address (it seems that there is only one address based on the comment in the example code) so the examples excluded it from the code.

  • Member #1726256 / about a year ago / 1

    Hi, I am trying to run this library on stm32duino for the blue pill, but it has problems, can you help me?

  • Member #1592680 / about 2 years ago / 1

    Hi, I am trying to use MAX32664 to interface with MAX30102 instead. However, using the provided Sparkfun _Bio_Sensor_Hub, I am unable to retrieve any data from it. However, I am able to interface with MAX32664. Even though the library is catered for MAX30101 sensor. I would like some assistance in interfacing MAX30102 with MAX32664 while using the same library. Your help is much appreciated.

  • Member #1345294 / about 3 years ago / 1

    Hi Sparkfun Team,

    I noticed that the documentation introduces contradictory information regarding the relationship between the possible value of sample and pulse width. Comments in the example code and BioHub library suggest there is a configuration that will allow 3200 samples per second (sps). However, the highest sample value I could achieve was 1600 with a pulse width of 69. Can you clarify if it is possible to achieve 3200 sps on this system?

    • Elias The Sparkiest / about 3 years ago / 1

      Apologies for the confusion. Looking at page 24 the datasheet for the 30101, it's clear that 3200 samples can only be attained at a pulse width of 69 in heart rate mode i.e. not sampling for blood oxygen. 1600 is the highest obtainable sample rate while sampling blood oxygen. Can you point me to the confusing text?

  • Member #1678683 / about 3 years ago / 1

    Hi, Thank you for this very helpful library and clear examples! However, as a beginner in arduino i still have trouble to understand exactly the code behind, that is how you obtain the oxygen level for example. Did you realize a calibration step? And do you have a file explaining a bit the theory behind the code? Thank you in advance :)

    • Elias The Sparkiest / about 3 years ago / 1

      Sorry for the late reply. This product has a lot going on. The library communicates with the MAX32664 which is itself a small microncontroller that handles the various settings for the MAX3101, pulse width, sample rate, LED brightness etc, and also calculates the information coming back. The Arduino library doesn't do any of it, it simply asks for the already calculated biometrics. We do sell the MAX3101 as a breakout on its own and that has a library that may be of interest to you:

  • Member #1669324 / about 3 years ago / 1


    I am trying to get example 1 to work with a Arduino Nano 33 BLE sense with Nordic nRF52840 architecture. I have used a solder and checked and rechecked all my joints. When I run the example, it compiles, and gives no errors at any point, but outputs 0 for every metric. Is this architecture not supported, if so, would I need to port the library to fit the nRF52840 architecture in order to make this hardware work?

    Thank you in advance for your help.

  • Member #1666412 / about 3 years ago / 1

    Hi! I need pure PPG signal, but there is no way I can get it. Can you help me?

    • Member #1686716 / about 3 years ago / 1

      Hey, have you figured it out? I need the raw PPG signal too.

  • Member #1665836 / about 3 years ago / 1

    Can this work on raspberry pi 4? and if yes can I make it work using python?

  • Member #1590016 / about 4 years ago / 1

    Hello, I am trying to use this sensor on Arduino Nano Every. But i am getting this error

    Could not communicate with the sensor!!! Configuring Sensor.... Error configuring sensor. Error: 1

    The reset pin and Mfio pin are connected to pin 4 and 5 respectively. I am using the latest version of the library. Could you atleast hint what could be the problem?

    • I'm not sure if you have resolved your issue yet. I just saw this comment when looking up a spec.

      I have not used the Arduino Nano Every before. A few things come to mind when troubleshooting based on your brief explanation:

      • The error indicates that your microcontroller is not able to communicate with your sensor. I am not sure if you are using a breadboard or soldering it directly to the Arduino Nano Every since the board does not have a Qwiic connector? I recommend checking your connections.
      • From the product page, it looks like you need to solder to the Arduino Nano Every. I recommend checking your solder joints and carefully removing any water soluble flux residue on the board to ensure that it is not interfering with the connection. If this is the case, you would need to solder a connection to the Pulse Oximeter and Heart Rate Monitor as well since there is no Qwiic connector (unless you have a Qwiic adapter or shield). I recommend checking the sensor's solder joints as well.
      • It looks like it uses a different architecture: ATMega4809 ? Try using it with an ATmega328P like the RedBoard Qwiic set to 3.3V in this tutorial.    

      Other than that, I recommend posting in the SparkFun Forums for further assistance if you have not already.

If you've found an issue with this tutorial content, please send us your feedback!