ZigBee无线传感器网络的振动数据采集系统设计
3 软件设计
EM916x核心板预装了Win CE实时多任务操作系统,支持包括MFC在内的各种典型的Windows应用程序框架,可以方便地使用Embedded Visual C++开发各种应用程序。CC2430开发套件自带了完整的ZigBee协议栈,使用IAR集成开发环境对协议栈工程文件进行管理,可以查看并修改整个协议栈的任意层源代码。因此,软件设计分为两部分:Win CE下的应用程序设计和ZigBee协议栈的添加与修改。
3.1 Win CE应用程序设计
应用程序驻留在EM916x核心板中,主要功能是负责打开连接协调器的串口,设置串口通信参数;初始化ZigBee无线网络,查询并返回网络状况,如是否建立成功、各种节点的状态及数目等;监视串口接收协调器发来的数据帧;解码数据帧读取传感器数值,并由EM916x核心板的调试串口打印出来。应用程序流程如图4(a)所示。
3.2 ZigBee协议栈修改
ZigBee协议栈完成了无线网络初始化的绝大部分功能,代码修改应谨慎对待。使用IAR集成开发工具打开ZigBee2006协议栈工程,找到ZMain工程目录。打开后可以看到这是协议栈的主函数目录,包括入口函数和硬件配置文件,在这里便可以添加自定的应用函数。
无线网络中三种节点的功能各不相同。协调器负责初始化无线网络,等待子节点的入网,并接收子节点的数据帧,通过串口发送到主机,程序流程如图4(b)所示。路由器与终端节点添加的应用函数功能相同,首先搜寻ZigBee网络,并向网络中的协调器或路由器申请加入网络;初始化定时计数器,允许中断,对振动传感器的输入方波进行计数,定时向父节点(即允许其入网的节点)发送计数值,图4(c)为路由节点和终端节点的程序流程图。路由器与终端节点只要在下载前选择编译即可。
4 系统仿真
仿真软件使用Lab View编写,仿真界面如图5所示。左侧用于选择ZigBee网络协调器与核心板相连接的串口号、波特率及控制按钮;右上部显示的是终端节点采集到的振动数值,包括节点发送数值时间、节点编号、当前发送振动计数值及上一次发送的计数值。右下方为某个终端节点在一定时段内振动计数的波形图,节点选择在左下方的“奶牛编号”(原项目名称)。图5所显示的是将传感器套挂在奶牛脖子上实地采集到的振动数据。
通过现场实验证明,利用ZigBee无线网络构建的数据采集系统具有非常好的准确性与实时性,而在拥有多个路由节点的网络中,ZigBee网络能够得到非常大的延伸。通过实验也发现了一个问题:当终端节点与地面的距离太近,大约小于30 cm时,节点与协调器之间的通信可靠性及通信距离大为降低,越接近地面,可靠通信距离就越短。后期采用的解决办法是增大无线信号的发射功率,此时通信距离有所改观,但这并不是一个好办法,发射功率的增大意味着节点的电池寿命将缩短。
ZigBee是一种新兴的短距离、低速率、低功耗无线网络技术,其应用领域愈来愈广泛,如数字家庭中的自动抄表系统、室内无线定位及动物远程监控等。本文中无线振动数据采集系统的传感器如果设计成诸如自动抄表器、无线定位引擎等,便可应用于各种不同的场合。
评论