Introduction: Wearable Heart Beat Sensor ESP8266+Pulse Sensor

As part of a desire to learn about ESP8266 as standalone

I thought about a project to connect pulse sensor and transmit the BPM to the computer by TCP connection.

During the construction i came across some problems.

The problems by my opinion, will help some of you to build your next project.

Step 1: Components

List of all components:

1. esp8266 (wifi transmmiter) any esp will be good, i am using esp8266-12.

2. Pulse sensor:

the sensor cost is 25$.

diy heart pulse sensor(cheap)

3. battery housing X2:

4. 2 resistors : 4.7K,10K.

5. 1 - capacitor :

6. 1 voltage regulators:

7. usb ttl for programming the esp

Step 2: Programming Environment

Comfortable environment in my opinion is the best way to succeed in what you are trying to achieve.

i came accross few environment and tutorials (LUA script).

i didnt find any nice and easy environment until i found

"Arduino-compatible IDE with ESP8266 support".

all the data i was needed is ther with a loving and helping commuinty.

1. download the IDE. grab your copy

linux :

windows :


calibrate your ide to burn the esp8266:

next STEP!

Step 3: Prepare Your ESP to Burn Your Code

ESP8266 is a Heavy consumer of current and very sensitive to the input voltage.

To run it correctly you will need to provide him 3.3 v the current can be 250mAh max.

arduino will not provide him Enough current.

I recommend connecting it to the benefit of the trials and burn to a stabilized power supply or alternatively connect it through a voltage regulator.

minimal wiring for burn:


vcc - > stabilized power supply

ch_pd -> stabilized power supply (High)

GND-> usb ttl GND & stabilized power supply GND.

RX -> TX on usb ttl

TX -> RX on usb ttl

gpio0 -> GND

after your burn your ESP the minimal wiring needed is:

vcc-> stabilized power supply VCC OR battery with voltage regulator VCC/VOUT

ch_pd -> vcc

gnd -> stabilized power supply GND OR battery with voltage regulator GND.


Step 4: Pulse Sensor With Analog (adc) in ESP8266

the pulse sensor have analog output.

the output voltage is Depending on the Input voltage.

the pulse sensor input voltage range is 3-5 volt.
in this tutorial input voltage = 3.3 (connected to ESP vcc)

the output range is 0-3.3 volt.

ESP8266 ADC: (10bit value range 0-1024)

ESP8266 have 1 analog input, the problem is the range, Between 0-1 volt.

it cant damage your ESP to provide values between 0-3.3v but every pulse above 1 volt will be the same as 3 volt.

to fix that issue i will connect the sensor output to voltage divider to ensure the the max range will be 0-1 volt.

after i set the voltage divider i was getting wrong value/heart BPM.

the pulse was very Noisy and my code didnt understant if its noise or heart pulse.
i hade to add capacitor as low-Pass filter to decrease the noise.

Step 5: How Its Work?!

the esp8266 can be standalone chip with wifi.
1. the esp is set to find Specific wifi router.
2. Connecting Success.
3.every 2ms a timer is taking sample from ADC(pulse sensor)
4.calculate BPM (the code for the calc is the original code from the pulse sensor website).
5. every 2 sec the bpm is sent via tcp/ip protocol to my_pc. pc is wating in port number 80 to recive the data from the esp.
7. my pc get avg bpm and show it.

Step 6: Code.


filename: wificlient.ino;
dont forget to set you ssid(routher name) & password
dont forget to your pc ip address.

c# project, create tcp/ip server (port:80) and wait for the BPM from the esp.

a runnig server that work without any think else (mabey .net if its missing from your pc)
note: to close the application click on the BPM number in black.