基于ZigBee无线传感网络的人体动作信息采集平台设计
人在日常生活中的一举一动都离不开加速度的变化,所以采集人体动作信息主流方法之一就是利用加速度传感器来识别人体运动状态[1]。对于采集人体动作信息,单个加速度传感器已经无法满足研究人员的需要,出于不同的实验目的,投入的加速度传感器数目也不同,传统的点对点无线模块也无法适应多节点的通信需求,结合无线传感网络技术采集信息成为学者们研究的热点话题[2]。ZigBee技术凭借低成本、低功耗、自组织、低复杂度等特点[3],在自动控制、远程控制、环境监测以及智能家居领域相比较蓝牙、WiFi和红外等技术更具优势[4]。基于此,本文设计实现了一种基于ZigBee无线传感网络的人体动作信息采集系统,该系统可采集加速度值,并将数据传至上位机进行后续处理。
1 采集平台架构设计
如图1所示,本文提出的信息采集平台由ZigBee无线采集网络和上位机监测平台组成,整个ZigBee采集网络由Z-stack协议栈支撑运行。ZigBee网络有且仅有一个协调器与多个路由器和终端设备组成,本实验由于不需要较远距离的传输过程,终端节点相互之间以及节点与协调器之间不受距离因素影响,所以本采集网络不添加多余的路由节点,以避免不必要的路径选择,提高传输效率。实验采用3个终端节点和一个协调器的设计方案,3个终端设备可以分散地绑在实验对象身体上采集运动信息,终端节点会将加速度值无线传输给协调器,协调器再经过串口发送给上位机软件,上位机软件描绘出各节点的三轴加速度值的变化曲线图。
2 ZigBee网络工作原理及网络拓扑
实现整个ZigBee无线网络的功能,其核心就是ZigBee协议栈,本文采用的是美国TI公司推出的Z-stack协议栈[5]。在Z-stack协议中添加了操作系统抽象层OSAL(Operating System Abstraction Layer),该层好比一个简化的实时操作系统,实现的方式是建立一个多任务链表,链表中存放着协议栈每层的处理函数名,即指向每层处理函数的指针,并赋给每个处理函数连续的任务ID号。当程序运行时,就会不断地递增任务ID号来查询某任务是否有事件触发,同时每一个触发事件都伴随一些数据传递,系统将事件和它的数据封装成一个消息,为此OSAL层维护了一个消息队列,每一个任务处理事件时会调用消息接收函数来取得自己的数据包。
ZigBee网络拓扑结构分为星形网络、网状网络以及树状网络。由于人体动作信息测量的终端节点相互距离短,测试环境在室内测量,实验采集节点数为3个,数据容量需求小,所以采用结构简单、速率较快的星形网络来实现[6]。
3 无线传感网络系统实现
3.1终端节点设计
(1)硬件组成
本文系统的终端节点以及协调器节点均采用TI公司的CC2530芯片设计。这款芯集成了一个高性能的RF收发器与一个增强型8051微处理器、8 KB的RAM、32/64/128/256 KB闪存以及一套强大的外设集[7]。终端节点的硬件结构图如图2所示,该节点模块主要由传感器模块、CPU内核、RF射频模块、A/D转换模块、DMA控制模块、电源模块以及晶振模块组成。其中加速度传感器模块采用飞思卡尔公司的MMA7361L加速度传感器,这是一种低功耗、高精度、模拟量输出的三轴加速度传感器,本实验采用1.5 g精度模式,其精度为800 mV/g。
(2)软件设计
终端节点的软件设计要满足低功耗、采集速度快、保证一定的精度要求等特点。本系统ZigBee无线网络的开发平台采用IAR Systems公司的IAR 2007开发平台。编程采用模块化思想,分别有加速度传感器驱动模块、ADC转换模块、DMA驱动模块、通信协议模块以及中断处理模块。为将读取的加速度模拟量值转换为可存储的数字量值,需要开启A/D转换,与传感器三轴连接的GPIO口必须设置为ADC外设引脚。为了减轻CPU内核的负担,降低转换时间,提高收发速率,本实验采用直接存取访问(DMA)控制器将加速度值从A/D转换模块不经过CPU直接传送到RF接收缓存器中,再传送给协调器单元[8]。终端节点的程序流程图如图3所示。
MMA7361L三轴加速度器所测得的加速度值为模拟量,经过A/D装换后得到对应的数字量,本实验用线性插值法计算出与实测数字量对应的加速度值。具体公式如下:
其中Dig为测得模拟量; A为所求的加速度值; U为电压,其量程为0 V~3.3 V; G为重力加速度,其量程为-1.5 g~1.5 g;C为常数,该A/D转换的有效位共9位,故29为512。
3.2 协调器设计
协调器硬件设计与终端节点类似,协调器软件实现主要分为网络管理、数据上传功能。网络管理包括了创建ZigBee网络,允许新的终端节点加入网络并分配16位网络地址,接收网络中各节点数据,向网络各节点发送操作命令,绑定网络节点等操作。数据上传则是与上位机的通信模块,在接收到了某终端节点的数据后立即送至上位机,才能使上位机同步的做出加速度值变化曲线图。为此,协调器沿用DMA控制器将RF收发缓冲器的数据不通过CPU内核直接发送至UART串口,这样可以保证传输速率同时不加重CPU负担[9]。协调器的软件设计过程如图4所示,网络中有3个终端采集节点,所以要在确认与3个节点都通信成功以后再进行数据采集工作。
4 上位机软件设计与实现
上位机监测软件是在Visual Studio开发环境下自定义编写的。软件界面上能显示协调器向上位机串口所发送的数据,经过处理后分别可显示出各终端节点的网络短地址以及对应的三轴加速度X、Y、Z实时变化的数值,最后在每个节点对应的图框中显示三轴的变换曲线趋势图,以红、蓝、绿三色线分别表示不同的方向。测试结果如图5所示,图中有A、B、C 3个终端采集节点,分别固定在人体的手臂以及两腿脚踝处。前两幅曲线图采集的是走路时左右脚的加速度值变换,图中的波峰波谷振动区域就是抬脚落地的过程,平稳区则是脚和地面接触的过程;第三幅曲线图采集的是手臂来回摆动加速度值变化曲线,可以从X、Y方向上明显看出周期性变化,Z方向也有小幅变化,不明显的原因是Z方向几乎垂直于手臂摆动的运动平面。
将ZigBee网络用于采集人体动作信息,介绍了采集网络以及检测平台的总体方案,ZigBee协议栈的工作原理及网络拓扑,终端节点以及协调器的软硬件设计,并对系统进行测试。测试结果表明,利用ZigBee网络星形拓扑能够较好地采集到各节点加速度值并上传,通过自定义编写的监测软件可以观察加速度值的变化曲线,从而分析人体动作的变化。该系统方案实现了对人体动作信息的采集,利用该采集网络进行二次开发,分析动作类别,模拟出人体的运动轨迹,可应用于更广阔的平台。