| #include<stdlib.h> | |
| #include "DHT.h" | |
| #define SSID "<your_network_name>"//your network name | |
| #define PASS "<your_network_password>"//your network password | |
| #define IP "184.106.153.149" // thingspeak.com | |
| #define DHTPIN 7 // what pin the DHT sensor is connected to | |
| #define DHTTYPE DHT11 // Change to DHT22 if that's what you have | |
| #define Baud_Rate 115200 //Another common value is 9600 | |
| #define GREEN_LED 3 //optional LED's for debugging | |
| #define RED_LED 4 //optional LED's for debugging | |
| #define DELAY_TIME 60000 //time in ms between posting data to ThingSpeak | |
| //Can use a post also | |
| String GET = "GET /update?key=<your_thingspeak_channel_key>&field1="; | |
| String FIELD2 = "&field2="; | |
| //if you want to add more fields this is how | |
| //String FIELD3 = "&field3="; | |
| bool updated; | |
| DHT dht(DHTPIN, DHTTYPE); | |
| //this runs once | |
| void setup() | |
| { | |
| Serial.begin(Baud_Rate); | |
| Serial.println("AT"); | |
| delay(5000); | |
| if(Serial.find("OK")){ | |
| //connect to your wifi netowork | |
| bool connected = connectWiFi(); | |
| if(!connected){ | |
| //failure, need to check your values and try again | |
| Error(); | |
| } | |
| }else{ | |
| Error(); | |
| } | |
| //initalize DHT sensor | |
| dht.begin(); | |
| } | |
| //this runs over and over | |
| void loop(){ | |
| float h = dht.readHumidity(); | |
| // Read temperature as Fahrenheit (isFahrenheit = true) | |
| float f = dht.readTemperature(true); | |
| // Check if any reads failed and exit early (to try again). | |
| if (isnan(h) || isnan(f)) { | |
| LightRed(); | |
| return; | |
| } | |
| //update ThingSpeak channel with new values | |
| updated = updateTemp(String(f), String(h)); | |
| //if update succeeded light up green LED, else light up red LED | |
| if(updated){ | |
| LightGreen(); | |
| }else{ | |
| LightRed(); | |
| } | |
| //wait for delay time before attempting to post again | |
| delay(DELAY_TIME); | |
| } | |
| bool updateTemp(String tenmpF, String humid){ | |
| //initialize your AT command string | |
| String cmd = "AT+CIPSTART=\"TCP\",\""; | |
| //add IP address and port | |
| cmd += IP; | |
| cmd += "\",80"; | |
| //connect | |
| Serial.println(cmd); | |
| delay(2000); | |
| if(Serial.find("Error")){ | |
| return false; | |
| } | |
| //build GET command, ThingSpeak takes Post or Get commands for updates, I use a Get | |
| cmd = GET; | |
| cmd += tenmpF; | |
| cmd += FIELD2; | |
| cmd += humid; | |
| //continue to add data here if you have more fields such as a light sensor | |
| //cmd += FIELD3; | |
| //cmd += <field 3 value> | |
| cmd += "\r\n"; | |
| //Use AT commands to send data | |
| Serial.print("AT+CIPSEND="); | |
| Serial.println(cmd.length()); | |
| if(Serial.find(">")){ | |
| //send through command to update values | |
| Serial.print(cmd); | |
| }else{ | |
| Serial.println("AT+CIPCLOSE"); | |
| } | |
| if(Serial.find("OK")){ | |
| //success! Your most recent values should be online. | |
| return true; | |
| }else{ | |
| return false; | |
| } | |
| } | |
| boolean connectWiFi(){ | |
| //set ESP8266 mode with AT commands | |
| Serial.println("AT+CWMODE=1"); | |
| delay(2000); | |
| //build connection command | |
| String cmd="AT+CWJAP=\""; | |
| cmd+=SSID; | |
| cmd+="\",\""; | |
| cmd+=PASS; | |
| cmd+="\""; | |
| //connect to WiFi network and wait 5 seconds | |
| Serial.println(cmd); | |
| delay(5000); | |
| //if connected return true, else false | |
| if(Serial.find("OK")){ | |
| return true; | |
| }else{ | |
| return false; | |
| } | |
| } | |
| void LightGreen(){ | |
| digitalWrite(RED_LED, LOW); | |
| digitalWrite(GREEN_LED, HIGH); | |
| } | |
| void LightRed(){ | |
| digitalWrite(GREEN_LED, LOW); | |
| digitalWrite(RED_LED, HIGH); | |
| } | |
| //if an error has occurred alternate green and red leds | |
| void Error(){ | |
| while(true){ | |
| LightRed(); | |
| delay(2000); | |
| LightGreen(); | |
| delay(2000); | |
| } |
Wednesday, 13 September 2017
alternate code for temperature humidity sensor using thingspeak
Subscribe to:
Comments (Atom)