esp8266 php服务器,ESP8266实现http请求访问远程服务器

  • Post author:
  • Post category:php


以前用esp8266进行了通常的tcp链接,如今须要作一个能够直接访问远程服务器的项目,所以,研究了一下如何用esp8266实现http协议,因为网上的资料很杂,并且好像都没有说的很清楚。这里作出一个总结,关于以前的命令见下面的网址。html

因为http协议处在tcp/ip协议的应用层,tcp协议工做在传输层,只须要在tcp传输层中按照http协议中的数据格式,发送数据就能够完成http传输数据。http协议数据以下所示:服务器

GET /mix/76.html?name=kelvin&password=123456 HTTP/1.1

Host: www.fishbay.cn

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Accept-Encoding: gzip, deflate, sdch

Accept-Language: zh-CN,zh;q=0.8,en;q=0.6

app

所以只要在tcp发送的时候按照这个格式,便可完成http传输。tcp

http协议的步骤以下所示:函数

AT+RST

AT+CWMODE=3//设置格式

AT+RST

AT+CWJAP=”xxxxx”,”xxxx”//帐号和密码

AT+CIPSTART=”TCP”,”www.baidu.com”,80

AT+CIPSEND=46

GET https://www.baidu.com/?tn=25017023_10_dg.net

此时就完成了一次访问 https://www.baidu.com/?tn=25017023_10_dg网址的操做,须要注意AT+CIPSEND=46调试

这个46是GET https://www.baidu.com/?tn=25017023_10_dg\r\n的长度xml

这个命令会检测到知足了46个字符以后,进行统一发送。htm

本次我采用AP+STA的模式实现,用esp远程访问我本身建的服务器,采用GET命令。(以后须要研究POST)。

采用STM32f103C8T6,的串口2来驱动ESP8266,采用串口1做为调试串口。运行的信息能够及时的在串口1回传到电脑。

1.首先进行相关模块的初始化,包括串口1 2 和LED.

e055bba5161a8563467acb730dcaef25.png

2.检测模块是否在线,若是在线,那么开始进行GET操做,总体的GET方式采用上面介绍的方式。

9c490b4c423b02b22aaa38904d03b749.png

3.开始给ESP8266发送对应的命令,操做进行链接服务器。具体的介绍参照上面的介绍,或者参照ESP83266的数据手册。

421bb25f52da49aac7257c596e2f5f1f.png

3d5088c89324224f611e83a401f4cc62.png

4.最终能够看到获取的信息,服务器也提示访问成功。

86d7e7ea413d78b833f1db1c4a24903e.png

目前这个程序 有一个问题 ,就是每次访问的时候,只能访问一次,第二次服务器会切断联系,解决的方法是,把每次与服务器链接的那一段代码,也放到while循环内部,每次就会从新创建链接。这样就能够不断的访问这个网址。也能够将整个访问流程写成一个函数,每次传入一个网址进行GET访问,以后返回网址返回的东西便可。