实现ESP8266模块同远程web服务器交互请求

2017-7-21 / 7 评论 / 12285 阅读

实验材料: 1.ESP 8266模块 

                 2 有公网IPv4的web服务器(当然也可以通过域名访问,这里先测试通过IP地址建立TCP连接)

实验原理:

      原理很简单,通过串口向ESP8266发送一系列指令,由于8266内置了TCP协议栈,我们只需要通过指令建立TCP连接,当连接建立完成后,直接发送GET/POST请求,接受到web服务器传输过来的数据链接,通过这些交互数据分析,从而实现开发板和web服务器之间的数据互换。

33333.png

步骤:

    1. 配置ESP为站点模式,连接到可以正常访问英特网的热点上面。

    2. 配置模块为透传模式 

    3.建立TCP连接   IP 端口号等

    4直接发送 请求查看串口返回的参数值 GET /index.html  HTTP/1.1      (TCP请求可以加密)

注意事项


   测试的时候 发送指令总是回复400 错误,经过查找发现由于协议中回车换行为加上引起无法提交POST请求

    POST /1.php HTTP/1.1\r\nHost: 192.168.0.107\r\nConnection: keep-alive\r\nContent-Length: 34\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\nfirstname=hello&lastname=123&age=123\r\n


QQ截图20170724152049.png




QQ截图1.png






<html>
<body>

<form action="" method="post">
Firstname: <input type="text" name="firstname" />
Lastname: <input type="text" name="lastname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>
<?php
$con = mysql_connect("localhost","root","root");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("test", $con);

$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con)
?>


由于是网络配置器 所以发送的数据很正常,但是通过wifi串口发送的时候 /r/n会由于ascii编码 而不是回车 继而串口发送总是失败,我利用ASCII码转HEX工具将 所有发送文件转为十六进制

QQ截图2.png

然后通过十六进制 进行串口数据发送

QQ截图3.png

至此通过串口芯片发送POST请求到指定云服务,实例完成。以下提供所用到的软件


软件压缩包来源:百度网盘  | 大小:MB  | 提取密码: | 解压密码:www.rainfly.cn
已经过安全软件检测无毒,请您放心下载。          若链接失效可联系管理员!

    评论一下?

    OωO
    取消
      1. 头像
        老猫
        第4楼
        测试
        回复
      1. 头像
        宁国房产网
        地板
        文章不错支持一下文章不错支持一下文章不错支持一下
        回复
      1. 头像
        水落伤痕
        板凳
        你好,我想用ESP8266模块连上“有人透传云”的节点,该怎么发送HTTP请求呢?
        http://cloud.usr.cn/cloud/index.php/Device/index,我的透传云连接
        地址:cloud.usr.cn,端口15000
        其中一节点ID:133521,节点编号:    00008531000000000002,密码:abc123ok
        只要能让它显示状态在线就行了。
        能不能发我邮箱:1310850736@qq.com
        回复
        1. 头像
          RainFly
          @水落伤痕:把ESP8266先配置好,设置成透传之后,用串口发送你需要的命令请求就可以了! 你这个链接登不上,有问题加我QQ聊聊!
          回复
      1. 头像
        美股行情
        沙发
        言简意赅,赞一个!
        回复
        1. 头像
          美股行情
          @美股行情:发文章辛苦了,谢谢分享!
          回复
        1. 头像
          跨境电商培训
          @美股行情:网站不错!!!!
          回复