#define BLYNK_TEMPLATE_ID "TMPL6Pu11KVHU"
#define BLYNK_TEMPLATE_NAME "rter"
#define BLYNK_AUTH_TOKEN "qWOJrr_2skUNk-KQEKFH32r3sfiEbadc"
#include "DHT.h"
#define DHTPIN 14
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define BLYNK_PRINT Serial
#include "WiFi.h"
#include "WiFiClient.h"
#include "BlynkSimpleEsp32.h"
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define TRIG_PIN 23
#define ECHO_PIN 22
int led1 = 16;
int led2 = 4;
int led3 = 2;
unsigned long previousMillis = 0;
const long interval = 1000;
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
Serial.println(F("DHT22 example!"));
dht.begin();
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
readSensorsAndControl();
}
Blynk.run();
}
void readSensorsAndControl() {
int duration, distance;
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = 1 + (duration * 0.034 / 2);
if (temperature > 20) {
digitalWrite(led1, HIGH);
Blynk.virtualWrite(V3, 1);
} else {
digitalWrite(led1, LOW);
Blynk.virtualWrite(V3, 0);
}
if (humidity > 50) {
digitalWrite(led2, HIGH);
Blynk.virtualWrite(V4, 1);
} else {
digitalWrite(led2, LOW);
Blynk.virtualWrite(V4, 0);
}
if (distance > 200) {
digitalWrite(led3, HIGH);
Blynk.virtualWrite(V5, 1);
} else {
digitalWrite(led3, LOW);
Blynk.virtualWrite(V5, 0);
}
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
Serial.print(F("Humidity: "));
Serial.print(humidity);
Serial.print(F("% Temperature: "));
Serial.print(temperature);
Serial.println(F("°C"));
Blynk.virtualWrite(V1, humidity);
Blynk.virtualWrite(V0, temperature);
Blynk.virtualWrite(V2, distance);
}