ESP8266的使用

本文介绍的主要是跟腾讯云的连接。

一、ESP8266烧录固件

1、AT指令开发

就是把ESP8266当作一个WIFI模块来使用。使用AT指令开发离不开固件包,使用不同的物联网平台需要烧录不同的固件包,这里使用串口进行烧录。

2、硬件准备

由于腾讯云的固件包需要2M以上的flash,而ESP8266-01系列只有1M,所以只能使用ESP8266-12系列或者ESP8266-07系列。

 

3、软件准备

腾讯云AT固件下载地址

AT串口使用UART0,默认的Tx为GPIO1,Rx为GPIO3,但烧录了在官网下载的腾讯云固件之后,用于通信的串口会被修改为UART1,即GPIO13和GPIO15。安信可提供了两个版本,下载地址:https://axk.coding.net/s/296d525b-cd31-427e-9d4c-ec3dca5a3d43,一般选择1_3的版本。

MQTT透传AT固件下载地址

MQTT透传AT固件包

Flash烧录工具

flash下载工具

烧录界面:

 

二、腾讯云-物联网开发平台 IoT Explorer

1、新建产品与设备

物联网开发平台界面:点击产品控制台。

新建项目:

点击刚刚新建的项目,在项目下新建一个产品,各选项默认就行了。

点击新建的产品,直接来到设备调试页面,点击新建设备。

2、设备信息

点击新建好的设备,即可看到该设备的一系列信息,有三个有用的元素:产品ID、设备名称、设备密钥,称为三元素,ESP8266需要通过这三元素来连接到云端设备。

3、物模型

回到最开始的物模型页面,在这里可以为产品添加功能。

4、交互开发

配置完基本功能后,这一步需要为设备配置一个手机端的操作界面,这里需要切换到交互开发页面。

一般只需要配置前三个选项。

三、终端操作

可使用安信可提供的测试工具:IoTDev Tool

ESP8266需要使用到的指令:

1、连接WIFI

  • AT+CWMODE=1:设置客户端模式
  • AT+CWJAP=”WIFI名称”,”WIFI密码”:连接上WIFI

2、连接物联网设备

  • AT+TCDEVINFOSET=1,”产品ID”,”设备名称”,”设备密钥”:设置平台信息,三元素
  • AT+TCMQTTCONN=1,5000,240,1,1:配置连接服务器参数
  • AT+TCMQTTDISCONN:断开服务器连接

3、订阅主题

物联网平台的主题格式为**$thing/down/property/{ProductID}/{DeviceName},**其中ProductID是产品ID,DeviceName是设备名称。

  • AT+TCMQTTSUB=”主题”,0:订阅主题
  • AT+TCMQTTUNSUB=”主题”:取消订阅主题

4、发布主题

物联网平台的主题格式为**$thing/up/property/{ProductID}/{DeviceName},**其中ProductID是产品ID,DeviceName是设备名称。

  • AT+TCMQTTPUB=”主题”,0,”数据”:发布主题

四、JSON数据处理

1、分离出Topic和JSON数据

腾讯云下发的数据打印之后的数据:

代码如下:

/***********************************************
* @brief : ESP8266分离出Topic和CJSON
* @param : void
* @return: sub_data:分离出来的数据的地址
* @date  : 2023.11.17
* @author: L
************************************************/
uint8_t *Eep8266GetData(void)
{
    char* sub_ptr = NULL;
    char* sub_data = NULL;
    uint8_t i = 0;
    
    sub_ptr = strstr((const char*)esp8266_buff,"$thing/down/property");//查找关键词
    if(sub_ptr != NULL)
        while(*sub_ptr++ != '\\"');//指针指向数据开始的地方

    sub_ptr = strstr((const char*)esp8266_buff,"\\"method\\":\\"control\\"");//查找关键词
    if(sub_ptr != NULL)
    {
        while(*sub_ptr != '}')//将整数据赋给sub_data
        *(sub_data + i++) = *sub_ptr++;

        *(sub_data + i) = '}';//结尾补上一个大括号

        return ((uint8_t*)sub_data);//返回数据的地址
    }

    return NULL;
}

2、JSON数据处理

处理CJSON数据,可以去下载CJSON的库,只需要使用到cJSON.c和cJSON.h两个文件,下载连接:

cJSOn库

JSON解析数据代码如下:

/***********************************************
* @brief : ESP8266分离出Topic和CJSON
* @param : sub_data:从下发的信息中分离出来的数据
* @return: 参数的值的地址
* @date  : 2023.11.17
* @author: L
************************************************/
char* CjsonGetData(uint8_t* sub_data)
{
    if(sub_data != NULL)
    {
        cJSON* cjson_temp = cJSON_Parse((const char*)sub_data);//新建一个CJSON对象,存储下发的所有数据

        cJSON* cjson_params = cJSON_GetObjectItem(cjson_temp,"params");//params中也是一个CJSON的对象,取出这一部分
        cJSON_Delete(cjson_temp);//已经不需要用到cjson_temp,删除对象

        cJSON* cjson_data = cJSON_GetObjectItem(cjson_params,"dir");//找出需要的参数
        cJSON_Delete(cjson_temp);//已经不需要用到cjson_params,删除对象

        char* str = cjson_data->valuestring;//取出需要的值
        cJSON_Delete(cjson_data);//删除对象

        return str;//返回参数中的值
    }

    return NULL;
}

参考文章:物联网_扛锡勺的Tony的博客-CSDN博客

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值