#define BLYNK_TEMPLATE_ID "TMPL34xHMh4dK"
#define BLYNK_TEMPLATE_NAME "EV"
#define BLYNK_AUTH_TOKEN "LLNVeXs3uEKxbfxfSB7Oq9-q-6lYME4e"
#define BLYNK_PRINT Serial
#include <Wire.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#include <MPU6050.h>
// WiFi credentials
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// DHT22 sensor
#define DHTPIN 5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// MPU6050 sensor
MPU6050 mpu;
// Ultrasonic sensor
#define TRIG_PIN 12
#define ECHO_PIN 4
// Buzzer and LED
#define BUZZER_PIN 14
#define LED_PIN 15
BlynkTimer timer;
void setup() {
Serial.begin(115200);
Wire.begin();
Blynk.begin(auth, ssid, pass);
dht.begin();
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
Serial.println("Initializing MPU6050...");
mpu.initialize();
if (!mpu.testConnection()) {
Serial.println("MPU6050 connection failed");
while (1);
}
Serial.println("MPU6050 connection successful");
timer.setInterval(2500L, sendSensor);
}
void loop() {
Blynk.run();
timer.run();
}
void sendSensor() {
// Read DHT22 sensor data
float h = dht.readHumidity();
float t = dht.readTemperature();
// Read MPU6050 sensor data
int16_t ax, ay, az;
mpu.getAcceleration(&ax, &ay, &az);
// Convert raw MPU6050 data to meaningful units
float accel_x = ax / 16384.0;
float accel_y = ay / 16384.0;
// Read Ultrasonic sensor data
long duration, distance;
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = duration * 0.034 / 2;
// Control Buzzer and LED based on distance
if (distance < 50) { // Threshold distance
digitalWrite(BUZZER_PIN, HIGH);
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(LED_PIN, LOW);
}
// Check if any read failed
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Send DHT22 data to Blynk
Blynk.virtualWrite(V1, h); // Humidity
Blynk.virtualWrite(V0, t); // Temperature
// Send MPU6050 data to Blynk
Blynk.virtualWrite(V2, accel_x); // Acceleration x-axis (g)
Blynk.virtualWrite(V3, accel_y); // Acceleration y-axis (g)
// Send Ultrasonic sensor data to Blynk
Blynk.virtualWrite(V8, distance); // Distance (cm)
// Print data to Serial Monitor
Serial.print("Temperature : ");
Serial.print(t);
Serial.print(" Humidity : ");
Serial.println(h);
Serial.print("Accel X: "); Serial.print(accel_x); Serial.print(" g | ");
Serial.print("Accel Y: "); Serial.print(accel_y); Serial.print(" g | ");
Serial.print("Distance: "); Serial.print(distance); Serial.println(" cm");
}