Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

IoT-монитор пульса в реальном времени на Arduino и MAX30100

Компоненты и материалы

Arduino UNO 1 шт.
Датчик пульса и оксиметра ProtoCentral на базе MAX30100 1 шт.
Кабель USB-A — Micro-USB 1 шт.
Перемычки (набор) 1 шт.

Приложения и онлайн-сервисы

Arduino IDE
Node.js
Amazon Web Services (AWS EC2)

О проекте

В этом проекте мы создадим систему обнаружения и мониторинга сердечного ритма с использованием Arduino. Датчик пульса определяет удары сердца и выводит показания в ударах в минуту (BPM). Проект возник из интереса к Node.js и развился в работающий прототип, отображающий частоту сердечных сокращений с ИК-пульсовым сенсором.

Для реализации можно использовать ПК, Mac или Raspberry Pi.

1. Подготовка Arduino

Загрузите скетч в Arduino и убедитесь, что данные поступают в Serial Monitor:

IoT-монитор пульса в реальном времени на Arduino и MAX30100

2. Установка Node.js

Установите Node.js на ваш компьютер / Mac / Linux / Raspberry Pi:

3. Установка пакетов для Node.js

Выполните в терминале:

npm install -g socket.io
npm install -g serialport
npm install -g johnny-five
npm install -g express

4. Запуск скриптов

Для доступа через интернет необходимо настроить Amazon Web Services (AWS).

5. Настройка Amazon Web Services (AWS)

  1. Создайте аккаунт или войдите в AWS.
  2. Перейдите в модуль EC2.
  3. Нажмите «Launch Instance».
  4. Выберите любую ОС.
  5. Нажмите «Review and Launch», затем «Launch».
  6. Создайте новую пару ключей и скачайте её (файл .pem) — он понадобится для будущего доступа.
  7. После запуска инстанса выберите сервисы, показанные на скриншотах, и нажмите «Connect».
  8. Откроется URL и SSH-ссылка.
  9. В терминале в папке с ключом выполните SSH-команду для подключения.
  10. На удалённом сервере повторите шаги 2, 3 и 4 (установка Node.js, пакетов, запуск скриптов).
  11. После завершения закройте терминал, снова выберите сервисы и нажмите «Connect» — используйте полученный URL для просмотра данных через интернет.
IoT-монитор пульса в реальном времени на Arduino и MAX30100
IoT-монитор пульса в реальном времени на Arduino и MAX30100
IoT-монитор пульса в реальном времени на Arduino и MAX30100
IoT-монитор пульса в реальном времени на Arduino и MAX30100
IoT-монитор пульса в реальном времени на Arduino и MAX30100
IoT-монитор пульса в реальном времени на Arduino и MAX30100
IoT-монитор пульса в реальном времени на Arduino и MAX30100
IoT-монитор пульса в реальном времени на Arduino и MAX30100

Видео

На этом всё!

Код

IR_Pulsr.ino (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 (Node.js сервер)

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 (веб-страница)

<!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> 
/* CSS стили для отображения пульса */ 
</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>

Схемы

IoT-монитор пульса в реальном времени на Arduino и MAX30100

Производственный процесс

  1. Считывание пульса сердечного ритма на Windows 10 IoT Core на Raspberry Pi — пошаговое руководство
  2. Система удалённого мониторинга сердечного ритма с алертами AWS IoT
  3. Революция в пчеловодстве: ИоТ-датчики мониторят здоровье ульев и повышают опыление культур
  4. Создание потрясающей системы Ambilight для монитора на Arduino
  5. IoT-монитор пульса в реальном времени на Arduino и MAX30100
  6. Удаленное IoT-управление самодельной манипулятором
  7. Надежный ИК-датчик пульса на Arduino: пошаговое руководство
  8. Умная банка на ESP8266 + Arduino: мониторинг наполненности в реальном времени
  9. Управление телевизором через Alexa и Arduino IoT Cloud — пошаговое руководство
  10. Интегрированные датчики сердечного ритма в умной одежде: надежный носимый мониторинг