I am trying to write a code to send my Ultrasonic Sensor data(Hc-SRO4) to my Things Speak channel. I am using an ESP 8266 module for the connection on an Arduino Uno board along with my ultrasonic sensor. I am able to get the ip from the esp but not able to upload my data on my channel.
Here is my Code
#include <SoftwareSerial.h>
#define echoPin 6 // Echo Pin
#define trigPin 7 // Trigger Pin
int maximumRange = 250; // Maximum range needed
int minimumRange = 1; // Minimum range needed
long duration, distance; // Duration used to calculate distance
String apiKey = "0RPVQTXDHBHKILIF";
SoftwareSerial ser(0,1);
void setup() {
Serial.begin(9600);
ser.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
String wifi="AT+CWJAP=\"myWifi\",\"mypasswd\"";
ser.println(wifi);
}
void loop() {
distance=readDistance();
if(distance>minimumRange && distance < maximumRange){
Serial.println(distance);
}else{
Serial.println("Out of range...");
}
delay(50);
esp_8266();
}
int readDistance()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration/58.2;
return distance;
}
void esp_8266()
{
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += "184.106.153.149";
cmd += "\",80";
ser.println(cmd);
if(ser.find("Error")){
Serial.println("AT+CIPSTART error");
return;
}
else
{
Serial.println("connected");
}
String getStr = "GET /update?api_key=";
getStr += apiKey;
getStr +="&field1=";
getStr += String(distance);
getStr += "\r\n\r\n";
cmd = "AT+CIPSEND=";
cmd += String(getStr.length());
ser.println(cmd);
Serial.println("siz");
delay(1000);
if(ser.find(">")){
ser.print(getStr);
Serial.println("sent");
}
else{
Serial.println("not sent");
}
ser.println("AT+CIPCLOSE");
Serial.println("AT+CIPCLOSE");
delay(17000);
}
Output:
2
connected
siz
not sent
AT+CIPCLOSE