Smart Health Monitoring Station: Arduino, Bluetooth und Sensoren
Komponenten und Zubehör
| Komponente | Menge |
|---|---|
| Arduino UNO | 1 |
| Steckbrücken (generic) | 1 |
| DHT11 Temperatur- & Feuchtigkeitssensor (3 Pins) | 1 |
| Temperatursensor | 1 |
| Widerstand 10 kΩ | 2 |
| HC-05 Bluetooth-Modul | 1 |
| Herzfrequenzsensor | 1 |
Apps und Online-Dienste
- MIT App Inventor 2
- Arduino IDE
Projektbeschreibung
Diese kabelgebundene Elektronik mit Sensoren und einer App bietet eine einfache Möglichkeit, den Gesundheitszustand und Umgebungsparameter zu überwachen. Die Station misst Temperatur, Luftfeuchtigkeit und Herzfrequenz und sendet die Daten per Bluetooth an eine mobile Anwendung.
Code
Der Arduino-Code verwendet SoftwareSerial für die Bluetooth-Kommunikation, liest die Sensoren (DHT11, DallasTemperature für Temperatursensor, Herzfrequenzsensor per Interrupt) aus und sendet die Werte sowohl an den Serial Monitor als auch per Bluetooth.
#include <SoftwareSerial.h>
#include <cactus_io_AM2302.h>
#define AM2302_PIN 7
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
AM2302 dht(AM2302_PIN);
SoftwareSerial Bluetooth(10, 9);
String Data;
int pulsePin = 0;
int blinkPin = 13;
volatile int BPM;
volatile int Signal;
volatile int IBI = 600;
volatile boolean Pulse = false;
volatile boolean QS = false;
volatile int rate[10];
volatile unsigned long sampleCounter = 0;
volatile unsigned long lastBeatTime = 0;
volatile int P = 512;
volatile int T = 512;
volatile int thresh = 512;
volatile int amp = 100;
volatile boolean firstBeat = true;
volatile boolean secondBeat = false;
void interruptSetup() {
TCCR2A = 0x02;
TCCR2B = 0x06;
OCR2A = 0X7C;
TIMSK2 = 0x02;
sei();
}
ISR(TIMER2_COMPA_vect) {
cli();
Signal = analogRead(pulsePin);
sampleCounter += 2;
int N = sampleCounter - lastBeatTime;
if (Signal < thresh && N > (IBI / 5) * 3) {
if (Signal < T) { T = Signal; }
}
if (Signal > thresh && Signal > P) { P = Signal; }
if (N > 250) {
if ((Signal > thresh) && (Pulse == false) && (N > (IBI / 5) * 3)) {
Pulse = true;
digitalWrite(blinkPin, HIGH);
IBI = sampleCounter - lastBeatTime;
lastBeatTime = sampleCounter;
if (secondBeat) {
secondBeat = false;
for (int i = 0; i <= 9; i++) { rate[i] = IBI; }
}
if (firstBeat) {
firstBeat = false;
secondBeat = true;
sei();
return;
}
word runningTotal = 0;
for (int i = 0; i <= 8; i++) {
rate[i] = rate[i + 1];
runningTotal += rate[i];
}
rate[9] = IBI;
runningTotal += rate[9];
runningTotal /= 10;
BPM = 60000 / runningTotal;
QS = true;
}
}
if (Signal < thresh && Pulse == true) {
digitalWrite(blinkPin, LOW);
Pulse = false;
amp = P - T;
thresh = amp / 2 + T;
P = thresh;
T = thresh;
}
if (N > 2500) {
thresh = 512;
P = 512;
T = 512;
lastBeatTime = sampleCounter;
firstBeat = true;
secondBeat = false;
}
sei();
}
void setup() {
Bluetooth.begin(9600);
Serial.begin(9600);
dht.begin();
sensors.begin();
interruptSetup();
}
void loop() {
sensors.requestTemperatures();
dht.readHumidity();
dht.readTemperature();
if (isnan(dht.humidity) || isnan(dht.temperature_C)) { return; }
if (QS == true) {
Serial.print(sensors.getTempCByIndex(0));
Serial.print(" ");
Serial.print(dht.temperature_C);
Serial.print(" ");
Serial.print(dht.humidity);
Serial.print(" ");
Serial.println(BPM);
Bluetooth.print(sensors.getTempCByIndex(0));
Bluetooth.print(" ");
Bluetooth.print(dht.temperature_C);
Bluetooth.print(" ");
Bluetooth.print(dht.humidity);
Bluetooth.print(" ");
Bluetooth.println(BPM);
QS = false;
}
delay(1500);
}
Der vollständige Code ist auch auf GitHub verfügbar: Tutorials-for-arduino
Schaltpläne
Mehrere Schaltpläne und Anschlussbilder sind im Projekt enthalten (siehe Originaldateien).
Herstellungsprozess
- Raspberry Pi Temperaturlogger mit 5 $ I2C Sensor bauen
- Professionelle Temperaturüberwachung mit Raspberry Pi und DS18B20
- Fern-Temperatursensor mit Raspberry Pi & Python bauen – Schritt-für-Schritt-Anleitung
- Raspberry Pi Wetterstation bauen, die tägliche Wetterdaten per E-Mail sendet
- Präzise Temperaturüberwachung im Server-Schrank mit Raspberry Pi
- Multi-Sensor Temperatur- & Licht-Überwachung mit Raspberry Pi & DS18B20
- Raspberry Pi Heimtemperaturmonitor mit MCP9808, InfluxDB & Grafana bauen
- Neues A6630 Temperaturmodul erweitert CSI 6500 Machinery Health Monitor um Vibrations- & Temperatureinblicke
- Präziser Lagertemperatursensor: Genaues Erkennen & Überwachen
- Fortschrittlicher selbstheizender Wearable-Gassensor für präzises Gesundheits- und Umweltmonitoring