LoRa-gestuurd COVID-19 patiëntmonitoringssysteem voor thuiszorg
Onderdelen en benodigdheden
| The Things Uno (LoRa-ontwikkelbord) | 1 |
| The Things Gateway (LoRa-gateway) | 1 |
| MAXREFDES117# hartslag & pulsoximeter ontwikkelplatform (Maxim Integrated) | 1 |
| Grove Temperatuursensor | 1 |
| Grove BME680 (temperatuur, vochtigheid, druk, gas) | 1 |
| DFRobot Digitale drukknop (geel) | 1 |
| Groeptrillingsensor SW-420 | 1 |
| Buzzer | 1 |
| LED | 1 |
| Draadjes | 1 set |
Benodigde tools
- Lijmpistool
- Solderbout
Apps en online diensten
- Android Studio – mobiele app voor artsen/verpleegkundigen
- Arduino Web Editor
- AWS IoT – cloudplatform
- VS Code met Arduino-extensie
Over dit project
Samenvatting
Een intelligente patiëntmonitoring voor COVID-19-patiënten. Sensoren meten vitale parameters → data via LoRa (The Things Network) naar AWS IoT Cloud → real-time visualisatie op mobiele app (artsen/verpleegkundigen) en desktop-dashboard (ICU-coördinatoren). Bij kritieke waarden: push-notificaties.
Beschrijving
De The Things Uno verzamelt data van alle sensoren en stuurt deze via LoRa naar de The Things Gateway, die verbonden is met AWS IoT.
Hardware-overzicht
- Hartslag & SpO2: MAXREFDES117#
- Omgevingstemperatuur: Grove Temperatuursensor
- Omgevingsparameters: BME680 (temp/vocht/druk/gas)
- Beweging: SW-420 trillingsensor
- Handmatige alarmknop: DFRobot drukknop
- Lokale signalering: Buzzer + LED
Nooddetectie-algoritme
Eenvoudige formule (Vergelijking-I) bepaalt of een patiënt in kritieke toestand verkeert, gebaseerd op drempelwaarden voor hartslag, SpO2, temperatuur, enz. (zie Tabel-1 in origineel).
Toepassingen
- Mobiele app (Android): Real-time grafieken (gauges, sparklines, tekst) per patiënt. Push-notificaties bij noodgevallen.
- Desktop-dashboard (web): ICU-coördinator monitort meerdere patiënten tegelijk – efficiëntieverhoging.
- Familie: Beperkte toegang tot status.
Conclusie
Het systeem stelt medisch personeel in staat om ICU-patiënten real-time op afstand te monitoren, wat de zorgkwaliteit verbetert. Toekomst: uitbreiden tot draagbare wearable voor ouderen/baby's.
Referentie
Uddin, M.S., Alam, J.B., & Banu, S. (2017). Real time patient monitoring system based on internet of things. ICAEE 2017. DOI: 10.1109/ICAEE.2017.8255410
Code
Arduino-sketch (The Things Uno)
#include <TheThingsNetwork.h>
#include <SPI.h>
#include <MAX30100_PulseOximeter.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
const char *appEui = "0000000000000000";
const char *appKey = "00000000000000000000000000000000";
#define loraSerial Serial1
#define debugSerial Serial
#define freqPlan REPLACE_ME // TTN_FP_EU868 of TTN_FP_US915
int bpm, spo2;
float temp;
Adafruit_BME280 bme;
unsigned long currentMillis;
#define REPORTING_PERIOD_MS 1000
PulseOximeter pox;
uint32_t tsLastReport = 0;
void onBeatDetected() { /* Serial.println("Beat!"); */ }
void measured_pulse() {
pox.update();
if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
bpm = pox.getHeartRate();
tsLastReport = millis();
}
}
TheThingsNetwork ttn(loraSerial, debugSerial, freqPlan);
void setup() {
loraSerial.begin(57600);
debugSerial.begin(9600);
while (!debugSerial && millis() < 10000);
debugSerial.println("-- STATUS"); ttn.showStatus();
debugSerial.println("-- JOIN"); ttn.join(appEui, appKey);
Serial.println(F("BME280 test"));
Serial.println("Initializing MAX30100");
pox.begin();
pox.setOnBeatDetectedCallback(onBeatDetected);
bool status = bme.begin();
if (!status) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
pinMode(7, OUTPUT);
pinMode(A0, INPUT);
pinMode(8, INPUT);
pinMode(6, INPUT);
}
void loop() {
debugSerial.println("-- LOOP");
int h_rate = analogRead(A0);
int button = digitalRead(8);
float temperature = pox.getTemperature();
spo2 = pox.getSpO2();
// bpm al bijgewerkt via measured_pulse()
float humidity = bme.readHumidity();
int movement = digitalRead(6);
byte payload[7];
payload[0] = highByte(bpm);
payload[1] = lowByte((int)temperature);
payload[2] = highByte((int)humidity);
payload[3] = lowByte(movement);
payload[4] = lowByte(spo2);
payload[5] = lowByte(button);
payload[6] = lowByte(h_rate);
debugSerial.print("Temperature: "); debugSerial.println(temperature);
debugSerial.print("Humidity: "); debugSerial.println(humidity);
debugSerial.print("BPM: "); debugSerial.println(bpm);
debugSerial.print("SPO2: "); debugSerial.println(spo2);
debugSerial.print("H_rate: "); debugSerial.println(h_rate);
debugSerial.print("Button: "); debugSerial.println(button);
debugSerial.print("Movement: "); debugSerial.println(movement);
ttn.sendBytes(payload, sizeof(payload));
delay(20000); // 20 seconden interval
}
Schema
Zie schematische tekening: Alle sensoren op I2C (SDA/SCL) + digitale pinnen voor knop/trilling, The Things Uno als LoRa-node.
Productieproces
- LM35-gebaseerd temperatuurregelsysteem met AT89S52 microcontroller
- Eclipse Hono lanceert MongoDB-gebaseerde Device Registry – Schaalbaar, Productie-klaar
- 5 essentiële stappen om Account-Based Marketing te beheersen
- Belangrijke overwegingen voor het ontwikkelen van succesvolle medische apparaten
- Vooruitgang in medische apparaattechnologie volgen
- Geünificeerde COVID-19 test: Detecteer, volg varianten & co-infecties in één procedure
- IoT-beheer Meesteren: Connectiviteits- En Bandbreedteuitdagingen Overwinnen In 2024
- Veilige apparaatauthenticatie met X.509-certificaten in Eclipse Hono
- Het Internet of Things Monitoren: Veilige, Betrouwbare IoT-netwerken Zorgen
- Waarom schaal winstgevendheid drijft in NB-IoT en LoRa-netwerken
- Cellulaire connectiviteit drijft de toekomst van telehealth