各行各业尤其是工农业生产、环境监测等领域,都对无线数字监测系统提出了极大的需求和更高的要求。无线传感网的迅速发展并逐渐走向成熟,使得这一需求得到了较好的满足。基于ZigBee技术的无线传感网具有自组织、低功耗、以数据为中心、抗毁性强和无需架设网络设施等优势,可以在外界环境十分恶劣的条件下,完成其他监测手段无法完成的任务,代表了数字监测的一个新的发展方向。本文以TI公司的CC2530和zstack协议栈为平台,给出了基于ZigBee技术的温度及光照度无线传感器网络的设计方法。
本文设计的基于ZigBee技术的无线传感器网络由一个协调器节点、若干路由节点和众多传感节点组成,图1所示是其系统总体结构。其中,传感节点负责对环境温度等数据的监测,然后通过路由节点以多跳方式将数据发送给协调器节点,协调器节点负责将数据上报给监测中心PC机。
根据节点在系统中的应用不同,可分为传感节点、路由节点和协调器节点。各节点的功能不尽相同,可分为数据采集、数据处理、无线通信、能量供应和串口通信等功能。各功能模块采用模块化的方法设计,这样可以实现各模块的并行设计、调试,缩短开发周期,同时也便于后期更换和扩展传IM电竞,IM电竞在线感器,从而方便后期维护或移植到其他监测领域。
本设计中的各节点选用CC2530芯片作为ZigBee模块,实现数据处理及ZigBee无线GHz射频收发器和一个增强型8051微处理器,最大256KB可编程FLASH、8KB的RAM并提供了一套广泛的外设集,为2.4GIEEE802.15.4和ZigBee应用提供了一种SOC解决方案。该模块的电路如图2所示,图2中包含了最小系统、射频前端及I/O接口电路。
各传感节点通过一线对环境温度、光照度进行数据采集,图3所示是数据采集模块电路图。其中,DS18B20可实现-55~+125℃测量范围及最高12位测温分辨率,测温精度可达±0.0625℃,供电电压范围为+3~+5.5V[3]。本设计中供电电压选择来自LD1117稳压芯片的+3.3V输出,数据线kΩ,暗电阻为500kΩ,电路如图3(b)所示,输出电压为0~2V,送至P0.5进行AD转换。
节点软件是在TI公司的ZigBee协议栈——Z-stack基础上开发设计的。该协议栈支持ZigBee网络的建立和加入、自组网、多跳传输和动态网络拓扑。
OSAL是TI公司开发的用于Z-Stack协议栈的一个轮转查询式的操作系统。OSAL把优先级放在最重要的地位,优先级高的任务中的所有事件都具有很高的优先级,只要优先级高的任务有事件没有处理完,就一直处理,直到所有事件都得到处理,才去查询下一个任务的事件。另外,即使当前在处理的任务中有两个以上事件等待处理,处理完一件后,也要回头再去查询优先级更高的任务。只有在优先级更高的任务没有事件要处理的情况下,才会处理原来任务优先级第二高的事件。如果此时发现优先级高的任务有了新的事件要处理,则立刻处理该事件。通过这种调度方式,就赋予了优先级高的任务最大的权利,尽可能保证高优先级任务的每一个事件都能得到最及时的处理。
ZigBee网络的组网过程包括网络建立和加入网络两个方面,该部分是通过Z-Stack协议栈各层之间的原语通信实现的。协调器节点负责网络的参数配置和建立,应用层通过ZDO层调用网络层函数NLME_NetworkFormationRequest(),在指定信道上进行主动扫描,即发送MAC层信标请求命令,探测该信道上已存在的网络;然后网络层根据主动扫描结果,设置PANID,网络地址,扩展PANID等参数;最后通知各应用端点一个新的ZigBee网络已经建立起来了。其网络建立过程如图4所示。
加入网络有多种方式,通过连接来加入网络,重新加入网络,孤立点加入网络,预先配置加入网络等。子节点通过连接方式加入网络的过程图如图5所示。
子节点应用层通过ZDO层调用网络层函数NLMENIM电竞,IM电竞在线etworkDiscoveryRequest(),在指定信道上进行主动扫描,然后监听一段时间看是否收到信标。通过多次发送MAC层信标请求命令,子节点可以知道周围已存在网络的有关信息,从而确定要加入网络的PANID,然后通过NLME_JoinRequest()函数向要加入的节点发送MAC层连接请求命令。如果收到成功的MAC层连接响应命令,则可获取父节点所分配的网络地址。如果子节点是终端节点,则悯络加入过程到此完成。而如果子节点是路由节点,则子节点还需通过NLME.
StartRouterRequestO函数启动路由器。无论子节点是传感节点还是路由节点最后都要将加入网络的结果通知各应用端点。
协调器和路由器节点可以通过NLME_PermitJoiningRequest()函数决定是否允许子节点加入到自己的网络,这样可以方便地控制子节点加入到指定的一个路由节点中,从而实现多跳组网。
采用DS18B20作为测温元件,其硬件电路相当简单,但对于单片机来说,为获取一次温度数据,需要先对其执行复位操作,发送ROM命令和RAM命令操作,启动温度的转换;等待温度转换完成后,再重复执行上述三步操作,才能实现温度的读取。根据DS18B20配置寄存器的不同,可分为9、10、11和12位的分辨率,所需转换时间最小为93.75ms,最大为750ms。也就是说,在启动温度转换后,必须等待较长的时间才能进行温度的读取操作。为了避免无谓的等待,本设计中将温度的测量分为两个事件:温度的“转换”和“读取”事件。温度采集时,可以设置一个“转换”事件定时器。在处理“转换”事件时,先向DS18B20发送温度转换命令,紧接着设置一个“读取”事件定时器,然后返回OSAL处理其他事件,从而保证系统能及时地响应其他事件。在处理“读取”事件时,只需要直接读取温度,然后再次设置“转换”事件定时器,实现周期性数据采集。温度传感器的“转换”和“读取”事件处理流程如图6所示。
组网测试时,通过TI公司的CC2531UDUSBDONGLE和SmartRFPacket_Sniffer软件对空中无线数据包进行抓包分析。子节点加入网络过程中所抓到的数据包如图7所示。子节点(IEEE地址为0x00124B0002017B1D)先发出一个MAC层信标请求命令,接着协调器节点(网络地址为0x0000)发出了一个信标帧作为响应。然后,子节点又发出一个MAC层连接请求命令,接着协调器节点返回一个应答帧。最后,子节点向协调器节点发送一个MAC层数据请求命令,接着协调器节点发出一个MAC层连接响应命令作为响应,为子节点分配一个网络地址0x0001。通过数据包图可见子节点已成功加入网络。4.2数据采集实验
实验中,设定各传感节点每隔2s进行一次数据采集,然后将采集数据经过路由节点发送至协调器,协调器通过RS232串口将数据上传给PC机,最终显示的采集数据如图8所示。图8中的采集数据分别是节点号为10650和10120的2个传感节点通过路由节点2181(父节点)发送至协调器的。实验时人工测量温度值为20.3℃,与采集到的数据基本吻合。
基于ZigBee技术的无线传感网可以较好满足各行各业对无线数字监测的需求。本文以CC2530和Z-stack协议栈为平台,组建了一个多跳ZigBee网络,实现对环境温度、光照度等数据的无线监测。实验结果表明,本设计多跳组网成功,数据采集结果正确。