DIY Arduino Based Pulse Oximeter Part I (with video)
I recently completed the first half of my Pulse Oximeter. Already, one can see some wonderful information about one’s heart and blood from just your finger tip. So far, I’ve interfaced to the TSL230 light sensor, takinging readings, and displaying it in a Python based QT gui. It sounds complicated but its not. Its lots of fun. Check out the video to see the graph of my heart beating from light passing through my fingertip.
Soon, I’ll post part II. I hope to have the heart beats detected so that I can calculate the heart rate. Also, I will be taking measurements from both LEDs and comparing them. By doing this, I hope I can extract the oxygen saturation (amount of oxygen in my blood).
Update: Since filming the video above, I implemented the heartbeat detection and heart rate calculation. In the image below, the heart rate is calculated and show in the upper right. Also, the heart beats are automatically detected and annotated with little hearts.

Hey Mike,
Very cool. I’m looking forward to seeing what you come up with on the SPO2 side. This is the first project I’ve seen using TSL230. Can you post some example code for it?
I was also interested in how you are going graphing. Can you point me toward some resources or how-tos?
Very nice. Any chance for a schematic/pinouts or some sample source code?
I used a custom python script that uses PyQt4. I’ll post it soon when I get a chance to pick up where I left off on this project.
Hi, very nice. I’m trying to do something similar. So I would be very pleased if you give me some highlights in the way you found the beats. Have you done an adaptive threshold?
thanks in advance
Hey, I was trying to something almost the exact same. I was wondering if I you could post the code which you are running on your Arduino board. It appears as though you are using this sensor.
I’m having a hard time getting my light sensor to actually find the light values accurately.
I would appreciate the help,
JAM
I wrote a basic peak detector. I did this my the PyQt4 application. Basically, it steps through each value and looks in either direction. If none of the nearby values are higher than it, it assumes it is a peak.
Can you please post the Arduino code for what you are doing? I bought all the required components, but i can’t get the code right.
Thanks!
I just emailed you the code. Let me know if you have any questions.
Hey Mike can you also email me the code as well. I have been having some trouble getting things working correctly.
Thanks a lot!!!
I too am trying to make this work and would really appreciate the code for both the AVR and your PyQt4 program.
Thanks,
Justin
hey, after reading your article i ordered
the parts too.
since yesterday i’m trying to reproduce your work -
without success
is it possible to mail me your arduino code, too?
Thanks,
Steffen
@Steffen
I received your request and will happily send you the code. I meant to yesterday but forgot. I don’t have access to it at the moment. If you don’t get anything by tomorrow, please ping me again.