2016-11-18 54 views
-1

我想从esp8266发送温度数据。我已经调整了我的代码this Instructable;这是我的代码:发送来自esp8266的HTTP发送请求

#include "SoftwareSerial.h" 
#include "ESP8266.h" 

String ssid = "Red Wi-Fi de Alexis" ; 
String password = "adrian2003" ; 

SoftwareSerial wifi(4, 2) ; 

String Host = "mail.interseccion.com.mx:8901" ; 
String Url = "/Ws_Temperatura" ; 

void setup() 
{ 
    wifi.begin(9600) ; 
    Serial.begin(9600) ; 
    wifi.println("AT+RST") ; 
    wifi.println("AT+CWJAP=\"" + ssid + "\",\"" + password + "\"") ; 
} 

void loop() 
{ 
    float tmp = 22.22 ; 

    //URL Temperatura 
    //URL: mail.interseccion.com.mx:8901/Ws_Temperatura?Id_temp=0&Id_Device=1&Valor=00.00&Temperatura_Action=Insert 
    String urluno = String("Id_temp=0&Id_Device=2&Valor="); 
    String temp = String(tmp); 
    String urldos = String("&Temperatura_Action=Insert"); 
    String urlfinal = String(String(urluno) + String(tmp) + String(urldos)); 

    int tamano = urlfinal.length() ; 

    wifi.println("AT+CIPSTART=\"TCP\",\"" + Host + "\", 8901") ; 

    String Post = "POST" + Url + "HTTP/1.1\r\n" + 
    "Host: " + Host + "\r\n" + 
    "Content-Type: application/x-www-form-urlencoded" + 
    "Content-Length: " + tamano + "\r\n" + urlfinal ; 


    wifi.println("AT+CIPSEND= " + Post.length()) ; 

    wifi.println("AT+CIPCLOSE") ; 
} 

我试图发送与esp8266库,但它不起作用。

+1

什么不工作,你怎么知道它不工作? –

+0

'原因没有收到任何数据,我复制粘贴我没有任何修改,只修改了我的参数。 – Maclos

+0

要进行调试,请将您发送至ESP的所有内容打印回PC。 –

回答

1

我读的代码,我发现在这行有点错误:

wifi.println("AT+CIPSEND= " + Post.length()) ; 

wifi.println("AT+CIPCLOSE") ; 

你ESP8266已准备好接收数据,但你不发送任何东西,所以加入这一行:)

wifi.println("AT+CIPSEND= " + Post.length()) ; 

wifi.println(Post); // this line 

wifi.println("AT+CIPCLOSE") ; 

的方法是例如如下

ARDUINO发送:

AT + CIPSTART = "TCP", www.google.com, 80 

ESP8266响应:

CONNECT 
ok 

ARDUINO发送:

AT + CIPSEND = 45 

其中45是整个框架

ESP8266响应的大小:

> 

>表示它希望接收数据。数据在这里发送。

最后

ARDUINO发送:

AT + CIPCLOSE 

ESP8266回应:

Closed 

ok 
+0

但是不起作用lol:'( – Maclos