当前位置: 首页 > news >正文

第八篇、基于Arduino uno,获取MAX30102心率传感器的心率信息——结果导向

0、结果

说明:先来看看串口调试助手显示的结果,第一个值是原始的IR值,第二个值是实时的心跳,第三个值是平均心跳,如果是你想要的,可以接着往下看。


1、外观

 说明:MAX30102心率传感器的外观如下。

2、连线

说明:只需要连接四根线。
uno————MAX30102心率传感器

       5V--------------VCC
   GND--------------GND
    SCL--------------SCL
    SDA--------------SDA

 3、源程序

说明:本程序将对应功能进行函数化,方便移植。

/*********************************max30102 part********************************************************************/#include <Wire.h>                                                   //include libaray
#include "MAX30105.h"                                               //include libaray
#include "heartRate.h"                                              //include libarayMAX30105 particleSensor;                                            //Instantiate objectconst byte RATE_SIZE = 4;                                           //Increase this for more averaging. 4 is good.
byte rates[RATE_SIZE];                                              //Array of heart rates
byte rateSpot = 0;
long lastBeat = 0;                                                  //Time at which the last beat occurred
float beatsPerMinute;                                               //Define a variable
int beatAvg;                                                        //Define a variablevoid setup() {Serial.begin(9600);                                               //Example Set the baud rate of the serial port to 9600if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) {                 //Use default I2C port, 400kHz speed{Serial.println("MAX30105 was not found. Please check wiring/power. ");}Serial.println("Place your index finger on the sensor with steady pressure.");particleSensor.setup();                                            //Configure sensor with default settingsparticleSensor.setPulseAmplitudeRed(0x0A);                         //Turn Red LED to low to indicate sensor is runningparticleSensor.setPulseAmplitudeGreen(0);                          //Turn off Green LEDSerial.println("Go online!");
}
void loop() {getMax30102Data();                                                 //Acquiring heart rate
}
/*********************************max30102 part********************************************************************/
/*Acquiring heart rate*/
void getMax30102Data() {long irValue = particleSensor.getIR();                             //Obtain IR data if (checkForBeat(irValue) == true){long delta = millis() - lastBeat;lastBeat = millis();beatsPerMinute = 60 / (delta / 1000.0);if (beatsPerMinute < 255 && beatsPerMinute > 20){rates[rateSpot++] = (byte)beatsPerMinute;                     //Store this reading in the arrayrateSpot %= RATE_SIZE;                                        //Wrap variablebeatAvg = 0;                                                  //Take average of readingsfor (byte x = 0 ; x < RATE_SIZE ; x++) {beatAvg += rates[x];}beatAvg /= RATE_SIZE;}}if (irValue <= 10000) {                                           //Return to zerobeatAvg = 0;beatsPerMinute = 0;}Serial.print("IR=");                                              // The serial port displays the corresponding valueSerial.print(irValue);                                            // The serial port displays the corresponding valueSerial.print(", BPM=");Serial.print(beatsPerMinute);                                     // The serial port displays the corresponding valueSerial.print(", Avg BPM=");Serial.println(beatAvg);                                          // The serial port displays the corresponding valueif (irValue < 50000) {Serial.print(" No finger?");                                    // The serial port displays the corresponding valueSerial.println();}
}

4、注意事项

说明:如果上传程序之后,传感器没有亮红灯,那么可能需要再上传一次程序,直到亮红灯为止。手放在传感器上的时候,尽量不用碰到周围的元器件,不然会导致短路,IIC通讯会中断。如果是坐着测的,虽然会有一个心跳值,但是这个值会一直降低,所以使用的时候,一定要站起来,这样会准确一些。

5、基本原理

        MAX30102传感器是一种集成了LED发光二极管和光电检测器的数字脉搏氧饱和度测量模块。它可以通过光电检测来实现对心率的测量,具体原理如下:
        MAX30102传感器内部有两颗LED发光二极管,它们能够分别发出不同波长的光,通常包括红色和红外线光。这两种光波长在穿透皮肤后会被血液吸收和反射,导致指尖的血液呈现出不同的颜色。根据Lambert-Beer定律,这两种不同波长的光经过指尖时会因为被血液吸收而弱化,其强度与指尖处血液的氧合程度相关。
        当MAX30102传感器的LED发光二极管发出光后,光电检测器会接收到由指尖反射回来的光信号。这些被接收到的光信号会被放大并转换为数字信号,然后进行数据处理,最终得到血氧饱和度和心率等生理参数。
        传统的心率测量方法需要依靠心电图仪等专业仪器,而MAX30102传感器则在单一小模块中集成了多种功能,极大地方便了用户的使用。同时,MAX30102还具有省电、数据稳定性好等优点,使其在医疗监测、健康追踪等领域得到广泛应用。

