Sistema LoRa de Monitorización Remota de Pacientes COVID-19
Componentes y materiales
| The Things Uno (placa LoRa compatible Arduino) | 1 |
| The Things Gateway (gateway LoRaWAN) | 1 |
| MAXREFDES117# (plataforma desarrollo oxímetro/FC Maxim Integrated) | 1 |
| Sensor temperatura Grove (Seeed) | 1 |
| Cables jumper | 1 juego |
| Pulsador digital DFRobot Gravity (amarillo) | 1 |
| Sensor vibración Grove SW-420 | 1 |
| Buzzer | 1 |
| LED genérico | 1 |
| Sensor BME680 (temp, humedad, presión, gas) Grove | 1 |
Herramientas necesarias
- Pistola silicona caliente
- Soldador
Aplicaciones y servicios cloud
- Android Studio (app móvil)
- Arduino Web Editor
- AWS IoT Core (plataforma cloud)
- VS Code + extensión Arduino
Sobre el proyecto
Resumen
Sistema inteligente de monitorización de pacientes COVID-19 mediante red de sensores conectados. Recopila parámetros vitales, los envía a nube IoT, detecta condiciones críticas automáticamente y envía notificaciones push a médicos/enfermeros y personal hospitalario. Permite monitorización remota sin visita presencial a UCI. Familiares también acceden con permisos limitados.
Descripción
The Things UNO (board LoRa) actúa como controlador principal: lee sensores y transmite vía LoRa a The Things Gateway, conectado a AWS IoT Core.
Lista hardware detallada
Detección de emergencia (Ecuación I)
La condición crítica se evalúa mediante fórmula matemática:
Donde los umbrales están definidos en Tabla 1:
Aplicaciones de visualización
App móvil para médicos/enfermeros: gráficas y gauges tiempo real de parámetros vitales. Recibe push notifications ante emergencia (Ecuación I).
Dashboard web para personal UCI: monitoriza múltiples pacientes simultáneamente, mejora eficiencia unidad.
Conclusión
El sistema permite monitorización remota en tiempo real de pacientes UCI, mejorando eficiencia y calidad asistencial. Gran potencial para evolucionar a wearable para monitorizar ancianos o bebés desde cualquier lugar.
Referencia
Uddin, M. S., Alam, J. B., & Banu, S. (2017). Real time patient monitoring system based on internet of things. 2017 4th International Conference on Advances in Electrical Engineering (ICAEE), 516-521. DOI: 10.1109/ICAEE.2017.8255410
Código Arduino (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 o 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("Inicializando MAX30100");
pox.begin();
pox.setOnBeatDetectedCallback(onBeatDetected);
bool status = bme.begin();
if (!status) {
Serial.println("BME280 no encontrado, revisa cableado!");
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 = bpm;
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("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("Mov: "); debugSerial.println(movement);
ttn.sendBytes(payload, sizeof(payload));
delay(20000); // envío cada 20 seg
}
REPLACE_ME para plan de frecuencias LoRa (EU868/US915) y AppEUI/AppKey placeholder. Debes configurar credenciales reales de The Things Network. El array payload[7] tiene 7 elementos pero se declara tamaño 6; corrige a byte payload[7].
Esquemático
Proceso de manufactura
- Sistema de control de temperatura basado en LM35 con microcontrolador AT89S52
- Eclipse Hono lanza registro de dispositivos basado en MongoDB – Escalable, listo para producción
- 5 Pasos Esenciales para Dominar el Account-Based Marketing
- Consideraciones Clave para Desarrollar Dispositivos Médicos Exitosos
- Avances en tecnología de dispositivos médicos: sensores, conectividad y seguridad
- Prueba Unificada de COVID-19: Detecta, Rastrea Variantes y Coinfecciones en un Solo Procedimiento
- Dominando gestión IoT: Superando desafíos de conectividad y ancho de banda en 2024
- Autenticación segura de dispositivos con certificados X.509 en Eclipse Hono
- Monitorizando el Internet de las Cosas: Asegurando Redes IoT Seguras y Fiables
- Por qué la escala impulsa la rentabilidad en redes NB-IoT y LoRa
- La conectividad celular impulsa el futuro de la telemedicina