20909浏览
查看: 20909|回复: 4

[ESP8266/ESP32] ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)

[复制链接]
ESP32-C6能够支持Zigbee,今天就试一试好不好用。
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图1

一、前言
关于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网关和灯,所以需要至少两个开发板:


我使用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 ,需要修改如下位置:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图2

如果没有自己的MQTT服务,可以使用 EMQX公共的:https://www.emqx.com/zh/mqtt/public-mqtt5-broker
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图4

然后是灯,使用其中的Zigbee_Light_Bulb,,需要修改如下位置:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图3

因为Beetle ESP32-C6开发板的LED连接到了GPIO15,所以上面LED_PIN要修改为15

四、编译和烧录
因为使用Beetle ESP32-C6(小板)做为灯控,使用 FireBeetle 2 ESP32-C6(大板) 做为Zigbee网关,两者的角色不同,所以编译的时候,参数会有不同,需要按照下面的图片,进行详细的设置:

Beetle ESP32-C6:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图5

因为其做为灯的控制板,也就是终端受控设备,所以ZigBee类型需要选择 end device


FireBeetle 2 ESP32-C6:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图6

因为其做为ZigBee网关,所以ZigBee类型需要选择 coordinator

按照上面的配置,编译烧录到对应的开发板。

五、调试
烧录完成后,最好按一下RST按键重启,否则可能遇到下面的错误:
ZigBee网关:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图7

ZigBee灯:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图8


ZigeBee网关成功启动后,输出如下:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图9

ZigBee灯启动成功后,输出如下:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图10
因为其启动后,就会自动进行ZigBee网络连接,所以ZigBee网关也会同步输出当前终端连接的信息。


当ZigBee网关成功上线后,在MQTT中,可以通过 test/status 订阅来收到消息:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图11

此时,就可以通过MQTT工具进行控制了:
  • topic: test/light
  • 开灯:1 或者
    1. { "status" : 1 }
    复制代码


  • 熄灯:0 或者
    1. { "status" : 0 }
    复制代码

ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图12

开发板的输出如下:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图13

同时,开发板上的LED会跟随指令点亮或者熄灭:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图14

六、手机控制
在手机上,使用Mqtt Dashboard应用,进行如下的设置:
1. 设置MQTT服务器:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图15

2. 添加两个按钮:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图16

3. 开灯按钮设置:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图17

4. 关灯按钮设置:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图18

5. 点击测试:
在手机界面上,点击开灯,关灯,ZigBee灯就会跟着被控制,同时开发板输出信息:
ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)图19


这篇分享,是一个较为基础的ZigBee应用分享,展示了ZigBee的快速简单的应用。
感兴趣的同学,还可以在此基础上,还可以在终端ZigBee设备上连接温湿度传感器并读取其信息,再通过ZigBee网关,发布到MQTT服务,从而实现状态的查看和监控,成为实用的智能家居设备。

DeadWalking  中级技师

发表于 2024-3-29 14:49:49

乔老师,这个代码界面是哪个
回复

使用道具 举报

HonestQiao  初级技匠
 楼主|

发表于 2024-3-30 12:35:29

DeadWalking 发表于 2024-3-29 14:49
乔老师,这个代码界面是哪个

具体问的哪个?


IDE: Arduino IDE2
MQTT测试工具:mqttX
MQTT开关灯:mqtt dashboard
回复

使用道具 举报

DeadWalking  中级技师

发表于 2024-3-30 19:51:08


好的,谢谢乔老师!
回复

使用道具 举报

 

发表于 2024-4-28 08:07:16

老师,这个 App 控制部分能不能接入到 ThingsCloud?可以生成很多组件,我们项目已经在用,改一下网关的 mqtt 那里的配置好像就行是吧?
回复

使用道具

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail