查看: 8244|回复: 11

用Arduino使用esp8266的Wi-Fi TCP透传和POST请求

[复制链接]
  • TA的每日心情

    2017-9-1 00:12
  • 签到天数: 65 天

    [LV.6]常住居民II

    发表于 2017-9-20 10:19 | 显示全部楼层 |阅读模式
    用过Arduino的朋友,用esp8266的时候,会比较倾向于使用纯ArduinoIDE的esp8266单个板子的开发,毕竟简单,而且库文件的用法比较熟悉,但是这种也会出现很多问题,比如有些引脚不够用,有些库还没完全移植到esp8266的Arduino版上,甚至性能不够用的情况。
    这时候最好的方案就是让esp8266只做Wi-Fi的事情,Arduino板子来做其他的收集数据,运算之类的事情,相得益彰,相辅相成。


    使用透传一般需要用AT指令来控制esp8266,AT指令第一次用会不理解,会了之后会觉得很简单,稍微有些坑,我也被卡住了挺久。

    相关的文档资料可以在乐鑫官网下载到http://espressif.com/zh-hans/products/hardware/esp8266ex/resources

    这篇帖子就说一下连接服务器并发送post请求的例子。

    kittenblock中小学创客名师推荐的图形化编程软件

    #include <SoftwareSerial.h>
    
    SoftwareSerial mySerial(13, 12); // RX, TX  通过软串口连接esp8266
    
    void setup() {
      // Open serial communications and wait for port to open:
      Serial.begin(115200);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }
    
      mySerial.begin(115200);
      mySerial.println("AT+RST");   // 初始化重启一次esp8266
      delay(1500);
      echo();
      mySerial.println("AT");
      echo();
      delay(500);
      mySerial.println("AT+CWMODE=3");  // 设置Wi-Fi模式
      echo();
      mySerial.println("AT+CWJAP=\"WiFiSSID\",\"password\"");  // 连接Wi-Fi
      echo();
      delay(10000);
    }
    
    void loop() {
    
      if (mySerial.available()) {
        Serial.write(mySerial.read());
      }
      if (Serial.available()) {
        mySerial.write(Serial.read());
      }
      post();
    }
    
    void echo(){
      delay(50);
      while (mySerial.available()) {
        Serial.write(mySerial.read());
      }
    }
    
    void post(){
      String temp = "POST data";
      mySerial.println("AT+CIPMODE=1");
      echo();
      mySerial.println("AT+CIPSTART=\"TCP\",\"webserver.com\",80");  // 连接服务器的80端口
      delay(1000);
      echo();
      mySerial.println("AT+CIPSEND"); // 进入TCP透传模式,接下来发送的所有消息都会发送给服务器
      echo();
      mySerial.print("POST /update.php?params=sth"); // 开始发送post请求
      mySerial.print(" HTTP/1.1\r\nHost: webserver.com\r\nUser-Agent: arduino-ethernet\r\nConnection:close\r\nContent-Length:"); // post请求的报文格式
      mySerial.print(temp.length()); // 需要计算post请求的数据长度
      mySerial.print("\r\n\r\n"); 
      mySerial.println(temp); // 结束post请求
      delay(3000);
      echo();
      mySerial.print("+++"); // 退出tcp透传模式,用println会出错
      delay(2000);
    }
    



    脱单缺基金_(xз」∠)_

    1人打赏

    该用户从未签到

    发表于 2017-10-23 17:32 | 显示全部楼层
    esp 性能 绝对没问题,8266自己 担当 开发板 足够
  • TA的每日心情

    2017-9-1 00:12
  • 签到天数: 65 天

    [LV.6]常住居民II

     楼主| 发表于 2017-11-1 18:53 | 显示全部楼层
    parv 发表于 2017-10-23 17:32
    esp 性能 绝对没问题,8266自己 担当 开发板 足够

    IO口有时候会不够用,有些库在esp上不能用,那就需要用一个Arduino来做主控了
    脱单缺基金_(xз」∠)_
  • TA的每日心情
    奋斗
    2019-2-25 19:00
  • 签到天数: 34 天

    [LV.5]常住居民I

    发表于 2018-4-3 23:25 | 显示全部楼层
    助人为快乐之本~有恒为成功之本~
    打赏作者鼓励一下!

    该用户从未签到

    发表于 2018-8-13 22:50 | 显示全部楼层
    请问按照你的代码使用以后,串口输出的内容有部分是乱码,请问是为什么呢?
    部分输出如下
    AT+RST


    OK
    CLOSDD

    ets J`n  8 2013,r.⸮⸮͕⸮b⸮⸮сj⸮⸮⸮AT⸮CA⸮j⸮L⸮AT+CWMODE<3


    OK
    AT+CWJAP="coolcarrov","12341234nikeasong"

    WIFI CONNECTED
    WIFI GOT IP

    OK
    AT+CIPMODE=1


    OK
    AT+CIPSTAQT="TCP","weaserver.com#,80

    CONOECT
  • TA的每日心情

    2018-9-11 16:18
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2018-8-31 21:33 | 显示全部楼层
    怎么接收post返回的值呢?
  • TA的每日心情
    慵懒
    2019-3-19 10:17
  • 签到天数: 40 天

    [LV.5]常住居民I

    发表于 2019-1-30 16:26 | 显示全部楼层
    已经成功用的你的代码把温湿度数据传到TCP服务器!非常感谢!
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    有没人做过把arduino跟生物结合起来做课题的
    有没人做过把arduino跟生
    我想做一些这方面的有没有人做过可以稍微指点一下
    跪求,nano读两个软串口传感器,写入sd卡,一个读不到数
    跪求,nano读两个软串口传
    dfrobot的nano板,两个软串口连接攀藤pm2.5传感器和GPS ublox m8n,SPI连sd卡模块。
    Arduino2560/MegaPi与ROS机器人操作系统的连接
    Arduino2560/MegaPi与ROS
    大家好,我因为需要更多时间维系琐碎平凡的工作和生活,一段时间没有上Arduino论坛。
    atmegu328p开发板怎么做流水灯啊
    atmegu328p开发板怎么做流
    我是白小 求指点
    BuddyBlock 1.0.0 测试版发布,一款面向Arduino的图形化开发工...
    BuddyBlock 1.0.0 测试版
    BuddyBlock是一款面向Arduino图形化编程开发的集成开发工具,开发者可以通过积木模块
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表