// =========================================
// SMART EMERGENCY EVACUATION LIGHT
// ESP32 + MQ2 + MPU6050 + LED + BUZZER
// WOKWI SIMULATION CODE
// =========================================
#include <Wire.h>
#include <MPU6050.h>
MPU6050 mpu;
// ================= PIN =================
#define MQ2_PIN 34
#define LED_PIN 25
#define BUZZER_PIN 26
// ================= VARIABLE =================
int smokeValue;
long vibrationValue;
// ================= THRESHOLD =================
int smokeThreshold = 300;
long vibrationThreshold = 40000;
void setup() {
Serial.begin(115200);
// Pin mode
pinMode(MQ2_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
// I2C MPU6050
Wire.begin();
// MPU6050 start
mpu.initialize();
Serial.println("Smart Emergency System Started");
if (mpu.testConnection()) {
Serial.println("MPU6050 Connected");
} else {
Serial.println("MPU6050 Connection Failed");
}
digitalWrite(LED_PIN, LOW);
digitalWrite(BUZZER_PIN, LOW);
}
void loop() {
// =========================
// READ MQ2 SENSOR
// =========================
smokeValue = analogRead(MQ2_PIN);
// =========================
// READ MPU6050 SENSOR
// =========================
int16_t ax, ay, az;
mpu.getAcceleration(&ax, &ay, &az);
vibrationValue = abs(ax) + abs(ay) + abs(az);
// =========================
// SERIAL MONITOR
// =========================
Serial.print("Smoke Value : ");
Serial.print(smokeValue);
Serial.print(" | Vibration : ");
Serial.println(vibrationValue);
// =========================
// EMERGENCY CONDITION
// =========================
if (smokeValue > smokeThreshold || vibrationValue > vibrationThreshold) {
Serial.println("!!! EMERGENCY DETECTED !!!");
digitalWrite(LED_PIN, HIGH);
digitalWrite(BUZZER_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
digitalWrite(BUZZER_PIN, LOW);
}
delay(500);
}