基于XBee进行ZigBee组网(二)——ZigBee网络与XCTU的使用
本文主要介绍ZigBee网络的基本结构,三种组成ZigBee网络的基本节点:协调器(coordinator)、路由器(router)、终端(end device),如何使用XCTU对XBee进行基本参数的配置,使XBee成为ZigBee网络中的一个节点。
ZigBee网络中定义了三种不同类型的设备:
协调器(coordinator)
每个ZigBee网络中只允许有一个协调器,它是整个网络的开始,协调器首先选择一个信道(channel)和网络标识(PAN ID)来启动一个ZigBee网络,然后允许路由器和终端加入这个网络。协调器在建立ZigBee网络之后,其功能相当于路由器,可以进行数据的路由转发,可以为它的终端子设备缓存数据包,协调器本身不能休眠。
路由器(router)
路由器首先必须加入到一个ZigBee网络中,然后路由器也是允许其他路由器和终端加入这个网络,进行数据的路由转发,为它的终端子设备缓存数据包,同样路由器也不能休眠。
终端(end device)
终端也必须加入到一个ZIgBee网络中才能工作,但它不支持其他设备加入ZigBee网络,也不能进行数据的路由转发,终端数据的收发必须通过其父设备进行转发。终端可以休眠进入低功耗的模式,一般可以采用电池进行供电。
ZigBee网络的基本拓扑结构如下图所示:
一个XBee模块只能选择成为以上三种设备类型的其中一种,对于老的硬件XBee S2或Xbee S2B来说,需要给XBee模块升级不同的固件来改变设备类型和操作方式(API或Transparent),固件版本对应类型如下:
20xx - Coordinator - AT/Transparent Operation
21xx - Coordinator - API Operation
22xx - Router - AT/Transparent Operation
23xx - Router - API Operation
28xx - End Device - AT/Transparent Operation
29xx - End Device - API Operation
而对于新的XBee S2C(固件版本为40xx)来说,只需要通过配置XBee参数就可以改变设备类型或操作方式,下面仅以XBee S2C模块为例进行说明。
在默认参数的情况下,XBee模块为路由器transparent模式,通过AT指令设置CE为1可以将XBee设置为协调器,设置SM为一个非零值可以将XBee设置为终端。注意:作为协调器时SM必须设置为0,作为终端时CE必须设置为0,CE和SM同时为0则为路由器。此外,设置AP为0为transparent模式,设置AP为1或2则为API模式。
将XBee模块通过串口与PC相连,使用XCTU对模块进行测试、修改参数,首先搜索与PC连接的XBee模块,默认波特率为9600,如下图:
成功添加XBee模块后选中XBee模块可以获取到该模块对应的配置参数并进行修改,如下图:
通过修改CE、SM和AP的值可以改变XBee模块的ZigBee设备类型和操作方式。当然,也可以手动向XBee模块的串口发送AT指令来修改参数,如下图:
在配置完XBee模块的参数后,我们进行XBee模块的组网通信,以两个XBee模块为例,一个设置为协调器,一个设置为路由器,都为transparent操作模式,设置DH和DL的值为目的地址(接收数据的XBee模块的MAC地址,即SH和SL的值),如果发送的目的地址为协调器,也可以设置DH和DL为0。上电后XBee模块会按照配置的参数自动完成ZigBee的组网。使用XCTU分别打开协调器和路由器的串口连接,向路由器串口发送数据,可以在协调器的串口观察到路由器发送过来的数据,说明组网通信成功,如下图所示:
当然,可以使用更多的XBee模块,组成一个多跳的ZigBee网络,网络中的XBee节点只要配置目的地址为任何一个在ZigBee网络中存在节点的64位MAC地址,就可以将数据通过ZigBee网络送达,组网和多跳路由的功能将由XBee模块自动完成。需要注意的是,如果一个XBee路由器节点之前已经接入过其他的ZigBee网络,那么他的PAN ID将始终保存,这样就无法再加入其他ZigBee网络,即使断电重启也不会改变,需要使用ATNR0命令来退出之前ZigBee网络,之后就可以自动搜索加入新的ZigBee网络了。
我们可以看到,在采用transparent操作方式下,如果需要将数据发送给网络中的多个节点,需要首先进入AT命令模式修改DH和DL的值,再发送数据,非常繁琐。而采用API操作方式可以指定发送的目的地址,非常方便,API操作方式将在以后进行介绍。