- Wed Apr 13, 2016 11:44 am
#45425
Sending data to the server(thingspeak.com/184.106.153.14) with AT commands on serial monitor works fine but whenever i upload the sketch ,the following always return false if(Serial.find( ">" ) ). I am not sure if AT+CIPSEND is not working correctly or what. I am using Arduino with ESP8266. Any help will be appreciated.Thanks you in advance. Here is my code.
Code: Select all#include <SoftwareSerial.h>
SoftwareSerial softSerial(2, 3); // RX, TX
#define SSID "myssid"
#define PASS "Mypass"
#define IP "184.106.153.149" // ThingSpeak
void setup()
{
uint32_t baud = 9600;
Serial.begin(baud);
softSerial.begin(baud);
connectWiFi();
}
void loop()
{
updateTS();
}
void updateTS()
{
String cmd = "AT+CIPSTART=\"TCP\",\"";// Setup TCP connection
cmd += IP;
cmd += "\",80";
sendDebug(cmd);
delay(2000);
String url = "GET /update?key=P55Z0BDASNQBFQKT&field1=15&field2=25\r\n\r\n"; //hard code value 15 and 25
String stringLength="AT+CIPSEND=";
stringLength +=String(url.length( ));
Serial.println(stringLength);
//delay(10000); I even tried to delay for few seconds
//Here is where it fails,it jumps to closing the connection
if(Serial.find( ">" ) )
{
softSerial.print(">");
softSerial.print(cmds);
Serial.print(cmds);
}
else
{
sendDebug( "AT+CIPCLOSE" );//close TCP connection
}
}
void sendDebug(String cmd)
{
softSerial.print("SEND: ");
softSerial.println(cmd);
Serial.println(cmd);
}
boolean connectWiFi()
{
Serial.println("AT+CWMODE=1");
delay(2000);
String cmd="AT+CWJAP=\""; // Join accespoint
cmd+=SSID;
cmd+="\",\"";
cmd+=PASS;
cmd+="\"";
sendDebug(cmd);
delay(5000);
if(Serial.find("OK"))
{
softSerial.println("RECEIVED: OK");
return true;
}
else
{
softSerial.println("RECEIVED: Error");
return false;
}
}