• EUR€
  • £GBP
  • $USD
PROJECTS ArduinoGravityESP8266

How to make a Heart Rate Monitor

DFRobot Nov 03 2017 2068

In this project we are going to make a Heart Beat Detection and Monitoring System using Arduino that will detect the heart beat using the Pulse Sensor and will show the readings in BPM (Beats Per Minute). It will also send the readings to ThingSpeak server using the Wi-Fi Bee module ESP8266, so that Heart Beats can be monitored from anywhere in the world over the internet. ThingSpeak is a great source for displaying the data online and you can access the data from ThingSpeak at any time and at any place.

Components Required
Arduino UNO Rev3
I/O Expansion Shield for Arduino
Heart Rate Sensor
ESP8266 WiFi Bee

Software or online services:
Arduino IDE
Thingspeak API
Setting up the ThingSpeak


ThingSpeak provides very good tool for IoT based projects. By using ThingSpeak site, we can monitor our data and control our system over the Internet, using the Channels and webpages provided by ThingSpeak. ThingSpeak ‘Collects’ the data from the sensors, ‘Analyze and Visualize’ the data and ‘Acts’ by triggering a reaction. We have previously used ThingSpeak in Weather station project using Raspberry Pi and using Arduino, check them to learn more about ThingSpeak. Here we are briefly explaining to use ThingSpeak for this Beat Detection and Monitoring System. The ThingSpeak service is operated by MathWorks.

First of all, user needs to Create a Account on ThingSpeak.com, then Sign In and click on Get Started.

After creating an account, go to channels and create a new channel. Now write the name of the Channel and name of the Fields. Also tick the check box for ‘Make Public’ option below in the form and finally Save the Channel. Now your new channel has been created.

After this go to API keys and copy your Write API key. You will need this in the code. Check the Full Code at the end.


Circuit and Explanation

ESP8266 WiFi Bee

Wifi Bee-ESP8266 is a Serial-to-WIFI module using XBEE design in a compact size, compatible with XBEE slot, applicable to a variety of 3.3V single-chip system. It can be used for Arduino, wireless data transfer, remote control. On-board switch can be used to easily select the Startup module or Upgrade firmware. ESP8266 arduino module has a powerful on-chip processing and storage capacity, built-in 32-bit processor, built-in Lwip protocol stack. Support AP+STA mode co-exist.

Heart Rate Sensor Module

The DFRobot heart rate sensor is a thumb-sized heart rate monitor designed for Arduino microcontrollers.

This heart rate monitor sensor is a pulse sensor which is developed based on PPG techniques. This is a simple and low-cost optical technique that can be used to detect blood volume changing in the microvascular bed of tissues. It is relatively easy to detect the pulsatile component of the cardiac cycle according to this theory.

The sensor has two holes that you can use to attach to your belt. You can wrap on your finger, wrist, earlobe or other areas where it has contact with your skin.

I/O Expansion Shield
To connect these components with the Arduino, we need the expansion shield which can connect them with the microcontroller with ease.









  1. Stack the I/O Expansion Shield on the Arduino UNO.
  2. Take the Heart Rate Sensor Module and put the strap through the holes in the modules so that you can wrap on your finger, wrist, earlobe or other areas where it has contact with your skin.
  3. Connect the Heart Rate Sensor Module to A1 pin on the analog headers on the expansion shield. Mind the colors of headers to the wires, that is, red to red, etc.
  4. In the Wifi Bee slot on the shield, put the ESP8266 WiFi Bee.

Uploading and testing







  1. Wrap the strap around your finger or wrist.
  2. Put the switch on the module to 'A' for analog mode.
  3. Now, upload the sketch for testing the module for the first time.
  4. Open serial plotter and wait for 5 seconds and stay calm.
  5. You will see the graph of the heart beats.
  6. Try to block the blood flow through using another hand.
  7. The graph line will become straight for some time and will come to normal stage as the blood finds way for circulation if all the capillaries aren't blocked properly.



1. This product is NOT a professional medical device and should not be used to diagnose or treat medical conditions.

2. This sensor is designed to work when the user is not moving. If used while moving it will give inaccurate results.

  • Now, upload the main code to the Arduino.
  • Remember to change the API key, SSID (WiFi name) and PASS (Password) for your project.
  • Use the heart rate sensor on your self again.

The ESP8266 will then communicate with the Arduino and will send the data to ThingSpeak. The ESP8266 will connect the network of your router that you will provide in the code and will send the data of the sensor online. This data on the ThingSpeak will be shown in a Graph form showing the past readings too and can be accessed from anywhere over internet.


int sensorPin = A1;   //for analog input //remember you put the switch towards 'A' not 'D' for analog input void setup()  {  Serial.begin(115200);  //default is 9600, change after opening the serial plotter } void loop()  {  int heartValue = analogRead(heartPin);    //reading the analog value  Serial.println(heartValue);   //printing the value tot the serial plotter  delay(5);  }