图文手把手教程–ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

本文内容

1)在腾讯云物联网开发平台,新建项目,并在项目下新建设备“light_001”。

2)下载腾讯云SDK-esp-qcloud,使用例程led_light,通过“腾讯连连”微信小程序控制。

3)在腾讯云物联网开发平台进行OTA固件升级。

4)在腾讯云物联网开发平台,查看设备、管理设备、调试设备。

esp-qcloud下载地址:https://github.com/espressif/esp-qcloud

在微信中搜索小程序,名字:腾讯连连

注意:腾讯连连手机APP(版本1.5.5)可以配网,但无法正常控制。

一、首先完成集成开发环境搭建:

图文手把手教程(史上最强):windows下ESP32集成开发环境搭建和HelloWorld显示(乐鑫官方推荐方法-使用VSCode安装ESP-IDF插件)

二、在腾讯云物联网开发平台,新建项目、产品和设备。

2.1 腾讯云开发参考文档:物联网开发平台 项目管理-开发中心-文档中心-腾讯云

2.2 腾讯云开发参考视频:ESP32 快速接入腾讯云指南丨乐鑫物联网学院+腾讯云大学

2.3 注册并登陆腾讯云物联网开发平台:https://cloud.tencent.com

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

2.4 新建项目

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 2.5 在项目下新建产品

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

2.6 在产品下新建设备

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

1)导入物模型

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

  

打开下载好的腾讯云SDK:esp-qcloud-masterexamplesled_light,用notepad++打开

data_template_light.json,全选,复制里面的内容到“导入物模型”内容框中,然后点击导入。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

导入后,生成的数据模型如下图所示,然后点击下一步。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 2) 设备开发

因是ESP32 SDK开发,所以这一步什么也不用选,直接点击下一步。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 3)交互开发

现阶段APP(版本1.5.5)无法正常控制,所以这里只配置小程序。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 

产品展示配置

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 

快捷入口配置

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

面板配置

这里可以配置标准面板,样式少得可怜,也可以配置可视化面板。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

配网引导

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

扫一扫产品介绍

这里不作配置。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 

智能联动配置

这里不作配置。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

4)设备调试

新建设备->输入名称->light_001。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

5)批量投产

小程序要进行认证,APP又有问题,所以这里只能使用小程序,产品不能发布也能调试。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 三、创建led_light例程

1 )github下载腾讯云SDK:https://github.com/espressif/esp-qcloud

从github下载的esp-qcloud-master,修改名称为esp-qcloud,如果编译不报错,不改也没事。

esp-qcloud的内容如下图所示:

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

2)将整个esp-qcloud文件夹复制到E:ESP32-IDFespesp-idfcomponents目录下。

注:不一定要这样,可以按照自己的架构来。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

3)将esp-qcloud文件夹下的examples复制到E:ESP32-IDFespesp-idfexamples目录下,并重命名为qcloud。

注:不一定要这样,可以按照自己的架构来。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

4)创建示例项目led_light:VSCODE中->”查看”->”命令面板“->输入:Show Examples projects->选择Use current ESP-IDF(E:ESP32-IDFespesp-idf)->弹出示例ESP-IDF Examples,选择qcloud->led_light->Create project using example led_light->选择示例保存的路径。

例如:E:ESP32-IDFproject-example,因ESP-IDF框架与示例是分离的,所以示例保存的路径可以随意,但需要注意:路径不能有中文和空格,否则报错。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 5)创建完成,如下图所示。 

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

打开后,如果右下角提示是否允许Makefile Tools配置,则选择不允许。

如果不小心选择了允许,则会出现:头文件报警告“在 browse.path 中未找到包含文件”,即头文件有波浪线,无法跳转。原因:本地没有安装cmake。

解决办法:在.vscode->c_cpp_properties.json中删除”configurationProvider”: “ms-vscode.cmake-tools”即可。
图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

6)擦除整片flash,防止之前的配网信息的干扰。

由于之前的调试,已经在代码中烧录过四元组以及配网,所以这里要擦掉flash,重新进行测试。

注意:erase_flash是擦除整片flash,在上面保存的四元组和wifi的帐号、密码都会被擦除。

python E:ESP32-IDFespesp-idfcomponentsesptool_pyesptoolesptool.py erase_flash

7)一字不改,编译、下载到ESP32开发板。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

8)打开串口监控,显示错误信息:未烧录三元组,如下图所示。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

四、配置分区表和一键配网。

分区表的说明见官方文档:分区表 – ESP32 – — ESP-IDF 编程指南 latest 文档

分区表的说明见博客:ESP32分区表图解

1)将esp-qcloudconfigpartition_table下的partitions_4MB.csv复制一份到项目根目录下。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

2)打开SDK可视化配置,设定flash大小和设定“partition table”分区表。

左下角,点击SDK可视化配置按钮,进入配置,配置完后按保存。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

2)配置一键配网。 

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

五、烧录腾讯云三元组。

5.1 方法一:将三元组烧录到代码中,适合调试用,不适合量产。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

5.2 方法二:将三元组生成bin文件进行烧录,适合量产。

1)打勾ESP Qcloud Mass Manufacture选项。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

