基于 STM32 的多传感器融合人体健康监测系统设计与实现

基于 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=1n​wi​Xi​其中,Y为融合后的输出值,Xi​为第i个传感器的测量值,wi​为第i个传感器的权重系数,满足∑i=1n​wi​=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.

相关推荐
文心快码BaiduComate12 分钟前
百度云与光本位签署战略合作:用AI Agent 重构芯片研发流程
前端·人工智能·架构
风象南1 小时前
Claude Code这个隐藏技能,让我告别PPT焦虑
人工智能·后端
Mintopia2 小时前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮2 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬2 小时前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia3 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区3 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两6 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
前端付豪6 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain