Post topics, source code that relate to the Arduino Platform

User avatar
By Nasser05
#48514 Hello,

I have problem to send data taken from temperature sensor on arduino using wifi shield "ESP8266". Neeeeed help

Here is the code:



#include <SoftwareSerial.h>
//#include <stdlib.h>

// LED
int ledPin = 13;
// LM35 analog input
int lm35Pin = 0;

// replace with your channel's thingspeak API key
String apiKey = "QWXWVLWCV42QPFFT";

// connect 10 to TX of Serial USB
// connect 11 to RX of serial USB
SoftwareSerial ser(10, 11); // RX, TX


// this runs once
void setup() {
// initialize the digital pin as an output.
pinMode(ledPin, OUTPUT);

// enable debug serial
Serial.begin(9600);
// enable software serial
ser.begin(9600);

// reset ESP8266
ser.println("AT+RST");
}


// the loop
void loop() {

// blink LED on board
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);

// read the value from LM35.
// read 10 values for averaging.
int val = 0;
for(int i = 0; i < 10; i++) {
val += analogRead(lm35Pin);
delay(500);
}

// convert to temp:
// temp value is in 0-1023 range
// LM35 outputs 10mV/degree C. ie, 1 Volt => 100 degrees C
// So Temp = (avg_val/1023)*5 Volts * 100 degrees/Volt
float temp = val*50.0f/1023.0f;

// convert to string
char buf[16];
String strTemp = dtostrf(temp, 4, 1, buf);

Serial.println(strTemp);

// TCP connection
String cm = "AT+CIPMUX=1";
ser.println(cm);

String cmd = "AT+CIPSTART=,\"TCP\",\"";
cmd += "52.7.53.111"; // api.thingspeak.com
cmd += "\",80";
ser.println(cmd);

if(ser.find("Error")){
Serial.println("AT+CIPSTART error");
return;
}

// prepare GET string
String getStr = "GET /update?api_key=";
getStr += apiKey;
getStr +="&field1=";
getStr += String(strTemp);
getStr += "\r\n\r\n";

// send data length
cmd = "AT+CIPSEND=";
cmd += String(getStr.length());
ser.println(cmd);

if(ser.find(">")){ // I thing problems begin here ! am i right ??????????????,
ser.print(getStr);
}
else{
ser.println("AT+CIPCLOSE");
// alert user
Serial.println("AT+CIPCLOSE");
}

// thingspeak needs 15 sec delay between updates
delay(16000);
}

AND I get on the monitor serie something like this :

AT+CIPCLOSE
27.5
AT+CIPCLOSE
28.0
AT+CIPCLOSE
27.4
AT+CIPCLOSE
27.4
AT+CIPCLOSE
27.4
AT+CIPCLOSE
27.4
AT+CIPCLOSE

So i thing the shield is connected but data not sent. Help me to solve pleeeeeaaaaaaaaaase