ESP8266使用AT指令发送GET方式HTTP请求
-
- 写在前面
- 好的建议
- 正式开始
- 完整流程及演示效果
写在前面
今天开始调试ESP8266模块,想要使用它以串口AT命令的方式发送GET请求,用来上报信息给服务器端。在查找资料和实验的过程中发现网上的讲解并不是详细,东拼西凑看了几篇才走下来,在此写一个尽量“清楚明白”的文章,欢迎大家一起交流。
好的建议
1.建议大家现在每次都记事本上写AT命令,然后复制到串口助手上去,这样:
- 不会误操作:有的串口助手会将回车当作发送指令,容易误动作。
- 记录可以保留:调过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前端: