#include "DHTesp.h"
#include <LiquidCrystal_I2C.h>
const int DHT_PIN = 15; // Pin DHT22
const int BUZZER = 18; // Pin buzzer
const int GAS_SENSOR_PIN = A0; // Pin sensor gas MQ-2 (analog)
DHTesp dhtSensor;
LiquidCrystal_I2C lcd(0x27, 20, 4); // LCD 20x4
// Threshold gas untuk mendeteksi gas berbahaya (nilai dapat disesuaikan)
int gasThreshold = 400; // Ambang batas deteksi gas
void setup() {
Serial.begin(115200);
pinMode(BUZZER, OUTPUT); // Set buzzer as output
pinMode(2, OUTPUT); // LED merah
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); // Setup DHT22
lcd.init();
lcd.backlight();
lcd.setCursor(8, 0);
lcd.print("Projek");
lcd.setCursor(3, 1);
lcd.print("Alarm Kebakaran");
lcd.setCursor(8, 2);
lcd.print("oleh");
lcd.setCursor(0, 3);
lcd.print("Dimas Edwin Saputra");
delay(3000);
lcd.clear();
}
void loop() {
// Membaca data suhu dan kelembaban dari DHT22
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "C");
Serial.println("Humidity: " + String(data.humidity, 2) + "%");
Serial.println("---");
// Membaca nilai dari sensor gas MQ-2 (analog)
int gasValue = analogRead(GAS_SENSOR_PIN); // Membaca nilai gas dari pin analog
Serial.println("Gas Sensor Value: " + String(gasValue));
// Tampilan di LCD
lcd.setCursor(3, 0);
lcd.print("Informasi Suhu");
lcd.setCursor(0, 1);
lcd.print("Suhu : " + String(data.temperature, 2) + " C");
lcd.setCursor(0, 2);
lcd.print("Kelembaban : " + String(data.humidity, 2) + " %");
delay(3000);
lcd.clear();
// Menilai status suhu dan memberikan peringatan
if (data.temperature < 25) {
lcd.setCursor(8, 1);
lcd.print("AMAN");
lcd.setCursor(1, 2);
lcd.print("SELAMAT BERAKTIFITAS");
digitalWrite(2, LOW); // LED mati
noTone(BUZZER); // Buzzer mati
}
else if (data.temperature > 32) {
lcd.setCursor(3, 1);
lcd.print("BAHAYA API!!!");
lcd.setCursor(3, 2);
lcd.print("LARI LARI LARI");
digitalWrite(2, HIGH); // LED menyala
tone(BUZZER, 1000); // Buzzer berbunyi
}
else if (data.temperature >= 25 && data.temperature <= 32) {
lcd.setCursor(3, 1);
lcd.print("PERINGATAN API!!!");
digitalWrite(2, LOW); // LED mati
noTone(BUZZER); // Buzzer mati
}
// Cek kondisi gas dari sensor MQ-2
if (gasValue > gasThreshold) { // Jika nilai gas melebihi threshold, gas dianggap berbahaya
lcd.setCursor(3, 1);
lcd.print("BAHAYA GAS!!!");
lcd.setCursor(3, 2);
lcd.print("EVAKUASI SEKARANG");
digitalWrite(2, HIGH); // LED merah menyala
tone(BUZZER, 1000); // Buzzer berbunyi
} else {
// Kondisi aman untuk gas
digitalWrite(2, LOW); // LED mati
noTone(BUZZER); // Buzzer mati
}
delay(2000); // Tunggu sebelum pembaruan selanjutnya
lcd.clear();
}