IoT Deteksi Kebakaran — ESP32 simulation

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

Components

Sketch code

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>

// =====================================================
// DEFINISI PIN
// =====================================================

// Flame Sensor (Analog Out -> GPIO 34)
#define FLAME_PIN 34

// DHT22 (Data -> GPIO 4)
#define DHT_PIN 4
#define DHT_TYPE DHT22

// LCD I2C (SDA -> GPIO 21, SCL -> GPIO 22)
#define SDA_PIN 21
#define SCL_PIN 22

// RGB LED
#define RGB_RED   26
#define RGB_GREEN 25
#define RGB_BLUE  33

// Grove Passive Buzzer (SIG -> GPIO 2)
#define GROVE_BUZZER_PIN 2

// =====================================================
// KONFIGURASI PWM LEDC (ESP32 CORE v3)
// =====================================================
#define BUZZER_FREQ       1500  // Frekuensi nada (Hz)
#define BUZZER_RESOLUTION 8     // Resolusi 8-bit (0-255)

// =====================================================
// DEKLARASI OBJEK
// =====================================================

DHT dht(DHT_PIN, DHT_TYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);

// =====================================================
// BATAS KONDISI (THRESHOLDS)
// =====================================================

#define TEMP_SIAGA  40.0
#define TEMP_BAHAYA 50.0

#define FLAME_PCT_SIAGA  20 // Intensitas Api > 20%
#define FLAME_PCT_BAHAYA 30 // Intensitas Api > 30%

// =====================================================
// SETUP
// =====================================================

void setup() {
  Serial.begin(115200);

  // Set Pin Mode untuk Sensor & Indikator
  pinMode(FLAME_PIN, INPUT);

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

  // Inisialisasi LEDC (Arduino ESP32 v3.x API)
  // Pin, Frekuensi, Resolusi digabung dalam 1 fungsi
  ledcAttach(GROVE_BUZZER_PIN, BUZZER_FREQ, BUZZER_RESOLUTION);

  // Matikan indikator pada saat startup
  rgbOff();
  buzzerOff();

  // Inisialisasi Sensor DHT22
  dht.begin();

  // Inisialisasi LCD I2C
  Wire.begin(SDA_PIN, SCL_PIN);
  lcd.init();
  lcd.backlight();

  // Layar Sambutan
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Fire Detector");
  lcd.setCursor(0, 1);
  lcd.print("System Starting");

  delay(2000);
  lcd.clear();

  Serial.println("=================================");
  Serial.println("  FIRE DETECTION SYSTEM READY    ");
  Serial.println("=================================");
}

// =====================================================
// KONTROL RGB LED
// =====================================================

void rgbOff() {
  digitalWrite(RGB_RED, LOW);
  digitalWrite(RGB_GREEN, LOW);
  digitalWrite(RGB_BLUE, LOW);
}

void rgbAman() {
  rgbOff();
  digitalWrite(RGB_GREEN, HIGH);
}

void rgbSiaga() {
  rgbOff();
  digitalWrite(RGB_BLUE, HIGH);
}

void rgbBahaya() {
  rgbOff();
  digitalWrite(RGB_RED, HIGH);
}

// =====================================================
// KONTROL GROVE PASSIVE BUZZER (API ESP32 v3.x)
// =====================================================

void buzzerOn() {
  // Menghas