STM32心率血氧手环项目详解:硬件设计与软件编程
创作时间:
作者:
@小白创作中心
STM32心率血氧手环项目详解:硬件设计与软件编程
引用
CSDN
1.
https://blog.csdn.net/qq_44016222/article/details/139711321
本文分享了一个基于STM32的心率血氧手环项目,详细介绍了项目的功能、硬件设计、软件编程以及实验效果。项目集成了心率血氧监测、计步、时间显示、温度监测、蓝牙控制等多种功能,具有较高的实用性和技术参考价值。
一、前言
项目成品图片:
二、项目简介
1.功能详解
基于STM32的心率血氧手环(可报警)。功能如下:
- 心率血氧采集:MAX30102采集人体心率和血氧
- 计步:ADXL345三轴加速传感器记录人行走步数
- 时间显示:外部DS1302时钟模块读取和保存当前实时时间(支持掉电保存)
- 温度采集:DS18B20温度传感器采集人体体温
- OLED显示:显示当前时间、体温、心率、血氧和步数信息
- 按键控制:调整时间和日期,为心率、血氧和体温设置正常阈值范围
- 异常报警:当心率、血氧和体温在阈值范围外时触发声光报警(蜂鸣器报警、指示灯闪烁)
- 蓝牙APP控制:手机端蓝牙app显示心率、血氧、体温和步数信息,并可设置阈值上下限和控制步数清零
- 跌倒检测:板子倾斜90°持续5秒以上触发跌倒监测报警
2.主要器件
- STM32F103C8T6最小系统板
- OLED显示屏(4针I2C协议)
- MAX30302心率血氧传感器
- ADXL345加速度传感器
- DS18B20温度传感器
- 蓝牙模块(BT04-A)
- 蜂鸣器
- LED灯
三、原理图设计
四、PCB硬件设计
1.PCB图
2.PCB板打样焊接图
五、程序设计
int main(void)
{
unsigned char i;
DelayInit();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
I2C_Configuration(); //IIC初始化
OLED_Init(); //OLED初始化
KEY_Init(); //按键初始化
DelayMs(200);
CheckNewMcu();
OLED_CLS();//清屏
DS18B20_Init();
DS1302_Init(&SysDate);
DelayMs(100);
for(i=0;i<8;i++)OLED_ShowCN(i*16,2,i+8,0);//测试显示中文:欢迎使用使能手环
DelayMs(1000);
OLED_CLS();//清屏
DS1302_DateRead(&SysDate);//读时间
OLED_CLS();//清屏
for(i=0;i<2;i++)OLED_ShowCN(i*16,4,i+16,1);//测试显示中文:心率
for(i=0;i<2;i++)OLED_ShowCN(i*16+48,4,i+18,1);//测试显示中文:血氧
for(i=0;i<2;i++)OLED_ShowCN(i*16+95,4,i+20,1);//测试显示中文:步数
OLED_ShowCentigrade(112, 2); //℃
IIC_init();//IIC初始化
uart1_Init(9600);
adxl345_init();//ADXL345初始化
Init_MAX30102();//MAX30102初始化
TIM2_Init(99,719); //定时器初始化,定时1ms
//Tout = ((arr+1)*(psc+1))/Tclk ;
//Tclk:定时器输入频率(单位MHZ)
//Tout:定时器溢出时间(单位us)
while(1)
{
shanshuo=!shanshuo;
KeySettings();
DisplayTime();
if(setn == 0)//不在设置状态下,读取相关数据
{
DisplayTemperature();
GetSteps();
GetHeartRateSpO2();
if(fallTime==0)
{
if(displayfall==0)
{
displayfall=1;
OLED_CLS();//清屏
for(i=0;i<3;i++)OLED_ShowCN(i*16+48,2,i+64,0);//测试显示中文:跌倒
UsartSendReceiveData();
DelayMs(1000);DelayMs(1000);
OLED_CLS();//清屏
for(i=0;i<2;i++)OLED_ShowCN(i*16,4,i+16,1);//测试显示中文:心率
for(i=0;i<2;i++)OLED_ShowCN(i*16+48,4,i+18,1);//测试显示中文:血氧
for(i=0;i<2;i++)OLED_ShowCN(i*16+95,4,i+20,1);//测试显示中文:步数
OLED_ShowCentigrade(112, 2); //℃
}
}
}
UsartSendReceiveData();
DelayMs(10);
}
}
void TIM2_IRQHandler(void)//定时器2中断服务程序,用于记录时间
{
static u16 timeCount1 = 0;
static u16 timeCount3 = 0;
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update); //清除中断标志位
timeCount1 ++;
if(timeCount1 >= 800)
{
timeCount1 = 0;
sendFlag = 1;
if(tiltFlag)
{
if(fallTime>0)fallTime--; //跌倒时间倒计时
}
}
timeCount3 ++;
if(timeCount3 >= 100)
{
timeCount3=0;
if(fallTime==0){ //跌倒蜂鸣器报警
BEEP=1;
}
else
{
if(((hrAvg!=0)&&(hrAvg>=xinlvMax||hrAvg<=xinlvMin))||((spo2Avg!=0)&&(spo2Avg<=spo2Min))||(temperature>=tempMax||temperature<=tempMin))//不在范围蜂鸣器报警
{
BEEP=~BEEP;
beepFlag|=0x01;
}else
{
beepFlag&=0xFE;
BEEP=0;
}
}
}
}
}
六、实验效果
七、资料内容
项目分享
热门推荐
职场高效沟通技巧:如何改善与上司的关系?
打造高效学习环境的全面指南:从物理、心理到时间管理
交警明确:电动车、三轮车上路要考驾照,考试流程、费用一起看
CNNIC报告:我国网上外卖用户规模达5.45亿,网络支付用户达9.54亿
面部偏斜知多少——“偏颌畸形”的诊与治
2024年,长三角地区将开通6条高铁,浙江和安徽是大赢家
天籁2.0应使用什么型号的机油?
毕业季,这10部职场励志电影,让你充满力量
风力发电机组设计全攻略:从方案设计到认证要求
驾驶报废摩托车如何处理?不报废能否销户?
预算10000元左右,选择电视机还是投影仪?
创新引领,水到汽成——核电最大化水子项助力“和气一号”顺利投产
同是坐拥千万粉丝,giao哥年入千万,为何冬泳怪鸽却家徒四壁?
嘴干怎么办?尝试这些饮品以缓解口渴!
国际首创:“打一针”让锂电池“满血复活”,复旦大学新方案登上《自然》
日本留学语言考试要求详解
唐·李白《独坐敬亭山》:众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。
“和气一号”核能供汽项目建成投产
第2次装修,我把家里的空开换成了漏保,不是矫情,安全太重要了
沙粒和珠峰:微积分原理及运用实例
仓库照明标准:如何选择最优照明方案
孩子说脏话、狠话,你的回应决定他的未来
什么病会引起皮肤瘙痒起疙瘩
如何获取API密钥:步骤、安全设置与使用指南
中国985大学总排名出炉!华科第8,北航位居15,北理工出现退步
口腔CBCT的临床应用
离岸平衡、海上霸权、工业革命,英国策动反法同盟的动因和倚仗
不足半月,娱乐圈4位明星接连被捕,人设崩塌引热议
腹式呼吸:从基础到进阶,全面改善身心健康的呼吸方法
肠胃炎伴有浑身酸痛是怎么回事