Health Band: Asistente Inteligente Vestible para Personas Mayores
Componentes y materiales
| Componente | Cantidad |
|---|---|
| Sensor de presión Infineon DPS310 | 1 |
| Arduino Nano R3 | 1 |
| Módulo ESP8266 ESP-01 | 1 |
| Cables jumpers | 1 set |
| Batería LiPo 3.7V | 1 |
Herramientas necesarias
- Soldador
Aplicaciones y servicios online
- Arduino IDE
- Blynk
Sobre el proyecto
¿Tu ser querido es mayor y vive solo? No te preocupes. Usando el sensor de presión DPS310 de Infineon desarrollamos un asistente virtual que se ajusta al brazo como una pulsera, cuidando de tus seres queridos dejándolos en buenas manos.
"Los mayores representan actualmente el 14.5% de la población de EE.UU., y para 2030 habrá unos 74 millones. Con el aumento de costes sanitarios, nuevas soluciones para gestionar la salud de los ancianos son imperativas."
Tras ver estas cifras alarmantes, este es nuestro intento por ayudar.
La historia
Mi abuela sufre Alzheimer incipiente y su condición empeora. Esto causa:
- Deambular hacia el trabajo (aunque le dijeron que no lo hiciera)
- Saltar comidas o comer doble
- No hacer sus ejercicios
Todo por falta de memoria y consciencia de su estado. Mi madre debía estar con ella 24/7, lo cual es agotador. Así surgió la idea: un asistente virtual que monitoree su comportamiento y alerte en emergencias, dando respiro a mi madre y seguridad a la paciente.
Componentes y concepto del sistema
Aunque se centra en Alzheimer, incluye funciones útiles para todos los mayores. El sensor DPS310 destaca por su tamaño reducido, haciendo el dispositivo portable y versátil. El Arduino Nano se conecta al DPS310 vía I2C. Las acciones y comportamientos se codifican para simular el movimiento del paciente; con esos datos determinamos su estado y alertamos si hay emergencia. Los datos se muestran en una app con Blynk.
Todo se integra en una pulsera compacta y estética, integrando la tecnología en la vida del paciente.
Funciones y capacidades
🔴 Detección de caídas
El mayor problema de los ancianos es perder el equilibrio y caer. A menudo están indefensos y la ayuda llega tarde. La Health Band detecta caídas bruscas por caída súbita de presión y envía alerta automática a familiares.
🟢 Contador de pasos / Ejercicio
Motivar a los mayores a caminar es difícil. Mostrar pasos dados o tiempo caminando les anima. Mi abuela debe caminar 1000 pasos pero pierde la cuenta; el contador le ayuda.
Al detectar movimiento de "ola" (ciclos crest-to-crest o trough-to-trough), deduce que ha comenzado el ejercicio y cuenta pasos.
🟡 Detección de fiebre
El sensor también mide temperatura. Al estar en contacto con el brazo, da la temperatura corporal en tiempo real. Picos o caídas alertan automáticamente vía mensaje.
🔵 Estado del paciente
Informa a familiares del estado en vivo: Durmiendo, Despierto, Ejercitando (tres estados actuales; a veces falla, se planean más estados).
Circuito
El DPS310 puede sincronizarse por Bluetooth a una app, pero tenía limitaciones. Para acceder al flujo de datos, conectamos Arduino Nano vía I2C, permitiendo computar datos y deducir escenarios. Luego conectamos Arduino a ESP8266 para comunicación WiFi con app móvil.
Montaje
Sensor DPS310 a Arduino Nano (I2C)
- Pin 1 (SDA) sensor → Pin Analógico 4 (A4) Arduino
- Pin 2 (SCL) sensor → Pin Analógico 5 (A5) Arduino
- Pin 8 (GND) sensor → GND Arduino
Nota: La orientación del sensor es como en la imagen.
Arduino Nano a ESP8266 (WiFi)
- Pin 1 WiFi → Pin Digital 11 Arduino
- Pin 2 WiFi → Pin Digital 10 Arduino
- Pin 7 (GND) WiFi → GND Arduino
- Pin 8 (Power) WiFi → 3.3V Arduino
Nota: La orientación del módulo es como en la imagen.
Fabricación de la pulsera
Usamos lienzo (canvas) y espuma para embeber componentes, y velcro para las correas.
- Corta espuma al ancho de la muñeca.
- Coloca sensores y recorta tamaño final.
- Redondea bordes para mejor acabado.
- Inserta pines en la espuma (protección y agarre) y embebe la batería en ranura.
- Voltea y suelda conexiones (pines sobresalen).
- Prueba de funcionamiento.
- Añade tiras de velcro para correas.
- Envuelve en lienzo y pega con silicona caliente para acabado limpio.
***Planeamos actualizar con modelo 3D impreso con ranuras perfectas para diseño ergonómico***
Programación de algoritmos
Librerías necesarias:
- Wire (suele venir preinstalada; comunicación I2C Arduino-DPS310) GitHub
- DPS310 Pressure Sensor library GitHub
- Blynk library (comunicación Arduino-Blynk cloud) GitHub
Instalación: Arduino IDE → Sketch → Include Library → Add .ZIP Library → selecciona cada archivo descargado.
Prueba con el código de test (ver sección Código) y verifica datos en Monitor Serie. Luego sube el código principal y construye la app.
Construcción de la app con Blynk
Descarga Blynk de Play Store. Selecciona Arduino Nano como microcontrolador y "WiFi" como tipo de conexión. Recibirás por email el "auth token" para poner en el código.
Widgets usados:
- Gauge: Temperatura en vivo
- Value Display: Contador de pasos
- LCD Display: Estado actual
Conclusiones: ¡Éxito general!
El proyecto tuvo errores iniciales: temperatura en muñeca 36°C vs 36.8°C en axila (termómetro médico). Algoritmo de pasos daba conteos erróneos al principio, pero tras recalibración funciona con precisión. La función "estado" mejoró añadiendo más variables.
Tras recalibración, la Health Band recopila datos correctamente. Mi abuela lleva dos semanas sin asistente humano y la pulsera funciona genial. Alertas de caída/fiebre no probadas en situaciones reales pero teóricamente funcionan.
Es un proyecto implementable fácilmente que esperamos salve vidas y mantenga a los mayores seguros.
Código
Test de generación de datos (Generating Data Test)
#include <ifx_dps310.h>
void setup() {
Serial.begin(9600); while (!Serial);
ifxDps310.begin(Wire); // Dirección I2C por defecto 0x77
// Si la temperatura marca ~60°C en vez de ~20°C, descomenta:
// ifxDps310.correctTemp();
int temp_mr = 2, temp_osr = 2, prs_mr = 2, prs_osr = 2;
int ret = ifxDps310.startMeasureBothCont(temp_mr, temp_osr, prs_mr, prs_osr);
if (ret != 0) { Serial.print("Init FAILED! ret = "); Serial.println(ret); }
else { Serial.println("Init complete!"); }
}
void loop() {
unsigned char pCount = 20, tCount = 20;
long int pressure[20], temperature[20];
int ret = ifxDps310.getContResults(temperature, tCount, pressure, pCount);
if (ret != 0) { Serial.print("FAIL! ret = "); Serial.println(ret); }
else {
Serial.println(); Serial.print(tCount); Serial.println(" temperature values found:");
for (int i=0; i
HealthBand con Blynk (Código principal)
#include <ifx_dps310.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define BLYNK_PRINT Serial
char auth[] = "YourAuthToken";
char ssid[] = "YourNetworkName";
char pass[] = "YourPassword";
const unsigned char pressureLength = 50, temperatureLength = 50;
long int pressure[50], temperature[50];
int pressureFallingThresh = 1, pressureSleepingThresh = 4;
int tempFeverThresh = 39, pressureJogThresh = 5;
void setup() {
Serial.begin(9600); Blynk.begin(auth, ssid, pass);
while (!Serial); ifxDps310.begin(Wire);
ifxDps310.setInterruptPolarity(1);
ifxDps310.setInterruptSources(1, 0, 0);
ifxDps310.getIntStatusFifoFull();
pinMode(3, INPUT);
attachInterrupt(digitalPinToInterrupt(3), onFifoFull, RISING);
int ret = ifxDps310.startMeasureBothCont(3, 2, 1, 3);
if (ret != 0) { Serial.print("Init FAILED! ret = "); Serial.println(ret); }
else { Serial.println("Init complete!"); }
}
void loop() {
Blynk.run(); Serial.println("loop running"); delay(500);
if (pressureCount == pressureLength && temperatureCount == temperatureLength) {
// Procesar temperatura y detectar fiebre
for (int i=0; i tempFeverThresh) feverEmail();
}
// Procesar presión y detectar caída / salida de cama
for (int i=0; i
Esquemáticos
Diagrama de conexiones incluido.
Proceso de manufactura
- Persianas Inteligentes: Control Automático de Luz con Arduino y Energía Solar
- Construye un tarro inteligente IoT con ESP8266, Arduino y sensor ultrasónico: Monitorización en tiempo real
- Construye un Iron Man animado con Arduino: componentes, sensores y guía paso a paso
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Mide la masa de la Tierra con Arduino: Guía paso a paso DIY
- Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
- Construye un volante joystick personalizado con Arduino para gaming
- Sierra de Cinta Manual: Solución de Corte Duradera y Portátil para Cualquier Proyecto
- Software independiente de hardware: Beneficios clave para fábricas inteligentes
- Maximizar el ROI en la Fabricación Inteligente: Retorno de Inversión y Éxito Basado en Datos
- Dominando los Estándares IEC de Potencia para Diseño de Electrodomésticos Inteligentes