☰
【dz-1176】基于单片机的老人居家安全监测助手的设计与实现【单片机毕业设计】
2026/10/15 19:03:49 网站建设 项目流程

一、功能简介

项目编号:dz-1176
单片机类型:STM32F103C8T6
具体功能:
1、通过MAX30102检测当前用户的心率血氧,心率血氧异常进行声光报警;
2、通过非接触测温模块检测当前用户的体温,体温异常进行声光报警;
3、通过MPU6050监测当前用户的状态及其步数,监测到用户摔倒10s后未站立进行声光报警;
4、通过OLED显示测量数据;
5、 通过按键可以设置心率上下阈值、体温上下阈值、血氧上下阈值。
6、 通过WiFi模块将监测的数据传输到手机端,用户摔倒发送提醒“用户可能摔倒”。


二、系统框图设计

绘制软件:VISIO
本设计以STC89C52单片机为核心控制器,加上其他的模块一起组成常用工业单元电路系统的设计,其中包含中控部分、输入部分和输出部分。中控部分采用了STC89C52单片机,其主要作用是获取输入的部分数据,经过内部处理,控制输出部分。输入由四部分组成,第一部分是温湿度检测模块,通通过DHT11检测温湿度值;第二部分是薄膜压力检测模块,通过该模块检测压力数据值;第三部分是按键模块,通过该模块切换界面、设置距离触发值和距离最小值等;第四部分是供电模块,通过该模块可给整个系统进行供电。输出由三部分组成,第一部分是LCD显示模块,显示温湿度值、压力值等;第二部分是声光报警模块,当压力值不在设置的范围内,进行声光报警提醒;第三部分是继电器(通风)控制电路,当温湿度值大于设置最大值时开启风扇,除此之外,蓝牙模块将检测的数据传输到手机端也可以远程控制通风的开关,系统框图如图3.1所示。

三、32实物图

单片机型号:STM32F103C8T6

板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。

供电接口:TYPE-C

四、原理图

软件版本:AD2013

电路连线方式:网络标号连线方式

注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图

五、PCB图

由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。

两层板,上下覆铜接地。

六、部分程序展示

软件版本:keil5

逻辑程序和驱动程序分开,分布于main.c和其他.c文件

/********************************** 函数名:按键函数 传参值:无 返回值:无 **********************************/ void Key_Function(void) { key_num = Chiclet_Keyboard_Scan(0); //按键扫描,获取键值 if(key_num != 0) //有按键按下 { switch(key_num) { case 1: //按键1:切换界面 display_num++; if(display_num >= 7) { display_num = 0; } Oled_Clear_All(); //清屏 break; case 2: //按键2 switch(display_num) { case 1: //界面1:温度最大值+1 if(temp_max < 99) { temp_max++; } break; case 2: //界面2:温度最小值+1 if(temp_min < temp_max-1) { temp_min++; } break; case 3: //界面3:心率最大值+1 if(pulse_max < 200) { pulse_max++; } break; case 4: //界面4:心率最小值+1 if(pulse_min < pulse_max-1) { pulse_min++; } break; case 5: //界面5:血氧最大值+1 if(SpO2_max < 100) { SpO2_max++; } break; case 6: //界面6:血氧最小值+1 if(SpO2_min < SpO2_max-1) { SpO2_min++; } break; default: break; } break; case 3: //按键3 switch(display_num) { case 1: //界面1:温度最大值-1 if(temp_max > temp_min+1) { temp_max--; } break; case 2: //界面2:温度最小值-1 if(temp_min > 0) { temp_min--; } break; case 3: //界面3:心率最大值-1 if(pulse_max > pulse_min+1) { pulse_max--; } break; case 4: //界面4:心率最小值-1 if(pulse_min > 0) { pulse_min--; } break; case 5: //界面5:血氧最大值-1 if(SpO2_max > SpO2_min+1) { SpO2_max--; } break; case 6: //界面6:血氧最小值-1 if(SpO2_min > 0) { SpO2_min--; } break; default: break; } break; default: break; } } }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询