2)打开…esp-qcloudconfigmass_mfg,复制single_mfg_config.csv到led_light项目下。

注意:single_mfg_config.csv是对于单台设备的,如果要批量生成bin文件,即填写100台设备的三元组,批量生成独立的100个bin文件,在multipule_mfg_values.csv中依次填写三元组即可,multipule_mfg_config.csv不用修改,详见esp-qcloudconfigmass_mfg中的README.md。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 3)打开single_mfg_config.csv,填写三元组。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

4)三元组生成bin文件。

Python E:ESP32-IDFespesp-idfcomponentsnvs_flashnvs_partition_generatornvs_partition_gen.py generate single_mfg_config.csv single_mfg.bin 0x4000

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

5)烧录三元组bin文件。

注意:这里的写入地址与阿里云不同,阿里云是0x210000,而腾讯云是0x15000。

python E:ESP32-IDFespesp-idfcomponentsesptool_pyesptoolesptool.py write_flash 0x15000 single_mfg.bin

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

6)擦除整片flash。

由于在“5.1方法一”时已经在代码中烧录过四元组以及配网,所以这里要擦掉flash,重新进行测试。

注意:erase_flash是擦除整片flash,在上面保存的四元组和wifi的帐号、密码都会被擦除。

python E:ESP32-IDFespesp-idfcomponentsesptool_pyesptoolesptool.py erase_flash

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

7)重新烧录代码和三元组bin文件,打开串口监控。

可以看到成功生成了配网二维码,该二维码与云端生成的二维码功能相同。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

六、使用腾讯连连小程序进行配网。

1)在微信中搜索腾讯连连小程序,登陆个人帐号后,点击“扫一扫”,扫描VSCODE生成的配网二维码或者腾讯云平台中的配网二维码。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 2)串口监控中,可以看到配网成功并连接MQTT成功,可以使用腾讯连连进行控制。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

七、在腾讯云物联网平台进行OTA固件升级。

7.1 修改版本号。

1)app_main.c中定义一个版本号全局变量,如下图所示。

static const char *TAG = "app_main";
const char *firmware_version = "1.0.0";

2) app_main.c中第213行,将版本号字符串”0.0.1″修改为firmware_version,如下图所示。

/*
     * @breif Create a device through the server and obtain configuration parameters
     *        server: https://console.cloud.tencent.com/iotexplorer
     */
    /**

 3)app_main.c中末尾处增加while(1)代码,用于打印版本号,方便OTA升级调试。

/**
     * @brief Connect to Tencent Cloud Iothub
     */
    ESP_ERROR_CHECK(esp_qcloud_iothub_init());
    ESP_ERROR_CHECK(esp_qcloud_iothub_start());
    ESP_ERROR_CHECK(esp_qcloud_iothub_ota_enable());

     while (1)
     {
         printf("firmware_version=%sn", firmware_version);//打印版本号
         vTaskDelay(1000 / portTICK_PERIOD_MS);
     }

7.2 编译版本1.0.0,并下载至ESP32开发板。

打开串口监控,可以看到打印版本1.0.0。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 

7.3 编译版本2.0.0,上传至腾讯云物联网平台及发送固件升级命令。

1)修改版本号为2.0.0,如下图所示。

static const char *TAG = "app_main";
const char *firmware_version = "2.0.0";

2)重新编译, 将生成的bin文件,复制到桌面,并重命名为qcloud_led_light_V2.0.0。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级 

 

3)在腾讯云物联网平台,添加固件。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 这里需要注意,固件类型必须选择“MCU”,如果选择“模组”则后面的“待升级版本号”无法选择,也就无法升级!原因?

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 

4)在平台,发送固件升级指令。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

 

5)点击保存后,在VSCODE串口监控中可以看到,收到平台发送的升级指令。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

固件正在下载…

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

重启后,可以看到打印的版本号为2.0.0,说明OTA成功了。

图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

至此,ESP32 MQTT连接腾讯云物联网平台及OTA固件升级已全部完成,愉快的玩耍吧!

完整的例程代码下载:https://download.csdn.net/download/felix_tao/86540047

使用例程,报错怎么办,解决办法如下:

1)打开VSCODE报错,c_cpp_properties.json无法找到E:ESP32-IDF…

解决办法:点击.vscode->c_cpp_properties.json,修改盘符即可,例如将E盘改为D盘。

2)编译工程报错:

[0/1] Re-running CMake…
FAILED: build.ninja 
CreateProcess failed: The system cannot find the file specified.
ninja: error: rebuilding ‘build.ninja’: subcommand failed

解决方法:清除编译产生的所有文件,左下角->点击垃圾桶图标(ESP-IDF Full Clean)->清除后,接着重新编译即OK。
 

本文参考的文档:

物联网开发平台 产品定义-开发中心-文档中心-腾讯云

本文章来源于互联网,如有侵权,请联系删除!原文地址:图文手把手教程–ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

相关推荐: thingsboard物联网平台编译安装一步到位

物联网平台thingsboard编译一步到位 物联网平台thingsboard编译一步到位 1.thingsboard简介 2.clone项目 3.前置准备 3.1 安装JDK11 3.2 安装Nodejs 3.3 将pkg-fetch放入本地缓存 3.4 配…