Home / Arduino / How to Use the MAX30100 as Arduino Heart Rate Sensor

How to Use the MAX30100 as Arduino Heart Rate Sensor

The moment I got my hands on the MAX30100 breakout board, I was ready to create my own Arduino heart rate sensor. But building one wasn’t as easy as I thought.


First, let me try to explain how the MAX30100 measures pulse rate. The device has two LEDs, one emitting a red light, another emitting infrared light. For pulse rate, only the infrared light is needed. Both the red light and infrared light is used to measure oxygen levels in the blood. More on that later.

MAX30100 Heart Rate Sensor

When the heart pumps blood, there is an increase in oxygenated blood as a result of having more blood. As the heart relaxes, the volume of oxygenated blood also decreases. By knowing the time between the increase and decrease of oxygenated blood, the pulse rate is determined.

It turns out, oxygenated blood absorbs more infrared light and passes more red light while deoxygenated blood absorbs red light and passes more infrared light. This is the main function of the MAX30100: it reads the absorption levels for both light sources and stored them in a buffer that can be read via I2C.

But again it's not as simple as it sounds, there’s a lot of data filtering involved like how this awesome post shows.

A Simple Arduino Heart Rate Sensor

Now let’s create a heart rate monitor where the values are displayed through the serial port. Here is the diagram:

MAX30100 Heart Rate Sensor Arduino Diagram

The MAX30100 breakout board has six accessible pins. As mentioned, this device uses the I2C bus so we need to connect SCL and SDA of the board to the SCL and SDA pins of the Arduino UNO. The MAX30100 IC requires 3.3V but the breakout board contains a voltage regulator so we can safely use 5V. Also, the IR and RED led cathode and driver connection point is also made accessible. We can leave this floating according to the datasheet.

Thankfully, Raivis Strogonovs have done most of the work for us and created this MAX30100 library. The library is quite easy to use; here’s an example sketch:

Here the heart pulse rate is displayed through the serial monitor. If you need to include the blood oxygen concentration, you only need to add this line:

Check Also

How to Use the MQ-7 Carbon Monoxide Sensor

The MQ-7 carbon monoxide sensor is especially designed to be sensitive to carbon monoxide (CO) …


  1. hey, I'm following your instruction, but my max30100 my sensor doesn't work... can you help me?

  2. Hey, We followed your Instructions and set up the ckt and code but the IRD and RED doesn't glows , what to do?

Leave a Reply

Your email address will not be published. Required fields are marked *