Heart Rate Monitor on Thingspeak IoT Platform




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.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Components You Need

Step 2: 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.

Step 3: 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.

Step 4: Uploading and Testing

  1. Wrap the strap around your finger or wrist.
  2. Now, upload the sketch for testing the module for the first time.
  3. Open serial plotter and wait for 5 seconds and stay calm.You will see the graph of the heart beats.
  4. Try to block the blood flow through using another hand.
  5. 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.
  1. Now, upload the main code to the Arduino.
  2. 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.

Step 5: Sketches

Be the First to Share


    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    6 Discussions


    Question 5 months ago

    hello, i wand to send an ECG signal from matlab to thingspeak, could u please help me ?
    thank u

    How to make connections between Arduino,I/O port expansion sheild, heart beat sensor and wifi module?

    Nik AmirahA

    Question 1 year ago

    Hi, can i have the whole circuit diagram ? I mean the connection between the Arduino UNO Rev3,
    I/O Expansion Shield for Arduino, Heart Rate Sensor and ESP8266 WiFi Bee.


    1 year ago

    Hi, I've been wondering if it could work without wifi module ? I explain, I'm working on a project and I wish to send my ear heart rate monitor data to my thingspeak account but I don't have WiFi Shield with my arduino so I was wondering if you had any idea on how I could do it ? Because my arduino is connected to my computer so i can receive the data and print my heart rate on my screen but do you have any idea to send it to my account ? I will appreciate your answer ! Thanks you !

    1 reply

    Thanks for asking question!
    Well, the data is sent to the computer using the serial port in Arduino. If in case you can send the data from the serial monitor to the computer, then, you can send the data to the internet without WIFI shield.
    If your computer is connected to internet and the Arduino supports the ethernet port, then also, you can to same thing like the one in the project. On arduino UNO, it not possible.
    I hope the answer help you!