Raspberry Pi Pulsmesser: Herzfrequenz messen

12. Januar 2017
2178 Views
18 Comments

Nicht nur mit Fitnessarmbändern, auch am am Raspberry Pi ist es möglich Herzfrequenzen zu messen. Mit einem kleinen Modul – dem Raspberry Pi Puls Sensor – kann man sehr einfach den eigenen Puls und damit die Belastung bzw. auf Dauer den Gesundheitszustand messen. Dieser Sensor kann dank geringem Stromverbrauch auch in mobilen Raspberry Pi Anwendungen eingesetzt werden (Projekt Fitnesstracker? 😉 )

Was man dazu noch braucht und welche Bibliotheken genutzt werden können, werden in diesem Tutorial gezeigt.

Pulsmesser Zubehör

Da der Raspberry Pi Puls-Sensor nicht digital ausgelesen werden kann, benötigen wir einen Analog-Digital Wandler. In einem vorherigen Tutorial bin ich bereits genauer auf die Verwendung des ADC Wandlers eingegangen. Damit ist es möglich analoge Signale am Raspberry Pi auszulesen, da dieser – im Gegensatz zum Arduino – keine integrierten analogen IO-Pins hat.

Im Video (unten) habe ich folgende Bauteile verwendet:

Manche Sensoren werden mit einem Klettverschluss für den Finger mitgeliefert, was vorteilhaft für die Messung ist, da somit nicht zu viel Druck auf dem Finger herrscht.

 

Raspberry Pi Pulsmesser – Anschluss

Da auch dieser Sensor für den Arduino konzipiert wurde, liefert er kein digital auslesbares Signal. Um das analoge Signal dennoch auslesen zu können wird ein ADC wie der MCP3008 benötigt. In einem vorherigen Tutorial habe ich bereits gezeigt, wie man den Analog-Digital Wandler verwendet. Es spielt dabei keine Rolle, welchen Kanal des ADC’s du verwendest, solange du es später im Code anpasst.

Der Plus Pol des Pulssensors wird an 3.3V vom Raspberry Pi angeschlossen, sowie Minus an Ground. Den Signal- / Daten-Pin (beschriftet mit einem „S“) habe ich an Kanal 0 des MCP3008 angeschlossen.

 

Der ADC verwendet die SpiDev Bibliothek, die installiert sein muss.

 

Code zum Herzfrequenz auslesen

Falls du kein aktuelles Raspbian / NOOBS Betriebssystem benutzt, muss ggf. erst aktualisiert werden und git installiert werden.

sudo apt-get update
sudo apt-get upgrade sudo apt-get install git

 

Auf GitHub habe ich eine Bibliothek zum Erfassen der Herzfrequenz bereit gestellt. Diese kannst du folgend herunterladen:

git clone https://github.com/tutRPi/Raspberry-Pi-Heartbeat-Pulse-Sensor

Auch anbei ist eine Beispieldatei, welche jede Sekunde die Herzfrequenz ausließt. Im Video weiter unten siehst du das noch einmal verdeutlicht.
Um das Beispiel zu starten wechseln wir in den Ordner und rufen die example.py auf.

cd Raspberry-Pi-Heartbeat-Pulse-Sensor/
sudo python example.py

Um zu stoppen, drücke STRG+C.

Wenn du dir das Beispiel genauer ansiehst, so wirst du feststellen, dass mit p.startAsyncBPM() ein Thread gestartet wird, der im Hintergrund den Puls misst. Mittels p.stopAsyncBPM() kannst du diesen Thread – und damit die Messung – stoppen. Gerne kannst du den Code deinen Wünschen nach anpassen.

 

Pulsmesser Beispiel und Erweiterung

Im nachfolgenden Video habe ich die Beispieldatei ausgeführt und zeige die Messung meines Pulses. Zuvor habe ich meinen Puls mit meinem Smartphone (integrierter Pulsmesser) gemessen, wobei mir ein Ruhepuls vom 55 BPM angezeigt wurde.

 