相关文章:

第八篇、基于Arduino uno,获取MAX30102心率传感器的心率信息——结果导向

0、结果 说明&#xff1a;先来看看串口调试助手显示的结果&#xff0c;第一个值是原始的IR值&#xff0c;第二个值是实时的心跳&#xff0c;第三个值是平均心跳&#xff0c;如果是你想要的&#xff0c;可以接着往下看。 1、外观 说明&#xff1a;MAX30102心率传感器的外观如下…...

【MySQL】MySQL主从同步延迟原因与解决方案

文章目录 一、MySQL数据库主从同步延迟产生的原因二、关于DDL和DML三、主从延时排查方法四、解决方案3.1 解决从库复制延迟的问题&#xff1a;3.2 MySql数据库从库同步其他问题及解决方案 一、MySQL数据库主从同步延迟产生的原因 MySQL的主从复制都是单线程的操作&#xff0c;…...

学C的第二十二天【深度剖析数据在内存中的存储:1. 数据类型介绍;2. 整型在内存中的存储】

相关代码gitee自取&#xff1a;C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a;学C的第二十一天【初阶测评讲解&#xff1a;1. 计算递归了几次&#xff1b;2. 判断 do while 循环执行了几次&#xff1b;3. 求输入的两个数的最小公倍数&#xff1b;4. 将一句话的单词进…...

测试计划模板一

测试计划 修订历史记录 版本        日期       AMD       修订者      说明      1.0 XXXX年XX月XX (A-添加,M-修改,D-删除) 目录 1. 简介.. 4 1. 1目的... 4 1. 2背景... 4...

【利用AI让知识体系化】5种创建型模式

文章目录 创建型模式简介工厂模式抽象工厂模式单例模式建造者模式原型模式 创建型模式 简介 创建型模式&#xff0c;顾名思义&#xff0c;是用来创建对象的模式。在软件开发中&#xff0c;对象的创建往往比一般的编程任务更为复杂&#xff0c;可能涉及到一些琐碎、复杂的过程…...

Unity的UnityStats: 属性详解与实用案例

UnityStats 属性详解 UnityStats 是 Unity 引擎提供的一个用于监测游戏性能的工具&#xff0c;它提供了一系列的属性值&#xff0c;可以帮助开发者解游戏的运行情况&#xff0c;从而进行优化。本文将详细介绍 UnityStats 的每个属性值&#xff0c;并提供多个使用例子帮助开发者…...

TDengine集群搭建

我这里用三台服务器搭建集群 1、如果搭建集群的物理节点上之前安装过TDengine先卸载清空&#xff0c;直接执行以下4条命令 rmtaos rm -rf /var/lib/taos rm -rf /var/log/taos rm -rf /etc/taos2、确保集群中所有主机开放端口 6030-6043/tcp&#xff0c;6060/tcp&#xff0c;…...

Android 12.0无源码apk设置默认启动Launcher的相关属性

1.概述 在12.0的系统产品开发中,对于一些产品的需求,需要将一些无源码app的某个MainActivity作为启动Launcher页面的功能实现,由于没有源码,所以需要 利用PMS的安装解析apk的AndroidManifest.xml的时候,在判断是某个Activity的时候,设置Lancher属性来实现某些功能 2.无源…...

js深拷贝和浅拷贝

&#x1f449;十分钟学会 前端面试题 js 深拷贝与浅拷贝_前端深拷贝和浅拷贝面试题_Mar-30的博客-CSDN博客 目录 背景&#xff1a; 概念&#xff1a;核心是创建新地址 方法&#xff1a; 浅拷贝&#xff1a; Object.assign() 方法&#xff1a;Object.assign(拷贝的对象&am…...

