TI公司推出的ZigBee协议栈是基于优先级的轮转查询式操作系统,它是由称为层的模块组成,每一层为其上一层提供特定的服务。ZigBee协议栈为各个层均分配不同的任务编号,每一个任务中又包含若干个事件。对于开发者来说,一般只需关注应用层函数的设计即可。当然,如果硬件电路不同,则其硬件抽象层函数也是不同的。本章所采用的硬件电路为无线龙公司生产的CC2530无线通信模块,共包括4个传感器节点和一个协调器。每个传感器节点为一个CC2530基本模块和一个电池板;协调器模块为一个CC2530基本模块和一个扩展板,扩展板上带有RS232串口,可用于和PC进行通信。
1.协调器启动及建立网络
无线传感器网络的建立是由网络协调器来完成的。协调器节点启动之后,首先完成系统的初始化,然后进入操作系统。在系统的初始化中,包括初始化系统时钟、检测芯片电压、中断系统、Flash存储器等,其中比较重要的是初始化端口描述符。两个物理无线收发模块的通信是通过两个设备中编号相同的节点来实现的,这要求协调器所初始化的节点属性要与在传感器节点中所初始化的节点属性相匹配。
进入操作系统以后,首先进入的是应用层任务函数,因为在应用中设置了进入事件。通过按键S1来设置其为协调器,并开始建立网络。将设备设置为协调器之后,通过zb_Star-tRequest()函数调用ZDO(ZigBee设备对象)层初始化设备函数ZDOInitDevice()。在该函数中,通过ZDO层中的网络初始化函数ZDApp_NetworhInit()设置网络初始化事件,送给启动设备函数ZDO_StartDevice()处理。在该函数中,调用了网络层的网络形成请求函数NLME_NetworkFormationRequest()来形成网络。由于ZigBee协议栈是半开源的,因此看不到该函数的内部程序。当ZDO层收到网络形成确认信息之后,则设置网络启动事件,将设备的状态改为启动状态。协调器建立网络的过程如图5-6所示。
2.传感器节点启动及加入网络
对于传感器节点来说,启动后首先要完成的是设备的初始化。在本设计中,传感器节点向协调器发送本身的温度信息,所以在传感器节点中所初始化的端口属性应为输出,而协调器中所定义的端口属性应为输入。当初始化之后,进入操作系统执行应用层任务中的进入事件。这里直接将设备设置为传感器节点。
传感器节点启动后,开始初始化网络。在ZDO层调用网络层的网络发现函数NLME_NetworkDiscoveryRequest(),尝试发现是否有已经存在的网络可以加入。当发现协调器所建立的网络时,传感器节点的ZDO层会收到网络发现确认信息。这时,传感器节点通过调用网络层的网络加入请求函数NLME_JionRequest()向协调器发送加入网络请求。如果协调器允许其他节点加入网络,则该传感器节点会接收到协调器发送来的加入确认信息。这里的发现函数NLME_NetworkDiscoveryRequest()和网络加入请求函数NLME_JionRequest()与协调器中所调用的网络形成函数NLMENetworkFormationReouest()一样,均为ZigBee协议栈所封装起来的函数,只能由开发人员编程时调用,不能看到其内部程序。传感器节点加入网络的流程如图5-7所示。
图5-6 协调器启动及建立网络
(www.daowen.com)
图5-7 传感器节点启动及加入网络
3.传感器节点与协调器的绑定
为了让传感器节点与协调器能相互传送数据,两者之间必须建立绑定关系。绑定是两个(或多个)应用设备之间信息传输的控制机制,在ZigBee2006及以后的协议栈中,所有的设备都必须执行绑定机制。
协调器通过执行zb_AllowBind()函数,开启允许绑定功能。在该函数中,可以设置允许绑定的时间,即在某一段时间内,协调器接收其他设备发来的绑定请求,超过这段时间,则关闭该功能。传感器节点通过执行绑定设备函数zb_BindDevice(),向协调器发送绑定请求。协调器接收到传感器节点发送来的绑定请求,并进行解析,绑定请求信息中包含了传感器节点中的端点信息,然后协调器在自身所注册过的端点中寻找与之相匹配的端点。找到之后,则处理绑定请求信息,并向传感器节点发送绑定响应信息。传感器节点接收到绑定响应信息之后,通过调用应用支持子层的绑定请求函数APSME_BindRequest()来建立绑定表,并将向自己的应用层发送绑定确认信息。传感器节点与协调器建立绑定的流程如图5-8所示。
4.传感器节点向协调器传送数据
当传感器节点向自己的应用层发送绑定确认信息之后,就调用发送报告函数myApp_StartReporting()向协调器发送数据信息。CC2530内部有一传感器,可测量相应数据,虽然所采集的结果与实际数据不太相符(比实际值偏高或偏低),但对于构建无线传感器网络,并无太大影响。
当协调器接收到数据信息之后,对其进行解析,得到数据信息。通过调用串口通信程序,将数据发送给PC进行显示。
图5-8 传感器节点与协调器绑定
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。