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

2023-10-09 14:50

本文主要是介绍第八篇、基于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心率传感器的心率信息——结果导向的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/173592

相关文章

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式