CANopenNode Master 配置

文章目录 CANopenNode 简介CANopenNode 主栈SDO ClientPDO 通讯参数RPDO 通讯参数RPDO 通信参数设置实例TPDO 通讯参数TPDO 通信参数设置实例 PDO 映射参数RPDO 映射参数设置实例TPDO 映射参数设置实例 CANopenNode 简介 CANopenNode 是一个开源的免费的开源 CANopen 协议栈。…...

HW之轻量级内网资产探测漏洞扫描工具

简介 RGPScan是一款支持弱口令爆破的内网资产探测漏洞扫描工具&#xff0c;集成了Xray与Nuclei的Poc 工具定位 内网资产探测、通用漏洞扫描、弱口令爆破、端口转发、内网穿透、SOCK5 主机[IP&域名]存活检测&#xff0c;支持PING/ICMP模式 端口[IP&域名]服务扫描 网…...

算法练习-2:送外卖

n 个小区排成一列&#xff0c;编号为从 0 到 n-1 。一开始&#xff0c;美团外卖员在第0号小区&#xff0c;目标为位于第 n-1 个小区的配送站。 给定两个整数数列 a[0]~a[n-1] 和 b[0]~b[n-1] &#xff0c;在每个小区 i 里你有两种选择&#xff1a; 1) 选择a&#xff1a;向前 a[…...

八股总结(六):Android基础:四大组件与UI控件

文章目录 Activity一个APP的启动过程基本概念总图zygote是什么&#xff1f;有什么作用&#xff1f;SystemServer是什么&#xff1f;有什么用&#xff0c;与zygote的关系是什么&#xff1f;为什么称为服务端对象&#xff1f;APP、AMS、zygote是三个独立的进程&#xff0c;他们之…...

【P46】JMeter 响应断言(Response Assertion)

文章目录 一、响应断言&#xff08;Response Assertion&#xff09; 参数说明二、准备工作三、测试计划设计3.1、包括3.2、匹配3.3、相等3.4、字符串3.5、字符串3.6、或者 一、响应断言&#xff08;Response Assertion&#xff09; 参数说明 可以对 Jmeter 取样器的响应消息进…...

19-02 基于业务量级的架构技术选型演进

从零开始——单服务应用 单体应用技术选型 &#xff08;GitHub、Gitee…&#xff09;搜索是否有线程的产品用最熟悉的技术&#xff0c;最快的速度上线如果有经费&#xff1a;考虑商业化解决方案 个人小程序怎么做技术选型的 搜索是否有快速搭建下程序的软件技术选型 后端技…...

Server - 高性能的 PyTorch 训练环境配置 (PyTorch3D 和 FairScale)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/130863537 PyTorch3D 是基于 PyTorch 的 3D 数据深度学习库&#xff0c;提供了高效、模块化和可微分的组件&#xff0c;以简化 3D 深度学…...

小猫踩球-第14届蓝桥杯省赛Scratch中级组真题第2题

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第137讲。 小猫踩球&#xff0c;本题是2023年5月7日举行的第14届蓝桥杯省赛Scratch图形化编程中级组真题第2题&#xf…...

嵌入式开发从入门到精通之第二十一节:三轴加速度传感器(BMA250E)

目录 1、工作模式 2、中断支持的模式 2.1 新数据的产生 2.2 任何斜率的变化的监测...

代码随想录算法训练营第三十六天|435. 无重叠区间 763.划分字母区间 56. 合并区间

目录 LeeCode 435. 无重叠区间 LeeCode 763.划分字母区间 LeeCode 56. 合并区间 LeeCode 435. 无重叠区间 435. 无重叠区间 - 力扣&#xff08;LeetCode&#xff09; 思路1&#xff1a;按照右边界排序&#xff0c;从左向右记录非交叉区间的个数。最后用区间总数减去非交叉…...

shell 脚本

Shell概述 shell是一个命令行解释器&#xff0c;它接收应用程序/用户命令&#xff0c;然后调用操作系统内核 脚本入门 脚本格式 脚本以#!/bin/bash开头&#xff08;指定解析器&#xff09; helloworld # 创建脚本 [linuxlocalhost datas]$ cat helloworld.sh #!/bin/bas…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...