MAX30102 Herzfrequenz-Monitor mit Arduino Nano & 16x2 LCD bauen
Komponenten und Materialien
| Bauteil | Menge |
|---|---|
| Arduino Nano R3 | 1 |
| MAX30102 Herzfrequenz-Sensor | 1 |
| Adafruit RGB Backlight LCD 16x2 | 1 |
| Drehpotentiometer (generic) | 1 |
Benötigte Werkzeuge
- Lötkolben (generic)
Apps und Online-Dienste
- Arduino IDE
Projektbeschreibung
Dies ist ein einfacher Herzfrequenz-Monitor mit einem MAX30102-Sensormodul. Der Code basiert auf Arduino-Bibliotheken und zeigt die Werte auf einem 16x2-LCD an. Die erste Zeile zeigt die durchschnittlichen Schläge pro Minute (BPM), die zweite Zeile den Wert des reflektierten Infrarotstrahls. Dieser Wert sollte konstant bleiben, um genaue Messungen zu gewährleisten.
Schaltplan
Arduino-Code
/* Optische Herzfrequenz-Erkennung (PBA-Algorithmus) mit MAX30105 Breakout
By: Bennu @ MH-ET LIVE
Datum: 2. Oktober 2017
https://github.com/MHEtLive/MH-ET-LIVE-max30102
*/
#include <Wire.h>
#include "MAX30105.h"
#include <LiquidCrystal.h>
#include "heartRate.h"
MAX30105 particleSensor;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const byte RATE_SIZE = 4; // Erhöhen für mehr Durchschnittsbildung
byte rates[RATE_SIZE];
byte rateSpot = 0;
long lastBeat = 0;
float beatsPerMinute;
int beatAvg;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
Serial.println("Initialisiere...");
if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) {
Serial.println("MAX30105 nicht gefunden. Verkabelung/Strom prüfen.");
while (1);
}
Serial.println("Zeigefinger mit gleichmäßigem Druck auf den Sensor legen.");
particleSensor.setup();
particleSensor.setPulseAmplitudeRed(0x0A); // Rote LED dimmen
particleSensor.setPulseAmplitudeGreen(0); // Grüne LED aus
}
void loop() {
long irValue = particleSensor.getIR();
if (checkForBeat(irValue) == true) {
long delta = millis() - lastBeat;
lastBeat = millis();
beatsPerMinute = 60 / (delta / 1000.0);
if (beatsPerMinute < 255 && beatsPerMinute > 20) {
rates[rateSpot++] = (byte)beatsPerMinute;
rateSpot %= RATE_SIZE;
beatAvg = 0;
for (byte x = 0; x < RATE_SIZE; x++) beatAvg += rates[x];
beatAvg /= RATE_SIZE;
}
}
Serial.print("IR="); Serial.print(irValue);
Serial.print(", BPM="); Serial.print(beatsPerMinute);
Serial.print(", Avg BPM="); Serial.print(beatAvg);
if (irValue < 50000) Serial.print(" Kein Finger?");
Serial.println();
lcd.setCursor(0, 0);
lcd.print("BPM: "); lcd.print(beatAvg);
lcd.setCursor(0, 1);
lcd.print(" IR: "); lcd.print(irValue);
}
Herstellungsprozess
- Fern-Herzfrequenz-Überwachung mit AWS IoT Alarmen
- Monitor-Ambilight selbst bauen mit Arduino Nano & WS2812B LEDs
- LCD-Animationen & Spiele mit Arduino UNO erstellen
- Echtzeit-IoT-Herzfrequenzmonitor mit Arduino & MAX30100
- Präzisen Herzfrequenz-Monitor mit Fotowiderstand und Arduino bauen
- Sichere Warmwasserbereitung: Thermospannungs-Monitor für Zündflamme (Arduino & Raspberry Pi)
- Fortgeschrittenes Heimüberwachungssystem mit Arduino Mega und IoT-Sensoren
- Zuverlässige Arduino-Wetterstation mit DHT-Sensoren bauen
- Zuverlässigen Smart Energy Monitor mit Arduino UNO bauen – Schritt-für-Schritt-Anleitung
- Integrierte Herzfrequenz-Sensoren in Smart Clothing: Zuverlässiges Wearable-Monitoring