一、 无线通信理论
Zigbee无线通信,需要高频的载波来提供发射频率,Zigbee模块之间要可以正常通信,接收模块和发送模块的频率要一致。
Zigbee有27个载波可以进行通信,载波又叫做信道。这些载波的频率落在某些频率区段,我们把这些区段叫做频段。
2.4G频段 16个信道 915M频段 896M频段 11个信道
但TI的所有支持Zigbee底层协议的芯片只能在2.4G频段的16个信道里进行通信。即1126信道(010信道在915M和896M的频段内)
网络地址: 在Zigbee无线局域网里,每一个模块都有一个在该网络里唯一的2个字节的地址,这个地址我们叫做网络地址(或者叫做网络短地址)。
PANID: 这也是一个2个字节的编号,用来区分不用的Zigbee无线局域网,我们称为个域网ID。两个模块之间要进行通信,PANID一定要一样。
信道与PANID的设置: 在Tools文件组里的f8wConfig.cfg文件中 (1)设置信道 -DDEFAULT_CHANLIST=0x00000800 // 11 - 0x0B (2)设置PANID -DZDAPP_CONFIG_PAN_ID=0x1234 注意:如果把PANID设置为0xFFFF,则意味着该模块不受PANID的限制
二、 网络组建理论
在Zigbee无线局域网里,节点(无线模块)按照在网络里的功能可以划分为:协调器、路由器、终端这三种角色。 它们的硬件可以是一模一样的,之所以在网络里表现出不同的功能,是因为它们下载了不同功能版本的程序,在同一个网络里担当了不同的角色功能。
下载了路由器和终端代码的模块,它们上电后的第一件事情去寻找网络,请求加入。然而网络不会无缘无故产生,是由下载了协调器代码的模块创建的。 下载了协调器代码的模块上电后的第一件事就是创建网络。 任何一个网络里,第一个节点一定是该网络的协调器,有且只能有一个协调器。
如果有一个协调器创建了一个网络ID是0x1234,还有一个协调器也创建了一个网络ID为0x1234,此时后面创建的网络ID加一,即为0x1235。
任何一个Zigbee模块要加入到某个网络,一定要一个处于该网络里的节点作为介绍人,并且这个介绍人不能是终端节点(即路由器或者协调器)。在加入网络以后,介绍人节点和被介绍加入的节点互为父子关系。 介绍人是被介绍人的父节点,被介绍人是介绍人的、子节点。有多个可作为介绍人资格的节点,会选择信号强度高的节点作为介绍人。
协调器在创建完网络后,在网络里的功能与路由器没有任何区别,只不过协调器的网络地址比较特殊只能是0x0000,而其他加入的节点的网络地址是动态分配的。 终端节点与其他模块的通信必须要通过它的父节点,而路由器(协调器)之间通信可以直接通信的。 因此,路由器在网络里充当的是拓扑扩展的中转站的功能。
三、Zigbee三种网络架构
1.星形拓扑
星形拓扑是最简单的一种拓扑形式,他包含一个Co-ordinator(协调者) 节点和一系列的 End Device(终端)节点。每一个End Device 节点只能和 Co-ordinator 节点进行通讯。如果需要在两个 End Device 节点之间进行通讯必须通过Co-ordinator 节点进行信息的转发。
2.树形拓扑
树形拓扑包括一个Co-ordinator(协调者)以及一系列的 Router(路由器) 和 End Device(终端)节点。Co-ordinator 连接一系列的 Router 和 End Device, 他的子节点的 Router也可以连接一系列的 Router 和End Device. 这样可以重复多个层级。树形拓扑的结构如下图所示:
3.Mesh拓扑(网状拓扑)
Mesh拓扑(网状拓扑) 包含一个Co-ordinator和一系列的Router 和End Device。这种网络拓扑形式和树形拓扑相同;请参考上面所提到的树形网络拓扑。但是,网状网络拓扑具有更加灵活的信息路由规则,在可能的情况下,路由节点之间可以直接的通讯。这种路由机制使得信息的通讯变得更有效率,而且意味这一旦一个路由路径出现了问题,信息可以自动的沿着其他的路由路径进行传输。 网状拓扑的示意图如下所示:
4.三种网络架构对比
MESH 网状网络拓扑结构的网络具有强大的功能,网络可以通过“多级跳”的方式来通信;该拓扑结构还可以组成极为复杂的网络;网络还具备自组织、自愈功能; 星型和族树型网络适合点多多点、距离相对较近的应用。 我们可以在 “nwk_globals.h” 文件中159行进行修改网络结构,默认为网状拓扑结构。
我们可以在GenericApp.c文件中的GenericApp_ProcessEvent函数中的switch语句的 case ZDO_STATE_CHANGE中修改代码内容,让模块在不同的网络状态下亮不同的灯。
注意:下载了协调器的代码的模块,创建了网络之后就是协调器状态,而终端和路由器要加入了网络才是对应的状态。终端和路由器要加入网络的条件是,信道和PANID要一致。