#include "DHT.h"
// Konfigurasi DHT22
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Konfigurasi potensiometer sebagai simulator MQ-2
#define MQ2_PTN A0
// Pin Output
#define led 12
#define buzzer 11
#define relay 3
// Threshold
const float SUHU_BAHAYA = 60.0; // °C
const float KELEMBABAN_BAHAYA = 30.0; // %
const int GAS_BAHAYA = 200; // nilai analog
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(led, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(relay, OUTPUT);
Serial.println(F("Sistem Deteksi Kebakaran (Wokwi)"));
}
void loop() {
// Baca sensor
float suhu = dht.readTemperature();
float kelembaban = dht.readHumidity();
// Baca nilai potensiometer (0-1023)
int gasValue = analogRead(MQ2_PTN);
// Validasi data
if (isnan(suhu) || isnan(kelembaban)) {
Serial.println(F("Error membaca DHT22"));
return;
}
// Deteksi bahaya
bool bahaya = (suhu >= SUHU_BAHAYA) ||
(kelembaban <= KELEMBABAN_BAHAYA) ||
(gasValue >= GAS_BAHAYA);
// Kontrol output
digitalWrite(led, bahaya ? HIGH : LOW);
digitalWrite(relay, bahaya ? HIGH : LOW);
if (bahaya) {
// Frekuensi 1 kHz selama 500 ms
tone(buzzer, 1000, 500);
} else {
noTone(buzzer);
}
// Tampilkan data
Serial.print(F("Suhu: "));
Serial.print(suhu);
Serial.print(F(" C | "));
Serial.print(F("Kelembaban: "));
Serial.print(kelembaban);
Serial.print(F(" % | "));
Serial.print(F("Gas: "));
Serial.print(gasValue);
Serial.println(F("/1023"));
delay(2000);
}