一、设计背景和意义
1.1 设计背景
随着医疗技术的进步与人均寿命的提高,全球人口老龄化问题日益严峻。据国家统计局数据显示,中国 60 岁及以上老年人口已接近 3 亿,占全国总人口的比重持续上升,预计在 2035 年前后将进入'深度老龄化'社会。在这一背景下,传统的家庭照护与机构养老服务日益显现出人力紧张、响应不及时、监护盲区等诸多现实问题,尤其是针对独居、高龄、慢性病患者等重点老年群体,其突发性健康事件(如高热、低血氧、心律异常、意外摔倒)极具风险,若未能及时发现与干预,极易造成严重后果。
1.2 设计意义
本课题的研究不仅具有突出的技术整合与工程实现价值,更体现了信息技术在社会民生领域的广泛应用前景。通过构建低成本、可部署、功能完备的养老监护系统,不仅能够有效填补传统养老方式在安全监护方面的不足,还可为社区居家养老、智慧医疗、远程健康管理等更广泛的应用场景提供技术支撑,具有较高的社会价值与推广潜力。
二、实物效果展示
2.1 实物图片

2.2 实物演示视频
基于 STM32 的人体健康监测系统
三、硬件功能简介
3.1 项目功能详解
- 传感器检测:检测体温、心率、血氧等健康相关数据
- 跌倒检测:ADXL345 检测是否跌倒
- GPS 定位:实时检测定位坐标的经纬度数据
- 数据显示:0.96OLED 屏幕显示全部的传感器数据以及传感器的阈值等数据
- App 远程监控:通过蓝牙模块连接 App 远程监控全部传感器数据
- 阈值数据设定:系统通过按键设定阈值
- 报警:检测到体温超过阈值、心率超过阈值、血氧低于阈值会开启或检测到摔倒蜂鸣器报警
3.2 元器件清单
- 主控 STM32F103C8T6 最小系统板
- 0.96OLED 显示屏幕
- ESP8266 联网 WIFI(ESP01S)
- DS18B20 温度传感器
- MAX30102 心率血氧传感器
- ADXL345 三轴加速度传感器
- GPS 定位模块
- 按键
四、主框图与软件流程图
主框图

流程图

五、硬件 PCB 展示


六、软件程序设计
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "string.h"
#include "max30102.h"
#include "ds18b20.h"
#include "beep.h"
#include "key.h"
#include "timer.h"
#include "oled.h"
#include "adxl345.h"
#include "iic.h"
double lat_minutes = 32.138118;
double lon_minutes = 116.447290;
#define GPS_STR_LEN 48
unsigned char display[16];
/**** 数据变量 ****/
int temp_door = 38;
int oxy_door = 90;
int heart_door = 100;
uint8_t send_time = 3;
uint8_t printd_flag = 0;
adx,ady,adz;
acc,acc2;
tiltFlag = ;
fallTime = ;
option = ;
key_num = ;
page_id = ;
;
;
;
;
;
{
delay_init();
OLED_Init();
uart2_init();
USART1_Config();
uart3_init();
DS18B20_Init();
MAX30102_Init();
un_min=;
un_max=;
Max30102_right_data();
BEEP_Init();
beep = ;
KEY_Init();
IIC_init();
adxl345_init();
TIME_Config();
() {
get_all_sensor_data();
(Time_Period[]>)
{
Time_Period[] = ;
(page_id == ){
oled_show_onepage();
} (page_id == ){
oled_show_twopage();
}
(tiltFlag==){
send_time++;
(send_time>=){
send_time=;
BY_U2_SendBuff(sound_buf,);
}
}
printd_flag = !printd_flag;
(printd_flag==){
();
();
(,dis_hr,dis_spo2);
(,body_temp);
(tiltFlag==)();
();
(,lon_minutes);
(,lat_minutes);
();
}
}
Sensor_Data_Handle();
}
}
{
(body_temp>temp_door||dis_hr>heart_door||(dis_spo2<oxy_door&&dis_spo2>)||tiltFlag==)beep=;
beep=;
}
{
body_temp = DS18B20_Get_Temp();
Get_Max30102_Data();
FallDetection();
}
{
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChar(*,,,,);
OLED_ShowNum(*+,,dis_hr,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChar(*,,,,);
OLED_ShowNum(*+,,dis_spo2,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChar(*,,,,);
OLED_ShowNum(*+,,body_temp,,,);
(tiltFlag==){
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
} {
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
}
(( *)display,,lon_minutes);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChar(*,,,,);
OLED_ShowString(*,,(u8*)display,, );
(( *)display,,lat_minutes);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChar(*,,,,);
OLED_ShowString(*,,(u8*)display,, );
OLED_Refresh();
}
{
a,b,c,d;
(option==){a=;b=;c=;d=;}
(option==){a=;b=;c=;d=;}
(option==){a=;b=;c=;d=;}
{a=;b=;c=;d=;}
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChar(*,,,,);
OLED_ShowNum(*+,,heart_door,,,a);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChar(*,,,,);
OLED_ShowNum(*+,,oxy_door,,,b);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChinese(*,,,,);
OLED_ShowChar(*,,,,);
OLED_ShowNum(*+,,temp_door,,,c);
OLED_Refresh();
}
{
(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET)
{
key_num = KEY_Scan();
(key_num) {
:
(page_id==){
page_id=;
OLED_Clear();oled_show_twopage();
} (page_id==){
option++;
(option>){
option=;
page_id=;
OLED_Clear();oled_show_onepage();
} oled_show_twopage();
}
;
:
(page_id==){
(option==)heart_door+=;
(option==)oxy_door+=;
(option==)temp_door+=;
oled_show_twopage();
}
;
:
(page_id==){
(option==)heart_door-=;
(option==)oxy_door-=;
(option==)temp_door-=;
oled_show_twopage();
}
;
:
;
}
Time_Period[]++;
Time_Period[]++;
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}
}
{
u8 i;
adxl345_read_average(&adx,&ady,&adz,);
acc=ady;
acc2=adx;
(acc<)acc=-acc;
(acc2<)acc2=-acc2;
(((u16)acc)>= || ((u16)acc2)>=)
{
tiltFlag=;
}{
tiltFlag=;
}
}
七、项目资料包内容



