在面向远程医疗和社区医疗信息化的无线物联网技术总体研究如图1所示的基础上,本文以STM32W108无线射频为核心MCU,提出了一种可
以老人实时监测系统。该系统采用硬件滤波的方法提取ECG信号中的QRS波,可实时分析心率;通过分析运动状态(SVM和DSVM)和姿态角变化判断跌倒状态。最后通过模拟测试证明了该系统的可靠性和实用性。
1 系统架构设计
1.1 STM32W无线射频芯片介绍
STM32W108是意法半导体(ST)公司推出的完全集成的系统级芯片,符合IEEE802.15.4的标准,与目前其他的2.4GHz SoC芯片最大的区别在于:一、保持低功耗的基础上,采用了32位ARMCortex—M3内核,处理能力强;二、芯片内部带有功率放大器(PA),发射功率可以达到7dBm,无需功放就可获得较大的通信距离;三、芯片内部固化了ZigBee协议栈,开发简单。在该可课题的应用中,我们使用的是STM32W108 CBU61(内嵌ZigBee协议栈),128kB的Flash存储器。
1.2 ECG心率检测原理
心率的检测可以从很多方面获得,如:通过分析血压的压动信号;通过分析血氧脉搏波信号;通过分析ECG(Electrocardiogram)。考虑到设备的便宜性,我们采用的是胸部单导联式的ECG采集原理,采用被测试人的右胸和腹部作为两个电极信号输入(由于当前设计只是针对心率的采集,故不需要参考电极)。一个完整周期的理想ECG信号如图2所示。
如图所示,QRS波群巾的R处波峰,代表了电脉冲在心房之间的传输,它的典型值是在1mV左右,是ECG信号中幅值最大的信号。在该课题中,心率的检测就是利用QRS波这一特点,将处理后的ECG信号通过QRS检波电路输出R波的脉冲信号,利用STM32W芯片端口的输入捕获功能,即可算法心率值。ECC信号采集流程如图3所示。
1.3 跌倒检测原理
人体跌倒是南于身体不自主失去平衡的行为,在跌倒的瞬间,人体的重力、加速度、位移和姿态等相关量都会发生变化。由于本课题中的老人行动比较的单一简单,所以我们利用单一的三轴加速度传感器足以检测出跌倒的状态。我们通过分析加速度的瞬态变化去判断人体的运动状态,然后根据姿态角变化去判断人体的姿态特征,综合两者因素得出是否跌倒。
*速度瞬态变化
人体加速度向量幅值SVM和微分加速度幅值的绝对平均值DSVM是区分人体运动状态的重要参量。SVM通过计算加速度幅度表征人体运动的剧烈程度,其值越大表明运动越剧烈。其定义为
DSVM通过计算SVM的微分绝对值的时间平均表征人体运动状态变化的剧烈程度,其值越大表明运动状态变化越剧烈。其定义为:
在动态坐标系下考察SVM和DSVM,可监测人体的运动强度和运动状态变化强度。
*姿态角判断
在三维中间中,我们将人体没想成一个方块,利用三轴加速度和重力的关系,我们可以得到三个姿态角ρ、θ和φ,如图4所示。通过判断姿态角的变化,得出身体的姿态变化。
其中:ρ是X轴与水平面间的夹角;θ是Y轴与水平面之间的夹角;φ是Z轴与重力加速度方向间的夹角。
1.4 硬件组成和设计
考虑到没备的便携性,我们采用腰挂式,具体的实现方案如下:采用Li-ion电池供电,由于系统的电源是3.3 V,而Li电池的电池电压范围为2.5V-4.2 V,所以方案采用TI的TPS63031DC—DC升降压芯片。
*STM32W芯片采用系统的3.3 V作为主电源,内核和存储区域的电源有芯片内部的稳压器提供;外部时钟源为24MHz高频晶体振荡器和32.768kHz低频晶体振荡器;RF使用的是陶瓷天线。
*ECG信号采集采用了织物式电极,两处电极分别位于被测者的右胸和腹部;电极输入前端有ESD保护,输入阻抗匹配;心电数据存储芯片选用AT24C02,2kB的e2PROM。
*三轴加速度传感器采用的是ADI公司数字式传感器ADXL345,超低功耗,分辨率可达到3.9mg/LSB,能够测量不到1°的倾斜角变化;I2C通信方式。
*采用1.1寸的OLED屏幕显示系统的状态信息,三个功能键和一个电源按键。
2 软件设计
STM32W的开发是基于EmberZNet协议栈的,它是ST公司为用户提供的开发包,内部包含了丰富的API函数,用户只需调用API即可完成相关功能。EmberZNet应用程序类似于一个操作系统,系统处理所有的模块程序都是以任务调度的形式完成,即:监控任务(Housekeeping Tasks)。系统主要的任务有:网络维护任务和处理器维护任务,后者包括功能按键采集任务、心率检测和备份曲线任务、三轴加速度传感器数据采集任务及跌倒算法任务。
2.1 网络维护任务
应用程序中负责管理网络相关性的任务有:检测网络、加入网络、网络维护。网络拓扑结构如图所示,设备开机工作,在完成初始化以后,必须要加入到既定的家庭网络。通过调用emberStartScan函数完成信道扫描和网络的发现,调用emberScanCompleteHandler函数查看扫描的成功与否,调用mberNetworkFoundHandler查看扫描结果。在加入网络之前,需要手动选择自己家庭的PAN ID。配置相关网络参数,选择一个父节点,然后调用emberJoinNetwork函数加入到网络。
在加入到网络以后,作为移动端设备的E0是不需要绑定路由的,它必需通过周期性的轮询(定义为5s)与父节点保持联系,确保自己“在线”。如果周期性的轮询丢失联系,要重新加入网络,调用emberRejoinNetwork函数。如图5所示,E0到协调器的传输路径可以是1、2或3。
2.2 处理器维护任务
在STM32W108的协议栈中,所有的应用程序都要求的唯一的任务要运行在这一个平台上。通过周期性的调用emberTick函数,处理很多从最近一次调用emberTick函数开始收集的任务。
*功能按键采集任务
设备有四个按键,一个电源键,负责系统的开关机及锁键功能,三个功能键,负责系统相关配置。
*心率检测和备份曲线任务
心率的实时监测是利用STM32W定时器捕获中断来完成的,利用中断来启动心率检测的任务,算出即时的心率,并且完成对异常值报警。将1min内的记录值(60-120个)压缩成10个,每小时存储60个,每天存储1440个,按照时间顺序存储在2 kB的e2PROM中。
*三轴加速度传感器数据采集任务
数据采集的频率设定为100Hz,每采集完2S的数据后,启动跌倒算法任务。
*跌倒算法任务
首先判断各个方向加速度值是否大于预设阀值,然后根据公司(1) (2)计算出SVM、DSVM。当跌倒发生时,SVM会明显增大,而且持续时间较长,DSVM明显增大,当峰值超过预设阀值(试验统计值为0.35g/s)时,则认为人体有跌倒倾向。如果差值明显,就断定为跌倒;如果不明显,根据公式(3) (4) (5)判断姿态角的变化,如果姿态角发生变化,也断定为跌倒。具体算法流程图如图6所示。
3 系统测试
为了验证设备的实用可靠性,我们要进行相关的测试,测试项目包括:系统功耗,即:系统正常工作时间(900mAh电池供电);心率测试的实时性;跌倒报警的实时性;网络传输的可靠性。
为了验证系统对心率测试的实时性,我们运动加快心跳的测试。为了方便测试,我们将每分钟的心率数据压缩成50个,即时发送给智能终端,通过智能终端的如下表1分析可以很明显的看出心率的变化。
系统在网络中的传输可以分为主动传输和被动传输,主动传输主要是用于发送报警信息,被动传输是智能终端访问终端上的数据,每天都会将心率数据传输到终端上进行分析。为了方便测试,被动传输定义为1h。
4 结束语
在该课题研究中,完成了心率的检测和数据记录,同时提供了跌倒报警,为远程监护系统的发展提供了基础,同时实现了对“空巢老人”的远程监护。记录心率的历史数据,对医生分析病理有很大的帮助。该系统的优点在于选用了处理功能强大的STM32W无线射频芯片,采用了相对复杂但是精确的算法,可以准确的分析出突发性的事件(心率异常、跌倒)。以本系统为模型,可以设计对其他体征参数(如:血压、血脂、血糖、呼吸等)的检测系统,建立完整的健康档案,对远程医疗服务的发展具有实用意义。