In the following post I describe some methods and tools for capturing a persons heart rate for the usage in physiological computing/biosensing applications. It represents some of the research I conducted during for my master’s thesis, which deals with technologies providing autonomic feedback. The focus in this case was on simplicity of access in the context of mobile and wearable applications, not maximum preciseness of the data (such as might be a requirement for a laboratory environment or in a medical context). It describes approaches using two widespread methods: ECG/EKG-based and pulse oximetry-based measurements.
The methods described here work through measuring the electric activity of the heart. The most widespread products are ready-made chest belts to monitor heart rate activity. Their functionality usually consists in accurately scanning for R-R peaks in an ECG signal, which is then wireless transmitted as a detected beat. Measurements are not impacted by one’s movements, which is why these devices are especially popular in the sports domain.
Probably the most well-known producer of this kind of sensor is the company Polar, which produces a range of different varieties, for which many tutorials and resources exist in the physical computing community. However, models from many alternative manufacturers are available. The basic working principle is the same mainly differing in transmission technology: Simple low-power radio signals, classical Bluetooth, or Bluetooth LE.
Bluetooth LE is probably the better alternative when connecting to a computer or a smartphone, than the radio-based transmitters, because they require an additional hardware component connected through a microcontroller. However, for purely microcontroller-based projects integrating any form of Bluetooth communication requires more work (and is more expensive) than using the simple radio-based versions, because an additional component is needed (e.g. the Bluefruit LE from Adarfruit, or the Bluetooth Mate Gold from SparkFun). Additionally, radio-based transmission range of the chest belts may be limited to about 1 meter (as is the case for Polar’s T31 model), while the range of BLE should be able to reach up to 100m. Certainly, this does not play a role for the originally intended uses of accessing heart rate information from the belt in other wearables on one’s body, but it poses constraints on some of the more creative applications one may think of. One should consider though that BLE (also known as Bluetooth Smart) is not downwards compatible with Bluetooth classic, and at the moment different labels and designations are used to support the transition phase.
The table below summarizes my findings, grouped according to the different transmission technologies used. It does not provide a complete list, but all the models listed here should be reasonably easy to integrate into any physical computing- or smart phone-project.
An alternative to using commercial ECG/EKG sensors is to simply create your own sensor from scratch. I have not tested this myself, but it seems a viable alternative to the commercial products in terms of accuracy, especially considering the costs. A starting point provides this description of Scott Harden’s DIY ECG/EKG project. While this solution on its own is not portable, it should not be too hard to couple it with a smart phone (since it is sending data through an 3.5mm audio jack) or connect it directly to an Arduino or other microcontroller.
Pulse oximetry-based methods
Another method of measuring pulse is through using the same mechanism that a pulse oximeter uses. The basic technique relies on the fact that the oxygen level inside the bloodstream varies in relation to the beating of the heart. To measure these fluctuations, light is sent inside a thin body part, typically the finger or the earlobe, and the amount reflecting back is registered, giving an indication of oxygen saturation. A good explanation of the principle can be found here.
This technology seems fairly easy to implement using DIY as can be seen in this attempt at building a home-brew version of an actual oximeter, or the instructions given in the video below by Make Magazine to access heart rate.
There is also an open-source ready made sensor fully compatible with Arduino for sale. I have tested this one out for myself and it is really simple to use, working straight out of the box.
In a similar fashion, it is possible to use this approach on most smart phones, utilizing only the on-board hardware, i.e. the camera and flash. Helpful resources that I have stumbled upon include an open source implementation on Android and a very detailed explanation of the technique by Ignacio Mellado on his blog.
The major downside to measuring HR in this fashion is that its results can be quite unreliable when compared to ECG/EKG. Since it is dependent on lighting conditions, it is sensitive to movement of the finger or the sensor as well. Unfortunately, this makes it less suited for wearable devices or constant monitoring during activities, and more useful in situations where a subject remains seated or at lest in some form of stable position.