Alertas Inmediatas por Email y SMS ante Ritmo Cardíaco Anómalo
Componentes y materiales
| Sensor pulso cardíaco (módulo Heartbeat) | 1 |
| Arduino Mega 2560 | 1 |
| Módulo WiFi Bolt IoT | 1 |
| Cables jumper | 7 |
Aplicaciones y servicios cloud
- Bolt Cloud (plataforma IoT Bolt)
- DigitalOcean VPS (servidor Linux para código monitor)
- Mailgun (servicio automatización email)
- Twilio SMS Messaging API
Sobre el proyecto
Los wearables de monitorización cardíaca 24/7 son comunes hoy. ¿Y si pudieras hacer uno que te avise por SMS y/o email al detectar anomalía en tu ritmo cardíaco? Este proyecto muestra cómo lograrlo de la forma más sencilla.
Paso 1: Conectar sensor pulso a Arduino
- Pin 2 Arduino → Salida sensor pulso
- 5V Arduino → VCC sensor
- GND Arduino → GND sensor
Paso 2: Código Arduino
Instala Arduino IDE (arduino.cc) y sube:
unsigned long highCounter = 0;
int pulse = 0, val = 0, lastPulse = LOW;
unsigned long oldMillis = 0;
void setup() {
pinMode(2, INPUT);
Serial.begin(9600);
}
void loop() {
pulse = digitalRead(2);
if (pulse != lastPulse) {
lastPulse = pulse;
if (pulse == HIGH) highCounter++;
}
if (millis() - oldMillis >= 10000) {
oldMillis = millis();
val = highCounter * 6; // latidos/minuto
if (highCounter > 1) Serial.println(val);
highCounter = 0;
}
}
Función: cuenta flancos subida en pin 2 cada 10 seg, calcula BPM (×6), envía por Serie al Bolt WiFi.
Paso 3: Conectar Bolt WiFi a Arduino
- 3V3 Bolt → 3.3V Arduino
- TX Bolt → RX Arduino
- RX Bolt → TX Arduino
Alimenta Bolt y establece comunicación serie.
Paso 4: Configurar Mailgun (email)
- Crear cuenta en Mailgun
- Verificar teléfono → Dominios → Add Recipient → Invite New Recipient → tu email
- Se genera "sandbox". Click en su ID → copia credenciales: API Key, Sandbox URL, Sender Email, Recipient Email
Paso 5: Configurar Twilio (SMS)
- Registrarse en twilio.com → Get Free API Key
- Verificar teléfono → Products → habilitar "Programmable SMS" y "Phone Numbers"
- Project Info → copiar Account SID y Auth Token
- Programmable SMS → Get Started → Get a number → Choose this number → copiar número generado
Paso 6: Servidor VPS (DigitalOcean) para monitorización
Alternativa: PC Linux dedicado o máquina virtual.
- Crear cuenta DigitalOcean → Proyecto → Droplet Ubuntu → acceder por PuTTY
- Login con credenciales emailed
- Ejecutar:
sudo apt-get -y update
sudo apt install python3-pip
sudo pip3 install boltiot
Archivo conf.py (credenciales)
# Credenciales Twilio
SID = 'tu_SID_de_Twilio_Dashboard'
AUTH_TOKEN = 'tu_AUTH_TOKEN_de_Twilio_Dashboard'
FROM_NUMBER = 'numero_generado_por_Twilio'
TO_NUMBER = 'tu_numero_con_prefijo_ej_+34XXXXXXXXX'
# Credenciales Mailgun
MAILGUN_API_KEY = 'tu_API_KEY_Mailgun_Dashboard'
SANDBOX_URL = 'tu_SANDBOX_URL_Mailgun'
SENDER_EMAIL = 'test@tu_SANDBOX_URL'
RECIPIENT_EMAIL = 'tu_email_destino'
# Credenciales Bolt
API_KEY = 'tu_Bolt_Cloud_API_Key'
DEVICE_ID = 'tu_Bolt_Device_ID'
Archivo heart_rate.py (monitor principal)
import conf, json, time
from boltiot import Email, Bolt, Sms
minimum_limit = 57 # umbral mínimo BPM
maximum_limit = 100 # umbral máximo BPM
mybolt = Bolt(conf.API_KEY, conf.DEVICE_ID)
mailer = Email(conf.MAILGUN_API_KEY, conf.SANDBOX_URL, conf.SENDER_EMAIL, conf.RECIPIENT_EMAIL)
sms = Sms(conf.SID, conf.AUTH_TOKEN, conf.TO_NUMBER, conf.FROM_NUMBER)
while True:
response = mybolt.serialRead(2)
data = json.loads(response)
sensor_value = data['value']
try:
sensor_value = int(data['value'])
if sensor_value > maximum_limit or sensor_value < minimum_limit:
response = mailer.send_email("Alerta", "Ritmo cardiaco actual: " + str(sensor_value))
response = sms.send_sms("¡Alerta! Ritmo cardiaco actual: " + str(sensor_value))
except Exception as e:
print(e)
time.sleep(10)
Ejecutar: sudo python3 heart_rate.py
Cuando el ritmo supere 100 BPM o baje de 57 BPM, recibirás SMS y email simultáneos.
Código completo
Arduino (cálculo pulso)
// Ver código en Paso 2
conf.py (credenciales)
# Ver Paso 6
heart_rate.py (monitor Python)
# Ver Paso 6
Esquemático
Proceso de manufactura
- Cómo Usar Datos y Storytelling para Obtener Aprobación para tus Proyectos de Mantenimiento
- Nueve Estrategias Probadas para Asegurar su Empleo y Acelerar el Crecimiento Profesional
- 5 formas en que los lubricantes anti-grip ahorran tiempo, dinero y previenen dolores de cabeza en MRO
- Respuesta Rápida: Cómo Resolvimos una Parada Súbita en Prensa Offset Komori 28"
- 4 Factores Clave al Comprar Cuchillas de Corte Industriales
- Cómo Elegir la Bomba de Presión Automática Adecuada para tu Hogar: Guía Práctica
- Tipos de tornillos y pernos para un ensamblaje óptimo
- Tornillo vs. perno: diferencias clave, tipos y aplicaciones
- Dominando los emails de ventas: Captar la atención y convertir leads
- Guía Experta: Mantenimiento de su Destilador de Recuperación de Solventes para Rendimiento Óptimo
- Optimizando emparejamientos excavadora-dumper para máxima eficiencia y beneficio en minería