//KISHEEN KUMAR 201060007FTL PSDC
//SMART ROAD WITH IOT
#include <DHTesp.h>
#include <WiFi.h>
#include <ThingSpeak.h>
#define SECRET_SSID "Wokwi-GUEST"
#define SECRET_PASS ""
#define SECRET_CH_ID 1952573//change to ur thingspeak ID
#define SECRET_WRITE_APIKEY "ZOR8RFLU3QXUC7BK"//change to ur thingspeak api key
#define trigPin 22
#define echoPin 23
#define greenled 25
#define redled 26
char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;
int keyIndex = 0;
WiFiClient client;
unsigned long myChannelNumber = SECRET_CH_ID;
const char * myWriteAPIKey = SECRET_WRITE_APIKEY;
const int DHT_PIN = 15;
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(greenled, OUTPUT);
pinMode(redled, OUTPUT);
while (!Serial){
;
}
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop() {
if(WiFi.status()!=WL_CONNECTED)
{
Serial.print("Attempting to connect to SSID: ");
Serial.println(SECRET_SSID);
while(WiFi.status()!=WL_CONNECTED)
{
WiFi.begin(ssid,pass);
Serial.print(".");
delay(5000);
}
Serial.println("\nConnected.");
}
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Environment Temperature: " + String(data.temperature, 2) + "°C");
Serial.println("Environment Humidity: " + String(data.humidity, 1) + "%");
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration*0.034 / 2;
Serial.println("Distance: " + String(distance) + "cm");
Serial.println("--------------------------------------------------");
if(distance < 70)//distance less than 70cm
{
digitalWrite(greenled, LOW);
digitalWrite(redled, HIGH);
Serial.print("Alert!!!!!!");
} else {
digitalWrite(greenled,HIGH);
digitalWrite(redled, LOW);
Serial.print("Safe");
}
ThingSpeak.setField(1,data.temperature);
ThingSpeak.setField(2,data.humidity);
ThingSpeak.setField(3,distance);
int x = ThingSpeak.writeFields(myChannelNumber,myWriteAPIKey);
if(x==200)
{
Serial.println("\nChannel update successful");
}
else
{
Serial.println("\nProblem updating channel. HTTP error code"+String(x));
}
delay(15000);
}