生理参数采集是指对人在特定环境下静止或活动时的某些生理参数进行测量、处理和传送。该技术应用领域广泛,如医疗、保健、体育、军事和服装舒适性评价等。生理参数采集的实现方法是将传感器置于人体相应部位,以有线或无线方式将传感器采集到的数据传送到终端进行处理。在使用中有线传输的方式有时会受到限制,所以有必要研究采用无线方式传输数据的方法。如在服装舒适性评价应用中,主要方法有:在真实环境下对人体表温湿度的测量;在模拟环境(人工气候室)下对真人或假人体表温湿度的测量,根据测量值给出主客观评价。在进行真实环境下人体穿着动态实验时,无线数据采集传输方式会带来很大方便。无线传感器网络技术发展迅速,将这一技术应用于人体生理参数采集在国内已有相关应用,如参考文献[2]提出基于Zigbee技术的无线传感器网络在远程家庭监护中的应用,参考文献[3]提出了无线传感器技术在医疗监护中的应用。本文将结合具体应用,从无线传感器网络节点软硬件平台选择、网络体系结构、MAC层协议、节点低功耗设计等方面分析和设计人体参数采集。
1 系统设计
1.1 网络体系结构及协议
网络拓扑结构主要描述网络节点的连接模式。人体生理参数采集范围小,传感器节点集中,各节点间一般不需要通信。根据这些特点,可以使用星型网络拓扑结构。在星型拓扑结构中,每个分支节点以点到点的方式连接到中心节点上,当在中心节点与分支节点间大量通信时,采用星型拓扑结构是最有效的。其优点在于能够将资源集中、网络易于管理、覆盖范围集中、路由算法相对简单,有问题的节点很容易在不影响其他节点性能的情况下被中心节点隔离掉。
在无线传感器网络中,MAC(Medium Access Control)协议决定无线信道的使用方式,在传感器节点之间分配有限的无线通信资源,对传感器网络的性能有较大影响,是保证无线传感器网络低功耗工作的关键网络协议之一。人体生理参数采集应用中,传感器节点周期性采集数据,供电常采用小型纽扣电池,而中心节点一般供电充足,所以采用CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)控制协议。中心节点不关闭射频模块,持续接收。传感器节点定时采样、发送数据,在需要发送数据时打开射频模块,首先对信道进行侦听,若信道被占用,则退避一段随机时间后再继续侦听,若此时信道没有被占用,则发送数据,得到确认后关闭射频模块,MCU进入睡眠模式,等待下一次定时触发。
1.2 射频收发器件及网络操作系统
传感器节点要求体积小、功耗低、能够进行数据处理和无线收发,这里采用TI/Chipcon公司CC2430EM评估板作为无线收发模块,传感器电路根据需要自行设计。CC2430评估板的P0.1~P0.7、P1.0~P1.7及P2.0~P2.2口线,可与传感器电路连接进行控制。芯片CC2430内嵌CC2420射频收发器和8051 MCU,内含12 bit模/数转换器、4个定时器、32 kHz晶振的休眠模式定时器,硬件支持CSMA/CA,供电电压2.0 V~3.6 V,在掉电模式下电流消耗仅0.5 μA,可通过外部中断或实时时钟唤醒。无线传感器网络可以被视为由多个能量、存储空间和处理能力有限的CPU组成的计算机系统,这些CPU相互独立,又协同工作。为便于软件开发与维护,提高软件开发效率,采用TinyOS嵌入式操作系统。TinyOS是一种专门为嵌入式系统设计的基于组件的操作系统,主要应用于无线传感器网络,由nesC语言实现,它采用轻量级线程技术、主动消息通信技术、事件驱动模式、组件化编程方式。使用该操作系统能够提高CPU使用率,在TinyOS的调度下,所有与通信事件相关联的任务在事件产生时可以迅速进行处理。在处理完毕且没有其他事件的情况下,CPU将进入睡眠状态。
1.3 节点设计
图1为人体生理参数采集网络结构示意图。为提高便携性能,可以将其中的PC机用嵌入式设备替换。图中各传感器节点定时采样、发送数据,中心节点收到数据后通过串口送至PC机,进行显示和处理。
节点有两类:传感器节点和中心节点。在TinyOS环境下编程语言为nesC,为支持组件化编程模式,nesC语言引入了接口和组件的概念。接口是一些功能类似或相关的函数声明,根据调用方向不同命名为命令或事件,具体实现在提供或使用该接口的组件中。组件包括配件和模块,配件负责把不同组件通过接口连接起来,模块提供程序所需的代码实现。对于传感器节点,需要针对不同的传感器设计硬件驱动组件,结合已有的中间组件(如系统组件、电源管理组件、A/D转换组件、定时器组件、射频组件等),设计应用层的配置组件和模块组件。下面以温湿度传感器节点为例说明设计方法,温湿度传感器采用瑞士SENSIRION公司的SHT10。
温湿度传感器节点的组件连接如图2所示。小矩形框内是各组件使用和提供的接口,箭头方向表示命令调用的方向。因为所有传感器节点都具有定时采样、数据处理、按协议数据收发、射频模块和MCU电源管理等功能,所以这里将与传感器有关的操作单独设计一个组件SHT10_C,在顶层配件中通过与不同类型传感器组件连接,实现各传感器节点功能。将与传感器操作无关、与应用相关的其他功能组合设计一个中间组件SensorNet_C,通过与下层配件McuSleepC、CsmaC和CC2430ActiveMessageC连接,实现MCU电源管理、CSMA协议及射频模块控制。配件SHT10_C和SensorNet_C仅提供组件间连接关系,其实现分别由SHT10_M和SensorNet_M完成。在调用命令Send.send()发送数据时,首先进行清洁信道评估,如果信道被占用,则需要退避一段时间。退避时间由随机函数产生一个1~31之间的随机数,与一个给定初始值(这里设为160 μs,即10 symbols)相乘而得。初始值可以根据网络中节点数量进行调整,节点少则初始值小,反之则适当加大。温湿度传感器节点的顶层配置组件程序如下: