#define BLYNK_TEMPLATE_ID "TMPL60LZ8LMK1"
#define BLYNK_TEMPLATE_NAME "test1"
#define BLYNK_AUTH_TOKEN "Euee8s7Omie2rT6q-WNH9jnxk9I-DMrd"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h> // Added DHT library
#include <NewPing.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define LED_PIN 2
#define DHTPIN 4
#define DHTTYPE DHT22
#define trigPin 17
#define echoPin 5
#define led 32
NewPing sonar(trigPin, echoPin);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
delay(100);
pinMode(LED_PIN, OUTPUT);
pinMode(12, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
WiFi.begin(ssid, pass);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWi-Fi Connected!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
dht.begin(); // Initialize DHT sensor
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
BLYNK_WRITE(V0) {
int ledState = param.asInt();
digitalWrite(LED_PIN, ledState);
Serial.println(ledState ? "LED ON" : "LED OFF");
}
void loop() {
Blynk.run();
dhtsensor();
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
unsigned int distance_cm = sonar.ping_cm();
distance_cm = (distance_cm);
if(distance_cm < 50){
digitalWrite(led, HIGH);
delay(2000);
digitalWrite(led, LOW);
delay(500);
digitalWrite(led, HIGH);
}
else{
digitalWrite(led, LOW);
}
Blynk.virtualWrite(V3, distance_cm);
Serial.print("Stem Displacement: ");
Serial.print(distance_cm);
Serial.println(" mm");
}
void dhtsensor() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
float f = dht.readTemperature(true); // Fahrenheit reading
if (isnan(humidity) || isnan(temperature) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
float hif = dht.computeHeatIndex(f, humidity);
float hic = dht.computeHeatIndex(temperature, humidity, false);
Blynk.virtualWrite(V2, temperature); // Send temperature to V2
Blynk.virtualWrite(V1, humidity); // Send humidity to V1
if(temperature < 25){
delay(1000);
tone(12,250);
delay(1000);
noTone(12);
}
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C, Humidity: ");
Serial.print(humidity);
Serial.println(" %");
delay(2000); // Delay between readings
}