Check your heart rate with this Arduino-based sensor

No more trips to the pharmacy or buying pricey detectors! View your pulse and calculate your heart rate with this simple DIY design.

With the emergence of wearable trackers today, there seems to be more ways than ever before to electronically detect a heartbeat. However, Maker Orlando Hoilett wanted to create an even simpler approach by using just a few components and an Atmel based Arduino.


His DIY finger-mounted pulse sensor features a light source, a detector and a high gain circuit, which also sports a finger cuff with an integrated IR LED and photodiode. As blood is pumped through the body, the volume of blood in extremities fluctuates with the beating of the heart. This change in blood volume in the finger tips can be sensed by shining a light through the finger and detecting the amount of light that passes in and out of the finger using a photodiode.

“The photodiode produces a current that is converted to a voltage using a transimpedance amplifier (current-to-voltage converter). The signal is then high-pass filtered to remove the DC bias from the signal and then biased at Vdd/2 so that the wave is symmetrical about 2.5 V. We have a final gain stage that amplifies the AC part of the waveform (the actual pulse),” Hoilett shares on his Hackaday page.


The sensor is hooked up to an op amp circuit. Once the current produced by the photodiode is converted to a voltage by an amplifier and read by the Arduino (while the Maker notes that any ‘duino can be used, a Mega (ATmega2560) was selected for this project). This information is then relayed to a computer via serial. Hoilett has written both a LabVIEW and Processing program to plot the data as a waveform.

Want to build your own heartbeat detector? Head over to the project’s official page here.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s