9 Biometrie
Einführung
Ziel dieser Übung ist es biometrische Messungen mit dem MAX30101 Sensor durchzuführen und den Sensor in seiner funktionsweise zu untersuchen. Der MAX30101 ist ein Sensor zur Messung der Herzfrequenz und der Sauerstoffsättigung im Blut und ein Rauch-/Partikelsensor. Er verfügt über eine I2C Schnittstelle und kann über eine Python Library angesteuert werden.
Unterlagen: E06_Biometrie.zip
Vorbereitung
- Schaut Euch folgendes von Video von Peter Charlton zur Funktionsweise der Herzfrequenzmessung an: Photoplethysmography in a minute (and a bit) - Peter Charlton
- Studiere das Datenblatt zum MAX30101 (maxim integrated, 2020)
- In welchen Temperaturbereichen kann der Sensor eingesetzt werden?
- Welches ist die höchste Abtastrate für die Sauerstoffmessungen?
- Was sind Anwendungsgebiete für diesen Sensor?
Unterlagen | |
---|---|
Produkt | MAX30101 Breakout |
Datenblatt | MAX30101 |
GitHub | max30105-python |
MAX30101 Breakout Heart Rate, Oximeter, Smoke Sensor
Der MAX30101 ist hochentwickelter Herzfrequenz-, Oximeter- und Rauch-/Partikelsensor. Der Sensor verfügt über drei LEDs (rot, grün, IR) und Photodetektoren. Mit der Photoplethysmographie (photoplethysmography PPG) kann über die Farbveränderung der Haut bei jedem Herzschlag dieser detektiert werden, wenn der Sensor leicht auf den Finger gedrückt wird. Der Sensor kann auch dazu benutzt werden um Partikel in der Luft wie rauch zu erkennen, in dem er die Lichtmenge, die von Partikeln in der Luft zurückgeworfen wird misst.
MAX30101 Breakout - Heart Rate, Oximeter, Smoke Sensor Breakout
- MAX30101 - heart rate, oximeter, smoke sensor
- Green, red, and infra-red LEDs
- Photodetectors
- Ambient light rejection
- Temperature sensor
Übungsaufbau
- Schliesse den Raspberry Pi an Monitor, Keyboard und Maus an oder verbinde Dich mit diesem über SSH (und SFTP).
- Erstelle auf dem Raspberry Pi im
Documents
Ordner einen neuen OrdnerMAX30101
, in welchem Du Änderungen und neue Dateien für diese Übung speichern kannst. - Schliesse den Sensor MAX30101 an den Raspberry Pi über die Breakout Garden I2C Schnittstelle korrekt an (siehe E01 Luftqualität), so dass die Beschriftung der Anschlüsse am Sensor und bei der Schnittstelle übereinstimmen.
- Kontrolliere mit dem Befehl
i2cdetect -y 1
ob der Raspberry Pi mit dem Sensor verbunden ist. Der Sensor sollte auf der Adresse0x57
erkannt werden. - Aktiviere die virtuelle Environment von Python mit
source ~/.env/bin/activate
und kontrolliere, ob die Libraryvl53l5cx_ctypes
installiert ist mitpython -c "import vl53l5cx_ctypes"
. Bei einer Fehlermeldung muss die Library in der aktivierten virtuellen Environment mitpip install vl53l5cx_ctypes
installiert werden.
Wechsle in den Ordner Documents und kopiere mit folgenden Befehlen die Library auf Deinen Raspberry Pi.
cd Documents
git clone https://github.com/pimoroni/max30105-python
cd max30105-python/examples
Aufgabe 1: Biometriemessung Konsole
Teste das Beispiel read-heartbeat.py
im Ordner examples. Dieses Beispiel liest die Pulsschläge pro Minute in PPM (beats per minute). Ein erkannter Pulsschlag wird mit einem <3
angezeigt.
Startet das Script mit python read-heartbeat.py
. Mit Ctrl+c
kann das Script wieder gestopppt wrden. Die Ausgabe sollte in etwa so aussehen (gekürzt):
python read-heartbeat.py
NOTE! This code should not be used for medical diagnosis.
...
Starting readings in 10 seconds...
BPM: 0.00 AVG: 0.00
BPM: 0.00 AVG: 0.00
BPM: 0.00 AVG: 0.00
BPM: 0.00 AVG: 0.00
BPM: 45.55 AVG: 45.96
<3 BPM: 55.75 AVG: 59.90
BPM: 55.75 AVG: 59.90
<3 BPM: 59.64 AVG: 70.65
BPM: 59.64 AVG: 70.65
Folgendes Code Snippet zeigt eine gekürtzte Version des read-heartbeat.py
Python Beispiels für die Ausgabe des Herzschlags.
#!/usr/bin/env python
# NOTE! This code should not be used for medical diagnosis. It's
# for fun/novelty use only, so bear that in mind while using it.
import time
from max30105 import MAX30105, HeartRate
1= MAX30105()
max30105 2=2)
max30105.setup(leds_enable1, 0.2)
max30105.set_led_pulse_amplitude(2, 12.5)
max30105.set_led_pulse_amplitude(3, 0)
max30105.set_led_pulse_amplitude(1, 'red')
max30105.set_slot_mode(2, 'ir')
max30105.set_slot_mode(3, 'off')
max30105.set_slot_mode(4, 'off')
max30105.set_slot_mode(
3def display_heartrate(beat, bpm, avg_bpm):
print("{} BPM: {:.2f} AVG: {:.2f}".format("<3" if beat else " ",
bpm, avg_bpm))4= HeartRate(max30105)
hr
5= 10
delay print("Starting readings in {} seconds...\n".format(delay))
time.sleep(delay)
try:
6=4)
hr.on_beat(display_heartrate, average_overexcept KeyboardInterrupt:
pass
- 1
- Sensor initialisieren
- 2
- Sensor konfigurieren (LED Pulse Amplitude, Slot Mode der LED)
- 3
- Funktion zur Darstellung des Herzschlags in der Konsole
- 4
- Initialisierung des Herzschlagdetektors
- 5
- 10 Sekunden warten und dann die Herzschläge ausgeben
- 6
-
Bei einem erkannten Herzschlag wird die Funktion
display_heartrate
aufgerufen und der Herzschlag wird über 4 Sekunden gemittelt in der Konsole ausgegeben.
Übung 9.1 Pulsmessung
- Führe das Beispiel
read-heartbeat.py
aus und beobachte die Messwerte. - Führe unterschiedliche Tests durch und behandle den Sensor freundlich.
- Vergleiche die Messwerte und kontrolliere die Werte in dem Du den eigenen Puls misst oder mit einem Sportuhr vergleichst.
- Studiere den Code der Beispiele und versuche die Funktionsweise zu verstehen.