Got a KY-016? Stick it straight onto your UNO and start attracting unicorns! No soldering. No schematics. No freaking Fritzing.
Project tutorial by Johan_Ha
Get your heart rate, not just an IR sensor reading.
Antique reed organ + solenoids + custom driver boards + 3 Arduino Megas + Bluetooth = MIDI-driven reed organ
Project in progress by Willem Hillier
Have a look at this curve:
It's the filtered curve. After the first two peaks there's a notch in the curve when it goes down after the peak. The notch is somewhere at 1/3 of the way down. If the curve goes up at the notch, it might be recognised as a heart beat. A better filter would even out that notch.
It's all about filtering the original signal, plotting the filtered signal, refining the filtering algorithm, doing a kind of a pattern recognition on the plotted signal and measuring the time between repeated patterns. How the signal looks like depends on your sensor, your finger tip, your nail lacquer, your electronics, ambient light and whatnot.
The best of algorithms would be self adjusting. I guess professional heart rate monitors work like that. Usually one is interested in the mean value of the heart rate at a given time, say within 30 seconds. Finding out how much each beat deviates from the mean might also be interesting, as this paper proposes:
If you're running my code and you get readings like 51, 53, 50, 49, 100, 97, 48, 51...
...it just means that the filter failed to filter out all noise. The value 100 just means the filtered curve didn't just fall between two heart beats. It made a tiny jump in the other direction and the program thought it was a heartbeat, but it was probably just your finger moving a little between the IR emitter and IR receiver.
My program really needs some algorithm, which would take care of self calibrating.
Or connect with your social account:
New here? Create an account