STM32-HAL库 - MAX30102心率血氧传感器 —— 2024.10.15

一、教程简介

        本教程使用CubeMX配合Keil5编写代码,带你10分钟拿下MAX30102。在官方例程的基础上进行移植和封装,测量数据准确。采用模拟I2C,任意三个引脚均可驱动。

二、MAX30102简介

         MAX30102是一个集成的脉搏血氧仪和心率监测仪生物传感器的模块。它集成了一个红光LED和一个红外光LED、光电检测器、光器件,以及带环境光抑制的低噪声电子电路。MAX30102采用一个1.8V电源和一个独立的5.0V用于内部LED的电源,应用于可穿戴设备进行心率和血氧采集检测,佩戴于手指点耳垂和手腕处。标准的I2C兼容的通信接口可以将采集到的数值传输Arduino、KL25Z、STM32、STC51等单片机进行心率和血氧计算。

        此外,该芯片还可以通过软件关断模块,待机电流接近为零,实现电源始终维持供电状态。

三、驱动移植

(一)CubeMX生成基础工程

1、选择芯片,这里选择STM32F103c8t6

2. 配置Debug(SW模式)

3. 配置时钟

 4.配置MAX30102驱动引脚(可任意选择,只要接线按照自定义的引脚来接就行)

    这里选择B7-SCL,B8-SDA,B9-INT。

    选择合适的SCL引脚,将其重命名为:MAX30102_SCL

 选择合适的SDA引脚,将其重命名为:MAX30102_SDA

选择合适的INT引脚,将其重命名为:MAX30102_INT 

5、配置串口,用于输出测量结果

 6、生成工程文件

(二)获取驱动源码

       1、 请添加威信:able078  

       2、 发送信息:获取MAX30102驱动

        我投入了大量时间与精力开发这款驱动,为了能继续提供更优质的驱动资源,获取驱动文件需要付费。

        请相信,免费的未必是最经济的选择,而投资于高质量的资源,往往能带来超乎预期的回报。本驱动有着极高的易用性和兼容性,只需遵循简明教程,几乎可在10分钟内移植成功。可为您节省大量的开发时间。

(三)Keil5编写代码

1、添加驱动文件:打开生成的项目文件夹,分别将两个 .c 文件和两个 .h 文件移入下图所示的文件夹中。

2、 打开工程

3、添加编译文件

 

 4、引用头文件

/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "usart.h"
#include "gpio.h"/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "max30102.h"
/* USER CODE END Includes */

5、定义两个变量,用于存储测量到的心率数据和血氧数据

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
uint8_t Hr_Value   = 0; //心率数值
uint8_t Spo2_Value = 0; //血氧数值
/* USER CODE END PM */

6、在main函数中进行MAX30102的初始化

 /* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */max30102_init();/* USER CODE END 2 */

7、 在while(1)中循环读取数据

  /* Infinite loop *//* USER CODE BEGIN WHILE */while (1){HAL_Delay(1000);Get_Hr_Spo2_Value(&Hr_Value,&Spo2_Value);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}

8、编译、下载

四、电路连接

MAX30102模块单片机说明
VIN~>5V 模块的VIN接入5V电源
GND~>GND 模块的任意一个GND接电源地
SCL~>MAX30102_SCL模块的SCL连接CubeMX中定义的MAX30102_SCL
SDA~>MAX30102_SDA模块的SDA连接CubeMX中定义的MAX30102_SDA
INT~>MAX30102_INT模块的INT 连接CubeMX中定义的MAX30102_INT

五、效果验证

可以看到下面动图中的心率及血氧浓度在稳定的刷新,且数据波动平稳。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/55799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tortoise SVN 安装汉化教程(乌龟SVN)

1.首先下载 去官网下载 如果下载比较慢的,链接自取 https://pan.quark.cn/s/cb6f2eee3f90 2. 安装Tortoise SVN 无脑next到完成 最后到桌面右键 你就发现svn出来了,但是是英文的!!!! 像我这种英文不好的…

流体力学笔记

