亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

基于 Arduino 与 MAX30100 的实时物联网心率监测系统

组件与材料

组件数量
Arduino UNO1
ProtoCentral MAX30100 脉搏血氧/心率传感器1
Micro-USB 数据线1
杜邦线若干

软件与云服务

项目简介

本项目构建一套心率检测与监测系统:Arduino 采集 MAX30100 红外脉搏信号,计算 BPM(每分钟搏动数)并经串口输出;Node.js 读取串口数据,通过 Socket.io 实时推送至网页;配合 AWS EC2 可实现互联网远程查看。

1. Arduino 准备

上传 IR_Pulsr.ino,打开串口监视器确认输出 BPM 数据。代码采用双阈值法检测脉搏波峰,计算峰间间隔进而得出心率。

2. 安装 Node.js

3. 安装依赖包

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

4. 运行脚本

  1. 连接 Arduino,确认串口有数据输出
  2. 运行 node run.js,终端显示 “Communication is on!”
  3. 浏览器打开 page.html 查看本地实时心率

5. 配置 AWS EC2 实现互联网访问

  1. 登录 AWS 控制台,进入 EC2 启动实例
  2. 选择操作系统,创建/下载密钥对 (.pem)
  3. 通过 SSH 连接实例,重复步骤 2-4 安装环境并运行脚本
  4. 在 EC2 安全组开放 3005、4000 端口
  5. 修改 page.html 中的 Socket.io 连接地址为 EC2 公网 IP
  6. 浏览器访问 EC2 公网 IP:3005 即可远程监测

核心代码

IR_Pulsr.ino(Arduino 采集)

int UpperThreshold = 518, LowerThreshold = 490;
int reading = 0; float BPM = 0.0;
bool IgnoreReading = false, FirstPulseDetected = false;
unsigned long FirstPulseTime = 0, SecondPulseTime = 0, PulseInterval = 0;

void setup() { Serial.begin(9600); }

void loop() {
  reading = analogRead(0);
  if (reading > UpperThreshold && !IgnoreReading) {
    if (!FirstPulseDetected) { 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(s) { console.log(s.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(前端页面)

通过 Socket.io 接收心率数据并显示在大号标题中;同时转发至 AWS EC2 实现远程同步。

制造工艺

  1. 树莓派运行 Windows 10 IoT Core 读取心率脉冲传感器:分步指南
  2. 远程心率监测系统:AWS IoT 告警 + 树莓派 Windows IoT 可视化
  3. 用 Arduino 打造绚丽显示器 Ambilight 系统
  4. 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
  5. 基于 Arduino MKR1000 与 ThingSpeak 的远程 IoT 机械臂控制系统
  6. Arduino 红外心率传感器 DIY:低成本高精度,串口绘图器实时波形
  7. 智能物联网罐:ESP8266 + Arduino + 超声波传感器实时监测罐内物位
  8. 通过 Arduino IoT Cloud 用 Alexa 控制电视:分步指南
  9. 使用 Arduino Nano 和 RDA8057M 制作紧凑型 FM 收音机
  10. 基于 Arduino Nano 和 MAX30102 的心率监测仪(16x2 LCD 显示)
  11. 智能服装集成心率传感器实现可靠可穿戴监测
  12. 革新养蜂业:物联网传感器监测蜂群健康、助力作物授粉