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网关通过WiFi联网,然后连接到MQTT服务
[*]灯通过ZigBee无配置连接到Zigbee网关
[*]手机通过MQTT发送控制命令,Zigbee网关收到控制命令中,通过ZigBee发送命令给灯的控制板,进行最终控制
二、硬件
因为涉及到Zigbee网关和灯,所以需要至少两个开发板:
https://mc.dfrobot.com.cn/data/attachment/forum/202403/15/181021f606mxmuz7p080au.png
我使用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工具进行控制了:
[*]topic: test/light
[*]开灯:1 或者 { "status" : 1 }
[*]熄灯:0 或者 { "status" : 0 }
开发板的输出如下:
同时,开发板上的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 HonestQiao 发表于 2024-3-30 12:35
具体问的哪个?
好的,谢谢乔老师! 老师,这个 App 控制部分能不能接入到 ThingsCloud?可以生成很多组件,我们项目已经在用,改一下网关的 mqtt 那里的配置好像就行是吧?
页:
[1]