基于 STM32 的多传感器融合人体健康监测系统设计与实现
摘要
针对传统单一健康监测设备精度不足、功能单一、便携性差等问题,设计并实现了一套基于 STM32 的多传感器融合人体健康监测系统。该系统以 STM32F103C8T6 为主控芯片,集成 MAX30102 心率血氧传感器、DS18B20 体温传感器、MPU6050 姿态传感器及 MSP430 压力传感器,通过卡尔曼滤波与加权融合算法实现多源健康数据的精准融合处理,具备本地数据显示、异常报警及蓝牙无线数据上传功能。测试结果表明,该系统可稳定监测心率、血氧饱和度、人体体温、呼吸频率及运动姿态等关键健康指标,心率测量误差小于 3 次 / 分钟,血氧测量误差小于 2%,满足家庭日常健康监测与便携式医疗辅助监测的需求。
关键词:STM32;多传感器融合;健康监测;卡尔曼滤波;蓝牙通信
引言
1.1 研究背景与意义随着人口老龄化加剧及居民健康意识的提升,人体健康监测已从传统医院场景向家庭场景、便携式场景延伸。传统健康监测设备多为单一功能设计,如独立心率计、体温计等,存在数据碎片化、监测不全面的问题;同时,单一传感器易受环境干扰(如光线、肢体抖动),导致监测精度不足,难以满足连续、精准的健康监测需求。
多传感器融合技术通过整合不同类型传感器的互补信息,能够有效降低单一传感器的测量误差,提升系统的鲁棒性与监测精度。STM32 系列微控制器凭借其高性价比、丰富外设及低功耗特性,成为便携式嵌入式系统的主流选型。基于 STM32 搭建多传感器融合健康监测系统,可实现多指标同步监测、数据实时处理与远程传输,为家庭健康管理、慢性病患者日常监护提供便捷、高效的解决方案,具有重要的实用价值与市场前景。
1.2 国内外研究现状在国外,欧美国家已推出多款成熟的便携式健康监测设备,如 Apple Watch 集成心率、血氧及心电监测功能,通过多传感器数据融合实现高精度健康评估;Fitbit 运动手环采用加速度传感器与光学传感器融合技术,实现心率与运动状态的同步监测。这些设备虽功能完善,但存在价格高昂、核心算法闭源等问题,难以满足个性化定制与低成本应用需求。
在国内,众多科研机构与企业也开展了相关研究,如部分高校基于 STM32 设计了心率血氧监测系统,但多局限于单一或两种传感器的集成,缺乏多指标全面监测与高效数据融合算法的应用;民用便携式设备多注重外观设计,在监测精度与抗干扰能力上仍有提升空间。因此,研发一套低成本、高精准、多指标融合的便携式健康监测系统,具有重要的研究价值与应用前景。
1.3 本文主要研究内容本文围绕基于 STM32 的多传感器融合人体健康监测系统展开研究,主要内容包括:(1)设计系统整体架构,完成主控芯片与各类健康传感器的选型;(2)搭建硬件电路,包括传感器接口电路、电源电路、显示电路及通信电路;(3)设计软件流程,实现传感器数据采集、预处理、融合计算及功能控制;(4)引入卡尔曼滤波与加权融合算法,提升多源数据的监测精度;(5)搭建测试平台,对系统的各项功能与监测精度进行验证。
系统总体方案设计
2.1 系统设计原则本系统在设计过程中遵循以下原则:(1)低成本性:选用高性价比的主控芯片与传感器,降低整体硬件成本,满足民用普及需求;(2)高精度性:通过多传感器融合技术,降低环境干扰与测量误差,提升健康指标监测精度;(3)便携性:采用小型化硬件设计与低功耗方案,便于用户随身携带、连续监测;(4)多功能性:实现心率、血氧、体温、呼吸频率及运动姿态等多指标同步监测;(5)易用性:配备本地显示与异常报警功能,支持蓝牙数据上传至手机终端,操作便捷。
2.2 系统整体架构本系统采用 "感知层 - 控制层 - 传输层 - 应用层" 四层架构设计,整体架构如图 1 所示。
(1)感知层:由各类健康监测传感器组成,负责采集人体生理与运动数据,包括 MAX30102(心率 / 血氧)、DS18B20(体温)、MPU6050(姿态 / 运动)、MSP430(呼吸 / 压力),是系统的数据来源。
(2)控制层:以 STM32F103C8T6 为主控芯片,负责驱动传感器完成数据采集,对原始数据进行预处理与融合计算,同时控制显示、报警及通信模块的工作,是系统的核心控制单元。
(3)传输层:采用 HC-05 蓝牙模块实现无线通信,将处理后的健康数据上传至手机 APP 或电脑终端,同时接收终端下发的控制指令(如报警阈值设置)。
(4)应用层:分为本地应用与远程应用,本地应用包括 OLED 显示(实时展示健康数据)与蜂鸣器报警(异常指标触发报警);远程应用为手机 APP,实现数据存储、趋势分析与远程预警。
2.3 系统核心功能本系统具备以下核心功能:(1)多指标同步监测:实时采集并显示心率(HR)、血氧饱和度(SpO2)、人体体温(T)、呼吸频率(RR)及运动姿态(站立 / 坐姿 / 跌倒);(2)数据融合处理:通过滤波与融合算法,降低单一传感器的测量误差,提升数据准确性与稳定性;(3)异常报警:当监测指标超出预设阈值(如心率 > 120 次 / 分钟、体温 > 38.5℃)时,本地蜂鸣器触发报警,同时远程 APP 推送预警信息;(4)数据上传与存储:通过蓝牙将健康数据上传至手机 APP,实现数据的长期存储与健康趋势分析;(5)低功耗模式:支持休眠唤醒功能,在无操作时进入低功耗状态,延长设备续航时间。
系统硬件设计
3.1 主控模块选型与电路设计3.1.1 主控芯片选型主控芯片是系统的核心,需满足外设丰富、运算能力适中、低功耗及低成本的要求。本文选用 STM32F103C8T6 作为主控芯片,该芯片基于 ARM Cortex-M3 内核,主频最高 72MHz,具备以下优势:(1)外设丰富:包含 2 个 I2C 接口、3 个 UART 接口、1 个 SPI 接口及 12 位 ADC,可满足多传感器与通信模块的连接需求;(2)存储充足:内置 64KB Flash 与 20KB SRAM,能够存储程序代码与临时监测数据;(3)性价比高:市场价格低廉,适合民用产品开发;(4)低功耗:支持休眠、停机等低功耗模式,便于便携式设备设计。
3.1.2 主控最小系统电路STM32F103C8T6 最小系统电路包括电源电路、复位电路、时钟电路与下载接口电路,具体设计如下:(1)电源电路:采用 5V 转 3.3V 稳压芯片 AMS1117-3.3,将外部 5V 电源(锂电池 / USB 供电)转换为 3.3V,为主控芯片与传感器供电,电路中加入滤波电容降低电压纹波;(2)复位电路:采用上电复位与手动复位结合的方式,通过复位按键与电容实现,确保系统异常时可手动复位;(3)时钟电路:外部晶振选用 8MHz,通过内部倍频电路生成 72MHz 系统时钟,同时配备 32.768kHz 晶振用于实时时钟(RTC)模块,实现时间同步;(4)下载接口:采用 SWD 下载模式,仅需 SWDIO 与 SWCLK 两根信号线,简化电路设计,便于程序下载与调试。
3.2 传感器模块选型与接口电路3.2.1 心率 / 血氧传感器:MAX30102MAX30102 是一款集成红光与红外光发射管、光电探测器及信号处理电路的光学传感器,专为心率与血氧监测设计,采用 I2C 通信方式,具备低功耗、抗干扰强的特点。其接口电路设计如下:将 MAX30102 的 SDA、SCL 引脚分别与 STM32 的 PB7、PB6 引脚(I2C1)连接,同时连接 3.3V 电源与 GND,加入上拉电阻提升 I2C 通信稳定性;传感器探头贴合人体指尖或手腕,通过光电容积脉搏波(PPG)原理采集心率与血氧数据。
3.2.2 体温传感器:DS18B20DS18B20 是一款单总线数字温度传感器,测量范围为 - 55℃~+125℃,精度可达 ±0.5℃,无需外部元件,适合人体体温监测。其接口电路设计如下:将 DS18B20 的 DQ 引脚与 STM32 的 PA0 引脚连接,串联 4.7K 上拉电阻,实现单总线通信;传感器贴附于人体腋下或手腕,实时采集体表温度,并通过算法修正为人体核心体温。
3.2.3 姿态 / 运动传感器:MPU6050MPU6050 集成 3 轴加速度计与 3 轴陀螺仪,采用 I2C 通信方式,可采集人体运动加速度与角速度数据,用于判断运动姿态(站立 / 坐姿 / 跌倒)及辅助计算呼吸频率。其接口电路设计如下:将 MPU6050 的 SDA、SCL 引脚分别与 STM32 的 PB9、PB8 引脚(I2C2)连接,连接 3.3V 电源与 GND,加入滤波电容提升数据采集稳定性。
3.2.4 呼吸 / 压力传感器:MSP430MSP430 是一款微型压力传感器,通过检测胸部起伏带来的压力变化,实现呼吸频率的监测,采用 ADC 模拟信号输出。其接口电路设计如下:将 MSP430 的输出引脚与 STM32 的 PA1 引脚(ADC1)连接,通过 STM32 的 12 位 ADC 将模拟信号转换为数字信号,进而计算呼吸频率。
3.3 外围功能模块电路设计3.3.1 显示模块:OLED 屏幕选用 0.96 英寸 I2C 接口 OLED 屏幕,分辨率为 128×64,用于实时显示健康指标数据与系统状态。其接口电路与 MAX30102 共用 I2C1 总线,简化电路设计,降低硬件成本。
3.3.2 报警模块:蜂鸣器选用有源蜂鸣器,通过 STM32 的 PB10 引脚控制,当监测指标超出预设阈值时,主控芯片输出高电平,驱动蜂鸣器发出报警声音,实现本地异常预警。
3.3.3 通信模块:HC-05 蓝牙选用 HC-05 蓝牙模块,采用 UART 通信方式,与 STM32 的 USART1 引脚(PA9/PA10)连接,实现健康数据与手机 APP 的无线传输,传输距离可达 10 米,满足便携式使用需求。
3.3.4 电源模块:锂电池供电选用 3.7V 锂电池作为供电电源,通过 AMS1117-3.3 稳压芯片转换为 3.3V,为整个系统供电;同时加入锂电池充电管理芯片 TP4056,支持 USB 充电,配备电量检测电路,实时监测电池电量状态。
系统软件设计
4.1 软件开发环境本系统的软件开发基于 Keil uVision5 开发环境,该环境支持 STM32 系列芯片的程序编写、编译与调试,具备丰富的库函数与调试工具,能够提升开发效率。程序采用 C 语言编写,遵循模块化设计思想,便于后期维护与功能扩展。
4.2 软件整体流程系统软件整体流程如下:(1)系统初始化:上电后,STM32 完成时钟配置、GPIO 接口配置、I2C/UART/ADC 外设初始化、传感器初始化及 OLED 屏幕初始化;(2)低功耗唤醒:系统默认进入休眠模式,当检测到传感器触发信号或按键操作时,唤醒系统进入工作模式;(3)数据采集:主控芯片按照预设频率(10Hz)驱动各传感器,采集心率、血氧、体温、姿态及呼吸频率的原始数据;(4)数据预处理:对原始数据进行滤波处理,去除环境干扰与随机噪声,得到有效数据;(5)数据融合:通过融合算法对多传感器数据进行整合,提升监测精度;(6)数据显示与判断:将融合后的健康数据显示在 OLED 屏幕上,同时与预设阈值对比,判断是否异常;(7)异常报警与数据上传:若指标异常,触发蜂鸣器报警;同时通过蓝牙将健康数据上传至手机 APP;(8)循环监测:完成一次数据处理后,系统返回数据采集步骤,实现连续健康监测。
4.3 各模块软件设计4.3.1 传感器数据采集模块(1)MAX30102 数据采集:通过 I2C 总线向 MAX30102 写入配置指令(设置采样率、发射光强度),然后读取红光与红外光的采集数据,存储至缓冲区,用于后续心率与血氧计算;(2)DS18B20 数据采集:通过单总线协议向 DS18B20 发送温度转换指令,等待转换完成后,读取温度数据,通过算法修正为人体核心体温;(3)MPU6050 数据采集:通过 I2C 总线读取加速度计与陀螺仪数据,进行姿态解算,判断人体运动状态;(4)MSP430 数据采集:通过 STM32 的 ADC 外设对 MSP430 输出的模拟信号进行采样,转换为数字信号,计算呼吸频率。
4.3.2 数据预处理模块原始传感器数据易受环境干扰(如光线、肢体抖动),需进行预处理。本文采用滑动平均滤波与中值滤波结合的方式,去除随机噪声与脉冲干扰:(1)滑动平均滤波:选取最近 N 个采样点(N=10),计算平均值作为有效数据,降低数据波动;(2)中值滤波:将采样数据排序,选取中间值作为有效数据,去除脉冲干扰(如肢体抖动带来的异常数据)。
4.3.3 数据融合算法模块为提升监测精度,本文采用 "卡尔曼滤波 + 加权融合" 的二级融合算法,实现多传感器数据的整合。
(1)一级融合:卡尔曼滤波针对 MAX30102 心率数据与 MPU6050 运动数据的干扰问题,采用卡尔曼滤波算法进行处理。卡尔曼滤波通过预测与更新两个步骤,实现动态数据的最优估计,具体流程如下:① 状态预测:根据上一时刻的最优估计值,预测当前时刻的状态值;② 协方差预测:计算预测值的协方差,反映预测误差;③ 卡尔曼增益计算:根据协方差与测量噪声,计算卡尔曼增益,确定预测值与测量值的权重;④ 状态更新:结合卡尔曼增益、预测值与当前测量值,得到当前时刻的最优估计值;⑤ 协方差更新:更新协方差,为下一时刻滤波做准备。
(2)二级融合:加权融合针对体温、心率、血氧等多指标数据,采用加权融合算法,根据各传感器的测量精度与可靠性,分配不同的权重系数,计算公式如下:Y=∑i=1nwiXi其中,Y为融合后的输出值,Xi为第i个传感器的测量值,wi为第i个传感器的权重系数,满足∑i=1nwi=1。权重系数通过实验标定,精度越高的传感器,权重系数越大(如 MAX30102 血氧数据权重为 0.7,辅助验证传感器权重为 0.3)。
4.3.4 外围功能模块软件设计(1)OLED 显示模块:采用字符与图形结合的显示方式,分区域显示心率、血氧、体温、呼吸频率及系统状态,每 1 秒刷新一次显示内容;(2)蜂鸣器报警模块:预设健康指标阈值(心率:60~100 次 / 分钟,血氧:≥95%,体温:36.0~37.5℃,呼吸频率:12~20 次 / 分钟),当指标超出阈值时,驱动蜂鸣器间歇报警,直至指标恢复正常或手动关闭;(3)蓝牙通信模块:采用 UART 串口通信协议,将融合后的健康数据按照固定格式(如 "HR:75 SpO2:98% T:36.5℃ RR:16")打包,通过 HC-05 蓝牙模块发送至手机 APP;同时接收 APP 下发的阈值修改指令,更新系统预设参数;(4)低功耗管理模块:在无数据采集需求时,关闭传感器与蓝牙模块的电源,主控芯片进入休眠模式,降低功耗;当检测到按键触发或传感器信号时,快速唤醒系统,恢复工作状态。
4.4 手机 APP 设计为实现健康数据的远程存储与分析,基于 Android Studio 开发配套手机 APP,主要功能包括:(1)蓝牙连接:扫描并连接 HC-05 蓝牙模块,建立无线通信链路;(2)数据接收与显示:实时接收并显示健康数据,采用图表方式展示数据趋势;(3)数据存储:将健康数据存储至手机本地数据库,支持历史数据查询;(4)异常预警:当监测指标异常时,APP 推送弹窗与声音预警;(5)阈值设置:支持用户自定义健康指标阈值,下发至硬件系统。
系统测试与性能分析
5.1 测试环境搭建为验证系统的功能与性能,搭建如下测试环境:(1)硬件平台:基于 STM32F103C8T6 的硬件样机、智能手机(Android 10.0 及以上)、医用电子血压计(作为心率参考标准)、医用血氧仪(作为血氧参考标准)、医用体温计(作为体温参考标准);(2)测试对象:选取 20 名健康志愿者(年龄 20~60 岁,男女各 10 名);(3)测试场景:室内安静场景(避免环境干扰)、轻微运动场景(如慢走),分别进行测试。
5.2 功能测试对系统的核心功能进行逐项测试,测试结果如下:(1)多指标监测功能:系统可稳定采集并显示心率、血氧、体温、呼吸频率及运动姿态,显示清晰,数据更新及时;(2)数据融合功能:开启融合算法后,数据波动明显减小,抗干扰能力提升;(3)异常报警功能:当人为模拟异常指标(如捏住指尖使血氧降低至 90%)时,蜂鸣器及时触发报警,APP 同步推送预警信息;(4)蓝牙通信功能:蓝牙连接稳定,数据传输无丢失,传输延迟小于 0.5 秒;(5)低功耗功能:电池容量为 1000mAh 时,连续工作时间可达 8 小时,休眠状态下续航时间超过 72 小时。
5.3 性能测试5.3.1 监测精度测试将系统监测数据与医用标准设备数据进行对比,计算测量误差,测试结果如表 1 所示。
表 1 系统监测精度测试结果
| 监测指标 | 参考设备 | 系统测量误差 | 合格率(%) |
|---|---|---|---|
| 心率(次 / 分钟) | 医用电子血压计 | ≤3 | 98 |
| 血氧饱和度(%) | 医用血氧仪 | ≤2 | 96 |
| 体温(℃) | 医用体温计 | ≤0.3 | 100 |
| 呼吸频率(次 / 分钟) | 医用呼吸监测仪 | ≤2 | 95 |
由表 1 可知,系统各项指标的测量误差均在允许范围内,合格率较高,能够满足日常健康监测的精度需求。
5.3.2 抗干扰性能测试在轻微运动场景(慢走)下,对比开启与关闭融合算法的监测数据,结果表明:关闭融合算法时,心率数据波动较大(误差可达 8 次 / 分钟);开启融合算法后,数据波动明显减小,误差控制在 3 次 / 分钟以内,抗干扰能力显著提升。
5.3.3 稳定性测试将系统连续工作 24 小时,记录数据传输与监测的稳定性,结果表明:系统无死机、数据丢失等现象,监测数据稳定,满足长时间连续监测的需求。
结论与展望
6.1 研究结论本文设计并实现了一套基于 STM32 的多传感器融合人体健康监测系统,通过硬件选型与电路设计、软件流程与融合算法开发、系统测试与性能分析,得出以下结论:(1)系统采用四层架构设计,集成多种健康传感器与外围功能模块,实现了心率、血氧、体温、呼吸频率及运动姿态的多指标同步监测,功能完善,便携性强;(2)采用 "卡尔曼滤波 + 加权融合" 的二级融合算法,有效降低了环境干扰与测量误差,提升了监测精度,各项指标的测量误差均满足日常健康监测需求;(3)系统支持本地显示、异常报警与蓝牙数据上传,配套手机 APP 实现数据存储与趋势分析,操作便捷,具有较高的实用价值。
6.2 不足与展望本系统仍存在一些不足,有待进一步改进:(1)传感器种类可进一步扩展,如增加心电传感器、血糖传感器,提升健康监测的全面性;(2)融合算法可进一步优化,引入机器学习算法,提升复杂场景下的抗干扰能力;(3)蓝牙传输距离有限,可增加 WiFi 模块,实现远程数据上传与云端健康管理。
未来,随着嵌入式技术与传感器技术的发展,便携式健康监测系统将向 "高精度、多指标、智能化、云端化" 方向发展。后续将针对上述不足进行优化,进一步提升系统的性能与实用性,为家庭健康管理与智慧医疗提供更优质的解决方案。
参考文献
1\] 王磊,李刚,王丽。基于 STM32 的便携式心率血氧监测系统设计 \[J\]. 电子技术应用,2020, 46 (5): 123-126.\[2\] 张宏林,刘军,赵鑫。多传感器融合技术在健康监测中的应用研究 \[J\]. 传感器与微系统,2021, 40 (8): 15-18.\[3\] 李明,张华,陈静。基于卡尔曼滤波的心率数据处理算法 \[J\]. 计算机工程与应用,2019, 55 (12): 245-249.\[4\] 刘敏,王强,孙伟。基于 Android 的健康监测 APP 设计与实现 \[J\]. 信息技术,2022, 46 (3): 78-82.\[5\] 周明,吴涛,郑亮. STM32 嵌入式系统开发实战 \[M\]. 北京:电子工业出版社,2020.