使用STM32和Max30102传感器测量心率和血氧饱和度

主要功能

       测量血氧和心率数值并实时显示在一块OLED屏幕上,可设置测量值的报警范围,实现对心率血氧异常测量值的报警功能。

物料清单

 PCB

实物图

程序编写 

驱动程序主要参考淘宝店家给的例程:myiic.c  max30102.c  algorithm.c。

#include "stm32f10x.h"
#include "SysTick.h"
#include "timer.h"
#include "string.h"
#include "oled.h"
#include "delay.h"
#include "key.h"
#include "stdio.h"
#include "BUZZ.h"
#include "max30102.h"
Tim Tim2_T;
DELAY_t DELAY_T;
key_t Key_T;
Menu_t Menu_T;
vu8 Timer0_start;
u8 shijian;
u8 Times;
timer_t Timer4_T; 
extern const char xin_lv[];
extern const char xue_yang[];
extern const char xin_lv_ce_shi_yi[];
extern const char shu_zhi[];
extern const char yu_zhi[];
int main(void)
{
	NVIC_Configuration();                          //中断管理程序
	SysTick_Init_Config();                         //系统时钟管理
	delay_init();                                  //延时函数初始化
	Timer2_Init_Config(7199, 9999);                //1s进一次中断
	TIM4_Int_Init(9,7199);                         //定时器按键扫描
	Key_Init();                                    //按键初始化
	BUZZ_INIT();                                   //蜂鸣器初始化
	OLED_Init();                                   //液晶屏初始化
	OLED_Clear();   	//液晶屏清屏幕
	OLED_Show_Chinese(34, 0, shu_zhi, 2);         //  液晶屏显示“数值”
		OLED_Show_Chinese(80, 0, yu_zhi, 2);         //液晶屏显示“阈值”
	OLED_Show_Chinese(0,  3, xin_lv, 2);           //液晶屏显示“心率”
	OLED_Show_Chinese(0,  5, xue_yang, 2);         //液晶屏显示"血氧"
	LCD_DISPLAY_HR_SPO2();                         //在液晶上显示初试的心率和血氧
	LCD_DISPLAY_HR_THRESHOLD();                    //在液晶上显示设置的阈值
	max30102_init();                               //血氧模块初始化
	while(1)                                        //进入循环
	{		
		key_action();//按键检测处理程序
		MAX30102_READ_HEART_RATE();//读取血氧和心率,并在液晶上显示,如果心率超过阈值,则报警
		ALARM_BUZZ();//如果血氧超过阈值,则报警
		
		if(Tim2_T._1s_Flag == 1)//1S中周期进程
		{
			Tim2_T._1s_Flag = 0;
			LCD_DISPLAY_HR_THRESHOLD();//液晶内容更新
		}	
	}
}

作者:划水cc

物联沃分享整理
物联沃-IOTWORD物联网 » 使用STM32和Max30102传感器测量心率和血氧饱和度

发表评论