当前位置: 代码迷 >> 综合 >> Zigbee 模块
  详细解决方案

Zigbee 模块

热度:111   发布时间:2023-11-22 21:16:05.0

一。组网:
Zigbee 模块是一种自组网多跳无线通信模块。模块无线频率为 2.4GHz~2.45GHz,属于
全球免费的无线频段 。该模块工作时,会与周围的模块自动组成一个无线多跳网络,此网络为
对等网络,不需要中心节点,网络包含以下可配置参数:

将多个 Zigbee 模块配置成地址不相同,信道和网络 ID 相同的状态,模块将组成一个网
络。微控制器(MCU)或者电脑通过 Uart 告诉模块目标地址和待发送的数据,模块会通过
网络选择最优的路径,将信息传输给目标模块,而目标模块将通过 Uart 输出源地址和上述的
数据。 

二:通讯协议:
Zigbee 模块使用 Uart 接口作为数据交互接口,接口的参数如下:

数据位 	8 位
起始位 	1 位
停止位 	1 位
校验位 	无校验在通信过程中,最常见的场合是单片机通过 Uart 告诉模块这样的信息:
“将数据 00 AE 13 33 发往地址为 0003 的模块,目标端口为 90,源端口为 91。”
对于单片机,需要将这些信息整理成一个包,通过 Uart 发给模块:
FE 08 91 90 03 00 00 AE 13 33 FF
此包的说明如下表:信息名 	长度 	说明 	举例
包头 	2byte 	包头由 FE 和包的长度组成,长度为包的数据长度加 4。 	FE 08
源端口号 	1byte 	包的源端口号。 	91
目的端口号 	1byte 	包的目的端口号。 	90
远程地址 	2byte 	远程模块的地址,当发送数据给模块时,远程地址为目标模块的	03 00地址,目标地址为 0x0000 表示此包发给本模块,目标地址为0xFFFF 的包会被发往本网络中的所有节点。当从模块接收数据时,远程地址是数据的源地址。
数据 	可变 	想要传输的数据。 	00 AE 13 33
包尾 	1byte 	固定为 FF 表示一个包传输完成。 	FF
远程地址长度为 2byte,使用小端模式进行传输,即先传输低 8 位,再传输高 8 位。
传输过程中如果遇到数据部分、地址或者端口号中出现 FF,则使用 FE FD 来代替;如果
出现 FE,则用 FE FC 来代替。以免传输过程中出现的包头和包尾,使接收方误判断。在传输
中这种替换称为“转义”。
包长度不会受到转义的影响,例如发送的数据为 09 FF 时,替换为 09 FE FD,但包头中
的数据长度仍然按照 2+4 来计算,这样,发送的包如下:
FE 06 91 90 03 00 09 FE FD FF
虽然一共传输了 7 个字节,但包长为 6。如果地址、端口号中出现了 FF、FE 也需要进行
转义 

三:端口
Zigbee 模块设计了端口的概念,接收方收到一个包时,会根据包的端口号,选择对应的
程序处理包。端口号的取值范围是 0x00~0xFF,其中 0x00~0x7F 端口由模块内部程序占用,
0x80~0xFF 端口开放给 Uart 连接的 MCU 或者电脑。
当 MCU 给一个模块发送数据时,如果源端口号填写了小于 0x80 的值,则包无法发出;
如果目的端口号填写了小于 0x80 的值,接收方模块的内部程序将处理这个包并执行相关的动
作,而不是从 Uart 发出这个包。
举例:
一个节点给另一个节点发送数据
例如将多个节点组成如下网络,在本文中节点特指 PC 或 MCU 和 Zigbee 模块组成的硬
件设备。
MCU 采集到温湿度为温度 23℃,湿度 60%,则无线传输的数据是 0x17,0x3C。节点和电
脑都使用 A0 端口传输温度,A1 端口传输湿度,MCU 已知连接电脑的模块地址为 0x000F,
则 MCU 发给模块的数据为:
FE 05 A0 A0 0F 00 17 FF FE 05 A1 A1 0F 00 3C FF
则电脑串口收到的数据为:
FE 05 A0 A0 01 00 17 FF FE 05 A1 A1 01 00 3C FF
电脑串口收到的数据中远程地址被替换为了源节点的地址。
一个节点给另一个节点的内部端口发送数据
需要寻找地址为 0x0002 的节点时,PC 命令此模块的红灯点亮 5 秒,则 PC 发送:
FE 05 A3 20 02 00 32 FF
可以看到地址为 0x0002 的模块红灯点亮 5 秒