Introduction: Homebrew Arduino Pulse Monitor (Visualize Your Heartbeat)

Let me clarify this to you. This project works and can actually monitor your pulse. Due to the lack of research and experimentation, the homebrew pulse monitor cannot be used for medical purposes.
What Can You Do With It?
You can make a lie detector/ polygraph and tell who's lying or not. When a person lies, you'll notice a sudden change on the graph.
What Does This Guide Include?
- Arduino Codes & Processing 2 Codes
- Steps on making a pulse sensor
- The Virtual Graphing Software
- Schematic Diagrams
What Do I Need To Make This Project?
- A Grippy Clothes Hanger
- Clear/ Bright Red LED
- LDR (Light Dependent Resistor)
Future Questions:
Why isn't mine working? For some reason LDRs (light dependent resistors) are not standard in resistance ratings. You'll need a some tweaking to pull off the project, it may require experience with Arduinos and electronics.
This project is inspired by Make Magazine's pulse monitor although my version didn't use a LM324 Op-Amp chip. Their tutorial will work on my setup.
Make: Full Tutorial
Programming Stage:
Step 1: Find the Perfect Colthes Hanger
This project works best with rubber padded hangers. Luckily "Marks & Spencer" gives away these hangers for free.
Step 2: Cut the Clips
Cut the clips off the hanger with a pair of heavy duty shears.
Step 3: Disassemble the Clip
Get your multitool and disassemble the clip.
Step 4: Drill Holes
Drill a hole on the exact center of the clip's rubber pads.
Step 5: Install the LDR
Bend the LDR's leads then mount them in place. Finally use hot glue to keep the LDR from moving.
Step 6: Install the LED
Get your led and use superglue to keep it intact with the clip. Also, you might want to add a resistor to protect the LED from getting busted.
Step 7: It Doesn't Work
You'll barely get a reading. If yours doesn't work, use this circuit to amplify the readings. D1 is just an indicator and not the red LED that's used to light up your thumb. It's best If you use a 10k trimmer resistor for R3 rather than a fixed value resistor.
Step 8: Wire Them Up!
Follow the diagram above. PCB/ perfboards are not necessary. Wires would do just fine!
Step 9: Download the Softwares
Processing 2 is the graph/ monitor software that will visualize your data while the Arduino IDE is for uploading the arduino sketch. You'll need both to run the project. Click on the links below to download them.
Arduino 1.0.5 IDE:click here!
Processing 2 IDE:click here!
Step 10: The Codes
Run these codes on the proper IDE. If the processing 2 codes shows an error, change tho port number (found in the codes).
//Arduino Codes:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(analogRead(0));
delay(50);
}
//Processing 2 Codes:
import processing.serial.*;
Serial myPort;
int xPos = 1;
float oldHeartrateHeight = 0;
void setup () {
// set the window size:
size(1000, 400);
frameRate(30);
// List available serial ports.
println(Serial.list());
// Setup which serial port to use.
// This line might change for different computers.
myPort = new Serial(this, Serial.list()[0], 9600);
// set inital background:
background(0);
}
void draw () {
}
void serialEvent (Serial myPort) {
// read the string from the serial port.
String inString = myPort.readStringUntil('\n');
if (inString != null) {
// trim off any whitespace:
inString = trim(inString);
// convert to an int
println(inString);
int currentHeartrate = int(inString);
// draw the Heartrate BPM Graph.
float heartrateHeight = map(currentHeartrate, 0, 1023, 0, height);
stroke(0,255,0);
line(xPos - 1, height - oldHeartrateHeight, xPos, height - heartrateHeight);
oldHeartrateHeight = heartrateHeight;
// at the edge of the screen, go back to the beginning:
if (xPos >= width) {
xPos = 0;
background(0);
} else {
// increment the horizontal position:
xPos++;
}
}
}
Step 11: Learn to Use It!
Make Magazine's Full Version:

Third Prize in the
Data Visualization Contest

Participated in the
Sensors Contest

Participated in the
Arduino Contest

Participated in the
Full Spectrum Laser Contest
2 People Made This Project!
- MahmoudS42 made it!
- Raitis made it!
38 Comments
8 years ago on Introduction
now, you can use this example to make a device that can be attached on the wrist and can monitor the hearth rate every second and can log everything on an SD card. :D
Reply 4 years ago
Andrei, can you please explain what extra things I need to attach it on the wrist? How will it differ from this device?
Reply 8 years ago on Introduction
Brilliant! And I'll also add a loud alarm when the sensor detects an irregular pulse rate. It's good for people who have a heart condition.
Reply 8 years ago on Introduction
Good 'ible...
btw loud alarm to indicate irregular pulse rate for people with heart condition!!?!!
Something subtle should be fine.. Perhaps a light or a vibration motor??
Reply 8 years ago on Introduction
you need a lower pitch sound to alert events. light can also be a problem for people with heart condition.
Question 3 years ago
Hello, I builded the circuit using photodiode bpw41n (PIN). I used the circuit as it is described in https://makezine.com/projects/ir-pulse-sensor/
The photodiode is detecting changes in IR light but nearly not as good as is shown above and to get a useable signal.
In a baseline setup without my finger on the sensor this is the result I'm getting:
When I put my finger on the sensor, I get the following result:
It seems that the sensor is already detecting chances in the default situation. Should I amplify the signal more? I'm using an opamp LM324 now. Should I change the capacitators? Can anybody help me? Every help would be much appreciated! I'm pretty new to all of this but I'm very eager to learn how to get this working! Thanks in advance!
4 years ago
Hola, el Monitor serie tiene que ejecutarse mientras funciona el Process? Porque en el process no me funciona cuando activo el Monitor serie. Me sale Port Busy, cuando activo el Process sin el arduino me funciona bien pero no me grafica nada
Reply 4 years ago
ya me grafica, instale el Process 2.1 en vez del 3.0
5 years ago
nice idea!
6 years ago
Hi,
What is the problem with my processing ?((
please help me
Reply 5 years ago
I think you're in the Matrix. Umm... you could try taking the red pill.
6 years ago
Hey! We are a few students, with no tinkering experince, who want to bulid a drawing machine that draws a diagram of pulses. Do you have any tips on how to tranform the pulse data on the computer into movements of a robot arm?
7 years ago
Hate to break it to you polygraph are not used to detect lies they are an intimidation tool.
7 years ago on Introduction
Hello, your project is really good.
I made the sensor and it works well.
The problem is that when I run the Processing sketch, the window appears but it does not display any waveform..!
Please Help...
7 years ago
Can i also use it also at the wrist?
7 years ago on Introduction
processing 2 is showing compatibility issues on my PC. I've windows 8.1 installed on it.
7 years ago on Introduction
processing 2 is showing compatibility issues on my PC. I've windows 8.1 installed on it.
7 years ago on Introduction
Arduino IDE Serial Monitor shows a reading around 450. Can't be possible.
7 years ago on Introduction
Arduino IDE Serial Monitor shows a reading around 450. Can't be possible.
7 years ago on Introduction
Hey, I want to use this for a project, but I need to see a bpm, is it possible to make it display a bmp, and a graph of the bpm over an interval?