Pulsera inteligente con Arduino MKR GSM 1400 y Hologram IoT
Componentes y suministros
- Arduino MKR GSM 1400 × 1
- Antena LTE/celular × 1
- Tarjeta SIM Hologram Global IoT × 1
- Sensor de frecuencia cardíaca DFRobot × 1
- Sensor de temperatura IR × 1
- Batería LiPo 3.7V (800mAh) × 1
Herramientas necesarias
- Soldador (genérico)
Aplicaciones y servicios en línea
- Arduino IDE / Arduino Web Editor
- Microsoft Azure (IoT Hub, Cosmos DB, Stream Analytics)
- Microsoft Power BI
- Hologram Data Router
Sobre el proyecto
Resumen del proyecto
SmartWristband es una pulsera wearable que monitoriza signos vitales (frecuencia cardíaca, temperatura) y geolocalización de pacientes con formas leves de virus (como COVID-19) que se aislan en casa. Permite liberar camas hospitalarias para casos graves.
Problema: Pacientes con síntomas leves son enviados a casa, pero su estado puede empeorar en horas. Equipos médicos voluminosos y caros no escalan para monitorizar masivamente.
Solución: Dispositivo de bajo coste, escalable, open-source que monitoriza continuamente y envía datos vía GSM a la nube (Azure) para dashboards médicos y de paciente.
Datos recopilados
- Vitales: Frecuencia cardíaca y temperatura (cada 5 min)
- Ubicación: Geolocalización para verificar cuarentena
- El dispositivo no procesa datos localmente, los envía a Azure
Por qué estos datos
- Temperatura elevada y frecuencia cardíaca irregular indican progresión viral
- Geolocalización asegura cumplimiento de aislamiento
- Machine learning predice evolución a corto plazo
Hardware
Prototipo cómodo para uso día/noche. Sensores en contacto con piel. Detecta si el usuario se quita la pulsera (patrón de señal cardíaca).
Autonomía
- 8 días con una carga (intervalo 5 min)
- Extensible a 16 días con intervalo 10 min
- Cargable mientras se usa
- Nivel de batería en dashboards
Costes
- ~€70 por dispositivo (incl. carcasa)
- €5/2sem por dispositivo (Hologram)
- €30/2sem backend (Azure, Power BI) - coste fijo independientemente de dispositivos
- Total 100 dispositivos: ~€7,035 (reutilizables)
Dashboards
Dashboard médico
- Vista global de todos los pacientes
- Alertas por email: paciente fuera de casa, sin dispositivo, vitales anormales
- Informe detallado por paciente: vitales, ubicación, dispositivo
- Predicción ML de temperatura y frecuencia cardíaca
Dashboard paciente
- Versión escritorio y móvil
- Muestra frecuencia cardíaca, temperatura, batería
- Sin predicciones ni geolocalización (evita ansiedad)
Arquitectura
Frontend (dispositivo)
Cada 5 min: recopila datos → verifica si se lleva puesto → empaqueta → envía por GSM → sincroniza RTC con servidor de tiempo.
Backend (Azure)
- Azure IoT Hub recibe datos de forma segura
- Stream Analytics Job extrae y envía a Cosmos DB
- Power BI consulta Cosmos DB, ejecuta ML, muestra dashboards
- Dashboard médico agrega todos los pacientes
Investigación de mercado
Taiwán usa tracking por móvil. Ningún producto combina signos vitales + geolocalización en paquete pequeño y cómodo.
Beneficios
- Asegura cumplimiento de cuarentena
- Monitoriza vitales sin hospitalización
- Libera camas hospitalarias
- Alertas 24/7 a médicos
- Cómodo para el paciente
- Predicción de salud
- Auto-monitorización del paciente
- Coste-efectivo y escalable
Construcción paso a paso
Paso 1: Componentes y servicios
- Hardware: MKR GSM 1400, antena, sensores DFRobot e IR, batería LiPo, SIM Hologram
- Servicios: Arduino IDE, cuenta Hologram, Azure, Power BI
Paso 2: Configurar MKR GSM para Azure IoT
Generar y almacenar certificado (seguir tutorial MKR NB, detener tras certificado). Guardar SHA1.
Paso 3: Conexiones
- Sensor temperatura → A4
- Sensor frecuencia cardíaca → A5
- ¡Insertar SIM!
Pasos 4-6: Backend Azure
- Crear IoT Hub (Free tier para desarrollo, S1 para producción)
- Registrar dispositivo con thumbprint SHA1
- Crear Cosmos DB (API SQL, misma región que IoT Hub)
- Crear Stream Analytics Job: Input=IoT Hub, Output=Cosmos DB, Query=mapeo JSON
Paso 7: Librerías necesarias
- MKRGSM, RTCZero, ArduinoBearSSL, ArduinoECCX08, ArduinoMqttClient, ArduinoLowPower, DFRobot_Heartrate
Paso 8: Variables de configuración (secrets.h)
- SECRET_BROKER: hostname IoT Hub
- SECRET_DEVICEID: nombre dispositivo en IoT Hub
- DEVICE_ID: ID único por paciente
- MODE: DEVELOP_TIME (10 seg, serial verbose) o RELEASE_TIME (5 min, standalone)
Pasos 9-10: Flashear y desplegar
- Modo DEVELOP: probar con Serial Monitor, verificar en IoT Hub
- Cambiar a RELEASE_TIME, flashear, desconectar USB, verificar LED parpadea cada 10 min
Paso 11: Dashboards Power BI
- Conectar Power BI Desktop a Cosmos DB
- Transformar datos, crear medidas DAX (archivos en GitHub)
- Diseñar dashboard médico (con alertas) y de paciente (versión móvil)
- Publicar en Power BI Service, configurar alertas en tarjetas temperatura (>38°C) y FC (>100)
Paso 12: Carcasa
Diseño 3D disponible, prototipo en plástico cortado. Versión final más compacta con PCB.
Reflexión
Proyecto open-source completo en GitHub. Inspiración en sistema taiwanés. Desafío principal: certificado Azure con expiración incorrecta. Dashboard fue la parte más disfrutada.
Código
Repositorio GitHub: https://github.com/Andrei-Florian/SmartWristband
Esquemáticos
Archivo Fritzing: schematics_HcrW1SiwfW.fzz e imagen de conexiones.
Proceso de manufactura
- Circuitos integrados (CI): chips compactos y potentes que impulsan la electrónica moderna
- Monitor de temperatura casero con Raspberry Pi, MCP9808, InfluxDB y Grafana
- Sensor de Emociones y EEG: Hardware de Bajo Coste para Detección de Emociones en Tiempo Real
- Sistema de Sensor de Temperatura Multiposición para Integración en Hogar Inteligente
- UnifiedWater v1 – Kit completo de sensor de calidad de agua con Arduino
- MotionSense: Detección inteligente de intrusos con Arduino y ESP8266
- Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino
- Construye una Caja Puzle IoT Segura con Arduino MKR Bundle – Guía Paso a Paso
- Estación meteorológica Arduino Nano: Sensores BMP280, DHT11, UV y RTC en OLED 0,96"
- Kit MOSMusic: Control de Iluminación de Alta Potencia Sincronizada con Música vía MOSFET y Arduino
- Entendiendo el sensor de oxígeno (O2): función, ubicación y señales de fallo