Skip to content

TencentCloud/tc-iot-sdk-embedded-for-esp8266

Repository files navigation

腾讯云物联网开发平台设备端C-SDK for ESP8266

本文档介绍如何将腾讯云物联网开发平台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 二进制数据传输示例

快速开始

1. 获取 ESP8266_RTOS_SDK 以及编译器

本项目基于**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

2.腾讯云物联网开发平台 C-SDK 代码

项目默认已经包含了一个腾讯云IoT Explorer C-SDK v3.1.9的代码。如需要更新可参考文档底部说明

3.工程目录结构

在下载了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		# 配网示例

4.修改设备三元组信息

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";

5.编译及烧写

  1. 执行make menuconfig可进行功能配置,以MQTT sample为例,填入当前网络环境的WiFi名称和密码

menuconfig

  1. 再执行make -j8就可以在build目录下面生成镜像。

make

  1. 烧写镜像可以在Linux下面执行make flash命令,或者使用乐鑫在Windows下面的FLASH_DOWNLOAD_TOOLS工具

download

  1. 烧写成功之后可以重启开发板运行程序

mqtt_sample_run

固件升级

  1. 本例程提供了完整的固件升级示例,首先通过menuconfig 选择Factory app, two OTA definitions),然后使能Enable OTA support on ESP

  1. 如果你想在自己的项目中使能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!");
  1. 烧录时,注意选择build\partitions_two_ota.bin

更新腾讯云物联网开发平台SDK版本

  1. 从GitHub拉取最新的代码,建议拉取release版本代码
# 腾讯云物联网开发平台 IoT Explorer
git clone https://github.com/tencentyun/qcloud-iot-explorer-sdk-embedded-c.git
  1. 执行代码抽取,生成本项目的组件

code_gen

  1. 替换需要更新的源文件

    将生成的output\qcloud_iot_c_sdk拷贝到本项目的components\qcloud_iot_c_sdk

file_copy

注意:文件拷贝过去后需要仔细检查接口,有些接口需要重新适配!

AT 固件

最新AT固件请移步乐鑫官网下载

配套视频教程