ESP32 ESP-IDF MQTT

陈拓 2021/12/08-2021/12/08

1. 简介

  • 官方文档

https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/protocols/mqtt.html

  • 官方例程

https://gitee.com/EspressifSystems/esp-idf/tree/master/examples/protocols/mqtt/tcp

ESP-MQTT sample application

此示例连接到使用idf.py menuconfig(使用mqtt tcp transport)选择的代理URI,并作为一个示例,订阅/取消订阅并发送有关特定主题的消息。

它使用实现MQTT客户端的ESP-MQTT库连接到MQTT代理。

作为测试例程中使用了公共代理:

https://mqtt.eclipseprojects.io/

  • 连接私有MQTT服务器

在官方例程的基础上我们修改程序连接到我们自己的MQTT服务器。

MQTT服务器的搭建见《树莓派+Ubuntu 20.04安装Mosquitto MQTT服务》

https://zhuanlan.zhihu.com/p/442570279

https://blog.csdn.net/chentuo2000/article/details/121785191

2. 开发环境

《Win10启用Linux子系统安装Ubuntu》

https://blog.csdn.net/chentuo2000/article/details/112131624

《用乐鑫国内Gitee镜像搭建ESP32开发环境》

https://blog.csdn.net/chentuo2000/article/details/113424934

3. 构建项目

  • 复制官方例程

将官方例子项目复制到ESP-IDF开发工具之外,更名为esp32_mqtt_tcp:

cp -r ~/esp/esp-idf/examples/protocols/mqtt/tcp ~/esp/esp32_mqtt_tcp

cd ~/esp/esp32_mqtt_tcp

  • 项目树

  • 刷新esp-idf环境

get_idf

  • 配置项目

idf.py menuconfig

在Example Connection Configuration菜单下配置WiFi或以太网。

在这里输入WiFi的SSID和密码:

保存,退出。

  • 编译项目

idf.py build

  • 烧写项目

连接设备时我PC将USB-SERIAL识别为COM3。

idf.py -p /dev/ttyS3 -b 115200 flash

  • 查看串口信息

按一下开发板上的RST按钮:

发布和订阅都成功了。

这里使用的是用于测试的公共代理,下面我们使用自己的代理。

4. 连接到我们自己的MQTT服务器

在《树莓派+Ubuntu 20.04安装Mosquitto MQTT服务》

https://zhuanlan.zhihu.com/p/442570279

https://blog.csdn.net/chentuo2000/article/details/121785191

一文中我们已经搭建好了自己的MQTT服务器。下面我们就连接它。

  • 修改代码

找到下面这句代码:

esp_mqtt_client_config_t mqtt_cfg = {
        .uri = CONFIG_BROKER_URL,
    };

修改成:

    esp_mqtt_client_config_t mqtt_cfg = {
        //.uri = CONFIG_BROKER_URL, // CONFIG_BROKER_URL "mqtt://mqtt.eclipseprojects.io"
        .uri = "mqtt://192.168.0.8", // 可以在这里直接写,会覆盖在make menuconfig中的配置
        //.host = "192.168.137.3", // MQTT服务器IP,uri或者host选用一个即可
        .port=1883, // MQTT服务器端口
        .username = "ct", // MQTT用户名
        .password = "xxxxxxxx", // MQTT密码
    };
  • 编译、烧写
  • 测试

在树莓派上查看MQTT服务日志:

在串口查看ESP32的信息:

猜你喜欢

转载自blog.csdn.net/chentuo2000/article/details/121844926