本文档介绍如何将腾讯云物联网开发平台C-SDK移植到乐鑫 ESP8266 RTOS 平台,并提供可运行的samples。对于物联网开发平台的详细使用,请参考官网文档。
本项目基于NodeMCU ESP8266开发板,关于开发板的详细介绍,请参考这里。
例程支持情况:
samples | 说明 | 备注 |
---|---|---|
mqtt_sample | MQTT连接例程 | |
data_template_sample | 数据模板例程 | 使用codegen.py生成 |
dynreg_sample | 动态注册例程 | |
light_data_template_sample | 智能灯示例 | |
wifi_config_sample | 配网示例 | 支持softAP、SmartConfig和Air kiss配网 |
raw_data_sample | 二进制数据传输示例 |
本项目基于**Linux(ubuntu)**环境进行开发,关于ESP8266开发的基础知识,请参考其 开发指南
本项目基于ESP8266_RTOS_SDK v3.1版本开发,如果使用更高版本可能会报错,请自行解决。
git clone --single-branch -b release/v3.1 https://github.com/espressif/ESP8266_RTOS_SDK.git
ESP8266_RTOS_SDK编译需要python及pip,并且需要安装以下python库及软件
sudo apt-get install git wget flex bison gperf python python-pip python-setuptools cmake ninja-build ccache libffi-dev libssl-dev
pip install pyserial
pip install xlrd
下载ESP8266_RTOS_SDK后需要将IDF_PATH路径设置到环境变量中
# 设置IDF_PATH
export IDF_PATH=/mnt/d/UGit/ESP8266_RTOS_SDK
编译toolchain请参考ESP8266_RTOS_SDK/README.md,推荐使用
在Linux安装toolchain之后,需要将toolchain的bin目录添加到PATH环境变量中
# 设置编译工具链
export PATH=$PATH:/opt/xtensa-lx106-elf/bin
项目默认已经包含了一个腾讯云IoT Explorer C-SDK v3.1.9的代码。如需要更新可参考文档底部说明
在下载了ESP8266 RTOS SDK之后,应该具有以下目录结构(部分文件没有展示出来)
├── components
│ ├── qcloud_iot_c_sdk
│ │ ├── component.mk
│ │ ├── include
│ │ ├── platform
│ │ └── sdk_src
│ └── qrcode
│ ├── component.mk
│ ├── include
│ └── src
├── main
│ ├── Kconfig.projbuild
│ ├── board_ops.c
│ ├── board_ops.h
│ ├── component.mk
│ ├── main.c
│ ├── ota_esp
│ │ ├── qcloud_iot_ota_esp.c
│ │ └── qcloud_iot_ota_esp.h
│ ├── qcloud_iot_demo.h
│ └── samples
│ ├── data_template
│ ├── dynreg_dev
│ ├── gateway
│ ├── mqtt
│ ├── raw_data
│ ├── scenarized
│ └── wifi_config
├── ota_data_initial.bin
├── partitions_qcloud_demo.csv
├── sdkconfig
├── sdkconfig.old
├── sdkconfig.qcloud
├── Makefile
├── README.md
├── build
工程的组织结构参考ESP8266_FREE_RTOS风格,其中components
文件夹里面存放了两个组件
├── components # 组件文件夹
│ ├── qcloud_iot_c_sdk # 腾讯云物联网开发平台执行C-SDK代码抽取后的源文件
│ └── qrcode # 生成二维码组件
main文件夹存放了项目入口函数main.c
和一些开发板硬件初始化函数,其中samples
文件夹里面存放了腾讯云物联网开发平台的各个示例文件。
│ └── samples # 示例文件夹
│ ├── data_template # 数据模板示例
│ ├── dynreg_dev # 动态注册示例
│ ├── gateway # 网关示例
│ ├── mqtt # mqtt示例
│ ├── raw_data # hex传输示例
│ ├── scenarized # 场景示例,如智能灯
│ └── wifi_config # 配网示例
到components/qcloud_iot/qcloud_iot_c_sdk/platform/HAL_Device_freertos.c
里面修改在腾讯云物联网平台注册的设备信息(目前仅支持密钥设备):
/* Product Id */
static char sg_product_id[MAX_SIZE_OF_PRODUCT_ID + 1] = "PRODUCT_ID";
/* Device Name */
static char sg_device_name[MAX_SIZE_OF_DEVICE_NAME + 1] = "YOUR_DEV_NAME";
/* Device Secret */
static char sg_device_secret[MAX_SIZE_OF_DEVICE_SECRET + 1] = "YOUR_IOT_PSK";
- 执行make menuconfig可进行功能配置,以MQTT sample为例,填入当前网络环境的WiFi名称和密码
- 再执行
make -j8
就可以在build目录下面生成镜像。
- 烧写镜像可以在Linux下面执行make flash命令,或者使用乐鑫在Windows下面的FLASH_DOWNLOAD_TOOLS工具
- 烧写成功之后可以重启开发板运行程序
- 本例程提供了完整的固件升级示例,首先通过
menuconfig
选择Factory app, two OTA definitions)
,然后使能Enable OTA support on ESP
- 如果你想在自己的项目中使能OTA功能,出了上述配置之外,在初始化完成mqtt后,还需要调用
enable_ota_task
具体的使用方法,请参考light_data_template_sample.c
示例。
rc = enable_ota_task(&sg_devInfo, IOT_Template_Get_MQTT_Client(client), "1.0.3");
if (rc)
Log_e("Start OTA task failed!");
- 烧录时,注意选择
build\partitions_two_ota.bin
- 从GitHub拉取最新的代码,建议拉取release版本代码
# 腾讯云物联网开发平台 IoT Explorer
git clone https://github.com/tencentyun/qcloud-iot-explorer-sdk-embedded-c.git
- 执行代码抽取,生成本项目的组件
-
替换需要更新的源文件
将生成的
output\qcloud_iot_c_sdk
拷贝到本项目的components\qcloud_iot_c_sdk
注意:文件拷贝过去后需要仔细检查接口,有些接口需要重新适配!
最新AT固件请移步乐鑫官网下载。