20909| 4
|
[ESP8266/ESP32] ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯) |
ESP32-C6能够支持Zigbee,今天就试一试好不好用。 一、前言 关于ZigBee的原理和知识,这里就不重复了,网上的资料非常的丰富。 乐鑫为Zigbee功能,提供了专门的SDK支持:https://github.com/espressif/esp-zigbee-sdk 在ESP-IDF中,也专门提供了实例:https://github.com/espressif/esp-idf/tree/master/examples/zigbee 不过,我更想试一试在Arduino里面使用,这样用起来会更简单。 在查找资料的过程中,发现大神 allexoK 已经在 Esp32-C6-Bug 开发板上进行了实现实现,并开源了代码。 不过他用的是W5500有线网络。经过一番学习,添加了对WiFi网络的支持,并提交了PR。 最终实现的效果:
二、硬件 因为涉及到Zigbee网关和灯,所以需要至少两个开发板: 我使用Beetle ESP32-C6(小板)做为灯控,使用 FireBeetle 2 ESP32-C6(大板) 做为Zigbee网关。 因为通过Zigbee进行无线通信,所以两块开发板,只需使用Type-C连接到电脑即可。 三、代码 当前的代码,经过在FireBeetle 2 ESP32-C6和Beetle ESP32-C6上实测,可以直接使用。 当前可用的代码:https://github.com/HonestQiao/Esp32-C6-Bug-Arduino-Examples/tree/main/examples/esp32c6bugzigbeemqttbridge 待PR合并后,可以使用:https://github.com/allexoK/Esp32-C6-Bug-Arduino-Examples/tree/main/examples/esp32c6bugzigbeemqttbridge 首先是Zigbee网关,使用其中的 Zigbee_Mqtt_Light_Bridge ,需要修改如下位置: 如果没有自己的MQTT服务,可以使用 EMQX公共的:https://www.emqx.com/zh/mqtt/public-mqtt5-broker 然后是灯,使用其中的Zigbee_Light_Bulb,,需要修改如下位置: 因为Beetle ESP32-C6开发板的LED连接到了GPIO15,所以上面LED_PIN要修改为15 四、编译和烧录 因为使用Beetle ESP32-C6(小板)做为灯控,使用 FireBeetle 2 ESP32-C6(大板) 做为Zigbee网关,两者的角色不同,所以编译的时候,参数会有不同,需要按照下面的图片,进行详细的设置: Beetle ESP32-C6: 因为其做为灯的控制板,也就是终端受控设备,所以ZigBee类型需要选择 end device FireBeetle 2 ESP32-C6: 因为其做为ZigBee网关,所以ZigBee类型需要选择 coordinator 按照上面的配置,编译烧录到对应的开发板。 五、调试 烧录完成后,最好按一下RST按键重启,否则可能遇到下面的错误: ZigBee网关: ZigBee灯: ZigeBee网关成功启动后,输出如下: ZigBee灯启动成功后,输出如下: 因为其启动后,就会自动进行ZigBee网络连接,所以ZigBee网关也会同步输出当前终端连接的信息。 当ZigBee网关成功上线后,在MQTT中,可以通过 test/status 订阅来收到消息: 此时,就可以通过MQTT工具进行控制了:
开发板的输出如下: 同时,开发板上的LED会跟随指令点亮或者熄灭: 六、手机控制 在手机上,使用Mqtt Dashboard应用,进行如下的设置: 1. 设置MQTT服务器: 2. 添加两个按钮: 3. 开灯按钮设置: 4. 关灯按钮设置: 5. 点击测试: 在手机界面上,点击开灯,关灯,ZigBee灯就会跟着被控制,同时开发板输出信息: 这篇分享,是一个较为基础的ZigBee应用分享,展示了ZigBee的快速简单的应用。 感兴趣的同学,还可以在此基础上,还可以在终端ZigBee设备上连接温湿度传感器并读取其信息,再通过ZigBee网关,发布到MQTT服务,从而实现状态的查看和监控,成为实用的智能家居设备。 |
DeadWalking 发表于 2024-3-29 14:49 具体问的哪个? IDE: Arduino IDE2 MQTT测试工具:mqttX MQTT开关灯:mqtt dashboard |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed