littlebot
Published on 2025-04-12 / 0 Visits
0

【源码】基于Arduino和ESP32的物联网MQTT通信系统

项目简介

本项目借助Arduino平台与ESP32 Wrover - B开发板,通过MQTT协议接入物联网通信云平台(UIoT Core),达成消息的发布与订阅功能。此项目适用于物联网设备开发,尤其适用于需借助MQTT进行数据通信的场景。

项目的主要特性和功能

  • MQTT通信:支持MQTT协议的消息发布与订阅。
  • WiFi连接:可通过WiFi接入互联网。
  • 动态与静态认证:支持设备动态注册和静态认证。
  • TLS加密:可选TLS加密连接,增强数据传输安全性。
  • 用户回调函数:支持自定义消息回调函数,便于处理接收到的MQTT消息。

安装使用步骤

1. 环境准备

  • 下载并安装Arduino IDE:访问Arduino官网下载并安装Arduino IDE。
  • 安装ESP32包
  • 打开Arduino IDE,点击文件 -> 首选项
  • 附加开发板管理器网址中填入https://dl.espressif.com/dl/package_esp32_index.json,点击保存。
  • 点击工具 -> 开发板 -> 开发板管理器,搜索esp32并安装。
  • 安装依赖库
  • 点击工具 -> 管理库
  • 搜索并安装PubSubClientArduinoJsonUCloudIoTSDK库。

2. 开发板设置

使用USB连接开发板,并在Arduino IDE中设置开发板信息(具体设置请参考开发板文档)。

3. 程序编写

  • 包含头文件:在代码中包含UCloudIoTSDK.hWiFi.h头文件。
  • 设置WiFi信息:定义WiFi的SSID和密码。
  • 设置物联网平台信息:定义产品序列号、设备序列号、产品密钥和设备密钥。
  • 定义MQTT主题:定义MQTT测试主题和消息。
  • 设置用户消息回调函数:定义一个回调函数,用于处理接收到的MQTT消息。
  • 连接WiFi和MQTT:在setup函数中连接WiFi和MQTT,并订阅测试主题。
  • 发布和接收消息:在loop函数中每两秒发布一条测试消息,并处理接收到的消息。

4. 测试过程

  • 烧录程序:点击Arduino IDE中的上传按钮,将程序烧录到开发板。
  • 查看串口输出:使用串口工具连接开发板,查看WiFi和MQTT连接状态以及消息发布和订阅的结果。
  • 查看物联网平台日志:登录UIoT Core平台,查看设备在线状态和接收到的消息。

5. 拓展功能

  • 动态注册:将设备序列号置为NULL,并正确填写其他四元组信息。
  • TLS加密连接:在UCloudIoTSDK.h库文件中取消ENABLE_ESP32_TLS的注释,启用TLS加密连接。

API参考

  • 构造对象接口UCloudMQTT(char *product_sn, char *device_sn, char *product_secret, char *device_secret, MQTTHandlerFun callback);
  • MQTT连接接口int mqtt_connect(void);
  • 延时等待接收MQTT消息接口void mqttYield(int time_ms);
  • 查询MQTT状态接口boolean mqtt_status(void);
  • MQTT发布接口boolean publish(const char* topic, const char* payload);
  • MQTT订阅接口boolean subscribe(const char* topic);
  • MQTT取消订阅接口boolean unsubscribe(const char* topic);

常见问题

  • 编译错误:确认所有必要的库已安装。
  • 烧录失败:确认Arduino IDE能够读取到开发板的端口信息。
  • MQTT连接问题:检查PubSubClient库中的MQTT_MAX_PACKET_SIZE是否设置为1024。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】