Wie auch zu erkennen ist, ist die Messung nicht immer akkurat, vorallem wenn der Finger den Sensor nicht berührt. Hier könnte man sich mit einem Drucksensor o.ä. aushelfen und nur dann messen, wenn man sicher ist, dass der Finger den Pulssensor berührt. Außerdem dauert es ein paar Sekunden, bis der Puls richtig erfasst wird, aber das ist ja auch bei handelsüblichen Pulsmessern nicht anders.

 

Für das (ursprünglich für Arduino entwickelte) Modul, gibt es auch einen Beispielcode. Außerdem ist auf Github eine nette Visualisierung der Werte vorhanden. Es sollte nicht all zu viel Aufwand sein diese Dateien für meine Bibliothek anzupassen. Falls du Lust hast den Code zu verändern, darfst du auch gerne meine Bibliothek den Ansprüchen nach verändern. Über ein Kommentar würde ich mich freuen 🙂

Raspberry Pi Puls Heartbeat Monitor

Visualisiert geben die Daten eine bessere Übersicht des Puls-Verlaufs.

 

18 Kommentare

  1. hello.
    My name is jun, I am a student at korea.
    I interest pulse sensor. so i try your code at pi.
    but i cann’t implement.. i have a error about

    trace back(most recent call last):
    File = " example.py",  line 4 , in 
    p = pulsesensor()......
    .
    .
    .
    IOError : [errono 2] No such File or directory..

    if you have a solution, plz … Could you give me a solution?
    … thank you guys….. have a good day!!

    Antworten
  2. Hi, I have try the code on Raspberry Pi 3 B and I can’t run it because of the error:

    Traceback (most recent call last):
    File „example.py“,line 4, in
    p = Pulsesensor()
    File „/home/pi/Raspberry-Pi-Heartbeat-Pulse-Sensor/pulsesensor.py“,line 11, in_init_
    self.adc = MCP3008(bus, device)
    File „/home/pi/Raspberry-Pi-Heartbeat-Pulse-Sensor/pulsesensor.py“,line 18, in_init_
    self.open()
    File „/home/pi/Raspberry-Pi-Heartbeat-Pulse-Sensor/pulsesensor.py“,line 20, in open
    self.spi.open(self.bus, self.device)
    IOError: [Errno 2] No such file or directory

    Please help me on this error. Thank you

    Antworten
  3. Hi. Sorry to bother you but i seem to face the same problem. I improved the
    p = Pulse Sensor () line but theres still problem. Below are the errors.

    File „example.py“, line 4, in
    p = Pulse Sensor ()
    File „/home/pi/Raspberry-Pi-Heartbeat-Pulse-Sensor/pulsesensor.py“,line 11, in_init_
    self.adc = MCP3008 (bus, device)
    File „/home/pi/Raspberry-Pi-Heartbeat-Pulse-Sensor/pulsesensor.py“,line 18, in_init_
    self.open ()
    File“ / home / pi / Raspberry- Pi Heartbeat Pulse sensor / pulsesensor.py „, line 20, in open
    self.spi.open (self.bus, self.device)
    IOError: [Errno 2] No such file or directory

    Would appreciate your help.

    Antworten
  4. hi ı am a student ı want buil your project but ı have a error it also say not herbeat found
    Please help me on this error.

    Antworten
  5. Hi,
    cooles Projekt. Das würde mich auch sehr interessieren. Kann man denn auch – event. auch zusätzlich – einen Impedanzsensor anschliessen, mit dem man den Hautwiderstand bzw. die Hautfeuchtigkeit messen kann?

    Gruß
    Michael

    Antworten
  6. Hey, thanks for the tutorial. Could this code be used for an analog heartbeat sensor circuit, like one based on it led and photodiode???

    Antworten
  7. Hey do you know how to send the output of this sensor data to cloud servers like thingspeak using pyhton scripting.Can you suggest me how to do http request??

    Antworten
  8. I want to understand how the raw data has been processed to bpm value.I couldn’t undestand it through comments in python files.Which algorithm has been used in processing the sensor data.

    Antworten

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

Blog abonnieren

Abonniere Tutorials-RaspberryPi, um kein Tutorial mehr zu verpassen!