Zigbee Module
Zigbee 是 M5Stack 推出的自组织网络通信模块。该模块采用 CC2630F128 方案,内部集成 Zigbee 协议栈,并提供开放的串行通信接口。它配备外置天线,单节点稳定通信距离最高可达 1 km,并支持最高 200 级路由深度。通过 MESH 组网,它可以显著扩展 IoT 应用的覆盖范围,同时具备超低功耗与高灵敏度。Zigbee 网络可支持数百个节点,并具备增强的安全特性,为家庭与楼宇自动化提供完整且可互操作的 IoT 解决方案。
支持以下产品:
MicroPython TX 应用示例:
1# SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD 2# 3# SPDX-License-Identifier: MIT 4 5import os, sys, io 6import M5 7from M5 import * 8from module import ZigbeeModule 9import time 10 11 12label0 = None 13com_zigbee_0 = None 14zigbee_0 = None 15 16 17def setup(): 18 global label0, com_zigbee_0, zigbee_0 19 20 M5.begin() 21 Widgets.fillScreen(0x222222) 22 label0 = Widgets.Label("label0", 32, 35, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18) 23 24 com_zigbee_0 = ZigbeeModule(2, 17, 18, verbose=True) 25 com_zigbee_0.set_module_param( 26 ZigbeeModule.DEVICE_TYPE_COORDINATOR, 27 0x1620, 28 11, 29 ZigbeeModule.TRANSFER_MODE_PASS_THROUGH, 30 0x6677, 31 ) 32 label0.setText(str("start")) 33 34 35def loop(): 36 global label0, com_zigbee_0, zigbee_0 37 M5.update() 38 com_zigbee_0.p2p_transmission(0x0066, "p2p") 39 time.sleep(3) 40 com_zigbee_0.broadcast("broadcast") 41 time.sleep(3) 42 43 44if __name__ == "__main__": 45 try: 46 setup() 47 while True: 48 loop() 49 except (Exception, KeyboardInterrupt) as e: 50 try: 51 com_zigbee_0.stop_receive() 52 from utility import print_error_msg 53 54 print_error_msg(e) 55 except ImportError: 56 print("please update to latest firmware")
MicroPython 应用示例:
1# SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD 2# 3# SPDX-License-Identifier: MIT 4 5import os, sys, io 6import M5 7from M5 import * 8from module import ZigbeeModule 9 10 11label0 = None 12com_zigbee_0 = None 13 14 15zigbee_str_data = None 16zigbee_dest_address = None 17zigbee_src_address = None 18 19 20def com_zigbee_0_receive_event(dest_address, src_address, received_data): 21 global label0, com_zigbee_0, zigbee_str_data, zigbee_dest_address, zigbee_src_address 22 zigbee_dest_address = dest_address 23 zigbee_src_address = src_address 24 try: 25 zigbee_str_data = received_data.decode() 26 except: 27 zigbee_str_data = str(received_data) 28 label0.setText(str(zigbee_str_data)) 29 30 31def setup(): 32 global label0, com_zigbee_0, zigbee_str_data, zigbee_dest_address, zigbee_src_address 33 34 M5.begin() 35 Widgets.fillScreen(0x222222) 36 label0 = Widgets.Label("label0", 50, 34, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18) 37 38 com_zigbee_0 = ZigbeeModule(2, 14, 13, verbose=True) 39 com_zigbee_0.set_module_param( 40 ZigbeeModule.DEVICE_TYPE_ROUTER, 41 0x1620, 42 11, 43 ZigbeeModule.TRANSFER_MODE_PASS_THROUGH, 44 0x0066, 45 ) 46 while not (com_zigbee_0.isconnected()): 47 pass 48 label0.setText(str(com_zigbee_0.get_custom_address())) 49 com_zigbee_0.receive_none_block(com_zigbee_0_receive_event) 50 51 52def loop(): 53 global label0, com_zigbee_0, zigbee_str_data, zigbee_dest_address, zigbee_src_address 54 M5.update() 55 56 57if __name__ == "__main__": 58 try: 59 setup() 60 while True: 61 loop() 62 except (Exception, KeyboardInterrupt) as e: 63 try: 64 com_zigbee_0.stop_receive() 65 from utility import print_error_msg 66 67 print_error_msg(e) 68 except ImportError: 69 print("please update to latest firmware")
UIFLOW2 TX 应用示例:
UiFlow2 RX 应用示例:
stickc_plus2_zigbee_rx_example.m5f2
class ZigbeeModule
Constructors
Methods
- ZigbeeModule.set_module_param(device_type: int, pan_id: int, channel: int, transfer_mode: int, custom_address: int, ant_type: int, encryption_enable=ENCRYPTION_ENABLE, encryption_key=b'\x11\x12\x13\x14', node_type=DEVICE_TYPE_ROUTER, node_ant_type=ANT_TYPRE_ON_BOARD, node_transfer_mode=TRANSFER_MODE_PASS_THROUGH, node_custom_address=0x0066)
- 参数:
device_type (int) – Zigbee 模块的设备类型。
pan_id (int) – Zigbee 模块的 PAN ID。PAN ID 是一个 16 位的值,用于标识网络。
channel (int) – Zigbee 模块的信道。信道范围为 11 到 26。
transfer_mode (int) – Zigbee 模块的传输模式。
custom_address (int) – Zigbee 模块的自定义地址。
ant_type (int) – Zigbee 模块的天线类型。
encryption_enable (int) – Zigbee 模块的加密状态。
encryption_key (bytes) – Zigbee 模块的加密密钥。
node_type (int) – Zigbee 模块的节点类型。
node_ant_type (int) – Zigbee 节点的天线类型。
node_transfer_mode (int) – Zigbee 节点的传输模式。
node_custom_address (int) – Zigbee 节点的自定义地址。
设置 Zigbee 模块的参数。
UIFLOW2:



- ZigbeeModule.set_device_type(device_type: int)
- 参数:
device_type (int) – Zigbee 模块的设备类型。
设置 Zigbee 模块的设备类型。
UIFLOW2:

- ZigbeeModule.set_pan_id(pan_id: int)
- 参数:
pan_id (int) – Zigbee 模块的 PAN ID。
设置 Zigbee 模块的 PAN ID。
UIFLOW2:

- ZigbeeModule.set_transfer_mode(transfer_mode: int)
- 参数:
transfer_mode (int) – Zigbee 模块的传输模式。
设置 Zigbee 模块的传输模式。
UIFLOW2:

- ZigbeeModule.set_custom_address(custom_address: int)
- 参数:
custom_address (int) – Zigbee 模块的自定义地址。
设置 Zigbee 模块的自定义地址。
UIFLOW2:

- ZigbeeModule.set_ant_type(ant_type: int)
- 参数:
ant_type (int) – Zigbee 模块的天线类型。
设置 Zigbee 模块的天线类型。
UIFLOW2:

- ZigbeeModule.isconnected() bool
检查 Zigbee 模块是否已连接到 Zigbee 网络。
- 返回:
如果 Zigbee 模块已连接到 Zigbee 网络,则为 True;否则为 False。
UIFLOW2:

- ZigbeeModule.receive_none_block(receive_callback)
- 参数:
receive_callback – 当 Zigbee 模块接收到数据时调用的回调函数。
从 Zigbee 模块接收数据。
UIFLOW2:



- ZigbeeModule.stop_receive()
停止接收来自 Zigbee 模块的数据。
UIFLOW2:









