Système de surveillance patient COVID-19 LoRa pour soins à distance
Composants et fournitures
| Composant | Quantité |
|---|---|
| The Things Uno (carte LoRa) | 1 |
| The Things Gateway (passerelle LoRa) | 1 |
| MAXREFDES117# (MAX30100 pouls/SpO2) | 1 |
| Capteur température Grove | 1 |
| Fils de connexion | 1 lot |
| Bouton poussoir Grove (alerte manuelle) | 1 |
| Capteur vibration SW-420 (détection mouvement/chute) | 1 |
| Buzzer (alarme locale) | 1 |
| LED (indicateur) | 1 |
| Capteur BME680 (T°/H/P/COV) | 1 |
Outils
- Pistolet à colle chaude
- Fer à souder
Applications et services cloud
- Android Studio (application mobile médecins/infirmiers)
- Arduino Web Editor
- AWS IoT Core (plateforme cloud)
- VS Code + extension Arduino
À propos du projet
Résumé
Système intelligent de surveillance patient COVID-19 : capteurs biologiques → The Things Uno (LoRa) → The Things Gateway → AWS IoT Cloud. Détection automatique état critique → notifications push médecins/infirmiers + responsable ICU. Surveillance à distance sans visite physique. Accès limité pour proches.
Description technique
The Things Uno collecte : FC, SpO2 (MAX30100), température (Grove + BME680), humidité, pression, COV, vibration (chute), bouton alarme. Transmission LoRaWAN vers Gateway → AWS IoT.
Détection urgence (Équation I) :
Seuils détaillés (Tableau 1) : FC, SpO2, température, etc.
Applications de visualisation
- Mobile (médecins/infirmiers) : graphiques temps réel (jauges, sparklines, texte). Push notification si urgence (Équation I).
- Desktop web (responsable ICU) : multi-patients simultanés, tableaux de bord cloud.
Conclusion
Surveillance ICU temps réel → efficacité + qualité soins. Évolutif vers wearable pour personnes âgées/bébés.
Référence
Uddin et al. (2017). Real time patient monitoring system based on IoT. ICAEE. DOI: 10.1109/ICAEE.2017.8255410
Code Arduino (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 ou TTN_FP_US915
int bpm, spo2; float temp, humidity;
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("BME280 test");
Serial.println("Initializing MAX30100");
pox.begin();
pox.setOnBeatDetectedCallback(onBeatDetected);
if (!bme.begin()) {
Serial.println("BME280 non trouvé !"); while(1);
}
pinMode(7, OUTPUT); // LED
pinMode(A0, INPUT); // Capteur additionnel ?
pinMode(8, INPUT); // Bouton alarme
pinMode(6, INPUT); // Vibration
}
void loop() {
debugSerial.println("-- LOOP");
int h_rate = analogRead(A0);
int button = digitalRead(8);
float temperature = pox.getTemperature(); // ou bme.readTemperature()
spo2 = pox.getSpO2();
bpm = bpm; // mis à jour par measured_pulse()
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("Temp: "); debugSerial.println(temperature);
debugSerial.print("Hum: "); 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("Btn: "); debugSerial.println(button);
debugSerial.print("Mvt: "); debugSerial.println(movement);
ttn.sendBytes(payload, sizeof(payload));
delay(20000); // Envoi toutes les 20s
}
Schéma
Processus de fabrication
- Maîtriser la gestion IoT : surmonter les défis de connectivité et bande passante en 2024
- Eclipse Hono lance un registre de devices basé MongoDB — Scalable, Production-Ready
- Authentification sécurisée des appareils par certificats X.509 dans Eclipse Hono
- Suivi des avancées technologiques dans les dispositifs médicaux
- Système de contrôle de température basé LM35 avec microcontrôleur AT89S52
- Surveiller l'Internet des objets : Assurer des réseaux IoT sécurisés et fiables
- Pourquoi l'échelle détermine la rentabilité dans les réseaux NB-IoT et LoRa
- La connectivité cellulaire propulse l'avenir de la télémédecine
- 5 Étapes Essentielles pour Maîtriser le Marketing Basé sur les Comptes (ABM)