记录:ESP8266使用AT指令连接阿里云实现数据的上传和下发以及温湿度功能全部过程。

本文详细介绍了如何配置ESP8266-01模块连接MQTT服务器,包括与USB-TTL模块的连接、AT固件烧写、阿里云物联网平台的创建与设备连接,以及发布和订阅数据的操作。最后展示了如何实现温湿度功能的上传。
摘要由CSDN通过智能技术生成

一、ESP8266配置MQTT固件

1. ESP8266-01模块与USB-TTL模块的连接方法

ESP8266-01模块与USB-TTL模块的连接方法
ESP8266-01USB-TTL CH340
3V3(要求高,稳定,否则AT无反应等3V3
RST悬空(不接)
EN3V3(可以串个电阻)
TXRX
RXTX
IO0GND(为了烧写固件)
IO2悬空(不接)
GNDGND

2.到官网下载固件包和烧写软件

       (1)、 AT固件包:AT固件汇总 | 安信可科技 (ai-thinker.com)

根据需求自己选择,我选的AT包如下图:

        (2)、AT固件包烧写软件:开发工具清单 | 安信可科技 (ai-thinker.com)

找到烧写软件,如下图:

3.烧写AT固件

        (1)、打开烧写软件,找到AT固件,软件配置,下载。

              在此之前,可能有的ESP8266的波特率不是115200,而是9600,但烧录软件最低就是115200。可以通过下面这条AT指令设置为115200。(注意有的固件他的命令可能不一样,找到自己对应的即可。本文大部分AT指令可以在乐鑫官网找到,AT 命令集 — ESP-AT 用户指南 文档 (readthedocs-hosted.com)

AT+CIOBAUD=115200

             具体烧写操作如下图所示:

         (2)、点击start开始下载,出现等待上电复位字样,此处将3V3电源进行拔插即可下载,如下图。

开始下载​​​​​

                                      将电源拔掉又插上。

下载中

         

下载完成

        固件烧录完毕,这样就可以用AT固件中的MQTT指令连接阿里云了,不必在去考虑什么解析库、MQTT-API等等,使项目变得简单。一条AT命令就可以完成服务器的连接、消息的订阅、消息的发布等等(这是MQTT协议,举个栗子:客户端A订阅了“王者农药”这样的主题(topic),另一个客户端B发布了一条以“王者农药”为主题,内容为“国服关羽请战”的消息,那么服务器会将这条消息转发给客户端A) 。

二、配置阿里云平台

1.创建产品和设备

        先说一下:产品和设备的关系。产品是设备的种类。例如小汽车与特斯啦汽车,小汽车就是产品,特斯啦汽车就是设备。一个产品可以有多个设备。

        (1)、配置产品和设备

        具体步骤如下图:

        1.找到阿里云物联网平台。

        

        2.点击管理控制台。

        3.点击公共实例。

4.创建产品。

 5.编辑产品详细信息。

6.添加设备。

 7.点击完成。

8.产品与设备创建完成。

三、ESP8266-01利用AT指令连接该设备。

1.拔掉IO0,现在烧写完就不用了,3V3电源拔掉在接上,相当于重启,其他不要动。

2.AT命令连接手机热点(2.4GHz)。

AT+CWMODE=1 //设置ESP8266为station模式,用来连接热点
AT+CWJAP="tcy","1878127692" //“热点名”,“热点密码”

3.AT命令配置MQTT相关信息。

        打开阿里云设备页面,点击查看。

         再点击MQTT连接参数的查看。

4.AT命令配置ESP8266的MQTT的用户参数。

        AT+MQTTUSERCFG=0,1,“NULL”,“username”,“passwd”,0,0,“”;这个用户名和密码来自上一步阿里云的MQTT连接参数中。NULL的位置用来写客户ID,但这个AT有长短限制,写不了,下一条AT指令解决这个问题。

AT+MQTTUSERCFG=0,1,"NULL","ESP8266&k0sk8St9rwZ","9ea7df469b808007366afcb398f253b85fa462cf7d94ae43989771b373497a12",0,0,"" //0,1,“NULL”,“username”,“passwd”,0,0,“”

        AT+MQTTCLIENTID=0,"clientId" ;将客户ID配置上,客户ID来自上一步阿里云的MQTT连接参数中。(注意,其中的逗号要加反斜杠)。

AT+MQTTCLIENTID=0,"k0sk8St9rwZ.ESP8266|securemode=2\,signmethod=hmacsha256\,timestamp=1706516241727|"

         总体效果如下:

        出现OK即可,这样MQTT的用户信息(三元组)就配置好了 。

5.AT命令连接阿里云服务器

        AT+MQTTCONN=0,"mqttHostUrl",1883,1;这个mqttHostUrl来自上上一步阿里云的MQTT连接参数中,1883是MQTT的端口号,来自上上一步阿里云的MQTT连接参数中。

AT+MQTTCONN=0,"iot-06z00fn96hud09a.mqtt.iothub.aliyuncs.com",1883,1

        这一步执行成功后,就连接上设备了,阿里云会显示设备在线(之前是未激活)。

四、发布和订阅数据

1、阿里云发布数据到ESP8266

         之前说过,发布需要主题(topic),这个主题的位置如下图:

        点击产品,再点击查看。

        找到发布主题(topic),如下图:

        使用AT命令让ESP8266订阅该主题,这样阿里云发布的数据ESP8266就可以收到。

   AT+MQTTSUB=0,"topic",0; //订阅主题(topic)。其中的topic : /k0sk8y5eJp1/${deviceName}/user/get 中的${deviceName}是你的设备名称。

AT+MQTTSUB=0,"/k0sk8y5eJp1/ESP8266_No.1/user/get",0

 

        发送成功后,在阿里云设备 ESP8266_No.1处点击查看。

        在点击topic列表,可以看到已经订阅的topic,如下图。

        点击右边的发送消息,编辑好信息,发送即可,如下图所示。

        ESP8266会收到信息,如下图所示。

 

2.ESP8266上传数据到阿里云

         找到刚刚的topic位置,上面找过,这里不再找了,如下图所示。

        这个是上传数据到阿里云的发布topic。

        使用AT指令发布数据到阿里云。

        AT+MQTTPUB=0,"topic","data",0,0 //发布信息。topic: /k0sk8y5eJp1/${deviceName}/user/update/error 中的${deviceName}是你的设备名称。data :要发的数据 ,例如 :粤嵌--帖工--123456789。

AT+MQTTPUB=0,"/k0sk8y5eJp1/ESP8266_No.1/user/update/error","粤嵌--帖工--123456789",0,0

        在阿里云查看信息。 

五、温湿度功能

1.添加功能,具体步骤如下图所示。

         下图有个标识符“temperature”,后面会用到。功能类型是属性。

2.找到上传属性的topic,刚刚创建的功能属于属性行列。如下图所示。

 3.利用AT指令上传温湿度到阿里云:

        AT+MQTTPUB=0,"topic","报文",0,0//topic : /sys/k0sk8y5eJp1/${deviceName}/thing/event/property/post,其中的${deviceName}是你的设备名称 , 报文:{params:{\"temperature\":66.6}} ,其中的temperature是你刚刚创建功能中的标识符,66.6是温度。

AT+MQTTPUB=0,"/sys/k0sk8y5eJp1/ESP8266_No.1/thing/event/property/post","{params:{\"temperature\":66.6}}",0,0

 

 

4.上传成功。 

### 回答1: STM32和ESP8266是两种常见的嵌入式开发模块,可以实现多个数据同时连接阿里云功能。 首先,STM32是一种基于ARM Cortex-M系列的微控制器,具有丰富的外设和强大的计算能力。它可以通过UART、SPI或I2C等通信接口与ESP8266模块进行交互。 ESP8266是一款低成本且高度集成的Wi-Fi模块,可以实现与互联网的通信。它具有强大的网络协议栈和TCP/IP协议的支持,可以通过Wi-Fi连接阿里云服务器。 要实现多个数据同时连接阿里云功能,可以使用STM32作为主控制器,通过串行通信协议(例如SPI或UART)与多个ESP8266模块进行通信。 首先,STM32需要配置相应的串行通信接口,与每个ESP8266模块分别建立连接。可以使用UART或SPI来实现数据的传输。设置合适的波特率、数据位、校验位等,保证数据的可靠传输。 然后,通过STM32的程序控制,向每个ESP8266模块发送连接阿里云服务器的指令ESP8266模块通过Wi-Fi将数据传输给阿里云服务器,实现数据上传和下载。 为了实现多个数据同时连接,可以采用多任务或多线程的方式来实现。通过合理的任务调度或线程管理,可以使得每个ESP8266模块在不同的时间片内进行数据传输,实现多个数据的同时上传或下载。 最后,需要在阿里云服务器上配置相应的云端服务,以接收和处理来自ESP8266模块的数据。可以使用阿里云提供的SDK和API进行开发和集成。 综上所述,通过STM32和ESP8266的组合,配置适当的通信接口、实现多任务或多线程调度,可以实现多个数据同时连接阿里云功能。 ### 回答2: stm32与esp8266连接方式有很多种,其中一种常用的方式是通过串口通信进行数据传输。首先,需要将stm32和esp8266连接起来,其中stm32的串口发送引脚(TX)连接esp8266的串口接收引脚,而stm32的串口接收引脚(RX)连接esp8266的串口发送引脚。然后,需要进行相应的软件配置。 在stm32中,需要编写相应的代码来实现串口通信功能,并通过串口发送数据esp8266。在通过串口发送数据时,可以使用AT指令来控制esp8266进行连接以及数据上传阿里云。例如,可以通过发送AT+CWMODE=1指令来设置esp8266为Station模式,并通过发送AT+CWJAP="WiFi名称","WiFi密码"来进行WiFi网络的连接。然后,可以发送AT+TCPSTART="阿里云地址",端口号来建立与阿里云的TCP连接,并通过AT+TCPSEND指令发送数据阿里云。 在esp8266中,需要编写代码来实现串口接收和解析stm32发送过来的数据,并执行相应的操作。例如,当接收到stm32发送的数据时,可以解析出需要上传阿里云数据,并通过HTTP或MQTT等协议将数据上传阿里云。 需要注意的是,为了确保数据的可靠传输,可以在stm32和esp8266之间增加一些校验机制,例如使用CRC校验或者添加一些数据包头部信息。 总之,通过串口通信将stm32和esp8266连接起来,并在代码层面进行相应的软件配置和开发,就可以实现stm32多个数据通过esp8266连接阿里云功能。 ### 回答3: STM32和ESP8266可以通过串口进行通信,使得STM32可以通过ESP8266连接阿里云。 首先,需要在阿里云创建一个物联网平台设备。在设备的配置中,获取到设备的Product Key、Device Name和Device Secret等信息。 然后,在STM32中配置串口进行通信,并编写相应的代码。首先,需要使用AT指令ESP8266的串口配置为STA模式,并连接到无线网络。随后,可以通过AT指令ESP8266配置为TCP模式,然后连接阿里云的服务器IP地址和端口号。 当ESP8266成功连接阿里云后,可以通过AT指令发送数据阿里云平台。可以使用MQTT协议来进行数据传输。首先,需要构建一个MQTT报文,并使用AT+CIPSEND指令发送报文。报文中包括了设备的Product Key、Device Name和Device Secret等信息,以及要发送的数据内容。 阿里云平台接收到数据后,可以进行相应的处理,例如存储到数据库或执行云端函数。返回数据时,阿里云会将结果发送给ESP8266ESP8266再将结果通过串口发送给STM32。 在STM32中,可以通过串口接收数据,并进行相应的处理。可以根据需要,提取出关键信息或执行相应的操作。 总结起来,STM32和ESP8266可以通过串口进行通信,ESP8266可以连接阿里云平台,并进行数据传输。这样,STM32就可以通过ESP8266阿里云进行数据交互,实现智能物联网应用。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值