谢景卫
(大连大学 创新创业学院,辽宁 大连 116622)
我国目前有近2亿个独生子女家庭,这些家庭中的长辈应该都超过了六十岁。统计数据显示,我国现有六十岁以上老年人口已经达到了2亿多人,人口老龄化进程在加速,年均增长速度超过3%。老年人的健康问题关系到一个非常大的群体,正引起了全社会的广泛关注。众多的独生子女为了生存及改善生活出门在外拼搏,很多已经不跟父母常住在一起,使得没有儿女照顾的老人数量非常巨大。随着年龄的增长,各种心血管疾病发病率逐渐增高,而高血压、心脏疾病等又有非常高的致残和死亡率。而这些疾病如果能尽早发现并给予相应的早期治疗,可以有效的减少并发症及后遗症的产生,提高老年人的身体状况和寿命。同时跌倒已经成为老人健康问题的头号“杀手”。子女不放心老人的健康问题,需要实时知道父母的身体状况,随着电子技术的发展,智能化可穿戴设备的需求市场非常大,本文设计了一套使用STM32作为主控MCU的健康数据采集设备,同时兼具能监测老人的人体运动状态,发生异常时及时通过北斗定位系统将坐标位置发出,也可以通过蓝牙设备与身边的智能手机自动相连,通过智能手机自动打电话给子女,达到身体健康状况异常时第一时间处理,大大提升老年人的生命周期。目前,我国正大力推广我们自主知识产权的北斗导航定位系统应用,本文设计的一种基于北斗定位的老人健康监护系统,具有低功耗、智能化、可穿戴等优点,以及良好的技术先进性和极大的社会价值。
本系统的控制核心MCU为具有Cortex M4内核的STM32F405RGT6芯片,通过MTK的生物感应模拟前端芯片 MT2511,MT2511可同时采集心电图(EKG)信号和光电容积脉搏波(PPG)信号。这两种信号分别经过滤波电路后送给主控MCU,经过软件算法优化,得到心率、血压、心电、血压等数据;六轴加速度传感器MPU6050随时监测人体的运动状态,并将实时的状态参数发送给主控MCU。MCU计算出人体的运动状态并保存在内嵌的FLASH中,一旦计算出跌倒等异常状态时,发出警示,并调用北斗导航UC6225芯片得到地理坐标信息,MCU处理后通过蓝牙发送给身边的智能手机,智能手机会自动将当前坐标位置短信发给预先设置的手机上。蓝牙芯片也可以在空闲时间将所有存储在MCU的FLASH中的被监测人的生理数据传输给智能手机,智能手机记录所有信息,以便进行相应的分析处理等。系统框图如图1所示。
图1 系统框图
信息处理模块是整个系统的核心,本系统选用意法半导体[1]的 STM32F405RGT6作为主控芯片。STM32F405RGT6是基于ARM Cortex-M4内核的32为处理器[2],主频 168 MHz,内核功耗仅为 128 μA/MHz。它支持单周期DSP指令和浮点运算,片上集成192 KB的SRAM和1MB的FLASH。STM32F405RGT6利用意法半导体的ART加速器实现了FLASH零等待状态,并且能够动态调整系统功耗[3]。STM32F405RGT6集成了多达17个定时器、2个12位DAC,3路12位逐次逼近模数转换器,16个采集通道。模数转换器可两路同时采集,单路采样速率每秒2.4 M,两路交错采集速率每秒7.2 M;通信接口包括 6个串口(USART)、3个 SPI接口、1个SDIO接口、3个I2C总线接口、2个CAN总线。串口速度每秒 10 Mbit以上,SPI总线速度每秒 40 Mbit以上。
信息采集模块中的脉搏、心率、心电的信号采集选用联发科技(MediaTek Inc.)专为健康与健身可穿戴设备设计的生物感应模拟前端芯片(Analog front-end,“AFE”)MT2511。MT2511 可同时采集心电图(EKG)和光电容积脉搏波(PPG)发出的生物信号。芯片内部集成锁相环,能够使EKG和PPG 数据实时保持同步,而且它的功耗也非常低。当单独采集光电容积脉博波信号或心电图信号时,电流不超过0.5 mA,两种信号同时采集时电流不超过1.2 mA。MT2511具有联发科技自主研发的心跳间隔技术,片上集成了4KB的SRAM,能够优化芯片各个采集模块的整体系统功耗。MT2511支持互联的SPI/I2C接口。系统结构如图2所示。
图2 MT2511系统结构
蓝牙[4]传输模块选择德州仪器 TI公司的CC2540F128芯片[5]。CC2540F128是应用于便携式传感网络产品的低功率单片蓝牙4.0解决方案。它是一个超低功耗的真正单晶片系统,包含一个优异的无线射频传送接收器以及数位感应器和适当的外围器件,片上集成128 K的FLASH。具有精确的无线射频讯号强度指示,内含AES-128加密模块。CC2540F128具有很低的睡眠模式功率消耗及不同工作模式间短暂的转换时间,适用于需要超低消耗功率的系统[6]。CC2540F128的接口电路图如图3所示。
图3 蓝牙芯片外围电路
坐标定位系统选用我国自主知识产权的全球卫星导航系统——中国北斗卫星导航系统[7](BeiDou Navigation Satellite System,BDS)。模块的核心芯片为北斗导航子公司和芯星通的Mockbird UC6225,该芯片是小型化的全球导航卫星系统(GNSS) 基带射频一体化芯片。UC6225 芯片采用完全自主知识产权的GNSS技术,一体化方案需要更少的外围器件,节约硬件成本,使产品扩展应用成本低、体积小、性能高,具有良好的用户体验。UC6225芯片配置灵活多样,可同时支持 64通道信号定位,具有独特的Ultra-sense高灵敏度基带设计,定位精度(RMS)可达2.5 m CEP,北斗 B1的跟踪灵敏度为-161 dBm。UC6225集成SPI接口的片上Flash,无需外接存储器即可存储定位数据。芯片供电电源1.8 v,连续跟踪时功耗约90 mW。简洁的一体化定位解决方案非常适合于移动监控、导航、追踪等消费类应用。
坐标定位模块采用和芯星通的UM220-III NB模块。这个模块是北斗和GPS双定位模块的集成应用。UM220-III NB采用北斗抗干扰UC6225芯片,具有集成度高,适合GNSS规模应用等特点。此模块高性价比,抗干扰,能在复杂环境下稳定精确定位。输出接口为1个串口和1个PPS输出,数据格式协议是NMEA 0183和Unicore,数据更新率为默认值为1 Hz,也可以通过配置更改数据更新率。模块冷启动定位时间为32 s,热启动定位时间为1 s。UM220-III NB模块外围电路图如图4所示。
状态信息监测模块选用 InvenSense公司的MPU6050模块[8]。MPU6050是一款低成本的6轴传感器模块,包括三轴加速度和三轴角速度陀螺仪。它对陀螺仪和加速度计分别使用了三个16为的ADC,可以使直接测量到的模拟信号量转化为单片机容易处理的数字信号量。为了精确测定待测物体的三维角度和三维加速度,传感器的测量范围可以编程设置。该芯片内部自带数字运动处理器硬件加速引擎,可以直接输出经过解算后的姿态数据。陀螺仪工作电流为5 mA;加速器计工作电流为350 uA。与外围设备之间通信采用400 KHz的I2C接口或1 MHz的SPI接口。接口电路如图5所示。
图4 定位模块接口电路
图5 加速度传感器接口电路
本套系统的软件设计主要是通过STM32F405RGT6高效准确的读取MPU6050模块的三维角度和加速度、UM220-III NB模块的坐标数据,控制CC2540F128芯片与智能手机互联发送数据。重点计是读取MT2511采集到心电图(EKG)和光电容积脉搏波(PPG)生物信号,软件滤波[9]、算法优化得到血压、心率、心电、脉搏等数据。
大量理论与实验表明,血压与脉搏波传导时间(PWTT)存在着近似线性关系[10]。因此本文就是利用从 MT2511中采集到心电信号和光电容积脉搏波信号,通过这个两个信号的融合求出特征点的时间差,得出脉搏波传导时间,进而拟合出对应的脉搏血压值。已有许多产品的心电信号和脉搏波信号是由两个独立的硬件模块进行采集的,而本系统的两种信号是通过一个芯片MT2511同时采集,大大的减小了因为时间同步问题而带来的误差。
脉搏波的传导时间和血压之间的线性关系为:量,P为血管的跨壁压强。
对于给定的一个个体,他的血压改变时血管内径和血管壁厚度的改变微乎其微,因此对上式进行求导后,第二项可以近似看作一个常量,所以上式可以简化为:
简化后的式子说明,在血管的厚度和内径变化不大的情况下,血压的变化量与脉搏波的传导时间变化量成正比,可以将血压与脉搏波传导时间 PWTT写为:
其中,α和β是待定系数,每个个体在短时间内,这个数值是常数。大量的研究数据得到 α值约为-0.7~-0.9,β值约为 270~300。为了分别确定每个待测个体的α和β值。本系统借助袖带血压测量设备进行校准参数。因袖带血压测量一次需要半分钟左右,而此时会采集到多次心电及脉搏信号,所以选取 10次测量平均值计算脉搏波传导时间。利用本系统自带的按键将袖带血压测量值输入系统,对待定系数矫正之后存入片上Flash中,达到一个个体只需要一次测量矫正即可。
本系统两种信号是同一个芯片采集,利用定时器可以准确的测量这个时间查,关键是通过软件算法准确的找到这个起至点。将心电信号和脉搏波信号采集后连同时间同时存入数组中,通过算法得到心电信号的峰值对应的时间,以及此次峰值后脉搏波到达峰值20%的时间,两个时间之差即为一次PWTT。
STM32F405RGT6设计的采样频率为560Hz,由于心电信号的频率0.05Hz~100Hz,直接采集到数据会有噪声存在。一般在MT2511输入端再设计一滤波器电路进行消除噪声干扰。将心电信号EKG和光电容积脉搏波PPG信号和产生的时间分别存储在MCU中的FLASH中,利用适当的软件滤波算法,得到心电、脉搏、心率等信号,并计算出心电信号的峰值和光电容积脉搏波的峰值、谷值。利用差分阈值,提取出这些峰值对应的时间,并对这些时间分别求差,计算出脉搏波传导时间。为了减小这个时间的误差,采取去掉最大值和最小值再求平均值。最后计算出个体血压值。
坐标定位模块UM220-III NB工作前,需要先初始化。初始化信息如下:
(1)初始化及配置串口,命令为:$CFGPRT,1,0,57600,3,3
该命令设置使用串口1,波特率为57600,数据格式输入为和芯星通软件接口协议、输出为 NMEA协议。
(2)设定卫星系统配置,命令为:$CFGSYS,h48
设定接收机使用的卫星频点,执行该命令后,接收机会复位,复位后设定才生效。本示例为只开启北斗定位系统频点。
(3)设定NMEA配置,命令为:$CFGNMEA,h30
该命令设置输出的NMEA协议在标准version3.0基础上扩展北斗相关的语句。
(4)设定输出特定消息的输出配置,命令为:$CFGMSG,0,1,0
该命令设置GLL关闭输出。这个命令的第一个参数为消息类别,0代表GGA、GLL、GSA、GSV、RMC、VTG、ZDA、GST消息,1代表POS、VEL、TIME、ACC消息,第二个参数代表消息ID,第三个参数代表最高输出频度,如果设置为0表示关闭该消息输出。
UM220-III NB初始化完之后就可以接收数据。在Unicore 协议中[11],输入和输出的语句被统称为消息。每条消息均为全 ASCII 字符组成的字符串。消息的基本格式为:
$MSGNAME,data1,data2,data3,…[*CC]
所有的消息都以“$”开始,后面紧跟着的是消息名[12],之后跟有不定数目的参数或数据[13]。为了提取我们需要的经纬度信息,必须正确解析收到的命令。每条 NMEA指令中信息[14]均以逗号分隔。如$BD2GGA,062841.000,3801.1152,N,11607.0859,E,1,4,2.677,36.243,M,0,M,*70这条命令,我们需要纬度是3801.1152,N代表北纬,经度为11607.0859,E代表东经。
人正常行走或日常生活中时,身体的加速度信息是平稳变化的,当发生跌倒等意外情况时,加速度信息会急剧变化,加速度幅度范围一般不超过±7 g,所以MPU6050的量程选择±8 g。跌倒的时候除了加速度值会急剧变化,角度值也会有很大的变化,我们把角度值短时间变化超过60度也定义为意外状态。由于跌倒的时候方向可前、可后、可左、可右,因此为了准确判断被监测对象,我们取角度和加速度变化率的或运算。即任一时刻与前一时刻相比,x、y、z三轴中大于等于一个轴的角度变化超60度同时大于等于一个轴的加速度超过1.5个g,均定义为跌倒状态。状态数据采集周期100 ms,即每100 ms记录一次三轴角度和三轴加速度,时间间隔选择 500 ms,取连续两个500 ms间隔的各个状态数据的平均值作为判断依据。当监测到跌倒状态时,系统会发出滴答声音警报。本系统设置有报警取消按键,警报提示音后10 s内若未按下取消报警按键将立即启动蓝牙模块,并通过北斗导航读取位置参数,将此时的坐标参数连同人体的生理参数发给智能手机。智能手机收到异常数据后立即以短信的形式通知出去。
本文设计了基于stm32和MT2511的智能监护系统,主要实现了血压、心率、心电、脉搏、跌倒监测,并可将状态数据通过蓝牙传输到智能手机上保存分析及发送报警警报等。本系统选取的stm32是目前性价比非常高的MCU,生物感应模拟前端芯片选用联发科技MT2511比分立元件抗抗干扰行强,同时性价比也比较高,定位芯片选取国产北斗导航系统。同时配合相应的软件滤波及处理算法等,使得本系统功耗较低、便携可穿戴、抗干扰能力强,相比市场上现有产品具有一定的技术优势及应用前景。
[1]李梁, 文笃石. 基于ARM的心电监护仪的设计与实现[J].国外测量技术, 2017, 36(3): 71-72.
[2]邱云翔, 蔡成林, 孙凯, 等. 基于北斗可穿戴式老人心率检测仪[J]. 电视技术, 2017, 41(2): 19-22.
[3]武利珍, 张文超, 程春荣. 基于 STM32 的便携式心电图仪设计[J]. 电子器件, 2009, 32(5): 948-949.
[4]张秀娟, 程飞龙. 基于 STM32的便携式生命体征监护仪设计[J]. 电子技术应用, 2013, 39(11): 21-22.
[5]薛冰冰, 吴书裕, 李亚萍, 等. 基于STM32的微型多参数健康监护终端的设计[J]. 电子技术应用, 2014, 40(2): 13-14.
[6]叶康, 杨鑫源, 雷韵, 等. 基于蓝牙4.0的养老机构无线医疗监护系统[J]. 科技与创新, 2017(2): 18-19.
[7]叶文辉. 小型无人直升机分析及飞控系统研究[D]. 南昌:南昌航空大学, 2014: 34-35.
[8]张承岫, 李铁鹰, 王耀力. 基于MPU6050和互补滤波的四旋翼飞控系统设计[J]. 传感技术学报, 2016, 29(7): 1011-1015.
[9]许永峰, 贺玉成, 周林. 血压脉搏振荡波的三重软件滤波提取算法[J]. 电子测量与仪器学报, 2015, 29(3): 454-455.
[10]李家杨, 叶兵, 朱晓冬. STM32的无创连续血压测量系统设计[J]. 单片机与嵌入式系统应用, 2017(4): 75-76.
[11]戴志军, 徐余法, 苏强强, 等. 基于北斗授时定位的太阳能追光系统[J]. 上海电机学院学报, 2017, 17(3): 148-149.
[12]江良剑, 熊善泉, 焦海松, 等. 基于北斗授时的雷达接口时序设计方法[J]. 全球定位系统, 2015, 40(2): 43-44.
[13]李玉萍. LXI授时与同步模块研制[D]. 哈尔滨: 哈尔滨工业大学, 2014: 31-32.
[14]龚江昆, 达风. BD/GPS双模卫星通用导航模块的设计与实现[J]. 四川兵工学报, 2015, 36(6): 111-1112.