Arduino驱动MAX30102心率血氧传感器模块

  • 前言
    • 一、使用硬件
    • 二、主要参数
    • 三、原理说明
    • 四、实践操作
    • 1、接线
    • 2、程序驱动
    • 五、实验结果
    • 六、总结

前言

MAX30102是一个集成的脉搏血氧仪和心率监测器模块。MAX30102包括内部led,光电探测器,光学元件,和低噪声电子元件,具有环境光反射特征。MAX30102提供了一个完整的系统解决方案,以简化移动和可穿戴设备的设计过程。MAX30102运行在一个1.8V电源和一个单独的5.0V电源上。通过一个标准的i2c兼容的接口进行通讯。该模块可以通过软件来关断电源,待机模式下的电流消耗量几乎为零。

一、使用硬件

MAX30102心率血氧传感器模块

原装正版Arduino uno 开发板


二、主要参数

供电电压 1.8-5V(一般建议3.3V、5V)
信号接口 I2C
工作电流 1.5mA (3.3V输入)
心率精确度 +/-5bpm(静态),+/-10bpm(动态)
分辨率 1bpm
采样率 100Hz(STM32程序)/ 25Hz(arduino程序)

三、原理说明

传统的脉搏测量方法主要有三种:
1、从心电信号中提取
2、从测量血压时压力传感器测到的波动来计算脉率
3、光电容积法

前两种会限制病人的活动,长时间使用会加重病患的心理和生理负担,而光电容积法在实际中时普遍使用的一种有效方法,其特点:方法简单、佩戴方便、可靠性高。

光电容积法基本原理:
利用人体组织在血管搏动时造成透光率不同来进行脉搏和血氧饱和度测量的。其使用的传感器由光源和光电变换器两部分组成,通过绑带或夹子固定在病患的手指、手腕或耳垂上。光源一般采用对动脉血中氧合血红蛋白(Hb02)和血红蛋白(Hb)有选择性的特定波长的发光二极管(一般使用660nm附近的红光和900nm附近的红外光)。当光束透过人体外周血管,由于动脉搏动充血容积变化导致这束光的透光率发生改变,此时由光电变换器接收经人体组织反射的光线,转变为电信号并将其放大和输出。

模块原理图


在red led外面有一个玻璃盖,玻璃盖的作用是能够有效的排除外界和内部光的干扰,但完全排除还是实现不了的。当led光射向手腕上皮肤时,人体组织会反射光线给光电变换器,而光电变换器将这个光转换成了电信号并且将它变大和输出,电信号最后再经过AD转化为数字信号。简单来说就是光变电变数字信号。

四、实践操作

1、接线

MAX30102与Arduino的接线:

MAX30102 Arduino 蜂鸣器
GND GND GND
SDA A4 -
SCL A5 -
VIN 5V -
- 8 VCC

2、程序驱动

所用到的程序:

#include <Wire.h>
#include "MAX30105.h"
#include "heartRate.h"
MAX30105 particleSensor;
const byte RATE_SIZE = 4;
byte rates[RATE_SIZE]; // 心率数组
byte rateSpot = 0;
long lastBeat = 0; // 最后记录心率的时间
float beatsPerMinute;
int beatAvg;
int Buzzer;
int pin=8;
void setup()
{Serial.begin(115200);Serial.println("Initializing...");//   初始化传感器if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //   默认使用I2C,400KHZ频率{Serial.println("MAX30105 was not found. Please check wiring/power. ");while (1);}Serial.println("Place your index finger on the sensor with steady pressure.");particleSensor.setup(); //使用默认设置配置传感器particleSensor.setPulseAmplitudeRed(0x0A); // 将红色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; //Wrap variable  //Take average of readings  取读数的平均值beatAvg = 0;for (byte x = 0 ; x < RATE_SIZE ; x++)beatAvg += rates[x];beatAvg /= RATE_SIZE;if (beatsPerMinute > 70){digitalWrite(8,HIGH) ;   //蜂鸣器响delay(1000);           //延时1000msdigitalWrite(8,LOW);   //蜂鸣器关闭}}}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();
}

五、实验结果

未把手指放上时------


把手指放上检测------

其中IR表示脉搏,BPM表示心率,Avg BPM表示平均心率;另外,该实验还添加了报警器,当所测心率值大于70时,蜂鸣器就会报警一次,这样方便大家实时监控自己心率,可以根据自己的情况设定心率波动期间,超出这个范围会报警提示。

实物展示------

六、总结

(1)串口默认波特率为115200,可在‘’ Serial.begin(115200)‘’语句进行波特率更改如(9600)。
(2)脉搏传感器必须紧贴人体,刚开始波动值较大,等到十几秒后数值趋于稳定,此时所测心率与实际值在精度范围内,模块在长时间使用过程中数据正常。

