Hello!
I´m working on a sketch for weeks now (still not working as intended). A Problem i´m facing all the time: I can´t see all debug messages.
First things first, the sketch:
#include <SoftwareSerial.h>
int sensor_temp = A0;
int value_temp;
int sensor_light = A1;
int value_light;
int sensor_humid = A2;
int value_humid;
#define DEBUG FALSE //comment out to remove debug msgs
//*-- Hardware Serial
#define _baudrate 9600
//*-- Software Serial
//
#define _rxpin 2
#define _txpin 3
SoftwareSerial debug( _rxpin, _txpin ); // RX, TX
//*-- IoT Information
#define SSID "blupp?"
#define PASS "12345678810"
#define IP "184.106.153.149" // ThingSpeak IP Address: 184.106.153.149
// GET /update?key=[THINGSPEAK_KEY]&field1=[data 1]&field2=[data 2]...;
String GET = "GET /update?key=XYZ4NCC3FTS26PVTH";
void setup() {
Serial.begin( _baudrate );
debug.begin( _baudrate );
sendDebug("AT");
delay(5000);
if(Serial.find("OK"))
{
debug.println("RECEIVED: OK\nData ready to sent!");
connectWiFi();
}
}
void loop() {
value_temp = analogRead(sensor_temp);
value_light = analogRead(sensor_light);
value_humid = analogRead(sensor_humid);
String temp =String(value_temp);// turn integer to string
String light= String(value_light);// turn integer to string
String humid=String(value_humid);// turn integer to string
updateTS(temp,light, humid);
delay(3000); //
}
//----- update the Thingspeak string with 3 values
void updateTS( String T, String L , String H)
{
// ESP8266 Client
String cmd = "AT+CIPSTART=\"TCP\",\"";// Setup TCP connection
cmd += IP;
cmd += "\",80";
sendDebug(cmd);
delay(2000);
if( Serial.find( "ERROR" ) )
{
debug.print( "RECEIVED: Error\nExit1" );
return;
}
cmd = GET + "&field1=" + T +"&field2="+ L + "&field3=" + H +"\r\n";
Serial.print( "AT+CIPSENDEX=" );
Serial.println( cmd.length() );
if(Serial.find( ">" ) )
{
debug.print(">");
debug.print(cmd);
Serial.print(cmd);
}
else
{
sendDebug( "AT+CIPCLOSE" );//close TCP connection
}
if( Serial.find("OK") )
{
debug.println( "RECEIVED: OK" );
}
else
{
debug.println( "RECEIVED: Error\nExit2" );
}
}
void sendDebug(String cmd)
{
debug.print("SEND: ");
debug.println(cmd);
Serial.println(cmd);
}
boolean connectWiFi()
{
Serial.println("AT+CWQAP");//WiFi STA mode - if '3' it is both client and AP
delay(5000);
Serial.println("AT+CWMODE_CUR=1");//WiFi STA mode - if '3' it is both client and AP
delay(2000);
//Connect to Router with AT+CWJAP="SSID","Password";
// Check if connected with AT+CWJAP?
String cmd="AT+CWJAP_CUR=\""; // Join accespoint
cmd+=SSID;
cmd+="\",\"";
cmd+=PASS;
cmd+="\"";
sendDebug(cmd);
delay(5000);
if(Serial.find("OK"))
{
debug.println("RECEIVED: OK");
return true;
}
else
{
debug.println("RECEIVED: Error");
return false;
}
cmd = "AT+CIPMUX=0";// Set Single connection
sendDebug( cmd );
if( Serial.find( "ERROR") )
{
debug.print( "RECEIVED: Error" );
return false;
}
}
So, I´ve connected the ESP on Arduino UNO (Hardware RX->TX; TX->RX; COM3) and an FTDI1232 (Software Serial RX->TX; TX->RX; COM4).
Output on COM3 (Serial Monitor):
AT
AT+CIPSTART="TCP","184.106.153.149",80
AT+CIPSENDEX=67
AT+CIPCLOSE
AT+CIPSTART="TCP","184.106.153.149",80
AT+CIPSENDEX=67
AT+CIPCLOSE
AT+CIPSTART="TCP","184.106.153.149",80
AT+CIPSENDEX=67
AT+CIPCLOSE
AT+CIPSTART="TCP","184.106.153.149",80
And so on.
Output on COM4 (Serial Monitor):
Exit2
SEND: AT+CIPSTART="TCP","184.106.153.149",80
SEND: AT+CIPCLOSE
RECEIVED: Error
Exit2
SEND: AT+CIPSTART="TCP","184.106.153.149",80
SEND: AT+CIPCLOSE
RECEIVED: Error
Exit2
SEND: AT+CIPSTART="TCP","184.106.153.149",80
SEND: AT+CIPCLOSE
RECEIVED: Error
And so on.
So, my question: I´m missing some serial output, where is it?
For example:
debug.println("RECEIVED: OK\nData ready to sent!");
Or why can´t i see the result of
sendDebug(cmd);
while seeing
sendDebug("AT");
on serial monitor?
I think i´m missing something fundamental.
Any help? Thanks in forward!
Greetings,
MCNoobESP
PS: And of course, any hints, why this Sketch doesn´t work, are welcome too :).