fire_fighter_system — ESP32 simulation

An interactive ESP32 circuit simulation you can run free in your browser on Velxio, by seifeldinm535.

Components

Sketch code

// ============================================================
// FIRE FIGHTING SYSTEM - ESP32
// 4 Flame Sensors + A4988 + Relay (Pump/Fan) + 2-pin Active Buzzer
// STEPPER MOTOR - SHORTEST CIRCULAR PATH
// ============================================================


// ============================================================
// 1. FLAME SENSORS (ADC1)
// ============================================================

#define SENSOR_NORTH 34
#define SENSOR_EAST  35
#define SENSOR_SOUTH 32
#define SENSOR_WEST  33

#define ADC_MAX 4095


// ============================================================
// 2. OUTPUTS (RELAY & BUZZER)
// ============================================================

#define RELAY_PIN  26
#define BUZZER_PIN 25

// الريليه Active HIGH
#define RELAY_ON   HIGH
#define RELAY_OFF  LOW

// البازر ذو الرجلين
#define BUZZER_ON  HIGH
#define BUZZER_OFF LOW


// ============================================================
// 3. A4988 STEPPER
// ============================================================

#define STEP_PIN    18
#define DIR_PIN     19
#define ENABLE_PIN  23


// ============================================================
// 4. SENSOR CALIBRATION
// ============================================================

// إذا كان false:
// القيمة المنخفضة = نار
// القيمة العالية = لا توجد نار
#define FIRE_ACTIVE_HIGH false

// عتبة اكتشاف النار
#define FIRE_THRESHOLD   2200

// hysteresis لمنع التذبذب
#define FIRE_HYSTERESIS  250

// هامش تبديل الاتجاه
#define SWITCH_MARGIN    100

// زمن استمرار تشغيل المضخة والبازر بعد اختفاء النار
#define FIRE_HOLD_TIME_MS 1500


// ============================================================
// 5. STEPPER POSITIONS
// ============================================================

// الموتور يحتاج 200 خطوة للدورة الكاملة
#define STEPS_PER_REV 200

// مواقع الاتجاهات
#define POS_NORTH 0
#define POS_EAST  50
#define POS_SOUTH 100
#define POS_WEST  150

// الموقع الحالي للموتور
int currentPosition = POS_NORTH;


// ============================================================
// 6. DATA TABLES
// ============================================================

const int SENSOR_PINS[4] = {
  SENSOR_NORTH,
  SENSOR_EAST,
  SENSOR_SOUTH,
  SENSOR_WEST
};

const int POSITIONS[4] = {
  POS_NORTH,
  POS_EAST,
  POS_SOUTH,
  POS_WEST
};

const char* NAMES[4] = {
  "NORTH",
  "EAST",
  "SOUTH",
  "WEST"
};


// ============================================================
// 7. SENSOR STATES
// ============================================================

bool sensorFire[4] = {
  false,
  false,
  false,
  false
};


// ============================================================
// 8. STATE TRACKING
// ============================================================

int activeDirection = -1;

bool fireActive = false;
bool pumpIsOn = false;
bool buzzerIsOn = false;

unsigned long lastFireDetectMs = 0;


// ============================================================
// READ SENSOR
// متوسط 8 قراءات لت

More projects by seifeldinm535