摘要:提出一种基于射频芯片CC2531的无线传感器网络节点的软件设计方案,基于任务调度机制,采用功能模块化设计。简要介绍了无线传感器网络的系统结构和节点的硬件电路,重点对系统软件主流程以及数据采集、数据处理、数据传输和能源管理4个功能模块的软件设计作了详细介绍。
引言
无线传感器网络(Wireless Sensor Network,WSN)是由一组传感器网络节点组成。它们通过多跳自组织的方式构成无线通信网络系统,传感器节点实时采集分布区域内监测对象的各种信息,以无线通信方式发送至上位机。节点硬件提供了实现相关功能的平台,而真正实现这些功能的应用需要借助软件来完成。因此,软件设计对整个节点的功能控制和资源的分配利用有较大的影响。
1 无线传感器网络系统结构
整个传感器网络是由若干个采集节点、1个汇聚节点、1个数据中转器以及1个便于用户查看和控制的上位机组成。系统的结构如图1所示。采集节点用于对环境数据的采集和数据的预处理,担当数据的路由;汇聚节点负责整个网络的开启和维护,向采集节点发送命令,搜集节点的数据,以及完成与数据中转器之间的串口通信;数据中转器承担数据的中转,负责转发上位机的命令;上位机是数据搜集的终端设备,并且可以根据用户的需要对节点的采集时间间隔、休眠时间间隔、传感器的开关进行相应设置。
2 节点硬件设计
为方便数据的搜集,汇聚节点和采集节点硬件电路设计相同,只是软件设计有所不同。任意节点都可作为汇聚节点与数据中转器通过串口进行通信,来搜集网络中其他节点的数据。
核心芯片选用TI公司推出的ZigBee芯片CC2531。它以8051微处理器为内核,自身携带的射频收发器用来实现无线传感器网络节点的通信。选用5 路I/O口来控制传感器的打开和关闭。传感器组将相应的环境数据变成电压、电流等信号送给信号调理电路,经相关调理后送到CC2531的A/D转换器接口进行A/D采样,最后将得到的采样数据存入一个外接的256 Kb的存储器中。当节点作为网络中的汇聚节点时,CC25 31的两路I/0口被设置成UARTO串口Tx和Rx,用于与数据中转器进行串口通信。为保证节点长期稳定地工作,选用3 Ah的铅酸充电电池,两组铅酸电池采用双电源供电模式。软件通过控制两组铅酸电池的切换实现对节点的轮流供电,并在电池电压不足时控制太阳能电池板对其进行充电,保持“一充一供”的状态。
3 节点软件设计
3.1 ZigBee技术简介
ZigBee技术是一种近距离、低复杂度、低功耗、低传输速率、低成本的双向无线通信技术,主要适合于自动控制和远程控制等领域,可以嵌入到各种设备中,相对于其他的无线通信标准更简单紧凑。此外,ZigBee具有省电、可靠、延时短、网络容量大、安全等优点。
3.2 节点软件主流程
本软件设计基于TI公司的Z-Stack 2007协议栈。Z-Stack 2007是TI公司专门为CC2531芯片设计的ZigBee协议栈。它是由一个简单的单线程操作系统管理,该系统基于任务调度的机制。各个任务的事件处理函数按照任务的优先级被放入函数指针数组tasksArr[idx]中,事件以16位的变量形式存放在数组tasksEvents[idx]中,因此每个任务最多可定义16个事件。
操作系统运行流程如图3所示。主函数在完成节点相关的初始化之后会进入操作系统,操作系统是一个无限循环,一直在检测各个任务中的事件 tasksEvents[idx],当它不为零时就会调用相应的事件处理函数tasksArr[idx]。处理完一个事件会将代表此事件的位清零,同时返回未处理的事件,直到这个任务中所有的事件处理完毕(即所有的事件位都被清零),操作系统就会跳向下一个任务进行事件处理。
3.3 节点软件模块化设计
节点软件采用的是功能模块化设计,不同功能用不用模块表示,不同模块间用接口连接,通过接口来调用其他模块的功能。如图4所示,传感器节点主要由数据采集模块、数据处理模块、数据传输模块和电源管理模块组成。
3.3.1 数据采集模块
数据采集模块主要实现对监测区域内各种信息的采集和数据的转换。
实验证明,节点在进行数据和命令收发的通信过程中功耗很大。为了降低功耗,在软件设计上节点在联网状态下只执行通信任务,在休眠过程中只执行采集任务。数据采集模块工作流程如图5所示。节点接收到休眠设置命令,对命令进行解析并从命令中提取传感器标志位,在整个网络进入休眠后,根据传感器标志位来打开需要的传感器。被打开的传感器对监测区域内的各种信息进行采集,然后将采集到的数据送到信号调理电路转换成电压、电流等信号。经过调理后的信号直接传人 CC2531已配置好的A/D转换器接口进行A/D采样。A/D转换器可通过软件编程改变采样精度,其精度为7~12位。
3.3.2 数据处理模块
数据处理模块是无线传感器节点的核心,负责控制整个传感器节点的操作,存储和处理本身采集的数据以及其他节点发来的数据。为便于管理和调度,节点所要进行的操作都是被定义为事件进行处理的,每个事件完成相应操作。将事件按一定关系串接就能实现节点工作时要完成的系统功能。
数据处理模块工作流程如图6所示。数据处理模块对接收到的命令进行解析后,会对所有要执行的操作进行判断。对于本节点要完成的操作,就会触发相应的事件,实现相应的功能;对于其他未完成的操作命令,会通过数据传输模块转发给其他节点。在处理完本条命令之后,会继续等待或接收下一条命令。
3.3.3 数据传输模块
数据传输模块负责与其他传感器节点进行无线通信,传输控制消息和收发采集数据,通过软件来控制无线通信模块的工作模式。若为数据发送模式,先按照通信协议中规定的数据格式对数据进行打包,然后再将数据包发送出去;若为数据接收模式,则按照数据格式对接收到的数据包进行解析,再进行下一步处理。 3.3.4 电源管理模块
电源管理模块主要功能是为传感器节点提供运行所需的能量,并进行电量检测。无线传感器网络需要在无人值守情况下长时间地工作在恶劣环境条件下,因此更换电池是一件很麻烦的事情。为保证铅酸电池能够为节点长期供电,节点硬件电路设计了一个充电控制电路对其进行充电管理。
CC2531专门提供一个I/O口对供电电压进行A/D采样,当供电的电源电压不足(即低于设定的某一个值)时,通过软件控制进行切换,先让另一组电源对节点进行供电,再打开太阳能充电电路对本组电源充电。节点在通信和采集数据时功耗很大,因此在每一次的通信和采集数据完成之后都会检测当前供电电压值和当前的充电电压值,根据两个电压值决定是否进行电源切换、对电源进行充电,以及充电是否完成。
结语
基于CC2531的无线传感器网络系统的软件设计比较复杂,本文仅就传感器节点的各功能模块的软件设计作了介绍。实验结果表明:节点工作状态稳定,故障率低,可以按照用户设置准确地对环境信息进行采集。整个系统具备数据可靠、功耗低、可远程控制等显著优点,具有良好的应用前景。
转载请注明来源:www.ck365.cn