功能介绍:采用stm32单片机作为主控CPU,采用MAX30102传感器采集心率和血氧浓度,采用LMT70传感器采集温度,OLED显示,并且数据通过蓝牙HC05模块传输到手机APP,可以通过按键设置温度上限值,超过上限值蜂鸣器报警,并且检测到血氧不正常(低于92%)时蜂鸣器也进行报警,可以通过按键打开和关闭报警系统,文末有资料分享:
16-基于stm32单片机心率血氧LMT70温度检测蓝牙上传手机APP(程序+原理图+元件清单全套资料)
程序部分展示,有中文注释,新手容易看懂
int main(void)
{
int i=0;
USART_CONFIG();
printf("这是串口调试助手\r\n");
IIC_GPIO_INIT();//初始化IIC接口
OLED_Init(); //初始化OLED接口
fill_picture(0x00);
KEY_Init();//初始化按键
LED_Init();//初始化LED
LED=1;Q1=1;
MAX30102_GPIO();//初始化心率传感器IO
Max30102_reset();//复位心率传感器
MAX30102_Config();
for(i = 0;i < 128;i++) //开始校验心率传感器
{
while(MAX30102_INTPin_Read()==0)
{
//读取FIFO
max30102_read_fifo();
}
}
bsp_Lmt70Init();//初始化lmt70传感器
bsp_Lmt70Enable();
while(1)
{
bsp_GetAdAverageValue(); //读值
blood_Loop();
if(0 == bsp_ReadLmt70TemperatureInFloat(&fTemperature,ADC_AverageValue[0]))
{
printf("LMT70:%2.2f C\r\n",fTemperature);
}
else
{
printf("LMT70 Measure Error!\r\n");
}
bsp_ReadLmt70TemperatureInInt(&iTemperature,ADC_AverageValue[0]);
OLED_Printf_EN(0,0,"LMT70:%2.2f%C ",fTemperature);
if(KEY0==0) //按键+
{
HTEMP++;
if(HTEMP>99) HTEMP=99;
}
if(KEY1==0) //按键-
{
HTEMP--;
if(HTEMP<1) HTEMP=1;
}
if(KEY2==0) LED=~LED; //按键测试指示
if(iTemperature>HTEMP*10&&buf==0) //大于值 进行报警
{
LED=0;
Q1=0;
}
else
{
LED=1;
Q1=1;
}
if(KEY2==0)//关闭报警
{
buf++;
if(buf>1) buf=0;
下面是原理图文件展示: