#include <DHT.h>
// ---------- تعريف DHT22 ----------
#define DHTPIN 4 // أي GPIO متاح على ESP32
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// ---------- تعريف LED وBuzzer ----------
#define LED_PIN 2
#define BUZZER_PIN 15
// ---------- تعريف Potentiometers لمحاكاة الحساسات ----------
#define GAS_PIN 34 // MQ-8 / H2
#define CURRENT_PIN 35 // ACS712 / تيار كهربائي
#define VIB_PIN 33 // Piezo / SW-420
#define PRESSURE_PIN 32 // BMP280 محاكاة
// ---------- Thresholds ----------
const float TEMP_THRESHOLD = 50.0;
const int GAS_THRESHOLD = 3000;
const int CURRENT_THRESHOLD = 3000;
const int VIB_THRESHOLD = 3000;
const int PRESSURE_THRESHOLD = 3000;
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(LED_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
// Potentiometers على ESP32 تعتبر ADC input تلقائي
}
void loop() {
// ---------- قراءة الحساسات ----------
float temp = dht.readTemperature();
float hum = dht.readHumidity();
int gasVal = analogRead(GAS_PIN);
int currentVal = analogRead(CURRENT_PIN);
int vibVal = analogRead(VIB_PIN);
int pressureVal = analogRead(PRESSURE_PIN);
// ---------- التحقق من Threshold ----------
bool alert = false;
if (isnan(temp)) {
Serial.println("Failed to read DHT22!");
} else {
if(temp >= TEMP_THRESHOLD) alert = true;
}
if(gasVal >= GAS_THRESHOLD) alert = true;
if(currentVal >= CURRENT_THRESHOLD) alert = true;
if(vibVal >= VIB_THRESHOLD) alert = true;
if(pressureVal >= PRESSURE_THRESHOLD) alert = true;
// ---------- تشغيل LED وBuzzer ----------
digitalWrite(LED_PIN, alert ? HIGH : LOW);
digitalWrite(BUZZER_PIN, alert ? HIGH : LOW);
// ---------- طباعة القيم على Serial ----------
Serial.print("Temp: "); Serial.print(temp); Serial.print(" C, ");
Serial.print("Humidity: "); Serial.print(hum); Serial.print("%, ");
Serial.print("Gas: "); Serial.print(gasVal); Serial.print(", ");
Serial.print("Current: "); Serial.print(currentVal); Serial.print(", ");
Serial.print("Vibration: "); Serial.print(vibVal); Serial.print(", ");
Serial.print("Pressure: "); Serial.println(pressureVal);
delay(2000); // تحديث كل 2 ثانية
}
DHT22(Measure temperature)
BMP280(Measure pressure)
ACS712(Measure electric current)
MQ-8(Detects hydrogen gas leak)
MQ-135(Detects CO2/air quality)
Detects vibration or mechanical shocks