前言
之前,我利用ESP8266-01S WIFI模块成功实现了与OneNET云平台的MQTT协议连接,成功实现上传温湿度数据,并通过微信小程序使用OneNET的API接口下发数据来控制LED的亮灭。
这里放置一个传送门:ESP8266-01s入门:上报和下发数据控制单片机 AT指令讲解和上云 烧录AT固件与OneNET MQTT通信教程包含MQTT.fx1.7.1教程(微信小程序通信单片机前置任务)
现在,我再次利用这个强大的WIFI模块,学习了如何发起GET请求,以获取实时的时间戳和天气信息。这个过程既充满了挑战,也收获颇丰。接下来,我将分享我在实现这一功能过程中的经验和心得,希望能对大家有所帮助。
固件烧录
这个固件要求使用出厂自带的就可以了,因为我烧录的是MQTT的AT指令固件但是这个依旧可以发起GET请求并且不影响mqtt的AT指令,并且既可以同时使用GET请求也可以使用mqtt的发布和订阅功能
烧录固件的步骤可以查看我的另一篇文章开头有讲解
固件烧入步骤
时间戳API
拼多多的时间戳API接口:http://api.pinduoduo.com/api/server/_stm
开始用AT指令发起GET请求
串口发送的内容 | 串口接收的内容 |
---|---|
1.AT+UART=9600,8,1,0,0\r\n | OK |
2. AT\r\n | OK |
3.AT+RST\r\n | OK |
4. AT+CWMODE=1\r\n | OK |
5. AT+CWJAP="WIFI名称","WIFI密码"\r\n | OK |
6.AT+CIPSTART="TCP","api.pinduoduo.com",80\r\n | OK |
7.AT+CIPMODE=1\r\n | OK |
8.AT+CIPSEND\r\n | OK |
9.GET /api/server/_stm HTTP/1.1\r\nHost: api.pinduoduo.com\r\nConnection: close\r\n\r\n | OK |
10.+++ | 无 |
用的AT指令解释
-
AT+UART=9600,8,1,0,0\r\n
- 功能:设置串口的波特率、数据位、停止位和校验位。
- 参数:9600是波特率,8是数据位,1是停止位,0表示无奇偶校验。
- 解释:这条指令用于配置ESP8266的串口通信参数,以便主机与模块之间可以正确通信。
-
AT\r\n
- 功能:测试AT指令是否可用。
- 解释:发送此指令可以检查模块是否响应AT指令,通常用于验证模块与主机的连接是否正常。
-
AT+RST\r\n
- 功能:重启模块。
- 解释:这条指令将重启ESP8266模块,有时用于解决一些连接或配置问题。
-
AT+CWMODE=1\r\n
- 功能:设置Wi-Fi模式。
- 参数:1表示Station模式,即ESP8266作为客户端连接到Wi-Fi网络。
- 解释:这条指令用于配置ESP8266的Wi-Fi模式,以便它可以连接到Wi-Fi网络。
-
AT+CWJAP="WIFI名称","WIFI密码"\r\n
- 功能:连接Wi-Fi网络。
- 参数:"WIFI名称"和"WIFI密码"分别是要连接的Wi-Fi网络的SSID和密码。
- 解释:这条指令用于使ESP8266连接到指定的Wi-Fi网络。
-
AT+CIPSTART="TCP","api.pinduoduo.com",80\r\n
- 功能:建立TCP连接。
- 参数:"TCP"表示使用TCP协议,"api.pinduoduo.com"是目标服务器的地址,80是HTTP服务的默认端口。
- 解释:这条指令用于启动一个TCP连接到指定的服务器和端口,以便发送HTTP请求。
-
AT+CIPMODE=1\r\n
- 功能:设置TCP连接模式。
- 参数:1表示透传模式,即发送的数据将直接传递给TCP连接。
- 解释:这条指令用于将ESP8266的TCP连接设置为透传模式,这样你就可以直接发送和接收原始数据。
-
AT+CIPSEND\r\n
- 功能:发送数据到TCP连接。
- 解释:在透传模式下,发送此指令后,你可以直接输入要发送的数据。对于非透传模式,这条指令后面通常需要跟上要发送数据的长度。
-
GET /api/server/_stm HTTP/1.1\r\nHost: api.pinduoduo.com\r\nConnection: close\r\n\r\n
- 功能:发送HTTP GET请求。
- 解释:这是实际的HTTP GET请求内容,包括请求行、头部和结束标志。这条指令是在透传模式下发送的,用于从服务器获取数据。
-
+++
- 功能:退出透传模式。
- 解释:发送
+++
(三个加号,中间没有空格)并等待一段时间后,ESP8266将退出透传模式,并返回到AT指令模式。这通常用于在发送完数据后返回AT指令模式进行其他操作。
GET请求和POST请求基本解释和区别
GET请求
定义:
GET请求用于从指定的资源请求数据。它通常用于获取数据,而不是发送数据到服务器。
特点:
- GET请求的参数附加在URL后面,通过问号(?)与URL分隔,多个参数之间用和号(&)分隔。
- GET请求可以被缓存。
- GET请求被包含在浏览器的历史记录中。
- GET请求的数据大小通常有限制(因为浏览器对URL长度有限制)。
- GET请求只应当用于请求数据,而不应当用于发送敏感数据或改变服务器状态,因为GET请求的URL可能会被保存在浏览器历史记录、网络日志或服务器日志中。
用途:
- 查询数据库中的数据。
- 请求网页内容。
- 提交搜索表单。
POST请求
定义:
POST请求用于向指定的资源提交数据进行处理请求(例如提交表单或者上传文件)。数据包含在请求体中。
特点:
- POST请求的数据包含在请求体中,不会出现在URL中。
- POST请求不会被缓存。
- POST请求不会保存在浏览器的历史记录中。
- POST请求没有数据大小的限制(实际上还是受限于服务器配置和客户端限制,但通常比GET请求的限制大得多)。
- POST请求通常用于提交数据,特别是当数据量较大或者包含敏感信息时。
用途:
- 提交表单数据,如用户注册或登录。
- 上传文件。
- 提交评论或反馈。
GET与POST的主要区别
- 数据位置:GET请求的数据附加在URL上,而POST请求的数据放在请求体中。
- 安全性:由于GET请求的数据在URL中可见,所以它不适合用于传输敏感信息。POST请求的数据在请求体中,相对更安全(但也要注意使用HTTPS来保证传输过程中的安全性)。
- 缓存和历史记录:GET请求可以被缓存,并且会出现在浏览器的历史记录中;POST请求则不会。
- 数据大小限制:GET请求由于URL长度的限制,传输的数据量相对较小;POST请求则没有这种限制(或限制较大)。
后续
如果该文章对你有帮助,请点个赞支持一下!
后续还会出POST请求以及GET请求获取天气信息