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

五、效果验证

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

作者:智控工作室

物联沃分享整理
物联沃-IOTWORD物联网 » STM32-HAL库 – MAX30102心率血氧传感器 —— 2024.10.15

发表回复