Real-time IoT hartslagmonitor met Arduino en MAX30100
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino UNO | 1 |
| ProtoCentral Pulse Oximeter & Hartslagsensor (MAX30100) | 1 |
| USB-A naar Micro-USB kabel | 1 |
| Draadjes (jumper wires) | 1 set |
Apps en online diensten
| App/Dienst |
|---|
| Arduino IDE |
| Node.js |
| Amazon Web Services (AWS) EC2 |
Over dit project
In dit project bouwen we een hartslagdetectie- en monitoringssysteem met Arduino dat de hartslag meet met de pulssensor en de waarden weergeeft in BPM (slagen per minuut).
Voor dit project kun je je pc, Mac of Raspberry Pi gebruiken.
De stappen zijn als volgt:
1) Arduino voorbereiden
Upload de onderstaande sketch naar de Arduino en controleer of je data ontvangt in de Seriële Monitor:
2) Node.js installeren
Installeer Node.js op je pc, Mac, Linux-pc of Raspberry Pi:
- Windows: installeer het pakket van https://nodejs.org/
- Mac: open terminal en voer
brew install nodejsuit - Linux / Raspberry Pi: open terminal en voer
sudo apt-get install nodejsuit
3) Benodigde Node.js-pakketten installeren
Voer de volgende commando's uit in je terminal:
npm install -g socket.io
npm install -g serialport
npm install -g johnny-five
npm install -g express
4) Scripts uitvoeren
- Sluit de Arduino aan op de pc / Raspberry Pi en controleer of de data in de Seriële Monitor van de Arduino IDE binnenkomt.
- Zodra dit geverifieerd is, voer de scripts uit in de onderstaande volgorde:
node run.js
- Zodra je "Communication is on!" ziet in je terminal, open
page.htmlin een browser om de waarden te zien. - Dit draait het programma alleen op localhost.
- Om het via internet te bekijken, heb je Amazon Web Services nodig.
5) Amazon Web Services (AWS) configureren
- Maak een account aan of log in op je AWS-account.
- Ga naar de EC2-module.
- Klik op "Launch Instance".
- Selecteer een besturingssysteem.
- Klik op "Review and Launch".
- Klik op "Launch", maak een nieuwe sleutelpaar aan en download het. Dit bestand heb je later nodig voor toegang.
- Kies de getoonde services en klik op "Connect".
- Er wordt een URL en SSH-link getoond. Ga naar de map waar je de sleutel hebt gedownload, open een terminal daar en plak de SSH-link.
- Herhaal stappen 2, 3 en 4 op de server. Sluit de terminal na afloop.
- Kies opnieuw de services, klik op "Connect" en gebruik de gegenereerde URL om de output via internet te bekijken.
De video
Klaar!
Code
IR_Pulsr.ino Arduino
Deze code moet naar de Arduino geüpload worden.
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
Deze code stelt de verbinding tussen seriële data en de server tot stand.
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
Deze webpagina toont het aantal hartslagen per minuut.
<!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>
Schema's
Productieproces
- Hartslagpulsen uitlezen met Windows 10 IoT Core op Raspberry Pi – Stap-voor-stap gids
- Remote Hartslagmonitoringssysteem met AWS IoT-waarschuwingen
- Bouw een indrukwekkend monitor Ambilight-systeem met Arduino
- Real-time IoT hartslagmonitor met Arduino en MAX30100
- Externe IoT-besturing van een zelfgebouwde robotarm
- Bouw een betrouwbare infrarode hartslagsensor met Arduino: stapsgewijze handleiding
- Bouw een Slimme IoT Pot met ESP8266, Arduino & Ultrasonische Sensor – Real-time Monitoring
- Je TV bedienen met Alexa via Arduino IoT Cloud – stapsgewijze handleiding
- Bouw een compacte FM-radio met Arduino Nano en RDA5807M
- Geïntegreerde hartslagsensoren in slimme kleding: betrouwbare draagbare monitoring
- Imkerei Revolutioneren: IoT-sensoren Monitoren Bijenkorvengezondheid en Versterken Gewasbestuiving