虽然对ZigBee 协议的基本内容还不太了解,甚至ZigBee 协议栈是什么也不清楚。这个没关系我们可以通过相应的实验来逐步了解ZigBee。通过协议栈的基础实验来对ZigBee 协议以及ZigBee 协议梳建立一个形象、直观的认识,这将有助于对ZigBee 协议的理解。
1.1ZIGBEE点灯实验
数据传输实验的基本功能:两个ZigBee节点进行点对点通信,ZigBee终端节点2发送"LED"三个字符,ZigBee协调节点收到数据后,对接收到的数据进行判断,如果收到的数据是"LED",则使开发板上的LED灯闪烁(1S闪烁一次)。数据传输实验原理图如图下所示。无线控制终端节点灯,一秒钟闪亮一次。
ZigBee无线传感器网络中有三种设备类型:协调器(Coordinator)、路由器(Router)和终端节点(EndDevice),设备类型是由ZigBee 协议钱不同的编译选项来选择的。
协调器主要负责网络组建、维护、控制终端节点的加入等。路由器主要负责数据包的路由选择。终端节点负责数据的采集,不具备路由功能。
工程路径:C:\Texas Instruments\ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\Samples\GenericApp\CC2530DB
双击GenericApp工程名打开工程,
从新编译工程,
删除工程中的GenericApp.C 文件,删除方法是:先选择要删除的文件,右键在弹出的下拉菜单中选择Remove 即可,如下
在工程工程中添加两个文件Coordinator.c和EndDevice.c。添加如下:先在C:\Texas Instruments\ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\Samples\GenericApp\Source文件夹中新建上面两个.c文件。然后添加你刚才新建的文件(EndDevice.c和Coordinator.c)。
添加完之后
接下来就可以在CoordinatorEB工程中的Coordinator.c中是实现协调功能和对数据处理。
Coordinator.c中添加如下:(略)
在EndDevice.c文件中添加:(略)
这里用到timer定时发送信息,需要定义一个时间标志LED_EVENT,需要在GenericApp.h中定义一下:
#define LED_EVENT 0x0002
编译工程CoordinatorED:
弹出对话框,选择Exclude from build:
同理在EndDeviceED工程中,把Coordinator.c的文件禁止编译,具体操作同上。
安装好SmartRF04B驱动后,通过USB先连接仿真器和PC机。仿真器的十针插头线与ZigBee设备的十针接口相连。下载编译后的程序:
下载完之后,从新上电等待连接。观察实验现象(协调节点的灯的闪亮情况)。
打开协调器电源开关,然后打开终端节点电源开关,儿秒钟后,会发现协调器的LED 灯已经闪烁起来了,这说明协调器已经收到了终端节点发送的数据。