刘西恒, 吴 薇, 浦志敏, 冯玉婷
(杭州电子科技大学 电子信息学院,浙江 杭州 310018)
胎动信号是胎儿的一项重要生命体征,胎动信号的检测对围产期的母婴监护有重要意义。一般孕妇通过自数胎动次数确定胎儿是否正常,在医院中医生普遍使用超声波成像监测胎动,2种方法都可以有效降低因脐带绕颈等因素导致的胎儿死亡率。但是自数方式存在不准确性,超声波成像需要医生辅助,显然设计一种可穿戴的不需要医生协助胎动监测设备是有必要的[1]。在对胎动信号的采集方面,加速度传感器适合采集人体活动加速度信号,目前已经广泛应用于跌倒检测和手势识别等体感监测领域[2,3]。系统在医生的协助下进行了实际的胎动信号采集,得到的数据表明:系统能够长时间稳定采集胎动信号并准确地传输至外部接收设备,具有一定的工程应用和研究价值,为深入研究胎动信号打下了基础。
图1为总体设计结构,以Freescale公司的 Kinetis L16单片机作为系统的控制器,采用4只MMA8451Q型三轴加速度传感器作为信号源,传感器内部将模拟信号转换为14位浮点型数据输出,通过两路硬件内部集成电路(interintegrated circuit,I2C)总线接口I2C0和I2C1传输到单片机控制器中,单片机对胎动数据进行打包通过通用异步收发传送器(universal asynchronous receiver/transmitter,UART)发送至低功耗蓝牙,蓝牙将胎动数据上传至移动设备中。
图1 总体设计框架
采用USB接口和锂电池供电2种方式,锂电池可以通过USB接口充电。锂离子电池需要非常精确的充电电流和放电电压,以此来优化电池的电池使用时间和性能。电源管理芯片采用BQ24040,其外围电路如图2所示。
图2 BQ24040外围电路
BQ24040具有输入过压保护和较高的输入电压供电范围(7 V的输入过压保护,30 V输入额定电压),可以使用大部分移动设备的充电器充电。
图2电路的左端为micro USB 接口,右端接锂电池及后续的稳压电路。锂电池提供3.7 V电压,为了得到3.3 V的稳定电压,采用低压差 (low dropout,LDO) 线性稳压器。相比传统的3脚稳压芯片,其具有较高的调整率,更小输出纹波,极小的静态电流,超快的响应/负载瞬态[4]。本系统采用LDO芯片XC6221,外围元件少,占用空间小,适合低功耗设计。
在胎动信号的采集上,与文献[5,6]不同,本文采用三轴加速度传感器。以4只传感器组成网络均匀覆盖在孕妇的腹部,可以相对完整地采集胎动信号。本系统传感器为MMA8451Q,属智能、低功耗、电容式、微机械的14位分辨率的三轴加速度计。本设计使用4只传感器挂载在两路I2C上,每路I2C上有2只传感器,传感器的地址由图3中R2和R6决定。若R2焊接电阻器,R6断开,传感器地址引脚SA0接上拉电阻器,此时传感器的在I2C总线中的地址为1D;若R2断开,R6焊接电阻器,传感器地址引脚SA0接下拉电阻器,此时传感器在I2C总线中的地址为1C。
图3 传感器电路
系统的无线传输模块采用CC2541低功耗蓝牙芯片[7]作为控制器,结合巴伦匹配电路和外部晶振共同组成。蓝牙模块电路中使用HHM1520巴伦转换芯片与图4中C10,C11,L1组成巴伦匹配电路。巴伦匹配电路将单级天线接收到信号变为双路差分信号,以便维持天线的辐射效率,连接滤波电路和单端天线,形成射频收发机。巴伦匹配电路和天线的设计是保证射频电路指标良好的关键,对通信距离和系统功耗都有较大影响。考虑到降低成本,本蓝牙模块采用倒F型2.4 GHz的PCB天线,如图4中ANT1。
图4 蓝牙模块电路
系统的软件设计包括两部分,单片机和蓝牙。单片机软件的开发环境为CodeWarrior,蓝牙软件的的开发环境为IAR。单片机和蓝牙软件流程如图5所示。单片机上电后,首先对硬件初始化,然后等待蓝牙的采样请求。收到采样请求后,单片机发送采样命令到传感器,接收加速度数据并打包,并通过串口传送给蓝牙。蓝牙与外部设备建立连接后,向单片机发送采样请求,每次收到单片机发来的完整数据包并完成解析之后通过天线发送到外部设备上。
图5 软件流程
在实际使用中,设备采集到的传感器阵列数据出现了数据不正常、不完整的现象。为了解决单片机与蓝牙之间串口通信存在的错误率需要设计一种通信协议。在这种通信协议下,单片机每次完成1次采样,都会对4只传感器的加速度数据进行打包,分别添加2B的开始位和结束位,计算并填充发送的数据长度和校验和。蓝牙部分接收到数据包后,会首先检查开始位和结束位以确定数据包是否完整,获得有效数据长度,并自行计算数据的校验和,同接收到的校验和进行比对,如果一致,则数据接收正确。串口通信协议的格式如图6所示。图6(a)表示一个完整数据包的结构,有固定的起始标志和结束标志,为避免与胎动数据冲突,设定为连续2B数据。其他字节包括有效数据长度和校验和,用于解析数据包来确定数据的正确传输。从图6(b)可以看到有效数据包括4只传感器采集到的数据,每只传感器有3个轴向的数据x,y,z,每个轴向包含2B。
图6 数据传输协议
在实际测试中,本协议能够确定出数据包是否完整,选择不同的波特率和数据包长度对CC2541接收串口数据的错误率进行了统计。每组实验中,共发送1 000个数据包,每100 ms发送1次,通过串口调试助手确定数据包是否接收成功。由串口调试助手的得到的串口通信的错误率如表1所示。可以看出,波特率的大小对于错误率也是有影响的,这是因为,传输速度越快,数据包会在更短的时间内被蓝牙接收,减少蓝牙协议栈中其他任务的干扰。
表1 CC2541串口通信在不同波特率和数据包长度下的误码率
CC2541模块的软件部分建立在蓝牙4.0协议栈BLE—CC254X—1.3.2基础上,蓝牙协议栈是蓝牙协议的具体实现形式,表现为代码实现的函数库。函数库提供应用程序接口(application programming interface,API),由OSAL作为操作系统调度使用。OSAL启动后,首先是对系统、基本任务和外围设备的初始化;待初始化后,系统不断轮询蓝牙事件,检测是否有外部蓝牙设备对其的连接请求;如果有请求,与外部设备建立连接并提供服务,否则将会继续轮询蓝牙事件。为了接收单片机通过串口发送来的数据,本文在协议栈中添加串口事件回调函数,当有串口事件发生时,回调函数确定数据的完整性和准确性,确定数据完整无误后,启动数据上传事件。
BLE 协议栈的通用属性配置文件(generic attribute profile,GATT)层设计用于应用程序在两个连接设备之间的数据通信,其中的特征值(characteristic)用于存储和处理GATT服务器中的数据,当蓝牙提供数据传输功能时,必须建立对应的特征值。为了传输单片机发送的胎动数据,添加4个特征值,分别用于4只传感器的数据,如表2。
表2 用于胎动数据传输的特征值
handle是特征值的句柄,通用唯一标识符(universally unique identifier,UUID)是特征值的统一识别码。数据上传事件负责将胎动数据更新到GATT层的特征值,完成数据到移动设备的上传。
本文系统实物如图7所示,尺寸完全可以缝制在孕妇装中。实际测试中,将设备缝制在纺织物中,紧贴孕妇的腹部,同时会记录孕妇的心跳和翻身,打嗝等干扰因素。蓝牙将原始数据传递到移动设备中,移动设备上的APP将原始数据转换为浮点型加速度数据。在使用胎动监测设备采集数据的同时,会有医生观察超声设备中的胎儿成像,当有明显胎动时按压胎动采集设备上的按钮,作为真实胎动信号的参照。按照超声设备记录真实胎动信号发生的时间点,原始数据经过汉明滤波器和小波去噪的预处理后,在经过平滑维格纳—维尔分布(Wigner-Ville distribution,WVD)时频分析后,得到胎动信号的时频分布,如图8(a)所示,图8(b)为信号的时域分布。经助产医生观察,该信号的时频分布符合胎动信号的特征,确认为有效胎动信号。
图7 实物
图8 胎动信号时域和时频分布
针对当前胎动信号采集方面的不足,本设计提供了一种有效的信号采集方案。给出了完整的软硬件设计和数据的传输方式。在医生的协助下获得了真实有效的胎动数据。另外,进一步研究压缩感知在胎动信号采集上的应用对降低系统功耗、降低数据存储空间具有重要意义。