#include "DHTesp.h"
#include<ThingSpeak.h>
#include<WiFi.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
WiFiClient client;
unsigned long mychannelnumber= 2247874;
const char * myWriteAPIKey = "FXKRZIE1BT1CAFS6";
const int trig = 13;
const int echo = 12;
int statusCode;
long duration;
long distance;
DHTesp dhtSensor; // Creating a structure object of DHTesp
TempAndHumidity data; // Creating a struct of TempandHumidity
const int DHT_PIN = 15; // In the ESP32 the DHT22 can be connected in only certain pins such as 15,13
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
dhtSensor.setup(DHT_PIN,DHTesp::DHT22); // where second argument is the type of sensor used
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop() {
if(WiFi.status() != WL_CONNECTED){
Serial.print("Attempting to connect...");
while(WiFi.status() != WL_CONNECTED){
WiFi.begin(ssid,pass);
Serial.print(".");
delay(5000);
}
Serial.println("\n Connected...");
}
Serial.println("-------------------");
// put your main code here, to run repeatedly:
data = dhtSensor.getTempAndHumidity(); // returns 2 values which are stored in data structure
Serial.println("Temperature: " + String(data.temperature,2) + " °C");
Serial.println("Humidity: " + String(data.humidity,1)+" %");
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig,HIGH);
delayMicroseconds(10);
digitalWrite(trig,LOW);
duration = pulseIn(echo,HIGH);
//Serial.println("The duration is: " + duration) ;
distance = (duration *0.034/2)+1;
Serial.println("Distance is " + String(distance));
Serial.println("---------------");
delay(15000);
ThingSpeak.setField(1,data.humidity);
ThingSpeak.setField(2,data.temperature);
ThingSpeak.setField(3,distance);
statusCode = ThingSpeak.writeFields(mychannelnumber,myWriteAPIKey);
if(statusCode == 200){
Serial.println("Channel update successful...");
}
else{
Serial.println("There is a problem .." + String(statusCode));
}
}