Zigbee Unit
Zigbee 是 M5Stack 推出的自组网通信模块。该模块采用 CC2630F128 方案,内部集成 Zigbee 协议栈,并提供开放的串口通信接口。其配备外置天线,单节点稳定通信距离最远可达 1 km,并支持最高 200 级路由深度。通过 MESH 组网,可显著扩展 IoT 应用的覆盖范围,同时具备超低功耗与高灵敏度。Zigbee 网络可支持数百个节点,并提供增强的安全特性,为家庭与楼宇自动化提供完整且可互操作的 IoT 解决方案。
支持以下产品:
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 unit import ZigbeeUnit 9import time 10 11 12label0 = None 13zigbee_0 = None 14 15 16def setup(): 17 global label0, zigbee_0 18 19 M5.begin() 20 Widgets.fillScreen(0x222222) 21 label0 = Widgets.Label("label0", 67, 43, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18) 22 23 zigbee_0 = ZigbeeUnit(1, port=(18, 17), verbose=True) 24 zigbee_0.set_module_param( 25 ZigbeeUnit.DEVICE_TYPE_COORDINATOR, 26 0x1620, 27 11, 28 ZigbeeUnit.TRANSFER_MODE_PASS_THROUGH, 29 0x6677, 30 ) 31 label0.setText(str("start")) 32 33 34def loop(): 35 global label0, zigbee_0 36 M5.update() 37 zigbee_0.p2p_transmission(0x0066, "p2p") 38 time.sleep(3) 39 zigbee_0.broadcast("broadcast") 40 time.sleep(3) 41 42 43if __name__ == "__main__": 44 try: 45 setup() 46 while True: 47 loop() 48 except (Exception, KeyboardInterrupt) as e: 49 try: 50 from utility import print_error_msg 51 52 print_error_msg(e) 53 except ImportError: 54 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 unit import ZigbeeUnit 9 10 11label0 = None 12zigbee_0 = None 13 14 15zigbee_str_data = None 16zigbee_dest_address = None 17zigbee_src_address = None 18 19 20def zigbee_0_receive_event(dest_address, src_address, received_data): 21 global label0, 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, zigbee_0, zigbee_str_data, zigbee_dest_address, zigbee_src_address 33 34 M5.begin() 35 label0 = Widgets.Label("label0", 21, 83, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18) 36 37 zigbee_0 = ZigbeeUnit(1, port=(33, 32), verbose=True) 38 zigbee_0.set_module_param( 39 ZigbeeUnit.DEVICE_TYPE_ROUTER, 0x1620, 11, ZigbeeUnit.TRANSFER_MODE_PASS_THROUGH, 0x0066 40 ) 41 while not (zigbee_0.isconnected()): 42 pass 43 label0.setText(str(zigbee_0.get_custom_address())) 44 zigbee_0.receive_none_block(zigbee_0_receive_event) 45 46 47def loop(): 48 global label0, zigbee_0, zigbee_str_data, zigbee_dest_address, zigbee_src_address 49 M5.update() 50 51 52if __name__ == "__main__": 53 try: 54 setup() 55 while True: 56 loop() 57 except (Exception, KeyboardInterrupt) as e: 58 try: 59 from utility import print_error_msg 60 61 print_error_msg(e) 62 except ImportError: 63 print("please update to latest firmware")
UIFLOW2 TX 应用示例:
UiFlow2 RX 应用示例:
stickc_plus2_zigbee_rx_example.m5f2
class ZigbeeUnit
Constructors
Methods
- ZigbeeUnit.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



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

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

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

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

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

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

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



- ZigbeeUnit.stop_receive()
停止接收来自 Zigbee 模块的数据。
UiFlow2