Arduino驱动MAX30102心率血氧传感器模块相关推荐

  1. 电子模块|心率血氧传感器模块MAX30102及其驱动代码

    电子模块|心率血氧传感器模块MAX30102及其驱动代码 实物照片 模块简介 工作原理 原理图及引脚说明 STM32软件驱动 IIC通信代码 数值转换代码 main函数 结果 实物照片 模块简介 MA ...

  2. 心率血氧传感器模块MAX30102

    心率血氧传感器模块MAX30102实物图 模块简介 MAX30102是一个集成的脉搏血氧仪和心率监测仪生物传感器的模块. 它集成了一个红光LED和一个红外光LED.光电检测器.光器件,以及带环境光抑制 ...

  3. STM32学习值传感器篇——max30102心率血氧传感器

    这个传感器让我了解了很多,以前使用的单片机,基本没有遇见过堆栈溢出的问题,这个传感器让我遇到了,在此记录调试心得. 首先把所有驱动文件都贴出来了 心率血氧算法代码 algorithm.h /** \f ...

  4. 京微齐力:基于HMEP060的心率血氧模块开发(1:FPGA发送多位指令)

    目录 日常·唠嗑: 实验结果 一.硬件解析 1.国产FPGA:HMEP060 2.MAX30102心率传感器模块 二.程序设计 1.波特率计算(25MHz时钟) 2.顶层模块 3.子模块 三.工程获取 ...

  5. Arduino - 驱动HC-SR501 人体红外感应模块

    参考文章: Arduino - 驱动HC-SR501 人体红外感应模块 Arduino 使用人体红外感应模块 HC-SR501 代码如下: /* Arduino 驱动HC-SR501 人体红外感应模块 ...

  6. Arduino使用 MAX30102心率传感器

    1.1 介绍: MAX30102心率传感器主要用到MAX30102EFD元件,它是一个集成脉搏血氧仪和心率监视仪的传感器.它集成了一个红外LED和一个红外光LED.光电检测器.光器件,以及带环境光抑制 ...

  7. MAX30100心率血氧模块

    文章目录 一.MAX30100是什么? **MAX30100参数** ***什么是光容积法?*** **(补充说明:)** 二.软件部分 一.MAX30100是什么? MAX30100是一款能测量心率 ...

  8. STM32+Air202+Air530+HXDZ-30102-ACC心率血氧GPS采集上传到阿里云

    主要功能 HXDZ-30102-ACC采集心率血氧数据 STM32通过串口将数据转发到air202模块 air202将数据上传到阿里云平台进行展示与处理 整合合宙air530GPS模块,将定位数据上传 ...

  9. 用ESP32+max30102制作血氧检测

    材料 ESP WROOM 32位开发板 MAX30102 心率血氧传感器 0.96寸 4P OLED显示屏 因为MAX30102和 OLED显示屏都是通过I2C跟ESP开发板链接,所以需要自定义一对接 ...

  10. 实时监测心率血氧,血压,微循环,脉搏波,健康检测模块方案

    JFH142体表健康检测模块是惊帆科技研发的多光谱生理数据测量模块,用于人体体表的健康检测模块,可准确测量脉搏波形.心率值.血氧值和血管微循环 参数等信息.得益于获专利保护的前端传感器技术,模块灵敏度 ...

最新文章

  1. 全新目标检测范式SparseR-CNN,超详细实战教学(附数据集)
  2. maven mybatis mysql_Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问...
  3. [转]mysql使用关键字作为列名的处理方式
  4. 【Android 属性动画】属性动画 Property Animation 工作原理 ( 线性插值动画 | 非线性插值动画 | 动画计算 | 经过分数 | 插值分数 | 类型估值器)
  5. Yii2 的小贴士用法
  6. mysql用sql语句怎么做个脚本备份_mysql备份脚本
  7. leetcode74. 搜索二维矩阵(二分查找)
  8. MyBatis中三种分页查询方式
  9. php中fastcgi和php-fpm是什么东西
  10. Blue Jeans - POJ 3080(多串的共同子串)
  11. Cocos2d-x中点九图(Scale9Sprite)创建图片按钮
  12. TensorFlow中tf.ConfigProto()配置Sesion运算方式
  13. simotion基本功能手册_深入浅出西门子运动控制器:SIMOTION实用手册
  14. 配置文件(properties类)
  15. 图像目标检测和视频目标检测文献综述
  16. Windows11 正式版 iso镜像下载
  17. html手机打不开是什么,手机打不开微信的网页怎么办?手机打不开微信网页的原因和解决方法...
  18. 图片转excel怎么弄?简单实用的方法
  19. compatible version of org.springframework.boot.actuate.health.CompositeHealthIndicator
  20. 162Echarts - 桑基图(Sankey Diagram)

热门文章

  1. win10外放与耳机不能够自动切换没有声音的问题 声卡问题
  2. 5W1H 图书管理系统
  3. 图像匹配 一些基本算法
  4. 谁才是中国企业服务的教父?
  5. 在谷歌浏览器中安装IE Tab插件
  6. 米思齐MT1637简单显示字符串和时间
  7. 【黑马程序员西安中心】一个内向青年的转变
  8. 原油期货开户条件和流程是什么?
  9. Matlab——线性规划模型
  10. 斐讯K2破解任意校园网教程