- 病房多参数监护与异常预警
- 绪论
- 系统方案设计
- 系统总体方案
- 系统功能
- 主要器件选型
- 硬件设计
- 主控与电源
- 温湿度与空气质量电路
- 心率血氧采集电路
- 报警与显示电路
- 系统接线总表
- 软件设计
- 主程序流程
- 心率血氧算法
- 报警判定策略
- 云端通信
- 系统实现与测试
- 调试步骤
- 测试结果
- 总结
病房多参数监护与异常预警
绪论
住院患者的康复过程高度依赖病房环境的恒定与体征数据的连续记录,但传统人工巡查方式难以捕捉偶发性心率血氧异常,且无法在第一时间将数据同步到护士站。本设计面向普通住院病房场景,构建以STM32为核心的"病房多参数监护与异常预警"系统,对环境温湿度、空气质量、患者心率血氧进行7×24小时采集,并通过Wi-Fi将数据汇聚到护士站看板。一旦采集值越出预设阈值,立即触发蜂鸣器与云端告警,缩短异常发现与响应的时间窗口。
系统方案设计
系统总体方案
系统由主控、传感器节点、显示、报警与无线通信等部分构成。传感器节点安装于床头与天花板上,监测环境与患者体征;主控统一处理数据并通过ESP8266上行至云端;护士站看板App显示所有病房的实时数据与异常提示。
系统功能
| 功能 | 描述 |
|---|---|
| 环境监测 | 温度、湿度、CO2/VOC浓度 |
| 体征监测 | 心率、血氧饱和度 |
| 数据上传 | 每5秒上报一次至云端 |
| 阈值报警 | 任一指标超限时本地+远程报警 |
| 历史曲线 | 24小时内数据可视化 |
| 护士站看板 | 集中显示多床位数据 |
主要器件选型
| 模块 | 方案对比 | 本设计选择 |
|---|---|---|
| 主控 | STM32F103C8T6 / Arduino | STM32F103C8T6,资源与功耗均衡 |
| 温湿度 | DHT11 / DHT22 | DHT22,精度更高 |
| 空气质量 | MQ-135 / SGP30 | SGP30,支持CO2与VOC双参数 |
| 心率血氧 | MAX30102 / PPG模拟前端 | MAX30102,集成度高 |
| 通信 | ESP8266 / 蓝牙 | ESP8266,便于组网 |
| 显示 | OLED12864 / TFT | OLED12864,体积小 |
| 报警 | 有源蜂鸣器 + 语音芯片 | 蜂鸣器+语音模块 |
硬件设计
主控与电源
STM32最小系统与3.3V稳压、按键复位、SWD下载口共用。电源由医疗级隔离AC-DC模块提供12V,再经DC-DC隔离转换为5V与3.3V,确保患者安全。
温湿度与空气质量电路
DHT22单总线接到PA0口;SGP30通过I2C接入PB6/PB7。SGP30需要预热,初始化延时100ms后再读取数据。
心率血氧采集电路
MAX30102通过I2C接入主控,红光与红外光交替照射手指,光电接收器输出经内部ADC采样转换为心率与血氧值。实际应用中需要确保手指接触稳定,避免运动伪差。
报警与显示电路
蜂鸣器由PB0直接驱动,语音模块JR6001通过UART连接,异常时自动播报"心率异常、请护士速来查看"。OLED12864接入I2C显示当前体征与环境数据。
系统接线总表
| 序号 | 单片机引脚 | 外设/功能 |
|---|---|---|
| 1 | PA0 | DHT22单总线 |
| 2 | PB6/PB7 | I2C总线(含SGP30、MAX30102、OLED) |
| 3 | PB0 | 蜂鸣器 |
| 4 | PA9/PA10 | ESP8266通信 |
| 5 | PA2/PA3 | 语音模块串口 |
| 6 | 3.3V/GND | 各传感器统一供电 |
软件设计
主程序流程
主程序初始化完成后,每秒读取温湿度,每3秒读取一次心率血氧,每5秒上报一次云端。下面对阈值的状态机进行维护,超限时立即触发报警。
int main(void) { SystemInit(); DHT22_Init(); SGP30_Init(); MAX30102_Init(); OLED_Init(); USART1_Init(115200); // ESP8266 Buzzer_Init(); Voice_Init(); while (1) { float t = DHT22_ReadTemp(); float h = DHT22_ReadHumidity(); uint16_t co2 = SGP30_ReadCO2(); Spo2Data spo2 = MAX30102_Read(); AlarmState st = Alarm_Eval(t, h, co2, spo2); if (st != ALARM_NONE) { Buzzer_On(); Voice_Play(st == ALARM_SPO2 ? 1 : 2); } else { Buzzer_Off(); } OLED_Update(t, h, co2, spo2); ESP8266_Send(t, h, co2, spo2, st); delay_ms(1000); } }心率血氧算法
MAX30102输出一系列红光/红外光ADC值,对红外信号做峰值检测得到心跳间隔,在窗口内计算平均心率;血氧则按红光与红外的直流分量比例由经验公式得出。本设计阈值中心为心率60~100bpm,血氧≥95%。
报警判定策略
每种指标独立判定:
- 温度:<18℃或>30℃。
- 湿度:<30%RH或>70%RH。
- CO2:>1000ppm。
- 心率:<50bpm或>120bpm。
- 血氧:<92%。
触发后需要持续60s确认才解除,避免抖动引起误报。
云端通信
ESP8266以MQTT协议连接内网MQTT Broker,发布主题ward/room/{id}/data,护士站看板App订阅即可展示。所有数据保存到本地SD卡用于历史回溯。
系统实现与测试
调试步骤
- 各传感器分别校准:温湿度与标准温湿度计比对,CO2与商用检测仪比对,MAX30102使用医用血氧仪做对照。
- MQTT连接测试,确保Wi-Fi稳定与QoS=1消息不丢失。
- 报警联动测试:模拟低血氧、心率过速和环境CO2升高三种情形,验证报警延时在2s内。
- 长时间运行测试:连续运行72小时,无数据漏报和无重启。
测试结果
- 环境温湿度测量误差±0.3℃/±2%RH。
- CO2读数与商用仪误差<5%。
- 心率测量误差±3bpm,血氧误差±2%。
- 报警响应时间1.4~1.9s。
- 网络断连后能自动重连,恢复后补发近30s内数据。
总结
本系统以STM32与多种传感器为基础,构建了一个完整的病房多参数监护与异常预警平台,覆盖环境与生理数据采集、阈值报警与远程监控,运行稳定、报警及时,能够在常规住院病房场景中替代人工巡查,降低医护人员负担,并提升异常事件的发现概率。后续可以引入机器学习模型对心率血氧数据做趋势预测,提高危重病人预警的提前量。