拓冰建站拓冰建站
首页 / 资讯中心 / 正文

基于 STM32 的老人健康检测与跌倒监测系统

基于 STM32 的老人健康检测与跌倒监测系统设计导语一、系统功能总览二、核心模块选型对比2.1 主控模块选型2.2 心率血氧模块选型2.3 温度模块选型2.4 加速度模块选型2.5 蓝牙模块选型三、系统接线总表四、系统软件设计4.1 主程序流程4.2 跌倒检测流程4.3 心率血氧采集流程4.4 温度采集流程4.5 蓝牙通信流程五、系统实现与测试5.1 硬件焊接与测试5.2 软件调试5.3 功能测试六、总结基于 STM32 的老人健康检测与跌倒监测系统设计导语人口老龄化背景下老年人的慢性病管理与意外跌倒防护是社会关注的重要课题。本文提出一种以 STM32F103C8T6 为主控的老人健康检测与跌倒监测系统通过 MAX30102 完成心率血氧采集、DS18B20 实现体温采集、ADXL345 监测姿态变化检测到异常或跌倒时蜂鸣器本地报警并通过 JDY-31 蓝牙透传到手机 APP实现家属或护理人员的远程监护为智慧养老提供一套成本可控、易于上手的硬件方案。一、系统功能总览系统整合感知、显示、本地报警与远程通信四个层次主要功能如下编号功能名称功能描述F1体温采集DS18B20 单总线采集精度 0.1℃F2心率采集MAX30102 PPG 测量30-250 BPMF3血氧采集MAX30102 红光/红外双波长0-100%F4姿态检测ADXL345 三轴加速度跌倒判定F5阈值报警参数超阈值或跌倒触发蜂鸣器F6蓝牙上传JDY-31 透传数据到手机 APPF7阈值设置板载按键设置温度/心率/血氧阈值F8数据刷新1s 周期采集并刷新显示二、核心模块选型对比2.1 主控模块选型方案型号主频优点缺点方案一STM32F103C8T672 MHzCortex-M3 资源丰富HAL 库成熟内核为 M3无 FPU方案二Arduino Nano16 MHz开发简单社区资料多RAM 仅 2 KB多传感器同时接不便方案三ESP32240 MHz自带 Wi-Fi/蓝牙双核模拟前端能力有限心率血氧应用少选择方案一 系统需同时驱动 MAX30102、ADXL345、DS18B20 与蓝牙模块对 IO、I²C、定时器数量都有较高要求STM32F103C8T6 在性能、资源、成本上平衡最好。2.2 心率血氧模块选型方案型号接口优点缺点方案一MAX30102I²C集成红光/红外 LED 与光电探测PPG 测量成熟需要手指贴合方案二PulseSensor模拟价格低接接简单仅心率无血氧模拟信号易受干扰方案三AFE4400I²C医疗级精度驱动复杂价格高选择方案一 MAX30102 同时给出心率与血氧两路数据I²C 接口便于挂载在 STM32 的同一组总线上符合系统对核心生命体征的双参数要求。2.3 温度模块选型方案型号测温范围优点缺点方案一DS18B20-55~125℃单总线精度 0.1℃仅需一根 IO需上拉电阻方案二DHT110~50℃同时输出温湿度测温精度 ±2℃分辨率 1℃方案三热电偶 MAX66750~1024℃宽量程模拟前端复杂选择方案一 系统采集人体表温DS18B20 的 0.1℃ 精度可满足精度要求单总线也便于在 PCB 上布局。2.4 加速度模块选型方案型号分辨率优点缺点方案一ADXL34513 bit数字输出量程可配置中断丰富无方案二MPU605016 bit同时输出姿态仅需要跌倒检测时功能冗余方案三倾角开关-仅阈值输出只能粗判方向选择方案一 跌倒判定需要三轴合成加速度与倾斜角度ADXL345 的 13 bit 分辨率与多种量程±2/4/8/16 g满足跌倒冲击检测与日常姿态判别的双重需要。2.5 蓝牙模块选型方案型号协议优点缺点方案一JDY-31BLE 4.0低功耗AT 配置透传稳定速率 1 Mbps 以内方案二HC-05蓝牙 2.0资料多功耗高BLE 手机兼容性差方案三NRF24L01私有 RF成本低非标协议需对接手机 APP选择方案一 JDY-31 与主流手机 BLE 兼容性好且无需复杂协议栈适合把传感器数据以透传方式打包发到 APP。三、系统接线总表模块引脚MCU 引脚说明MAX30102VCC/GND3.3V/GND电源MAX30102SDA/SCLPB9/PB8I²C1 总线MAX30102INTPA0中断跌倒/心率DS18B20VCC/GND3.3V/GND电源DS18B20DQPA1单总线4.7kΩ 上拉ADXL345VCC/GND3.3V/GND电源ADXL345SDA/SCLPB9/PB8I²C1 总线与 MAX30102 共用ADXL345INT1PA2跌倒中断JDY-31VCC/GND3.3V/GND电源JDY-31TX/RXPA10/PA9USART1蜂鸣器I/OPB0有源蜂鸣器按键 1/2/3I/OPB1/PB2/PB3设置/加/减备注MAX30102 与 ADXL345 共用 I²C1 总线依靠地址区分MAX301020x57、ADXL3450x53节省 IO。四、系统软件设计4.1 主程序流程系统上电后先完成系统时钟、GPIO、I²C、USART、SysTick 初始化再依次初始化 MAX30102、ADXL345、DS18B20、OLED 与蓝牙。主循环以 1 s 为周期依次采集温度、心率血氧与加速度值进行阈值判断与跌倒判定最后刷新显示与蓝牙发送。整体流程描述为开始 → 硬件初始化 → 传感器自检 → 主循环采集→判断→报警→上传→延时。4.2 跌倒检测流程ADXL345 启动后进入 ±16 g 量程开启 INT1 中断。正常姿态下 X、Y、Z 三轴合成加速度接近 1 g当出现自由落体合成加速度 0.6 g后紧跟着剧烈加速度≥ 2.5 g且随后倾角 60° 持续 2 s 以上判定为跌倒触发蜂鸣器与蓝牙报警。int main(void) { SystemInit(); OLED_Init(); USART1_Init(9600); // JDY-31 I2C1_Init(); // 100 kHz MAX30102_Init(); ADXL345_Init(); DS18B20_Init(); Beep_Init(); while (1) { float t DS18B20_ReadTemp(); MAX30102_ReadHR_SpO2(hr, spo2); ADXL345_ReadXYZ(ax, ay, az); // 阈值判断 if (t TEMP_MAX || hr HR_MAX || hr HR_MIN || spo2 SPO2_MIN) Beep_On(); // 跌倒判定 if (Fall_Detect(ax, ay, az)) { Beep_On(); JDY31_SendString(FALL\r\n); } // 上传 APP JDY31_SendFloat(T:, t); // OLED 显示 delay_ms(1000); } }4.3 心率血氧采集流程MAX30102 工作在 PPG 模式下红光/红外交替点亮驱动读 FIFO 后在算法层做峰值检测得到心率R 曲线与 IR 曲线比值得到血氧饱和度。流程初始化 → FIFO 使能 → 红/红外开窗 → 读取 FIFO → 滑动平均 → 心率/血氧解算。4.4 温度采集流程DS18B20 使用单总线协议MCU 发送复位脉冲 → 跳过 ROM0xCC→ 启动温度转换0x44→ 延时 750 ms → 再次复位 → 读暂存器0xBE→ 拼合高低字节 → 转换为 0.1℃。4.5 蓝牙通信流程JDY-31 默认波特率 9600工作在透传模式。主循环每 1 s 把温度、心率血氧与姿态按T:%f,HR:%d,SPO2:%d,AX:%d\r\n格式拼成字符串通过 USART1 发送手机 APP 端通过 BLE 接收即可。五、系统实现与测试5.1 硬件焊接与测试将主控、传感器、蜂鸣器、按键分别焊接在洞洞板上DS18B20 单独引线到腕带侧上电后用万用表量 3.3 V 与各传感器电源引脚正常再用示波器观察 I²C 总线与 USART1 波形波形稳定无毛刺。5.2 软件调试在 Keil MDK 下用 ST-Link 仿真器下载程序串口打印各传感器初始化返回值与原始数据修改心率/血氧滑动窗口长度 8→16确认数据更稳定调整跌倒阈值与延时参数避免日常起身误触发。5.3 功能测试测试编号测试步骤预期结论T1手指贴 MAX30102 静置心率/血氧稳定显示通过T2DS18B20 接触手腕温度刷新 1 s/次通过T3抬高/平放 ADXL345OLED 倾角变化通过T4模拟跌倒自由落体侧倒蜂鸣器响APP 报警通过T5蓝牙 APP 接收数据实时刷新通过T6温度/心率超阈值蜂鸣器响通过六、总结本文设计的老人健康检测与跌倒监测系统以 STM32F103C8T6 为主控整合 MAX30102、DS18B20、ADXL345 与 JDY-31实现了体温、心率血氧与姿态的实时监测和跌倒报警通过按键本地报警 蓝牙 APP 远程提醒的组合提升了独居老人的安全防护能力。系统结构清晰、成本合理可作为智慧养老终端的参考设计进一步扩展如增加 GPS 定位、SIM 短信报警等。七、资料内容完整工程资料原理图、PCB、代码、元件清单八、资料获取方式
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门