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

基于 Arduino Nano 和 MAX30102 的心率监测仪(16x2 LCD 显示)

组件与物料

Arduino Nano R3×1
MAX30102 心率传感器模块×1
Adafruit RGB 背光 LCD - 16x2×1
旋转电位器(通用)×1

所需工具与设备

电烙铁(通用)

应用与在线服务

Arduino IDE

项目简介

这是一个基于 MAX30102 传感器模块的简易心率监测仪。我参考 Arduino 库编写了简单代码,测得的数值在 16x2 LCD 屏幕上显示:第一行显示平均每分钟心跳数(BPM),第二行显示反射红外光的数值。该数值应保持恒定以获得更准确的读数。

代码

Arduino 代码

/* 光学心率检测 (PBA 算法) 使用 MAX30105 Breakout
   By: Bennu @ MH-ET LIVE
   Date: October 2nd, 2017
   https://github.com/MHEtLive/MH-ET-LIVE-max30102
   此演示展示如何使用外周搏动振幅 (PBA) 算法读取心率或每分钟搏动数 (BPM)。
   最好用橡皮筋或其他固定装置将传感器固定在手指上。
   人类很难对物体施加恒定压力。当你将手指按在传感器上时,压力变化会导致手指血液流动不同,从而使传感器读数变得不稳定。
   硬件连接 (Breakoutboard 到 Arduino):
   -5V = 5V (允许 3.3V)
   -GND = GND
   -SDA = A4 (或 SDA)
   -SCL = A5 (或 SCL)
   -INT = 未连接
   MAX30105 Breakout 可处理 5V 或 3.3V I2C 逻辑。建议使用 5V 供电,也可在 3.3V 下运行。
*/
#include 
#include "MAX30105.h"
#include 
#include "heartRate.h"

MAX30105 particleSensor;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const byte RATE_SIZE = 4; // 增加此值可获得更多平均值,4 为宜
byte rates[RATE_SIZE]; // 心率数组
byte rateSpot = 0;
long lastBeat = 0; // 上次心跳发生的时间
float beatsPerMinute;
int beatAvg;

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  Serial.println("初始化中...");
  // 初始化传感器
  if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) { // 使用默认 I2C 端口,400kHz 速度
    Serial.println("未找到 MAX30105,请检查接线/供电。");
    while (1);
  }
  Serial.println("请将食指平稳按在传感器上。");
  particleSensor.setup(); // 使用默认设置配置传感器
  particleSensor.setPulseAmplitudeRed(0x0A); // 红色 LED 低亮度指示传感器运行
  particleSensor.setPulseAmplitudeGreen(0); // 关闭绿色 LED
}

void loop() {
  long irValue = particleSensor.getIR();
  if (checkForBeat(irValue) == true) {
    // 检测到心跳!
    long delta = millis() - lastBeat;
    lastBeat = millis();
    beatsPerMinute = 60 / (delta / 1000.0);
    if (beatsPerMinute < 255 && beatsPerMinute > 20) {
      rates[rateSpot++] = (byte)beatsPerMinute; // 存储读数
      rateSpot %= RATE_SIZE; // 循环变量
      // 计算平均值
      beatAvg = 0;
      for (byte x = 0; x < RATE_SIZE; x++) beatAvg += rates[x];
      beatAvg /= RATE_SIZE;
    }
  }
  Serial.print("IR=");
  Serial.print(irValue);
  Serial.print(", BPM=");
  Serial.print(beatsPerMinute);
  Serial.print(", Avg BPM=");
  Serial.print(beatAvg);
  if (irValue < 50000) Serial.print(" 无手指?");
  Serial.println();
  lcd.setCursor(0,0);
  lcd.print("BPM: ");
  lcd.print(beatAvg);
  lcd.setCursor(0,1);
  lcd.print(" IR: ");
  lcd.print(irValue);
}

原理图

基于 Arduino Nano 和 MAX30102 的心率监测仪(16x2 LCD 显示)

制造工艺

  1. 远程心率监测系统:AWS IoT 告警 + 树莓派 Windows IoT 可视化
  2. 用 Arduino 打造绚丽显示器 Ambilight 系统
  3. Arduino UNO 驱动 16x2 LCD 实现动画与小游戏
  4. 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
  5. 用光敏电阻和 Arduino 制作精准心率监测仪
  6. 热水器点火器监测器:Arduino Nano + 树莓派 Zero 监控热电偶电压,熄火即时推送
  7. 基于 Arduino Mega 与物联网传感器的高级家庭监控系统
  8. 打造可靠的 Arduino 气象站:DHT 传感器 + LCD + RTC
  9. 基于 Arduino UNO 构建可靠的智能能源监测仪——分步指南
  10. 用蜂鸣器和摇杆制作经典 Arduino LCD 街机游戏
  11. 用 XOD 可视化编程为 Arduino 快速构建 LCD 菜单系统,零代码实现
  12. 智能服装集成心率传感器实现可靠可穿戴监测