目录 1、名词2、湍流与涡流3 涡激振动4 压力面与吸力面参考:[空气动力学的“他山之石”](https://zhuanlan.zhihu.com/p/412542513) 1、名词 转列:transition 涡脱落:vortex shedding 涡分离:vortex rupture 气动噪声&#xff1a…

【java Web如何开发?】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

rel,npt时间服务器

服务器端配置 配置文件/etc/chrony.conf 开放端口 查看123端口是否开放 关闭防火墙 客户端配置 配置文件/etc/chrony.conf 重启文件和查看是否成功 注意事项要在ping通下实现,要是能ping通配置好了还是不行可以查看防火墙是否关闭

EMCMO--多任务优化求解约束多目标问题

EMCMO–多任务优化求解约束多目标问题 title: An Evolutionary Multitasking Optimization Framework for Constrained Multi-objective Optimization Problems author: Kangjia Qiao, Kunjie Yu, BoyangQu, Jing Liang, Hui Song, and Caitong Yue. …

Redis7 数据类型

Redis7 数据类型 文章目录 Redis7 数据类型1. Redis键(Key)2. Redis字符串(String)3. Redis列表(List)4. Redis哈希表(Hash)5. Redis集合(Set)5.1 常用操作5.…

Atlas800昇腾服务器(型号:3000)—驱动与固件安装(一)

服务器配置如下: CPU/NPU:鲲鹏 CPU(ARM64)A300I pro推理卡 系统:Kylin V10 SP1【下载链接】【安装链接】 驱动与固件版本版本: Ascend-hdk-310p-npu-driver_23.0.1_linux-aarch64.run【下载链接】 Ascend-…

Vue3学习:vite项目中图片不能显示,报错 require is not defined

今天做了一个案例“给你喜欢的人送花”,如果喜欢谁,就给谁送花,最多可以送5朵。运行效果如下。 这个项目是使用 npm create vitelatest 命令创建的。 包括2个组件: 根组件App.vue子组件HelloVote.vue。 目录结构如图所示&#x…

秋招面试题记录_半结构化面试

c八股(可能问的多一点) 1.简单说说C11语法特性 答: 1.auto以及decltype自动类型推导,避免手动声明复杂类型,减少冗长代码提升了可读性和安全性。 2.智能指针 自动释放内存 (具体说说) 有shared和unique 差异主要体现在所有权、内存开销、…

Java项目-基于springboot框架的校园在线拍卖系统项目实战(附源码+文档)

作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 开发运行环境 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/…

Java的walkFileTree方法用法【FileVisitor接口】

在Java旧版本中遍历文件系统只能通过File类通过递归来实现,但是这种方法不仅消耗资源大而且效率低。 NIO.2的Files工具类提供了两个静态工具方法walk()和walkFileTree()可用来高效并优雅地遍历文件系统。walkFileTree()功能更强,可自定义实现更多功能&am…

(二十)、从宿主机访问 k8s(minikube) 发布的 redis 服务

文章目录 1、环境准备2、具体操作2.1、启动 minikube (start/stop)2.2、准备 redis-deployment.yaml2.3、执行 redis-deployment.yaml2.3.1、查看 pod 信息和日志 2.4、检查部署和服务状态2.4.1、如果需要删除 3、查看 IP 的几个命令3.1、查看IP的几个命令3.2、解读3.3、宿主机…

k8s的部署和安装

k8s的部署和安装 一、Kubernets简介及部署方法 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个阶段: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参…

HarmonyOS Next模拟器异常问题及解决方法

1、问题1:Failed to get the device apiVersion. 解决方法:关闭模拟器清除用户数据重启

电子商务网站维护技巧:保持WordPress、主题和插件的更新

在这个快节奏的数字时代,维护一个电子商务网站的首要任务之一是保持WordPress、主题和插件的最新状态。过时的软件不仅可能导致功能故障,还可能带来安全风险。本文将深入探讨如何有效地更新和维护您的WordPress网站,以确保其安全性和性能。 …

【天池比赛】【零基础入门金融风控 Task2赛题理解】【2.3.6】

【天池比赛】【零基础入门金融风控 Task2赛题理解】【2.3.1-2.3.5】 2.3.6 变量分布可视化 2.3.6.1 单一变量分布可视化 对于 pandas.core.series.Series 类型的变量: index:含义:它表示 Series 对象的索引,也就是每个数据点对…

Docker-Consul概述以及集群环境搭建

文章目录 一、Docker consul概述二、consul 部署1.consul服务器2.registrator服务器(客户端)2.consul-template(在consul服务器)3.consul 多节点 一、Docker consul概述 容器服务更新与发现:先发现再更新,…

FFmpeg 4.3 音视频-多路H265监控录放C++开发三 :安装QT5.14.2, 并将QT集成 到 VS2019中。

一,安装QT, 重点:在安装QT的时候要安装msvc201x版本的组件, 二 , 安装 qt-vs-tools Index of /development_releases/vsaddin/2.8.1 三,需要安装过 windows10 SDK,一般我们在安装vs2019的时候就…

【MR开发】在Pico设备上接入MRTK3(三)——在Unity中运行MRTK示例

在前面的文档中,介绍了如何在Unity工程中配置号MRTK和Pico SDK 【MR开发】在Pico设备上接入MRTK3(一)在Unity中导入MRTK3依赖【MR开发】在Pico设备上接入MRTK3(二)在Unity中配置Pico SDK 本文将介绍如何运行一个简单…

Docker 安装sql server 登陆失败

错误: Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate]. Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : Client unable to establish co…