Moniteur de Fréquence Cardiaque IoT en Temps Réel avec Arduino et MAX30100
Composants et fournitures
| Arduino UNO | ×1 |
| Capteur Pulse Oximeter & Fréquence Cardiaque MAX30100 (ProtoCentral) | ×1 |
| Câble USB-A vers Micro-USB | ×1 |
| Fils de connexion (jumper wires) | ×1 |
Applications et services en ligne
| Arduino IDE |
| Node.js |
| Amazon Web Services (AWS EC2) |
À propos de ce projet
Dans ce projet, nous allons réaliser un système de détection et surveillance des battements cardiaques utilisant Arduino. Le capteur à pouls détecte les battements et affiche les mesures en BPM (battements par minute). Après quelques jours d'expérimentation avec Node.js, nous avons développé ce prototype qui affiche la fréquence cardiaque en temps réel via un capteur à pouls infrarouge.
Pour ce projet, vous pouvez utiliser votre PC, Mac ou Raspberry Pi.
Les étapes sont détaillées ci-dessous.
1) Préparation de l'Arduino
Téléversez le croquis fourni dans l'Arduino et assurez-vous de recevoir les données dans le Moniteur Série :
2) Installer Node.js
Installez Node.js sur votre PC / Mac / Linux / Raspberry Pi :
- Windows : Téléchargez le paquet depuis https://nodejs.org/
- Mac : Ouvrez le terminal et tapez :
brew install nodejs - Linux / Raspberry Pi :
sudo apt-get install nodejs
3) Installer les packages Node.js requis
Exécutez les commandes suivantes dans le terminal :
npm install -g socket.io
npm install -g serialport
npm install -g johnny-five
npm install -g express
4) Exécuter les scripts
- Après l'installation des packages, connectez l'Arduino au PC / Raspberry Pi et vérifiez que les données arrivent dans le Moniteur Série de l'IDE Arduino.
- Une fois vérifié, lancez les scripts dans l'ordre indiqué :
node <fichier.js> - Quand vous voyez « Communication is on! » dans le terminal, ouvrez page.html dans un navigateur pour voir les valeurs s'afficher.
- Cela fait tourner le programme uniquement en localhost.
Pour le rendre accessible sur Internet, il faut configurer Amazon Web Services (AWS).
5) Configuration d'Amazon Web Services (AWS)
- Créez un compte ou connectez-vous à AWS.
- Allez dans le module EC2.
- Cliquez sur « Launch Instance ».
- Sélectionnez un OS.
- Cliquez sur « Review and Launch ».
- Cliquez sur « Launch », créez une nouvelle paire de clés et téléchargez-la (fichier .pem pour l'accès SSH futur).
- Cliquez sur « Launch Instance ».
- Sélectionnez les services indiqués et cliquez sur « Connect ».
- Une URL et un lien SSH s'affichent.
- Allez dans le dossier où se trouve la clé téléchargée, ouvrez un terminal et collez le lien SSH pour vous connecter.
- Répétez les étapes 2, 3 et 4 sur l'instance EC2.
- Fermez le terminal, reconnectez-vous via les services EC2 et utilisez l'URL fournie pour accéder à l'interface via Internet.
La vidéo
C'est fini !
Code
IR_Pulsr.inorun.jspage.html
IR_Pulsr.ino Arduino
Code à téléverser dans l'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;
Serial.print(BPM);
Serial.println(" BPM");
Serial.flush();
}
run.js JavaScript (Node.js)
Établit la connexion entre les données série et le serveur :
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) {
io.sockets.emit('map', data);
});
serialPort.on('open', function() {
console.log('Communication is on!');
});
page.html HTML
Page Web affichant les battements par minute :
<!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");
socket.on('map', function(data) {
socket_1.emit('map', data);
document.getElementById('hello').innerHTML = data;
});
</script>
</body>
</html>
Schémas
Processus de fabrication
- Lire les pulsations cardiaques avec Windows 10 IoT Core sur Raspberry Pi – Guide étape par étape
- Système de surveillance cardiaque à distance avec alertes AWS IoT
- Révolutionner l'apiculture : Capteurs IoT surveillent la santé des ruches et boostent la pollinisation des cultures
- Créer un système Ambilight spectaculaire pour moniteur avec Arduino
- Moniteur de Fréquence Cardiaque IoT en Temps Réel avec Arduino et MAX30100
- Contrôle IoT à Distance d'un Bras Robotique Personnalisé avec Arduino MKR1000
- Construire un Capteur de Rythme Cardiaque Infrarouge Fiable avec Arduino : Guide Étape par Étape
- Bocal Intelligent IoT avec ESP8266, Arduino et Capteur Ultrasonique – Surveillance Temps Réel
- Capteurs de fréquence cardiaque intégrés dans les vêtements intelligents : surveillance portable fiable