zigbee的最大特点在于自组网,而这个自组网的功能实现主要依靠路由的转发功能,路由转发的其中一个条件是当设备离协调器太远的时候,这个设备会通过一个中间路由进行转发,网络中有多个路由的情况下,会选择一个离协调器最短的路径。
最近在做一个项目,设备运行环境容易受到障碍物屏蔽信号,为了解决这个问题,我采取了两个措施:1.给zigbee加PA芯片,增强zigbee的发送和接收的信号。2.利用zigbee路由转发数据,达到绕开障碍物的目的。第一种措施没问题,第二种措施我有点困惑,通过路由转发是没问题,问题在于这样做的话,协调器能否知道最初的源地址是哪个吗?我程序里面一律通过设备的短地址来区分哪个设备的,如果短地址经过路由转发了会更改的话,协调器不是不知道谁是"数据发起人"了。
带着上面的疑问,我决定做一个实验去验证路由器是否会改变短地址。实验采用一个路由器,一个终端,和一个协调器,协调器和stm32单片机连接。我用Packet Sniffer工具抓取zigbee的通讯数据帧,如下图所示: