#define BLYNK_TEMPLATE_ID "TMPL3GT5K5MBx"
#define BLYNK_TEMPLATE_NAME "project"
#define BLYNK_AUTH_TOKEN "8aaaJNMbX6PprvJooIcBv-ImCNIe2K9S"
// Libraries
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
// WiFi Credentials
char ssid[] = "onkar";
char pass[] = "onkar123";
// DHT Settings
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// Pins
const int ledPin = 2;
const int relayPin = 5;
const int ldrPin = 34;
const int potPin = 35;
const int trigPin = 18;
const int echoPin = 19;
const int buzzerPin = 15;
// Variables
float temperature;
float humidity;
long duration;
float distance;
int ldrValue;
int potValue;
int ldrGauge;
int potGauge;
// Blynk Timer
BlynkTimer timer;
// Function to Read All Sensors
void sendSensorData()
{
// =========================
// DHT11 Sensor
// =========================
temperature = dht.readTemperature();
humidity = dht.readHumidity();
// Temperature Control
if (temperature > 34)
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
// Humidity Control
if (humidity > 50)
{
digitalWrite(relayPin, HIGH);
}
else
{
digitalWrite(relayPin, LOW);
}
// =========================
// LDR Sensor
// =========================
ldrValue = analogRead(ldrPin);
// Light increases → Gauge increases
ldrGauge = map(ldrValue, 0, 4095, 0, 100);
// =========================
// Potentiometer
// =========================
potValue = analogRead(potPin);
// Pot increases → Gauge decreases
potGauge = map(potValue, 0, 4095, 100, 0);
// =========================
// Ultrasonic Sensor
// =========================
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
// =========================
// Buzzer Control
// =========================
if (distance > 300)
{
digitalWrite(buzzerPin, HIGH);
}
else
{
digitalWrite(buzzerPin, LOW);
}
// =========================
// Send Data to Blynk
// =========================
Blynk.virtualWrite(V0, temperature);
Blynk.virtualWrite(V1, humidity);
Blynk.virtualWrite(V2, ldrGauge);
Blynk.virtualWrite(V3, potGauge);
Blynk.virtualWrite(V4, distance);
// Device Status LEDs
Blynk.virtualWrite(V5, digitalRead(ledPin));
Blynk.virtualWrite(V6, digitalRead(relayPin));
Blynk.virtualWrite(V7, digitalRead(buzzerPin));
// =========================
// Serial Monitor
// =========================
Serial.println("========== SENSOR DATA ==========");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");
Serial.print("LDR Value: ");
Serial.println(ldrValue);
Serial.print("LDR Gauge: ");
Serial.print(ldrGauge);
Serial.println(" %");
Serial.print("Potentiometer Value: ");
Serial.println(potValue);
Serial.print("Pot Gauge: ");
Serial.print(potGauge);
Serial.println(" %");
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
Serial.println("=================================");
}
void setup()
{
// Serial Monitor
Serial.begin(115200);
// Start DHT
dht.begin();
// Pin Modes
pinMode(ledPin, OUTPUT);
pinMode(relayPin, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
// Initial States
digitalWrite(ledPin, LOW);
digitalWrite(relayPin, LOW);
digitalWrite(buzzerPin, LOW);
// Connect to Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Send data every 2 seconds
timer.setInterval(2000L, sendSensorData);
}
void loop()
{
Blynk.run();
timer.run();
}