Getest: Pulse Sensor voor Arduino

20160710_102118_HDR

Het vierde en voor nu even laatste product dat aan mij beschikbaar gesteld is door de prototype-shop.nl is de Pulse Sensor voor Arduino. Het is een hartslagmeter die je kunt aansluiten op een Arduino. Op de website van de producent vind je een video met uitleg en een verwijzing naar de GitHub-repository met de library en voorbeeldcode. Ik kreeg de code niet aan de praat op een ESP8266. Dat heeft te maken met de code voor de interrupt die niet compatible is met de ESP8266. Ik had de ESP8266 willen gebruiken omdat ik dan tenminste ook een draadloze verbinding via WiFi op zou kunnen zetten tussen de unit waarmee ik mijn hartslag wilde meten. Plan was namelijk om de Pulse Sensor te vergelijken met de hartslagmeter van mijn Tacx. En als ik 40 minuten lang op een (stationaire) fiets zou gaan zitten, dan was zo min mogelijk kabels natuurlijk wel handig.

In plaats daarvan heb ik een Arduino Uno gebruikt in combinatie met de 1Sheeld shield die ik een paar weken geleden uitgebreid getest heb. In combinatie met een batterij en een smartphone zou ik daarmee ook relatief compact mijn hartslag moeten kunnen monitoren.

