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: http://pulsesensor.com/
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:http://www.ebay.com/itm/QTY-15-MIC2940A-12BT-MICRE...
7. usb ttl for programming the esp http://www.banggood.com/New-Upgrade-PL2303HX-USB-T...
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
calibrate your ide to burn the esp8266:
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.
6.my 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.
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.