We are happy to report that our good friends at the Maker Shed are now stocking the Pulse Sensor! So while we anticipate the arrival of the new parts, you can go there to buy one. While supplies last!
Optical heart-rate monitors are easy to understand in theory. If you’ve ever shined a flashlight through your finger tips and seen your heart-beat pulse (a thing most kids have done) you have a good handle on the theory of optical heart-rate pulse sensors.
In an optical heart-rate pulse sensor, light is shot into a finger tip or ear lobe. The light either bounces back to a light sensor, or gets absorbed by blood cells. As you continue to shine light (into say a fingertip) and take light sensor readings, you quickly start to get a heart-beat pulse reading. The theory is easy to understand. In practice, it hard to master DIY optical heart-rate sensors, or get them operational at all. There are many tutorials online and in publications describing how to make DIY heart-rate sensors. Through our own personal interests we’ve tried to follow online guides but have generally failed or had unsatisfactory results. As professors, year after year, we see our students attempt to follow these published guides and also either fail in getting anything to work, or get poor results. It could very well be human/user-error on our parts. But from our view, making an optical pulse sensor is “easier said then done”. We set out to make our own optical heart-rate pulse senor that can be used in our own creative projects and also available to students, makers, game developers, mobile developers, artists, athletic trainers etc.... We had three goals for our sensor: 1) It had to actually work and be “plug and play” into Arduino (and related devices). 2) It should be super small and easy to place (sew, glue, clip) into wearables, sports, arts, or gaming applications. 3) It could be used as a teaching aid for instruction on working with sensors, data viz, and bio-feedback. After a few months of testing a gaggle of optical sensors and LED colors we found that it was not as easy as many suspect to get reliable heart-rate data through optical means. It was easy to get basic, gross, short-term data, but hard to get reliable readings assuming real-world scenarios and real-world user interaction. After much experimentation and development, we started to assemble a reliable heart-rate pulsesensor. We fabricated a few test boards and continued to iterate the design.
As we tired to "wear" the sensor, we discovered that we should make it look and feel like a 1/2 inch button. Its size allows it to clip to earlobs or fingertips easily. When we add "button holes" to the design it can be easily sewn or attached to various garments and fashion accessories. Thus the design turned into a button-sized PCB board that holds all the technology, hit all our goals, and is very cute and accessible to a novice or expert users/developers alike.
There's lots of schematics and guides online that show how to make your own optical heart rate monitor from scratch. With the rise in popularity and accessibility of powerful microcontrollers like Arduino, hackers and designers and DIY enthusiasts are looking for ways to incorporate Bio-sensing and Bio-feedback into their projects, and the optical heart-rate monitor is one direction many folks go toward. Some of the online tutorials are long and complicated, some of them specify exotic parts or require mad soldering skills, all of them are big and clunky and hard to implement in real world conditions where a user is being active, and there are changes in ambient lighting conditions. We want to publish the current state-of-the-DIY-art for getting optically derived heartbeat data into Arduino, and tell you why our Pulse Sensor is such a great improvement. As an example I've put together a very small breadboarded heart rate monitor using parts I have lying around. If you've ever tried to build out an idea for a cool project that incorporates live heartbeats, some of this may be familiar to you.
First, a description of how optical heart rate sensors work. Most kids have shined a flashlight through their fingers, or cheek, and seen the light glow through their flesh. It's a spooky-cool thing to do even as an adult. What it shows is that we are semi transparent. Most of the light is absorbed or reflected by our organs and tissues (skin, bone, muscle, blood), but some light will pass through our tissues if they are thin enough. When blood is pumped through your body, it gets squeezed into the capillary tissues, and the volume of those tissues increases very slightly. Then, between heart beats, the volume decreases. The change in volume effects the amount of light that will transmit through. This fluctuation is very small, but we can sense it with electronics. Here's how it's done.
We start with a light source and a light detector. I'm using an Infrared LED, and a photodiode sensor. It's important that the two devices are matched well, so that the light wavelength output from the LED is detected strongly by the photodiode (see below for part numbers). The photodiode is essentially a teeny tiny solar cell, just like the panels on rooftops, but really small. It will generate a small voltage and current when it is blasted with photons. The Infrared LED is what we will use for our photon blaster.
The next thing we need is a way to amplify the tiny signal coming off of the photodiode. Happily enough, the configuration of this circuit is well-known in analog electronics circles as a 'Current to Voltage Converter' and it is a classic.
(Schematic drawn in Design Spark, an open source circuit layout software. Go Spark!)
I'm specifying a SA5230 Op Amp from ON Semi. I've also had success with Texas Instrument OPA177.
The photodiode is Osram SFH 203 P.
The LED is Everlight EL-IR204-A, peak wavelength at 940nm.
Here's a picture of the breadboarded circuit
I had to make one modification to the Photodiode, it needs to be shielded from ambient light, which generates alot of noise in the signal. Putting some heat shrink tubing around it worked great. If you plug this circuit into an O-scope, or some basic visualization software, you might get a waveform that looks like this:
Vertical height of the red line represents voltage. Horizontal axis is Time. The waveform here is usable, but as you can see, the pulse signal is distorted by even small movements. Also any misalignment or movement of the IR LED will muddy up the signal. It's hard enough to get this clear of a signal, even if you don't know anything about Low Pass filters and Op Amps. Once you get this far, having to overcome the challenge of building the circuit into an ergonomic and robust form pulls designers further away from getting to the fun part of building their cool project. Designers and hackers who want to use heartbeats end up spending too much time building sketchy work-arounds for the problems with this bulky hardware. Most of the time this will kill the project before it gets very far, and finished projects are clunky, hard to set up, not really repeatable, and look more like science demonstrations than anything else.
We wanted to make a Pulse Sensor that is small enough to be worn comfortably in many configurations, and immune to signal noise generated by moving around, or changes in ambient lighting conditions. In our search for the right components, we found a super small integrated circuit that has an on-board photodiode and op amp circuit combined. The super smallness means that we can maintain close, steady contact with the skin. This shields the sensor from changes in ambient light and makes noise from moving around minimal at most. Here is an example of our Pulse Sensor in action.
We made our Pulse Sensor small and easy to connect to Arduino so that you don't have to spend all your time tweaking hardware and can get down to the fun part of building your project. If you like our Pulse Sensor, please support it and become a backer at Kickstarter today!
Our plan is to open source the hardware design, and we will do a Full Monty on the Pulse Sensor here in the near future. Stay tuned!