Arduino Heart Rate Monitor

26,265

108

15

Introduction: Arduino Heart Rate Monitor

This simple and inexpensive project is based around the MAX30100 sensor breakout board and utilizes a small 0.91" OLED display to report the heart rate and oxygenation level.

Both the devices used have an I2C two-wire interface and therefore keeps the wiring down to a minimum.

Parts used

Step 1: The Wiring

Both the OLED display and the MAX30100 breakout board need need 4 wires connected to the Arduino board:

  • Ground
  • VCC
  • SDA
  • SCL

The data lines for the I2C interface will depend on the specific version of the Arduino board being used. In this case I am using A4 for SDA and A5 for SCL, as these are the hardware dedicated pins for the Uno and Nano.

Step 2: The Firmware

Once the three devices (Arduino, OLED display and MAX30100 sensor board) are connected it is time to upload the code to the Arduino board.

Firmware Repository

I have shared the code for my implementation at my GitHub repository, it's not the best code and a bit messy, but it works.

Step 3: Description

At start up, the display prompts the user to place their finger on the sensor. when it detects a heartbeat, it updates the heart symbol on the display to show that and starts recording the readings.

In my implementation I filter any measurement that is outside of a threshold and then calculate an average for both the heart rate and the SpO2 values and finally display that on the OLED. As long as the finger remains on the sensor and the sensor is detecting a heartbeat, the display keeps showing the result. If the sensor does not detect a heartbeat for 10 seconds, it restarts the process and prompts the user for another reading.

Step 4: Final Comments & Video

The Video

I recorded the following video to demonstrate the project.

Conclusion

As you can see this is a really simple implementation on how to use this sensor and the purpose is more educational than anything else. With the right amount of effort a fairly robust device can be built and I hope this guide inspires someone to take this to the next level.

Sensors Contest 2017

Participated in the
Sensors Contest 2017

Microcontroller Contest 2017

Participated in the
Microcontroller Contest 2017

Be the First to Share

    Recommendations

    • Battery Powered Contest

      Battery Powered Contest
    • Plywood Challenge

      Plywood Challenge
    • Plastic Contest

      Plastic Contest

    15 Discussions

    0
    Maker Saga
    Maker Saga

    3 years ago

    Nice work!

    0
    usear
    usear

    Reply 3 years ago

    Thank you.

    0
    JessicaN21
    JessicaN21

    1 year ago

    I can get my sensor to read over serial but it just says "place finger on sensor" and doesn't measure with my LCD sketch. Any pointers? Using the exact same equipment you are!

    0
    KevinV152
    KevinV152

    2 years ago

    necesito ayuda con el proyecto logro hacer que muestre el mensaje pero a la hora de poner el dedo en el sensor no pasa nada


    0
    PranviS
    PranviS

    Question 2 years ago

    The code is unable to trigger the MAX30100. I have no idea where i am going wrong. I used used your second code from github without the lcd display. Can you please help?

    0
    9mot
    9mot

    3 years ago

    Do The dupont cables need to be M-M, F-M, or F-F

    0
    usear
    usear

    Reply 3 years ago

    In my case they were female to female, but it will depend on what you have as the micro controller.

    6
    MobilusC
    MobilusC

    3 years ago

    Hello , Great work!

    Could we make it work with MAX30102 or MAX30105 sensor?

    0
    usear
    usear

    3 years ago

    Just updated the repository and added a sketch that only does not use or reply on an OLED display and prints to the serial port instead.

    0
    kandalan
    kandalan

    Reply 3 years ago

    n you send me the code please

    kandalan@gvsu.edu

    0
    usear
    usear

    Reply 3 years ago

    The code is in the github repository linked in the write up.

    1
    arduinomaster
    arduinomaster

    3 years ago

    I had to update the "u8g2" library for the font to make it compile and upload in version 1.6.8. Thanks for sharing. Just what I wanted.

    0
    usear
    usear

    Reply 3 years ago

    Thanks, I am glad this helped.

    0
    BrownDogGadgets
    BrownDogGadgets

    3 years ago

    The OLED Screen is a really nice touch.

    0
    usear
    usear

    Reply 3 years ago

    Thanks, It worked out nicely.