BLE Heart Rate Sensor




Introduction: BLE Heart Rate Sensor

About: Make it yourself if you cannot buy one!

This instructables show how to build a BLE heart rate sensor with Arduino, nRF8001 Bluetooth LE breakout board and PulseSensor module.

Step 1: Introduction

This instructables coding come from 2 modules sample code:

Cheong2K's sample code demonstrate how to advertise heart rate value with BLE module, but only use dummy value in the sample. On the other side, pulse sensor can capture real heart rate value with the Arduino.

My code just merge both sample code to make a workable example.

Module reference:

Step 2: Preparation

Arduino Board

This time I use Arduino Pro Micro

BLE Module

nRF8001 Bluetooth LE breakout board

Heart Rate Sensor

Sensor from pulse


A small size bread board and some bread board wire

Step 3: Software Preparation

  1. Download and install Arduino (if not yet):
  2. Install BLE SDK for Arduino library
    • Select menu item in Arduino: Sketch -> Include Library -> Manage Libraries
    • Search "BLE SDK for Arduino"
    • Install

Step 4: Connection

Here is the connection summary:

BLE SCK  -> Pro Micro pin 15
BLE MISO -> Pro Micro pin 14
BLE MOSI -> Pro Micro pin 16
BLE REQ  -> Pro Micro pin 10
BLE RDY  -> Pro Micro pin 9
BLE RST  -> Pro Micro pin 8
BLE GND  -> Pro Micro GND
BLE VIN  -> Pro Micro RAW

Pulse Sensor Signal -> Pro Micro A1
Pulse Sensor +ve    -> Pro Micro RAW
Pulse Sensor -ve    -> Pro Micro GND 

Step 5: Program Arduino

Download the code from Github:

If you are not familiar with Github, simply press "Clone or Download" button and select Download ZIP.

Open BLE-Heart-Rate-Sensor.ino in Arduino.

It is some tricky while select board, you need to select "Arduino Leonardo" in Tools Menu -> Board.

Connect the Arduino Pro Micro and press upload button to program it.

Step 6: Start Serial Monitor

After upload the program to Arduino Pro Micro, open Serial at Tools Menu -> Serial Monitor.

You can see "Advertising Start" message.

Step 7: Connect BLE HR Sensor

While advertising start, use an iOS device search the bluetooth device.

Connect to the BLE HR Sensor.

I have no Android in hand, you may find some app that can connect with bluetooth heart rate sensor.

Step 8: Check the Heart Rate

After mobile connected, you will see "Evt Connected" at Serial Monitor.

Open Health app in iOS or BLE heart rate related app in Android.

Put a finger on the pulse sensor, it will start advertising heart rate readings to the mobile.

Step 9: Happy BLE Sensing!

This instructables is just a very simple example of BLE advertising sensor value, you may find more BLE example at Arduino File menu -> Examples -> BLE SDK for Arduino.

Microcontroller Contest 2017

Participated in the
Microcontroller Contest 2017

Be the First to Share


    • Knitting and Crochet Speed Challenge

      Knitting and Crochet Speed Challenge
    • Photography Challenge

      Photography Challenge
    • Fix It Speed Challenge

      Fix It Speed Challenge



    2 years ago

    can i postioned the sensor on the wrist?


    2 years ago

    Thanks sir for the amazig explanation. but I have a question, do you know if i can detect the Respiration rate from the heart rate?


    Arduino: 1.8.5 (Windows 10), Board: "Arduino Leonardo"

    C:\Users\SiddBSharma\Downloads\software\BLE-Heart-Rate-Sensor-master\BLE-Heart-Rate-Sensor\BLE-Heart-Rate-Sensor.ino: In function 'void setup()':

    BLE-Heart-Rate-Sensor:154: error: 'interruptSetup' was not declared in this scope

    interruptSetup(); // sets up to read Pulse Sensor signal every 2mS


    exit status 1

    'interruptSetup' was not declared in this scope

    This report would have more information with

    "Show verbose output during compilation"

    option enabled in File -> Preferences.

    how do you correct this ? please help.


    Reply 3 years ago

    I have just tested with Arduino 1.8.5 and compile success.


    4 years ago

    Can i use a bluetoth module HC-05...instead of your bluetooth module


    Reply 4 years ago

    Please reply fast?‍♂️?‍♂️


    Reply 4 years ago

    no, you need a BLE module to do that