#define BLYNK_TEMPLATE_ID "TMPL6AkKQH62x"
#define BLYNK_TEMPLATE_NAME "Mini projects"
#define BLYNK_AUTH_TOKEN "qwefLc6PiOcbVA22PJ5Re6RIpREWeach"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#include <Servo.h>
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "your-SSID";
char pass[] = "your-PASSWORD";
#define DHTPIN 7 // Pin for DHT22
#define DHTTYPE DHT22 // DHT 22 (AM2302)
#define PIR_PIN 2 // Pin for PIR sensor
#define TRIG_PIN 9 // Pin for Ultrasonic sensor
#define ECHO_PIN 8 // Pin for Ultrasonic sensor
#define LED_PIN 4 // Pin for LED
#define BUZZER_PIN 5 // Pin for Buzzer
#define PIN_V1 V1
#define PIN_V2 V2
DHT dht(DHTPIN, DHTTYPE);
Servo myServo;
BlynkTimer timer;
void setup() {
// Debug console
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
dht.begin();
myServo.attach(3);
pinMode(PIR_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
timer.setInterval(2000L, sendSensorData);
}
void loop() {
Blynk.run();
timer.run();
}
void sendSensorData() {
readDHTSensor();
handleMotion();
controlServo();
}
void readDHTSensor() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (!isnan(humidity) && !isnan(temperature)) {
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
Blynk.virtualWrite(PIN_V1, temperature);
Blynk.virtualWrite(PIN_V2, humidity);
} else {
Serial.println("Failed to read from DHT sensor!");
}
}
void handleMotion() {
int motionDetected = digitalRead(PIR_PIN);
if (motionDetected == HIGH) {
Serial.println("Motion detected!");
digitalWrite(LED_PIN, HIGH); // Turn on LED
digitalWrite(BUZZER_PIN, HIGH); // Turn on Buzzer
} else {
digitalWrite(LED_PIN, LOW); // Turn off LED
digitalWrite(BUZZER_PIN, LOW); // Turn off Buzzer
}
}
void controlServo() {
int motionDetected = digitalRead(PIR_PIN);
if (motionDetected == HIGH) {
myServo.write(90); // Move to 90 degrees
} else {
myServo.write(0); // Move to 0 degrees
}
}