Monitor de Frecuencia Cardíaca IoT en Tiempo Real con Arduino y MAX30100
Componentes y materiales
| Arduino UNO | × | 1 |
| Sensor de oximetría de pulso y frecuencia cardíaca MAX30100 (ProtoCentral) | × | 1 |
| Cable USB-A a Micro-USB | × | 1 |
| Cables jumper (genéricos) | × | 1 |
Aplicaciones y servicios en línea
| Arduino IDE |
| Node.js |
| Amazon Web Services (AWS) EC2 |
Sobre el proyecto
En este proyecto vamos a crear un Sistema de Detección y Monitorización de Latidos Cardíacos usando Arduino que detectará el pulso mediante el sensor de pulso y mostrará las lecturas en LPM (Latidos Por Minuto). Hace unos días nos sentimos aburridos, vimos algo sobre Node.js y pensamos en implementar algo con ello... y finalmente resultó en el desarrollo de este prototipo que muestra la frecuencia cardíaca en latidos por minuto usando un sensor de pulso IR.
Para este proyecto puedes usar tu PC, Mac o tu Raspberry Pi.
Los pasos para hacerlo se detallan a continuación.
1) Preparación de Arduino
Sube el sketch proporcionado a Arduino y asegúrate de recibir datos en el Monitor Serial:
2) Instalar Node.js
Instala Node.js en tu PC / Mac / Linux / Raspberry Pi:
- En Windows: descarga e instala el paquete desde https://nodejs.org/
- En Mac / Linux / Raspberry Pi: abre terminal y ejecuta:
Para Mac:
brew install nodejs
Para Linux / Raspberry Pi:
sudo apt-get install nodejs
3) Instalar paquetes requeridos para Node.js
Ejecuta los siguientes comandos en tu terminal para instalar los paquetes:
npm install -g socket.io
npm install -g serialport
npm install -g johnny-five
npm install -g express
4) Ejecutar los scripts
- Después de instalar los paquetes, conecta la placa Arduino al PC / Raspberry Pi y verifica que los datos se reciben en el monitor serial del Arduino IDE.
- Una vez verificado, es hora de ejecutar nuestros scripts. Ejecútalos en el orden mencionado a continuación.
node run.js
- Cuando veas "Communication is on!" en tu terminal.
- Luego abre page.html en un navegador y verás los valores mostrándose allí.
- Esto ejecutará tu programa solo en el localhost de la PC.
Para visualizarlos a través de internet necesitas configurar Amazon Web Services (AWS).
5) Configurar Amazon Web Services (AWS)
- Crea una cuenta o inicia sesión en tu cuenta de AWS.
- Ve al módulo EC2.
- Pulsa "Launch Instance".
- Selecciona cualquier sistema operativo.
- Pulsa "Review and Launch".
- Pulsa "Launch" en la siguiente página y crea un nuevo par de claves y descárgalo. Este archivo se usará para acceder al módulo AWS en el futuro.
- Después de la creación, pulsa "Launch Instance".
- Elige los servicios mostrados y haz clic en "Connect".
- Se mostrará una URL junto con un enlace SSH.
- Ve a la ubicación del archivo donde descargaste la clave de seguridad, abre terminal en esa carpeta, copia y pega el enlace SSH en la terminal y ejecútalo.
- Ahora repite los pasos 2, 3 y 4 aquí. Después de que todo termine, cierra la terminal.
- Elige nuevamente los servicios mostrados y haz clic en "Connect".
- Usa la URL proporcionada para ver la salida a través de internet.
El vídeo
¡El final!
Código
IR_Pulsr.inorun.jspage.html
IR_Pulsr.ino Arduino
Este es el código que debe subirse al Arduino.
int UpperThreshold = 518;
int LowerThreshold = 490;
int reading = 0;
float BPM = 0.0;
bool IgnoreReading = false;
bool FirstPulseDetected = false;
unsigned long FirstPulseTime = 0;
unsigned long SecondPulseTime = 0;
unsigned long PulseInterval = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
reading = analogRead(0);
if(reading > UpperThreshold && IgnoreReading == false) {
if(FirstPulseDetected == false) {
FirstPulseTime = millis();
FirstPulseDetected = true;
} else {
SecondPulseTime = millis();
PulseInterval = SecondPulseTime - FirstPulseTime;
FirstPulseTime = SecondPulseTime;
}
IgnoreReading = true;
}
if(reading < LowerThreshold) {
IgnoreReading = false;
}
BPM = (1.0 / PulseInterval) * 60.0 * 1000;
// Descomenta estas líneas si quieres ver los valores en la consola
/*
Serial.print(reading);
Serial.print("\t");
Serial.print(PulseInterval);
Serial.print("\t");
*/
Serial.print(BPM);
Serial.println(" BPM");
Serial.flush();
}
run.js JavaScript
Este archivo contiene el código para establecer la conexión entre los datos seriales y el servidor.
var SerialPort = require('serialport');
var Readline = SerialPort.parsers.Readline;
var express = require('express');
var socket = require('socket.io');
var app = express();
var server = app.listen(3005);
app.use(express.static('public'));
var io = socket(server);
io.on('connection', function(socket) {
console.log(socket.id);
});
var serialPort = new SerialPort('/dev/tty.usbmodem1421', { baudRate: 9600 });
var parser = new Readline();
serialPort.pipe(parser);
parser.on('data', function (data) {
// console.log('data received: ' + data);
io.sockets.emit('map', data);
});
serialPort.on('open', function () {
console.log('Communication is on!');
});
page.html HTML
Esta es la página web que mostrará el número de latidos por minuto.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src='nerve.js'></script>
<script src='speech.js'></script>
<meta name="viewport" content="user-scalable=no,initial-scale=1,maximum-scale=1" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.0/socket.io.dev.js"></script>
<title></title>
<style>
body { margin: 0; background-image: url('https://www.skipprichard.com/wp-content/uploads/2015/07/bigstock-Red-Heart-On-Wooden-Background-56485448.jpg'); }
h1 { padding-top: 100px; font-family: monospace; text-align: center; font-size: 100px; }
</style>
</head>
<body>
<h1 id="hello"></h1>
<script>
var socket = io.connect("https://localhost:3005");
var socket_1 = io.connect("https://ec2-18-220-142-52.us-east-2.compute.amazonaws.com:4000"); // Pon aquí el enlace generado por AWS
socket.on('map', function(data) {
// console.log(data);
socket_1.emit('map', data);
document.getElementById('hello').innerHTML = data;
});
</script>
</body>
</html>
Esquemáticos
Proceso de manufactura
- Leer pulsos de frecuencia cardíaca con Windows 10 IoT Core en Raspberry Pi: guía paso a paso
- Sistema de Monitorización Remota de Frecuencia Cardíaca con Alertas AWS IoT
- Crea un Impresionante Sistema Ambilight para Monitor con Arduino
- Monitor de Frecuencia Cardíaca IoT en Tiempo Real con Arduino y MAX30100
- Control Remoto IoT de Brazo Robótico Personalizado con Arduino MKR1000 y ThingSpeak
- Construye un Sensor de Ritmo Cardíaco por Infrarrojos Fiable con Arduino: Guía Paso a Paso
- Construye un tarro inteligente IoT con ESP8266, Arduino y sensor ultrasónico: Monitorización en tiempo real
- Controla tu TV con Alexa mediante Arduino IoT Cloud: Guía Paso a Paso
- Construye una Radio FM Compacta con Arduino Nano y RDA5807M
- Sensores de Frecuencia Cardíaca Integrados en Ropa Inteligente: Monitorización Fiable
- Revolucionando la apicultura: Sensores IoT monitorizan la salud de la colmena y potencian la polinización de cultivos