zigbee应用实践
一、 创建ZigBee协议栈工程
在一个 ZigBee网络中,实现由协调器节点建立网络,之后路由节点和终端节点打开并加入该网络的目的。
1、 实验器材
3个CC2530开发套件(1个协调器套件,1个路由器套件和1个终端套件)。PC电脑一台。
2、 实验原理
(1)OsAL任务分配机制。
ZigBee协议栈应用框架包含了最多240个应用程序对象,也就是说,最多可以创建240个端点( Endpoint)。当网络层接收到信息以后,如何决定将此信息传递给哪个任务。此时,端点决定了信息的传递方向。
(2)定义事件的独热码。
在Z-Sack协议中,定义一个事件是用宏来标识的。而且,为了容易区别不同的事件,事件用独热码来表示。通常,在通信络协议栈中,可使用8位或者16位状态的独热码,且系统占用其中一个状态码,余下的可以供用户使用。
(3)消息队列。
在协议栈中,事件与消息的联系具有包含与被包含的关系。事件是驱动任务去执行某些操作的条件。当系统产生了一个事件,并将这个事件传递给相应的任务后,任务才能执行相应的操作。另外,有些任务的事件处理函数还需要参考对应事件产生的附加信息,如按键消息会同时产生哪一个按键被按下的附加信息。在 On Board SendKeys系统处理函数中,不仅需要向应用程序发送事件,还需要调用 osal msg send系统函数发送一个记录按键的附加消息。本节中 MyAppXD Process Event自定义函数会获取这样一个消息,然后再进一步进行消息处理,最后通过 KEY CHANGE事件处理函数响应按键内容
3、 建立自己的zigbee工程。
(1)建立空工程
找到 GenericApp工程的文件夹,复制此文件夹并且重命名为 MyAppXD。删除 Source目录下的所有文件,然后手动建立几个文件:
进入CC2530DB目录,分别将 GenericApp ewp和 GenericAppeww重命名为 MyAppXDp和 MyAppXD eww,该目录下的其余文件全部删除。使用记事本打开这两个文件,并子里面所有的 GenericApp都改为 MyAppXD。
(2)修改 MyAppXDeww和 MyApp XD.ewpo
具体配置信息略。
如此,一个空的工程就建立好了。
4、 添加自己的应用程序。
主要分为下面几个步骤。
(1)添加代码。
(2)设计应用程序的任务初始化函数。
到底,应用程序框架已经完成,还需继续添加自定义任务,才能实现功能。
5、 添加任务。
该任务功能主要是管理网络上的节点。需打开源文件,添加代码加入成功后,节点之间就会建立联系,相互发送数据。
6、 实验步骤。
第一步:打开协调器节点,建立网络,此时LED1闪烁,LED2、LED3和LED4保持。
第二步:打开路由器节点,让路由器节点加入网络,此时该路由器的LED2与协调器的ED1在同时闪烁,路由器的LED1、LED3和LED4保持一直亮。
第三步:打开终端节点,终端节点加入网络,此时该终端节点的LED3与协调器的ED以及路由器的LED2在同时闪烁,该终端节点的LED1、LED2和LED4保持一直亮。
二、 zigbee建网和入网
在上一步已经实现了一个简单的 ZigBee网络,而具体组网过程并没有详细阐述。这一步骤简单叙述zigbee组网过程。
1、 实验原理
ZigBee网络设备类型: ZigBee网络只支持全功能设备( Full Function DeviceFD)和精简功能设备( Reduced Function Device,RFD)两种设备。 ZigBee标准定义了 ZigBee协调器( Coordinator)、zige路由器( Routers)和 ZigBee终端(EndDevice)三种节点。所有的 Zig Bee设备都具有连接网络和断开网络的功能。
FFD设备可充当任何 ZigBee类型的节点,它不仅能够收发数据,接纳子节点,还具有路由功能。RFD设备只能充当子节点,只负责将采集数据发送给协调器和路由器节点不具有路由功能,不能接纳子节点。RFD设备之间的通信只能通过FFD设备进行。
2、 组建网络
组建 ZigBee网络的内容包括网络初始化和节点加入网络两个步骤。而节点加入网络又有通过协调器加入网络和通过已有节点入网两种方式
(1)初始化网络
ZigBee网络的建立过程由协调器发起。节点能够建立网络必须满足:节点是FFD节点,具有协调器功能;节点还没有和其他网络连接,一个PAN网络中只允许存在一个协调器。
具体步骤如下。
网络协调器选定,信道扫描,设置网络ID和协调器地址。
(2)通过协调器入网。
当 ZigBee协调器确定以后,节点首先需要和协调器建立关联关系,才能加入网络。
节点通过协调器入网的流程主要如下。
寻找网络协调器,发送关联请求命令帧,协调器处理关联请求,发送数据请求命令帧,节点回复。
(3)通过已存在的FFD节点入网
当FFD节点和协调器关联成功后,处于这个网络覆盖范围内的其他节点就可以以这些FFD节点作为父节点而加入网络,具体加入网络的方式有关联方式和直接方式两种。
(4) z-Stack协议栈中网络形成及入网过程
在设备启动前,z- Stack协议栈需要对每个设备配置一组参数。一般而言,在同个网络中,所有设备的“网络细节”配置参数应该被设置为一致的值,每个设备的“设备细节”配置参数被配置为不同的值。
2、实验步骤
第一步:打开协调器,蓝灯先亮,然后黄灯闪烁几下,这表示作为协调器的设备启动既而灯一直亮。
第二步:打开路由器,蓝灯先亮,然后黄灯闪烁几下,这表示作为路由器的设备启动并加入到协调器建立的网络中,既而灯一直亮。
第三步:按一下协调器的上键,向组内的设备发送闪烁命令,这时路由器的绿灯闪烁。
第四步:按一下路由器的上键,向组内的设备发送闪烁命令,这时协调器的绿灯闪烁。
按上述所示,加人终端设备,显示的情形与第一、第二步相同。
当协调器、路由器、终端设备都加入到网络中时,按下任意设备的上键,其余设备的绿灯闪烁四下。