0 黧 面向环境监测的无线传感器网络节点的软件设计 张振兴。童玲,田雨 (电子科技大学自动化工程学院,成都610054) 摘要:环境监测是无线传感器网络的重要应用领域。本文介绍了一种无线传感器网络节点的软件设计方案,该方案利 用了基于ZigBee技术的射频芯片CC2430。节点的软件设计基于任务调度机制,用于监测某一区域内空气温湿度和土 壤温湿度等环境信息。实验结果表明,节点工作状态稳定,故障率低。节点可以按照用户设置,准确地对环境信息进行 采集。整个系统具备数据可靠、功耗低、可远程控制等显著优点,具有广阔的应用前景。 关键词:环境监测;无线传感器网络;ZigBee;CC243O 中图分类号:TP212.9 文献标识码:A Environmental Monitoring Oriented Software Design of Wireless Sensor Network Node Zhang Zhenxing,Tong Ling,Tian Yu (Automation Engineering School,University of Electronic Science and Technology of China,Chengdu 610054,China) Abstract:Environmental monitoring is one of the most important application fields of wireless sensor networks.This paper introduces a software design method for sensor network node based on ZigBee RF chip CC2430.The node software design is based on task scheduling mechanism,and is used to monitor the air and soil environmental information of a region,such as temperature and humidity.Experi— mental results show that the node works with high stability and low failure rate.The node can accurately collect environment informa— tion according to user configuration.The system has the characteristics of data reliability,low power consumption and remote control, showing broad application prospects. Key words:environmental monitoring;wireless sensor network;ZigBee;CC2430 引 言 环境监测是无线传感器网络的重要应用领域。为搜 集某一区域内的环境数据,传感器节点需要在无人值守情 况下长时间地工作在恶劣环境条件下。传感器节点的软 件设计为节点正常工作提供了重要保证。 1 无线传感器网络系统结构‘ 整个传感器网络是由若干个采集节点、1个汇聚节 点、1个数据中转器以及1个便于用户查看和控制的上 位机组成。系统结构如图1所示[1-z]。采集节点用于对 环境数据的采集、数据的预处理,承当数据的路由;汇聚 图1 无线传感器网络系统结构 节点负责整个网络的开启和维护,向采集节点发送命令, 搜集节点的数据以及和数据中转器之间的串口通信;数 2节点的硬件电路 为方便数据的搜集,汇聚节点和采集节点硬件电路设 据中转器承担数据的中转及转发上位机的命令;上位机 是数据搜集的终端设备,并且可以根据用户的需要对节 计相同,只是软件设计有所不同。任意节点都可作为汇聚 节点,与数据中转器通过串Ei进行通信,来搜集网络中其 他节点的数据。节点的硬件结构如图2所示。 点的采集时间间隔、休眠时间间隔、传感器的开关进行相 应设置。 20《平 舡 嵌入式系诧应冈》_圈匝啊细弦固锄 adv@mesnet.conr.cn(广告专用) 数据中转器II存储器 按一定关系串接,就能实现节点工作时要完成的系统功 能。采集节点和汇聚节点的工作流程如图4、图5所示。 汇聚节点和采集节点在同一时刻醒来。当汇聚节点 创建网络成功,并且采集节点入网成功后,全网节点处于 通信状态。汇聚节点会通过串口向数据中转器发送1个 表示网络准备就绪的消息,数据中转器接收到该消息之后 根据上位机的要求决定要不要上传数据,以及上传哪些数 堡重H 量 卜圉J镍氢电池组卜-.—_J 太阳能电池板 童聿垂 图2节点硬件结构图 本设计选用的核心芯片是TI公司推出的ZigBee芯 片CC243ol3]。它以8051微处理器为内核,自身携带的射 频收发器用来实现无线传感器网络节点的通信,提供了4 路I/0口来控制传感器的打开和关闭。传感器将相应的 环境数据变成电压、电流等信号送给信号调理电路,经相 关调理后送到CC243O的ADC接口进行A/D采样,最后 CC2430将得到的A/D值存入1个外接的64 Kb的存储 器中。当节点作为网络中的汇聚节点时,CC2430的2路 I/O口被设置成UART0串口Tx和Rx,用于和数据中转 器进行串口通信。对于能源供应部分,为保证节点长期稳 定工作,选用2300 mA的镍氢充电电池,2组镍氢电池采 用双电源供电模式。软件通过控制2组镍氢电池的切换 实现对节点的轮流供电,并在电池电压不足时控制太阳能 电池板对其进行充电。 图4采集节点工作流程 3节点软件设计 3.1 Z—Stack协议栈简介 本次的软件设计基于TI公司z—Stack 2006协议 栈 ]。Z—Stack 2006是TI公司专门为CC243o芯片设计 的ZigBee协议栈。它由1个简单的单线程的操作系统管 理。该操作系统基于任务调度机制,任务通过API函数 osalTaskAdd()按照优先级添加到任务链表。任务的事件 触发实现任务调度。每个任务最多 . 醒来,创建网络I ' 发送准备就绪的消息L l解 令I 可定义16个事件,每个事件都对应1 个唯一的事件号。NextActiveTask() 件状态ActiveTask,根据返回的事 件值来调用相应的任务处理函数 ActiveTask()进行处理。操作系统 l osalTaskAdd0 I —T— ●Y ●Y●Y NextActiveTask0 I是任务事件查询函数,返回任务的事 l釜 。 l ●I I 薮 l ActiveTask0 F-- I请求休眠l N 任务调度如图3所示。 图3操作系统任务调度 — + 主函数在完成节点相关初始化之后会进入无限循环 过程,该过程会一直检测操作系统的任务链表中是否有事 件要进行处理。 I按照上一次的设置 根据设置命令设置休眠参数 I 芩麦置 全网广播设置命令 t 3.2节点工作流程 为便于管理和调度,节点所要实现的功能都是将其定 义为事件进行处理的。每个事件完成相应功能。将事件 l 休眠 I 图5汇聚节点工作流程 … … … r拇撞击田、 1 l据。汇聚节点接收到命令之后会触发相应的事件进行处 理,先命令采集节点将相应的数据上传给它,再通过触发 串口事件将数据发送至数据中转器。采集节点在入网成 l l’:l lj ≥ 餮 蕊 3.4休眠设置 实验证实,节点在休眠过程中处于断网状态。因此, 为节省节点频繁联网带来的功耗和保证全网节点工作状 态同步,在软件上设计为节点在联网成功后只执行通信任 务,而休眠过程中只执行采集任务。当节点采集时刻到 来,触发采集事件,打开传感器的开关对环境数据进行采 集,并控制I/0口对传感器采集得到的信号进行A/D采 样,最后将采样值以SPI方式存人外部存储器。在每次通 功以后也处于准备就绪的状态,等待接受汇聚节点的命 令,做相应的事件触发处理。 在每次通信结束之前,汇聚节点会向数据中转器发送 1个请求休眠的消息,数据中转器接收到该消息之后会按 照上位机的要求对全网节点的休眠过程进行设置。 3.3 串口通信协议 汇聚节点与数据中转器之间的通信是通过串口进行 的。串口通信协议保证数据的安全收发,便于汇聚节点和 数据中转器对数据进行解析和存储管理。数据中转器和 信结束之前节点都会判断是否有休眠设置命令,若接收到 休眠设置命令,节点则会按照该设置进行休眠,直到下一 次醒来;若没接收到命令,节点则会按照上一次的休眠设 置进行休眠。 汇聚节点之间的串口通信数据帧格式如下所示: SOP l CMD l LEN l DATAI FCS 数据中转器通过串口向汇聚节点发送的休眠设置命 令的数据帧格式如表1所列。 表1 休眠设置的数据帧格式 项 目 S0P CMD LEN 其中,SOP为起始标志符,用1字节来表示数据包的 起始,将这个字节定义为0x02;CMD表示命令ID,用1字 节的数据来标识命令消息。LEN表示DATA的长度,用 1字节来指示DATA位的数据的长度。DATA为具体要 内 容 Ox02 0xO9 0xO9 长度/字节 1 1 l 发送的数据。FCS是校验位,这里使用X0R(异或校验), 校验CMD、LEN、DATA中的所有数据。 SleepingTime 2 2 CollectingTime DATA CurrentTime(Hour) 1 1 1 当汇聚节点和数据中转器通过串口接收到数据后,都 是通过判别CMD对数据进行解析的。串口数据的CMD 有如下几种: CurrentTime(Min) SensorFlag FCS 校验位 1 ①0x03,数据中转器发送上传路由表命令。作为响 应,汇聚节点通过串口上传路由表数据的CMD标识为 0x83。 Sleeping_Time表示节点要休眠的时间;Collecting— Time表示节点在休眠过程中的采集时间间隔;Current— Time是当前的校准时间;Sensor Flag表示传感器开关的 标志。休眠过程中到达采集时刻,进行环境数据的采集、 ②Ox04,数据中转器发送上传邻居表命令。作为响 应,汇聚节点通过串口上传邻居表数据的CMD标识为 0x84。 采样和存储。向采集节点发送当前的校准时间,保证节 点采集时刻精确和时间的同步。同时,传感器的开关标 志位可以控制打开或关闭哪几路传感器,采集用户感兴 ③0x05,数据中转器发送上传采集数据命令。作为 响应,汇聚节点通过串口上传采集数据时的CMD标识为 0x85。 趣的环境数据。到达休眠时刻,节点醒来,连接网络。 ④0x89,汇聚节点发送至数据中转器,表示网络创建 3.5 充 电 为保证镍氢电池对节点长期供电,节点硬件电路设 计了1个充电控制电路对其进行充电管理。CC243O专 门提供1个I/0口对供电电压进行A/D采样。当供电 的电源电压不足时(即低于设定的值),在软件上会通过 成功,等待命令消息。 ⑤0xF9,汇聚节点发送至数据中转器,表示数据全部 上传完毕,等待休眠。作为响应,数据中转器通过串口向 汇聚节点发送CMD为0x09的休眠设置命令。 LEN表示数据的长度,方便数据中转器对接收到的 数据进行空间分配和存储。FCS是校验位,用于表征数据 的准确性。 切换先让另一组电源对节点进行供电,再打开太阳能的 充电电路对电源充电。节点在通信和采集数据时功耗很 大,因此在每一次通信和采集数据完成之后都会检测当 当汇聚节点接收到串口数据时,汇聚节点会触发自身 应用层的串口事件,用于解析发送过来的命令消息,然后 根据该命令来触发相应的事件进行处理。 前供电电压值和当前的充电电压值,根据2个电压值决 定要不要进行电源切换、是否对电源进行供电以及充电 是否完成。 2 2《平‘;机 嵌入式条皖应用》l团皿_强团唧 adv@mesnet.c0m.on(广告专用) | 3.6 异常处理 | 。| 网络中节点在工作时可能出现一些异常,因此要对这 些异常作纠错处理,以保证节点的正常工作。 (1)新加入节点的异步 在全网节点处于休眠状态时,若有新的节点加入网 络,为保证其网络状态和其他节点同步,新加入的节点在 搜索不到网络时会按照默认的休眠设置进行休眠。休眠 醒来继续搜索网络。以此循环直到搜索到网络。 (2)数据出错 数据中转器通过串口获得的数据都要进行校验处理, 若校验出错,则抛弃该数据包,命令汇聚节点重发数据。 (3)无应答 汇聚节点对某一采集节点发送上传数据的请求命令, 若该节点在规定时间内没有作出响应,汇聚节点会默认该 节点被抛弃,它将向下一个节点发送上传数据的请求。 (4)无确认 汇聚节点收到采集节点的数据后都会向该节点发送 一个确认的消息,表示数据已经收到。而采集节点会根据 有没有接收到确认消息决定数据要不要重发。 瓣 结 语 本文基于ZigBee基带芯片实现了简单的CSMA/CA 西若未到3次,置重传标志位,重传数据帧,否则丢弃 此帧。随机退避次数大于最大退避次数时,同样判断是否 重传3次:若未到3次,置重传标志位,重传数据帧,否则 丢弃此帧。在此帧数据没有发送成功,并且重传次数未到 时,不处理之后的数据帧,保证重传的数据帧是需要重传 的数据帧。 协议,同时也适用于其他短距离无线通信系统。笔者已经 在1套433 MHz定位系统中使用了同一协议,收到了良 好的效果。本文介绍实现的只是基本的CSMA/CA协 议,在应用于不同的无线通信系统中时,可以根据系统的 特点再加以改进,就可以达到更好的无线通信效果。 编者注:本文为期刊缩略版,全文见本刊网站www. ⑤无线模块的状态切换。为了保证无线模块状态切 换的时序没有错误,防止由于无线模块状态切换而导致的 严重问题,在CSMA—MAC协议实现过程中,无论对无线 mesnet.com.cn。腿 参考文献 [1]IEEE 802.15.4 specification[OL].[2009—12].http:// standards.ieee.org/getieee802/download/802.15.4—2003. pdf. 模块进行了什么操作,最终都需要把无线模块的状态置为 RXSTATE,打开无线模块的接收天线。 ⑥串口数据帧3次重发的实现。DATA类型的数据 帧发送完成后,如果在一定的时间内未收到ACK,将对数 据进行重发,直至收到ACK;或者重发超过3次,丢弃 此帧。 E2]MC13213Datesheet[OL] E ̄oo9—123.http t MC13213&fsrch=1. .frees— cale.corn/webapp/sps/site/prod~summary.jsp?code— 4测试结果 在我们搭建的一个无线定位小系统测试中,定位节点 与定位卡通信,工作正常;两个定位节点之间的通信,定位 节点收发状态正常,工作正常;定位节点将接收到的定位 卡的数据帧转发至PC上,经过定位算法处理后,定位误 差在2 m范围之内。 E3]瞿雷,刘盛德,胡咸斌.ZigBee技术及应用[M].北京:北京航 空航天大学出版社,2007. 马 一日 §冁 ≯ 强% 0 即 澈 毂硪 强嘏 强一 t秘l “埘辩 | 。 豫■ _ — |0l_赣 t 臻鹫曩 臻臻l i甏嚣巷嚣 l 每l臻警嚣簪魏强强蠹毫警鬻鬻I 哦}l 誊甏嚣静譬L氇硅|囊雏誊瓤 嚣 啦Q|簪誊鼍鬻l_l 强嚣强赫强#_ 强 … r …nD十… n r捋燕击田、 h :………1.…RJ F—k J ……