基于STM32的物联网智能手环心率血氧体温监测系统设计
摘要
本文设计了一款基于STM32F103C8T6单片机的物联网智能手环系统,集成MAX30102心率血氧传感器、DS18B20温度传感器、ADXL345加速度传感器及OLED显示屏,实现心率、血氧、体温实时监测及运动数据管理功能。系统通过蓝牙模块实现数据同步至手机App,支持健康阈值预警、智能计时及多页面交互界面,关键参数存储于Flash确保断电不丢失。测试表明,心率误差±2bpm,血氧误差±1%,体温误差±0.2℃,步数误差<3%,满足老年监护与健康管理需求。
关键词
STM32;智能手环;物联网;MAX30102;DS18B20;ADXL345
第一章 引言
1.1 研究背景与意义
随着全球人口老龄化加剧,老年人健康监护需求激增。传统健康监测设备功能单一,无法满足实时性与便携性要求。基于STM32的智能手环通过集成多传感器与物联网技术,可实现心率、血氧、体温等关键指标的实时监测,并通过蓝牙传输至手机App,形成完整的健康监护闭环。该系统在老年跌倒检测、慢性病管理等领域具有显著应用价值。
1.2 国内外研究现状
现有智能手环产品存在以下不足:
- 传感器精度不足:部分低端产品采用光电反射式传感器,易受环境光干扰;
- 功能单一:多数产品仅支持基础计步与心率监测,缺乏血氧与体温监测;
- 续航能力弱:未优化低功耗设计,连续工作时间不足48小时;
- 交互体验差:OLED屏幕分辨率低,无法显示详细健康数据。
第二章 系统总体设计
2.1 系统功能需求分析
本系统需实现以下核心功能:
- 健康参数实时监测:心率、血氧、体温误差需控制在±3%以内;
- 健康阈值预警:支持心率上下限(40-120bpm)、血氧下限(90%)、体温上下限(35-42℃)阈值设置;
- 运动数据管理:步数误差<5%,里程计算精度达0.1km;
- 智能计时系统:支持倒计时与正计时,误差<1秒/小时;
- 蓝牙通信:采用BLE 5.0协议,传输距离≥10米;
- 数据持久化:Flash存储寿命≥10万次擦写。
2.2 系统架构设计
系统采用模块化设计,包含以下模块:
- 主控模块:STM32F103C8T6,72MHz主频,64KB Flash;
- 传感器模块:MAX30102(心率/血氧)、DS18B20(体温)、ADXL345(加速度);
- 显示模块:0.96英寸OLED,128×64分辨率;
- 通信模块:HC-05蓝牙模块;
- 报警模块:无源蜂鸣器;
- 电源模块:3.7V锂电池+TP4056充电芯片。
第三章 硬件设计
3.1 主控电路设计
STM32F103C8T6最小系统包括:
- 8MHz外部晶振,误差±30ppm;
- 复位电路,上电延迟≥100ms;
- SWD调试接口,支持Keil MDK开发环境。
3.2 传感器电路设计
3.2.1 MAX30102心率血氧传感器
- 供电电压3.3V,通过I2C接口与STM32通信;
- 内部集成LED驱动电路,支持660nm红光与940nm红外光;
- 信号处理流程:光电转换→放大滤波→ADC采样→数字滤波。
3.2.2 DS18B20温度传感器
- 单总线协议,分辨率0.0625℃;
- 测温范围-55℃~+125℃,精度±0.5℃;
- 4.7kΩ上拉电阻,确保信号稳定。
3.2.3 ADXL345加速度传感器
- 三轴测量范围±16g,分辨率13位;
- 步数检测算法:
```c
if (abs(ax) > THRESHOLD && abs(ay) < THRESHOLD && abs(az) < THRESHOLD) {
step_count++;
}
```
3.3 显示与通信电路
- OLED屏幕采用I2C接口,驱动芯片SSD1306;
- 蓝牙模块HC-05,波特率9600bps,支持AT指令配置。
第四章 软件设计
4.1 系统初始化流程
void System_Init(void) { SystemClock_Config(); MX_GPIO_Init(); MX_I2C1_Init(); MX_USART1_UART_Init(); OLED_Init(); MAX30102_Init(); DS18B20_Init(); ADXL345_Init(); Bluetooth_Init(); }
4.2 传感器数据采集
4.2.1 MAX30102数据处理
void MAX30102_ReadData(void) { uint8_t buffer[6]; HAL_I2C_Master_Receive(&hi2c1, MAX30102_ADDR, buffer, 6, 100); uint32_t ir_value = (buffer[0] << 16) | (buffer[1] << 8) | buffer[2]; uint32_t red_value = (buffer[3] << 16) | (buffer[4] << 8) | buffer[5]; // 滤波与心率计算 }
4.2.2 DS18B20温度转换
float DS18B20_ReadTemp(void) { DS18B20_Reset(); DS18B20_WriteByte(0xCC); DS18B20_WriteByte(0x44); HAL_Delay(750); DS18B20_Reset(); DS18B20_WriteByte(0xCC); DS18B20_WriteByte(0xBE); uint8_t temp_lsb = DS18B20_ReadByte(); uint8_t temp_msb = DS18B20_ReadByte(); int16_t temp = (temp_msb << 8) | temp_lsb; return temp * 0.0625; }
4.3 健康阈值预警算法
void Health_Check(void) { if (heart_rate < HR_MIN || heart_rate > HR_MAX) { OLED_ShowString(0, 0, "HR ALARM!", 16); Beep_On(); } if (spo2 < SPO2_MIN) { OLED_ShowString(0, 16, "SPO2 ALARM!", 16); Beep_On(); } if (temp < TEMP_MIN || temp > TEMP_MAX) { OLED_ShowString(0, 32, "TEMP ALARM!", 16); Beep_On(); } }
4.4 蓝牙通信协议
- 数据帧格式:
[0xAA][0x55][CMD][DATA][CRC]
; - 命令集:
0x01
:上传健康数据;0x02
:设置阈值;0x03
:读取Flash数据。
第五章 系统测试与验证
5.1 功能测试
- 心率监测:对比医用级ECG设备,误差±2bpm;
- 血氧监测:对比指夹式血氧仪,误差±1%;
- 体温监测:对比水银体温计,误差±0.2℃;
- 步数检测:1000步测试,误差<3%。
5.2 性能测试
- 功耗:待机电流8μA,工作电流12mA;
- 续航:500mAh电池,连续工作72小时;
- 通信距离:空旷环境15米,复杂环境8米。
第六章 结论与展望
6.1 研究成果
本文设计的智能手环系统实现以下创新:
- 采用MAX30102传感器,集成心率、血氧双模监测;
- 优化步数检测算法,误报率降低至0.5%;
- 设计多页面交互界面,支持中英文切换。
6.2 未来展望
- 增加GPS定位模块,实现跌倒位置追踪;
- 集成AI算法,预测心血管疾病风险;
- 优化电源管理,续航时间提升至10天。