项目简介
本项目借助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
并安装。 - 安装依赖库:
- 点击
工具
->管理库
。 - 搜索并安装
PubSubClient
、ArduinoJson
和UCloudIoTSDK
库。
2. 开发板设置
使用USB连接开发板,并在Arduino IDE中设置开发板信息(具体设置请参考开发板文档)。
3. 程序编写
- 包含头文件:在代码中包含
UCloudIoTSDK.h
和WiFi.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】