ESP8266使用AT指令发送GET方式HTTP请求

ESP8266使用AT指令发送GET方式HTTP请求

写在前面

今天开始调试ESP8266模块,想要使用它以串口AT命令的方式发送GET请求,用来上报信息给服务器端。在查找资料和实验的过程中发现网上的讲解并不是详细,东拼西凑看了几篇才走下来,在此写一个尽量“清楚明白”的文章,欢迎大家一起交流。

好的建议

1.建议大家现在每次都记事本上写AT命令,然后复制到串口助手上去,这样:

  1. 不会误操作:有的串口助手会将回车当作发送指令,容易误动作。
  2. 记录可以保留:调过AT指令的朋友们都知道,我们为了实现一个操作可能会做多次有顺序的AT指令,这时,保留正确的操作指令和顺序是非常重要的。

2.建议大家保留手敲\r\n的习惯,关闭串口助手的“加回车换行”的选项:
这个选项几乎所有串口助手都会带,我建议大家不要勾选,而是手敲\r\n来代替,输入了什么就发送了什么,这样十分有利于将正确的AT指令转移到单片机中,笔者曾经调GSM模块的时候,很多坑就是栽在这里了。

正式开始

以下操作均关闭”加回车换行”选项
0) 与模块试连接:(可选)
  AT\r\n
  响应:OK\r\n
可用于检验模块工作是否正常,波特率是否正确
1) 设置 wifi 模式:
  AT+CWMODE=1\r\n
  响应:OK\r\n
设置为STA模式,对应表如下:

数字 WiFi应用模式
1 STA(Station)模式
2 AP模式
3 AP+Station模式

2) 重启生效:
  AT+RST\r\n
  响应:OK\r\n
一次重启后就不需要重启了(有的模块貌似不重启也行,这个大家就看着来吧)

3) 连接路由:
  AT+CWJAP=“ssid”,“password”\r\n
  响应:OK\r\n(有的模块回的是CONNECT OK\r\n)
稍等1-2秒中,会回一个GOT IP,看到这个就正式连上路由器了。

4) 查询设备IP(可选):
  AT+CIFSR\r\n
  响应:192.168.3.106\r\n

5) 连接到服务器:
  AT+CIPSTART=“TCP”,“192.168.2.178”,8888\r\n
  响应:OK\r\n
传入协议、服务器 IP、端口号,HTTP协议是TCP协议的封装,所以这里写TCP即可。

6)开启透传模式:
  AT+CIPMODE=1\r\n
  响应:OK\r\n
7)通知模块开始数据传输:
  AT+CIPSEND\r\n
  响应:
这一步操作后,模块会回复一个“>”,代表接下来的所有串口数码均为数据,不解析成指令。

8) 发送数据:
  GET /Api/sensor_info_update?id=1&bty=30&temp=0698\r\n\r\n
  响应:服务器返回的数据
几点注意:
1.这是用我搭的服务器测试,上面的http头少写了也并没有报任何错误,貌似也没什么影响,其它博主写的完整版举例为:

GET /api/dgnjd8954 HTTP/1.1\r\n
Content-Type: application/json;charset=utf-8\r\n
Host: www.liefyuan.top\r\n
Connection: Keep Alive\r\n\r\n

2.尤其注意GET之后的空格,空格是有意义的
3.注意结尾是两个\r\n!!!
4.在这里就可以多次与服务器交互了,因为现在是透传模式。
5.有趣的是这个TCP表现的真的很像HTTP,服务器关闭再开启,8266不用进行重连操作,直接在透传界面发数据就可以了。

9)退出透传:
  +++
  响应:无
注意:这里没有\r\n了,就是发送+++就行了
10)还想再开始透传咋办:
  从步骤7执行.

完整流程及演示效果

记事本中:
在这里插入图片描述
串口助手中:
在这里插入图片描述
服务器后台:
在这里插入图片描述
Web前端:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/whstudio123/article/details/106391099