#include <ESP32Servo.h>
#include <DHT.h>
#include <WiFi.h>
#include <ThingSpeak.h>
#define dhtpin 25
#define dhttype DHT22
#define buzzer 14
#define yellowlight 32
const int ultratring = 16;
const int ultraecho = 17;
const int servorotate = 18;
Servo servomotor;
DHT dht(dhtpin, dhttype);
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
long ChannelNumber = 2648326;
const char* myWriteAPIKey = "5ZSQVNTXE0YQYCDV";
int statusCode;
WiFiClient client;
void setup() {
Serial.begin(115200);
pinMode(ultratring, OUTPUT);
pinMode(ultraecho, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(yellowlight, OUTPUT);
servomotor.attach(servorotate);
dht.begin();
WiFi.mode(WIFI_STA);
if (WiFi.status() != WL_CONNECTED) {
Serial.println("Attempting to connect to WiFi!");
while (WiFi.status() != WL_CONNECTED) {
WiFi.begin(ssid, pass);
delay(2000);
Serial.print(".");
}
Serial.println("Connected to WiFi!");
}
ThingSpeak.begin(client);
}
void loop() {
digitalWrite(ultratring, LOW);
delayMicroseconds(2);
digitalWrite(ultratring, HIGH);
delayMicroseconds(10);
digitalWrite(ultratring, LOW);
int distance = pulseIn(ultraecho, HIGH) * 0.034 / 2;
Serial.println("Distance: " + String(distance) + " cm");
servomotor.write(distance > 200 ? 90 : 0);
float temp = dht.readTemperature();
float humi = dht.readHumidity();
Serial.println("Temperature: " + String(temp) + " °C");
Serial.println("Humidity: " + String(humi) + " %");
if (temp > 50) {
digitalWrite(yellowlight, HIGH);
} else {
digitalWrite(yellowlight, LOW);
}
if (temp > 55) {
tone(buzzer, 1000, 500);
delay(500);
tone(buzzer, 1500, 500);
} else {
noTone(buzzer);
}
ThingSpeak.setField(1, temp);
ThingSpeak.setField(2, humi);
ThingSpeak.setField(3, distance);
statusCode = ThingSpeak.writeFields(ChannelNumber, myWriteAPIKey);
if (statusCode == 200) {
Serial.println("ThingSpeak update successful.");
} else {
Serial.println("Problem updating ThingSpeak. HTTP error code: " + String(statusCode));
}
delay(5000);
}