Home > AVR Projects > DIY Arduino Based Pulse Oximeter Part I (with video)

DIY Arduino Based Pulse Oximeter Part I (with video)

January 3rd, 2010

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.

Screenshot showing automatic heartbeat detection and calculated heartrate (upper right corner)

Screenshot showing automatic heartbeat detection and calculated heartrate (upper right corner)

mike AVR Projects , , , , , , ,

  1. aspro648
    January 20th, 2010 at 00:08 | #1

    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?

  2. moondoggie
    January 26th, 2010 at 11:12 | #2

    Very nice. Any chance for a schematic/pinouts or some sample source code?

  3. January 29th, 2010 at 14:35 | #3

    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.

  4. zemiguel
    February 1st, 2010 at 05:21 | #4

    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

  5. jam
    February 3rd, 2010 at 12:20 | #5

    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

  6. February 7th, 2010 at 14:20 | #6

    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.

  7. felixk
    April 7th, 2010 at 09:17 | #7

    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!

  8. April 7th, 2010 at 10:03 | #8

    I just emailed you the code. Let me know if you have any questions.

  9. foomanchu
    April 9th, 2010 at 23:03 | #9

    Hey Mike can you also email me the code as well. I have been having some trouble getting things working correctly.

    Thanks a lot!!!

  10. embmicro
    April 13th, 2010 at 22:53 | #10

    I too am trying to make this work and would really appreciate the code for both the AVR and your PyQt4 program.

    Thanks,
    Justin

  11. Steffen
    June 21st, 2010 at 17:17 | #11

    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

  12. June 22nd, 2010 at 13:32 | #12

    @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.

  1. January 4th, 2010 at 08:35 | #1
  2. January 6th, 2010 at 12:25 | #2
  3. April 22nd, 2010 at 15:34 | #3
You must be logged in to post a comment.