(foto: http://pulsesensor.com/)
(foto: http://pulsesensor.com/)

Het aansluiten van de hartslagmeter zelf is eenvoudig, er zitten maar 3 kabels aan: 3,3 V, GND, A0 (Analoog 0). Als je het filmpje van de producent bekeken hebt, dan weet je echter dat je voordat je dat doet, even een paar dingen moet doen. Voor de voorkant van de sensor zit er gewoon een plaksticker in de verpakking. Om de achterkant tegen vocht / zweet te beschermen wordt aangeraden om deze rijkelijk te voorzien van hot-glue (het helpt dus als je een lijmpistool in huis hebt) voordat je het stickertje met klittenband er op plakt waarmee hij aan de klittenbandriempje voor je vinger of het klemmetje voor je oor blijft zitten. Gelukkig had ik het filmpje al even bekeken en eerder deze week het lijmen gedaan zodat ik toch gewoon kon testen.

Daarna is het in principe een kwestie van het uploaden van de code naar de Arduino en je kunt in de serial monitor de hartslagmeting voorbij zien komen. Als je het voorbeeld in het filmpje helemaal volgt, dan kun je 2 LED’s laten flikkeren om te laten zien dat je hart echt nog slaat.

Ik heb zoals gezegd die constructie niet nagebouwd, ik wilde aan de slag met de 1Sheeld en mijn Tacx.

Screenshot_2016-07-10-09-49-11Bij het bespreken van de 1Sheeld gaf ik aan dat de shield niet goedkoop is en dat een “echte” hardcore maker / knutselaar het allemaal zelf ook zou kunnen / willen bouwen. Dít was echter een typisch voorbeeld waarbij ik heel blij was met de 1Sheeld. Nu was het een kwestie van het op de Uno prikken van de 1Sheeld en het samenvoegen van de code van de Data Logger met de code van de Pulse Sensor. Dat ging heel eenvoudig en dus had ik in no-time een logger waarbij ik op een knop kon drukken om de hartslag (BPM) en de tijd tussen metingen (Q) samen met datum en tijd op te slaan in een CSV-bestand.

Natuurlijk wilde ik meer. Ik had de Internet-shield optie van 1Sheeld nog niet getest. Op dit weblog had ik gelezen dat ik via een URL-aanroep met parameters in staat zou moeten zijn om de data die ik nu lokaal op mijn smartphone opsloeg ook in een Google Spreadsheet op te slaan. Het is me inderdaad gelukt om de spreadsheet aan te maken en als ik de URL op de juiste manier oproep dan wordt de data ook opgeslagen in de spreadsheet. Maar het lukt me met geen mogelijkheid om de 1Sheeld dat te laten doen. Ik heb hier uitleg gevonden over hoe ik een URL en parameter combineer, en hier hoe ik de tijd opvraag, maar de code wil niet werken.

Omdat ook nu de tijd begrenst was, het weekend telt maar 2 dagen, heb ik besloten deze optie voor nu even te parkeren. De code die ik gebruikt heb staat hier online:

Dit is code inclusief de pogingen om de data in een Google spreadsheet op te slaan. Ik snap dat het eigenlijk niet verstandig is om die URL daar zomaar in te zetten, maar dat geeft je wel een mogelijkheid om ook dat deel te testen (en als je wilt te debuggen!). Mocht er misbruik van gemaakt worden en iemand begint die spreadsheet met onzin-data vol te pompen, dan verwijder ik gewoon de spreadsheet zelf. De code werkt overigens gewoon, maar dan dus zonder het online loggen, nu wordt alleen op de smartphone gelogd.

20160710_092517_HDR 20160710_092130_HDR

Volgende stap was het bevestigen van de Arduino + 1Sheeld + batterij op het stuur van de fiets die op mijn Tacx staat (zie de foto hierboven, tijdens het fietsen was het geheel beschermd met een tape en een handdoek). Daarna was het tijd voor de laatste aflevering van seizoen 4 van Suits en dus 40 minuten fietsen. Ik had een hartslagmeter om mijn borst zitten en de klittenbandriem van de Pulse Sensor om de wijsvinger van mijn linkerhand. Ik had de Arduino + 1Sheeld liever aan mijn arm bevestigd zodat ik gemakkelijker rechtop had kunnen gaan zitten op de fiets, maar het hoesje dat ik daarvoor heb (voor een smartphone) was net te klein voor de combinatie.

Na afloop van de rit heb ik de data die door de Tacx bijgehouden werd geëxporteerd naar .hrm formaat (enige beschikbare optie in de Tacx software) en daarna geconverteerd naar .csv (met deze tool) zodat ik de data in Excel in kon lezen. De logger van 1Sheeld maakt ook een .csv bestand in en zo was ik in staat om beide sets metingen met elkaar te vergelijken. Daarbij moest ik nog een paar conversies extra doorvoeren. De Tacx gebruikte in het bestand als eenheid het aantal seconden sinds de start van de meting, de 1Sheeld logger had bij elke regel datum + tijd (in uren:minuten:seconden) staan. Door steeds van de tijd van 1 regel de tijd van de vorige regel af te trekken, kreeg ik ook hier een overzicht van seconden sinds de start van de meting.
Daarbij viel meteen al op dat de Tacx veel vaker een meting had opgeslagen dan de logger van de 1Sheeld: 1 x per seconde bij de Tacx (= 2.500 metingen) versus gemiddeld 1 x per 5 seconden bij de Pulse Sensor (= 1.028 metingen). Bij het uitzetten van de gemeten hartslag in een grafiek was een veel groter verschil zichtbaar (klik er even op voor een grotere versie):

PulseSensor_Tacx

De Tacx hartslagmeter gaf een veel geleidelijker verloop van mijn hartslag (beide grafieken hanteren dezelfde schaal!). Dit verschil was ook zichtbaar bij het gemiddelde: 124,2 BPM bij de Pulse Sensor versus 127,5 BPM bij de Tacx.

PulseSensor_Tacx_2

De springerige lijn in de Pulse Sensor grafiek is ook duidelijk zichtbaar als ik de standaardafwijking (SD) laat berekenen: 26,88 versus 9,07 bij de Tacx. Als ik dan een 95% betrouwbaarheidsinterval bereken voor de gemiddelde hartslag, dan is die voor de Pulse Sensor gelijk aan 122,5 – 125,8 terwijl hij voor de Tacx gelijk is aan 127,1 – 127,8. Deze twee intervallen overlappen niet (ook niet bij een 90% betrouwbaarheidsinterval).
Natuurlijk zou ik normaal gesproken willen weten of de variatie (en de standaardafwijking) bij beide hartslagmeters redelijk constant is. Wellicht heb ik de meting beïnvloed doordat de hartslagmeter tussen mijn wijsvinger en het stuur ingeklemd zat, wellicht is de standaard deviatie van de Pulse Sensor bij vervolgmetingen wel een stuk lager en/of zijn de resultaten beter vergelijkbaar. Sowieso kan ik er niet zomaar vanuit gaan dat de waarden die de Tacx rapporteert wél juist zijn. Voor nu kan ik allen concluderen dat zowel op het oog als met berekening de metingen van beide hartslagmeters significant van elkaar afweken tijdens deze ene meting.

Conclusie
Ook al hadden de hartslagmeter van mijn Tacx en de Pulse Sensor exact dezelfde waarden gegeven (iets wat verrassend zou zijn geweest al was het maar omdat ze op verschillende manieren hartslag meten) dan nog zou ik de een niet voor de andere ingeruild hebben.
Meer nog dan een gegarandeerd werkende vervanger voor een commerciële hartslagmeter zie ik (ook) hier echter een mooie component voor gebruik in het onderwijs. Zoals gezegd: aansluiten is eenvoudig, de vraag “hoe bepaal ik of deze hartslagmeter betrouwbaar is?” is een heel andere. En ik realiseer me dat ik er achteloos een stukje statistiek doorheen gooi. Maar dat is toch ook het enige moment waarop zoiets als statistiek leuk is? Als het je kan helpen bij het beantwoorden van échte vragen?
(dus ook vragen als: stel, ik herhaal de test nog 2x, hoe bepaal ik dan of de beide meters consistent en dus betrouwbaar zijn in hun metingen?)

Ik vind het in ieder geval super dat ik de mogelijkheid gehad heb om ook deze componenten te testen!

Disclosure
logo-prototype-shopDit bericht is onderdeel van een serie berichten die ik maak op basis van componenten / producten die gratis aan mij beschikbaar gesteld worden door de prototype-shop.nl.
Ik heb zelf de keuze gehad welke producten ik test. Voor mij staat hierbij hetzelfde uitgangspunt centraal als wanneer ik ze wél zelf koop: ik moet het interessant vinden om ermee aan de slag te gaan, het moet niet iets zijn dat al door iedereen anders ook al getest is, ik moet er wel nog iets aan toe kunnen voegen.
Behalve de afspraak dat ik bij deze berichten een link opneem naar de prototype-shop.nl, zijn er geen andere afspraken gemaakt, de inhoud van deze berichten komt volledig voor mijn rekening.