smoke/gas — ESP32 simulation

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

Components

Sketch code

// ============================================================
// ESP32 SMOKE & GAS DETECTOR
// Velxio Simulation
//
// Gas Sensor:
//   VCC  -> 3.3V
//   GND  -> GND
//   AOUT -> GPIO 34
//   DOUT -> Not connected
//
// RGB LED:
//   R -> GPIO 25
//   G -> GPIO 26
//   B -> GPIO 27
//   Common -> GND
//
// Buzzer:
//   + -> GPIO 33
//   - -> GND
// ============================================================

#define GAS_SENSOR_PIN 34

#define RGB_RED   25
#define RGB_GREEN 26
#define RGB_BLUE  27

#define BUZZER 33

// Change this after checking your sensor readings
#define GAS_WARNING 1500
#define GAS_DANGER  2500


void setup() {

  Serial.begin(115200);

  pinMode(GAS_SENSOR_PIN, INPUT);

  pinMode(RGB_RED, OUTPUT);
  pinMode(RGB_GREEN, OUTPUT);
  pinMode(RGB_BLUE, OUTPUT);

  pinMode(BUZZER, OUTPUT);

  // Start with everything OFF
  digitalWrite(RGB_RED, LOW);
  digitalWrite(RGB_GREEN, LOW);
  digitalWrite(RGB_BLUE, LOW);
  digitalWrite(BUZZER, LOW);

  Serial.println();
  Serial.println("================================");
  Serial.println("     SMOKE & GAS DETECTOR");
  Serial.println("================================");
  Serial.println("System Started");
  Serial.println();
}


// ------------------------------------------------------------
// RGB LED FUNCTIONS
// ------------------------------------------------------------

void greenLED() {

  digitalWrite(RGB_RED, LOW);
  digitalWrite(RGB_GREEN, HIGH);
  digitalWrite(RGB_BLUE, LOW);
}


void yellowLED() {

  digitalWrite(RGB_RED, HIGH);
  digitalWrite(RGB_GREEN, HIGH);
  digitalWrite(RGB_BLUE, LOW);
}


void redLED() {

  digitalWrite(RGB_RED, HIGH);
  digitalWrite(RGB_GREEN, LOW);
  digitalWrite(RGB_BLUE, LOW);
}


void ledOff() {

  digitalWrite(RGB_RED, LOW);
  digitalWrite(RGB_GREEN, LOW);
  digitalWrite(RGB_BLUE, LOW);
}


// ------------------------------------------------------------
// MAIN LOOP
// ------------------------------------------------------------

void loop() {

  // Read gas sensor
  int gasValue = analogRead(GAS_SENSOR_PIN);

  Serial.print("Gas Sensor Value: ");
  Serial.println(gasValue);


  // ----------------------------------------------------------
  // SAFE
  // ----------------------------------------------------------

  if (gasValue < GAS_WARNING) {

    greenLED();

    digitalWrite(BUZZER, LOW);

    Serial.println("STATUS: SAFE");
  }


  // ----------------------------------------------------------
  // WARNING
  // ----------------------------------------------------------

  else if (gasValue < GAS_DANGER) {

    yellowLED();

    digitalWrite(BUZZER, LOW);

    Serial.println("STATUS: WARNING - GAS LEVEL INCREASING");
  }


  // ----------------------------------------------------------
  // DANGER
  // ----------------------------------------------------------

  else {

    redLED();

    digitalWrite(BUZZER, HIGH);

    Serial.println("!!! DANGER !!!");
    Serial.println("SMOKE/GAS DETECTED!");
  }


  Serial.println("--------------------

More projects by 2023beec071