我是靠谱客的博主 朴实巨人,最近开发中收集的这篇文章主要介绍ESP8266+阿里云c-sdk学习--01环境搭建ESP8266+阿里云c-sdk环境搭建,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

ESP8266+阿里云c-sdk环境搭建

本文背景为Linux环境下基于vscode对esp8266+aliyun c-sdk进行开发环境搭建

ESP8266 开发环境搭建

首先在/home下新建文件夹esp,用来存放相关文件,然后前往乐鑫github地址下载ESP8266SDK,可以直接下载压缩包然后解压扫esp文件夹下,也可以直接通过终端下载

cd esp
git clone https://github.com/espressif/ESP8266_RTOS_SDK.git

等待片刻即可,然后下载编译工具xtensa-lx106-elf,在ESP8266SDK github下载地址下有下载链接,这里我们选择Linux64位的版本,将下载的文件解压到esp文件夹下
在这里插入图片描述
下在后需要配置两个环境变量,修改/home/.profile,如下所示:
在这里插入图片描述

export PATH=/home/x/myproject/esp/xtensa-lx106-elf/bin:$PATH
export IDF_PATH=/home/x/myproject/esp/ESP8266_RTOS_SDK

可以通过source .profile查看环境变量生效配置,然后通过echo $PATH查看配置,出现以下画面代表生效成功,
在这里插入图片描述
但这只是临时的,只对这个终端有效,重启电脑可以永久生效。
然后在ESP8266SDK文件夹下运行以下代码安装依赖库
python -m pip install --user -r $IDF_PATH/requirements.txt
至此esp8266的配置基本完成。

vscode 配置

通过以下代码安装vscode

    sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make
    sudo apt-get update
    sudo apt-get install ubuntu-make
    sudo umake ide visual-studio-code

安装好后可以直接在搜索里面找到软件,若是没有重启电脑即可
在这里插入图片描述
接下来是vscode 这里我只推荐两个插件,一个用于写c,一个用于代码补全
在这里插入图片描述

阿里云 C-SDK下载配置

c-skd下载地址如下aliyun c-sdk
在这里插入图片描述
下载完成后,将文件加压到ESP8266SDK文件夹下,并改名为c_sdk,下面开始配置。
配置
首先在c_sdk文件夹下打开终端,执行make menuconfig选择配置
在这里插入图片描述
然后执行make reconfig 选择esp8266
在这里插入图片描述完成后执行make生成链接库文件,在output文件夹下
在这里插入图片描述
在这里插入图片描述
将lib文件夹下文件复制备用,然后执行./extract.sh生成裁剪文件,生成的文件位于、output/eng 下
在这里插入图片描述
将生成的裁剪文件和之前复制的lib文件夹一起复制到ESP8266_RTOS_SDK/components/libiotsdk文件夹下(libiotsdk文件夹需要自己新建)在这里插入图片描述
然后新建component.mk文件,文件内容如下

COMPONENT_ADD_INCLUDEDIRS += dev_model dev_sign infra mqtt wrappers cert http http2 ota dev_reset
COMPONENT_SRCDIRS := wrappers
LIBS := iot_sdk
COMPONENT_ADD_LDFLAGS += -lpthread -L$(COMPONENT_PATH)/lib $(addprefix -l,$(LIBS))

现在配置完成了,可以开始写代码了,为了验证配置是否完成我们可以到/ESP8266_RTOS_SDK/examples/get-started/hello_world下,修改文件,将hello_world.c 文件内容太替换成下面的内容:

#include <stdio.h>
#include <string.h>
#include "mqtt_api.h"
#include "dev_reset_api.h"
#include "esp_log.h"

void HAL_Printf(const char *fmt, ...);
int HAL_GetProductKey(char product_key[IOTX_PRODUCT_KEY_LEN]);
int HAL_GetDeviceName(char device_name[IOTX_DEVICE_NAME_LEN]);

#define EXAMPLE_TRACE(fmt, ...)  
    do { 
        HAL_Printf("%s|%03d :: ", __func__, __LINE__); 
        HAL_Printf(fmt, ##__VA_ARGS__); 
        HAL_Printf("%s", "rn"); 
    } while(0)

static int reset_mqtt_packet_id = 0;
static int reset_reply_received = 0;

void example_event_handle(void *pcontext, void *pclient, iotx_mqtt_event_msg_pt msg)
{
    EXAMPLE_TRACE("msg->event_type : %d", msg->event_type);
}

void example_devrst_evt_handle(iotx_devrst_evt_type_t evt, void *msg)
{
    switch (evt)
    {
        case IOTX_DEVRST_EVT_RECEIVED: {
            iotx_devrst_evt_recv_msg_t *recv_msg = (iotx_devrst_evt_recv_msg_t *)msg;
            if (recv_msg->msgid != reset_mqtt_packet_id) {
                return;
            }
            EXAMPLE_TRACE("Receive Reset Responst");
            EXAMPLE_TRACE("Msg ID: %d", recv_msg->msgid);
            EXAMPLE_TRACE("Payload: %.*s", recv_msg->payload_len, recv_msg->payload);
            reset_reply_received = 1;
        }
        break;

        default:
            break;
    }
}

int app_main()
{
    int res = 0;
    void                   *pclient = NULL;
    iotx_dev_meta_info_t    meta_info;
    iotx_mqtt_param_t       mqtt_params;

    memset(&mqtt_params, 0, sizeof(iotx_mqtt_param_t));
    memset(&meta_info, 0, sizeof(iotx_dev_meta_info_t));

    HAL_GetProductKey(meta_info.product_key);
    HAL_GetDeviceName(meta_info.device_name);

    mqtt_params.handle_event.h_fp = example_event_handle;

    pclient = IOT_MQTT_Construct(&mqtt_params);
    if (NULL == pclient) {
        EXAMPLE_TRACE("MQTT construct failed");
        return -1;
    }

    res = IOT_DevReset_Report(&meta_info, example_devrst_evt_handle, NULL);
    if (res < 0) {
        return -1;
    }
    reset_mqtt_packet_id = res;

    while (!reset_reply_received) {

        IOT_MQTT_Yield(pclient, 200);
    }

    EXAMPLE_TRACE("Example Execute Success, Now Exit...");

    return 0;
}

然后make一下看看有无报错,若是出现HAL_xxxx函数没有定义,则是在/home/x/myproject/esp/ESP8266_RTOS_SDK/components/libiotsdk/wrappers
下wrappers.c文件没有写这个函数,补充上即可。

最后

以上就是朴实巨人为你收集整理的ESP8266+阿里云c-sdk学习--01环境搭建ESP8266+阿里云c-sdk环境搭建的全部内容,希望文章能够帮你解决ESP8266+阿里云c-sdk学习--01环境搭建ESP8266+阿里云c-sdk环境搭建所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部