Slimme Gezondheidsmonitoring Station: Arduino, Bluetooth en Sensoren
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino UNO | 1 |
| Breadboard draden (generiek) | 1 |
| DHT11 Temperatuur- & Vochtigheidssensor (3 pinnen) | 1 |
| Temperatuursensor | 1 |
| Weerstand 10k ohm | 2 |
| HC-05 Bluetooth Module | 1 |
| Hartslagsensor | 1 |
Apps en online diensten
- MIT App Inventor 2
- Arduino IDE
Over dit project
Dit project combineert bedrade elektronica met sensoren en een app om eenvoudig de gezondheidstoestand en omgevingsparameters te monitoren.
Code
De onderstaande Arduino-code leest de sensoren uit en verstuurt de data via Bluetooth en seriële poort.
#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);
}
Meer code en tutorial: GitHub repository
Schema's
Zie de bijgevoegde afbeeldingen voor de schakelschema's en aansluitschema's.
Productieproces
- Nieuwe A6630 Temperatuurmodule verbetert CSI 6500 Machinery Health Monitor met trilling & temperatuur inzichten
- Bouw Een Raspberry Pi Temperatuur Logger Met Een $5 I2C Sensor
- Professionele temperatuurbewaking met Raspberry Pi en DS18B20
- Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
- Een Raspberry Pi-weerstation bouwen dat dagelijkse weergegevens e-mailt
- Accurate temperatuurbewaking in een serverkast met Raspberry Pi
- Een Multi-sensor Temperatuur- & Lichtmonitoringssysteem Bouwen met Raspberry Pi & DS18B20
- Een Raspberry Pi thuistemperatuurmonitor bouwen met MCP9808, InfluxDB & Grafana
- Precisie lager temperatuursensor – Nauwkeurige detectie & monitoring
- DS18B20 Temperatuursensor – Precieze 1-Wire Digitale Thermometer voor Industriëel & Consumptief Gebruik
- Geavanceerde zelfverwarende draagbare gassensor voor nauwkeurige gezondheids- en milieu monitoring