I am trying to send data from DHT11 Sensor to Thingspeak using SIM900. I am able to send data(temperature) to one field of Thingspeak. However my humidity chart is getting updated. I am unsure as to how to modify the code for that to happen. Also, how do I change the time scale on Thingspeak? This is my code:
I have also attached a picture of my Thingspeak channel
#include <SoftwareSerial.h>
#include <String.h>
SoftwareSerial mySerial(7, 8);
#include <Adafruit_Sensor.h>
#include <DHT.h>
//#include <DHT_U.h>
#define DHTPIN 2 // Pin which is connected to the DHT sensor.
float temp=0.0;
float humidity=0.0;
// Uncomment the type of sensor in use:
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// See guide for details on sensor wiring and usage:
// Overview | DHT11, DHT22 and AM2302 Sensors | Adafruit Learning System
DHT dht(DHTPIN, DHTTYPE);
uint32_t delayMS;
void setup()
{
mySerial.begin(9600); // the GPRS baud rate
Serial.begin(9600); // the GPRS baud rate
}
void loop()
{
temp=dht.readTemperature();
humidity=dht.readHumidity();
Serial.println(String(temp)+"*C\t"+String(humidity)+"%");
delay(2);
Send2Pachube();
if (mySerial.available())
Serial.write(mySerial.read());
}
void Send2Pachube()
{
mySerial.println("AT");
delay(1000);
mySerial.println("AT+CPIN?");
delay(1000);
mySerial.println("AT+CREG?");
delay(1000);
mySerial.println("AT+CGATT?");
delay(1000);
mySerial.println("AT+CIPSHUT");
delay(1000);
mySerial.println("AT+CIPSTATUS");
delay(2000);
mySerial.println("AT+CIPMUX=0");
delay(2000);
ShowSerialData();
mySerial.println("AT+CSTT="internet"");//start task and setting the APN,
delay(1000);
ShowSerialData();
mySerial.println("AT+CIICR");//bring up wireless connection
delay(3000);
ShowSerialData();
mySerial.println("AT+CIFSR");//get local IP adress
delay(2000);
ShowSerialData();
mySerial.println("AT+CIPSPRT=0");
delay(3000);
ShowSerialData();
mySerial.println("AT+CIPSTART="TCP","api.thingspeak.com","80"");//start up the connection
delay(6000);
ShowSerialData();
mySerial.println("AT+CIPSEND");//begin send data to remote server
delay(4000);
ShowSerialData();
String str1="GET http://api.thingspeak.com/update?api_key=2YEHVB0FC87OUPTX&field1=" + String(temp);
String str2="GET http://api.thingspeak.com/update?api_key=2YEHVB0FC87OUPTX&field2=" + String(humidity);
mySerial.println(str1);//begin send data to remote server
delay(4000);
ShowSerialData();
mySerial.println(str2);
delay(4000);
ShowSerialData();
mySerial.println((char)26);//sending
delay(5000);//waitting for reply, important! the time is base on the condition of internet
mySerial.println();
ShowSerialData();
mySerial.println("AT+CIPSHUT");//close the connection
delay(100);
ShowSerialData();
}
void ShowSerialData()
{
while(mySerial.available()!=0)
Serial.write(mySerial.read());
}
