#include "DHT.h"
#define DHTPIN 4
#define DHTTYPE DHT11
#define TRIG1 5
#define ECHO1 18
#define TRIG2 19
#define ECHO2 21
#define MQ2_AOUT 34
#define MQ2_DOUT 35
#define BUZZER 32 // Updated buzzer pin
#define LED 33 // Updated LED pin
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
pinMode(TRIG1, OUTPUT);
pinMode(ECHO1, INPUT);
pinMode(TRIG2, OUTPUT);
pinMode(ECHO2, INPUT);
pinMode(MQ2_AOUT, INPUT);
pinMode(MQ2_DOUT, INPUT);
pinMode(BUZZER, OUTPUT);
pinMode(LED, OUTPUT);
delay(2000); // Ensure DHT Sensor is ready
dht.begin();
}
float getDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH, 30000); // Timeout after 30ms
if (duration == 0) return -1; // Return -1 if no pulse detected
float distance = duration * 0.034 / 2;
return distance;
}
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
float distance1 = getDistance(TRIG1, ECHO1);
float distance2 = getDistance(TRIG2, ECHO2);
int gasValue = analogRead(MQ2_AOUT);
Serial.print("Temp: "); Serial.print(temperature); Serial.print("°C ");
Serial.print("Humidity: "); Serial.print(humidity); Serial.print("% ");
Serial.print("Dist1: "); Serial.print(distance1); Serial.print("cm ");
Serial.print("Dist2: "); Serial.print(distance2); Serial.print("cm ");
Serial.print("Gas: "); Serial.println(gasValue);
// **Thresholds for Buzzer & LED**
if (temperature > 40 || humidity < 20 || distance1 > 50 || distance2 > 50 || gasValue > 3000) {
digitalWrite(LED, HIGH);
Serial.println("⚠ WARNING: Unsafe Conditions! ⚠");
Serial.println("Buzzer ON 🚨");
tone(BUZZER, 1000); // 1kHz alarm
delay(2000); // Keep buzzer ON for 2 sec
noTone(BUZZER); // Stop buzzer
} else {
digitalWrite(LED, LOW);
digitalWrite(BUZZER, LOW);
}
delay(2000); // Wait before next update
}