VScode+esp-idf:编译腾讯物联网控制台ESP32例程(esp-qcloud)
文章目录
腾讯物联网控制台专门为ESP32开发一个开源的例程,针对智能灯应用,可以用腾讯连连小程序控制。这篇文章我们介绍如何在vscode+esp-idfV4.4的环境下,进行可视化开发。
1.下载esp-qcloud源代码
1.码云仓库:esp-qcloud
2.github仓库:esp-qcloud
我用的是码云的仓库,下载后解压后生成文件夹 《esp-qcloud-master》,改成 《esp-qcloud》,放到 esp-idf安装目录的 《example》 文件夹里面。以我的路径为例,是这样的(后面我们要用到这个路径 《$ENV{IDF_PATH}/examples/esp-qcloud》):
放在 《example》 文件夹里面的好处是,后面我们创建例程时,会拷贝一份到我们的工作目录下面,然后我们修改代码时不会影响到原文件。
2.创建led_light新工程
esp-qcloud有一个example,名字为《led_light》路径 如下:
我们就要对这个工程进行编译。
2.1拷贝led_light例程
在命令面板搜索 “example”:
选择 Use current ESP-IDF,然后路径《E:\esp32\esp-idf\examples》下面所有例程都被列出来:
找到《led_light》,点击蓝色按键,会跳出一个选择目标文件夹的窗口,我们选择好后,会拷贝《led_light》到目标文件夹。
2.2修改《CMakeLists.txt》
因为几乎每个文件夹都有一个《CMakeLists.txt》,是 《led_light》 下面的《CMakeLists.txt》。
正确的文件:《./led_light/CMakeLists.txt》
错误的文件:《./led_light/main/CMakeLists.txt》
修改的目的是指定 QCLOUD_PATH的路径。根据第一章我们放置《esp-qcloud》文件的位置来设置。
《CMakeLists.txt》文件内容(重点在第14,15行):
# The following lines of boilerplate have to be in your project's CMakeLists
# in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.5)
add_compile_options(-fdiagnostics-color=always)
if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/../../config/)
set(QCLOUD_PATH ${CMAKE_CURRENT_LIST_DIR}/../..)
elseif(EXISTS ${CMAKE_CURRENT_LIST_DIR}/components/qcloud)
set(QCLOUD_PATH ${CMAKE_CURRENT_LIST_DIR}/components/qcloud)
elseif(EXISTS ${CMAKE_CURRENT_LIST_DIR}/components/esp-qcloud)
set(QCLOUD_PATH ${CMAKE_CURRENT_LIST_DIR}/components/esp-qcloud)
elseif(EXISTS $ENV{IDF_PATH}/components/qcloud)
set(QCLOUD_PATH $ENV{IDF_PATH}/components/qcloud)
elseif(EXISTS $ENV{IDF_PATH}/examples/esp-qcloud)
set(QCLOUD_PATH $ENV{IDF_PATH}/examples/esp-qcloud)
else()
message(FATAL_ERROR "Please configure the path of `QCLOUD_PATH`")
endif()
if(NOT DEFINED IDF_TARGET)
set(IDF_TARGET "esp32")
endif()
# Add QCloud components and other common application components
# This example uses an extra component for common functions such as led and button.
set(EXTRA_COMPONENT_DIRS ${QCLOUD_PATH}
${QCLOUD_PATH}/examples/common_components/led
${QCLOUD_PATH}/examples/common_components/button)
# Performance Options
if(NOT DEFINED PERF)
set(PERF "defaults")
endif()
set(SDKCONFIG_DEFAULTS ${QCLOUD_PATH}/config/sdkconfig_defaults/sdkconfig.${PERF}.${IDF_TARGET})
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
string(REGEX REPLACE ".*/\(.*\)" "\\1" CURDIR ${CMAKE_CURRENT_SOURCE_DIR})
project(${CURDIR})
git_describe(PROJECT_VERSION ${COMPONENT_DIR})
message("Project commit: " ${PROJECT_VERSION})
3.配置工程
此时,我们可以开始配置工程:
3.1配置开发板及GPIO
这个工程提供3种开发板选项,我们选择自定义开发板,根据实际情况选择GPIO:
3.2输入腾讯物联网控制台设备三元组
现在腾讯物联网控制台创建一个设备,创建方法见文章 《ESP32:腾讯云物联网控制台创建iot设备(使用腾讯连连控制ESP32)》。把这个设备的参数填到这里:
3.3指定配网方式
这里提供了3种配网:
- smart config(AirKiss)
2.soft AP
3.blufi
我们就选第一种:
到此,配置完成,保存配置,可以编译工程。
4.编译工程,下载程序到目标板
4.1编译工程
编译完成,生成各种文件:
4.2下载bin到目标板
使目标板进入下载模式,点击下载,等待下载完成,按复位键运行程序。
5.填坑:找不到头文件
尽管编译没有出错,但是vscode还是提示有几个错误:
在文件《 c_cpp_properties.json》加入esp-qcloud所在路径 “${config:idf.espIdfPathWin}/examples/esp-qcloud/**”,
注意,有2个地方增加相同的内容。
重新编译一下,就可以消除错误。