#define BLYNK_TEMPLATE_ID "TMPL6aNsHIi_m"
#define BLYNK_TEMPLATE_NAME "RUMAH PINTAR ARYA"
#define BLYNK_AUTH_TOKEN "bfVCxXAIstDl5EF2mrjoXR44RgmK-6kO"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
// WiFi credentials
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// DHT sensor
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Potensiometer (sensor gas dan api)
#define ASAPPIN 34
#define APIPIN 35
// Pin Relay
#define RELAYPIN 13
//Pin Buzzer
#define BUZZERPIN 32
// Pin Blynk
#define VPIN_SUHU V0
#define VPIN_KELEMBABAN V1
#define VPIN_ASAP V2
#define VPIN_API V3
#define VPIN_RELAY V4
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(RELAYPIN, OUTPUT);
pinMode(ASAPPIN, INPUT);
pinMode(APIPIN, INPUT);
pinMode(BUZZERPIN, OUTPUT);
digitalWrite(RELAYPIN, LOW);
digitalWrite(BUZZERPIN, LOW);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("SELAMAT DATANG DI");
lcd.setCursor(0, 1);
lcd.print("RUMAH PINTAR ARYA");
delay(3000);
for (int i = 0; i < 16; i++) {
lcd.scrollDisplayLeft();
delay(300);
}
lcd.clear();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED){
lcd.setCursor(0, 0);
lcd.print("MENGHUBUNGKAN KE");
lcd.setCursor(0, 1);
lcd.print("WIFI......");
for (int i = 0; i < 16; i++) {
lcd.scrollDisplayLeft();
delay(300);
}
lcd.clear();
delay(1000);
Serial.println("MENGHUBUNGKAN WIFI....");
}
Serial.println("MENGHUBUNGKAN WIFI...");
lcd.setCursor(0, 0);
lcd.print("BERHASIL.....");
for (int i = 0; i < 16; i++){
lcd.scrollDisplayLeft();
delay(300);
}
lcd.clear();
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, password);
}
void loop() {
Blynk.run();
float suhu = dht.readTemperature();
float kelembaban = dht.readHumidity();
int asapValue = analogRead(ASAPPIN);
int apiValue = analogRead(APIPIN);
Blynk.virtualWrite(VPIN_SUHU, suhu);
Blynk.virtualWrite(VPIN_KELEMBABAN, kelembaban);
Blynk.virtualWrite(VPIN_ASAP, asapValue);
Blynk.virtualWrite(VPIN_API, apiValue);
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(suhu);
lcd.print("C ");
lcd.print("Asap: ");
lcd.print(asapValue);
lcd.setCursor(0, 1);
lcd.print("Kelembaban: ");
lcd.print(kelembaban);
lcd.print("% ");
lcd.print("Api: ");
lcd.print(apiValue);
delay(1000);
lcd.clear();
Serial.print("Suhu ");
Serial.print(suhu);
Serial.print(" °C, Kelembaban: ");
Serial.print(kelembaban);
Serial.print(" %, Asap: ");
Serial.println(asapValue);
Serial.print(", Api: ");
Serial.println(apiValue);
if (asapValue > 1000 || apiValue > 1000) {
digitalWrite(RELAYPIN, HIGH);
Blynk.virtualWrite(VPIN_RELAY, 1);
digitalWrite(BUZZERPIN, HIGH);
tone(BUZZERPIN,200,50);
lcd.print("Peringatan! asap/api");
} else {
digitalWrite(RELAYPIN, LOW);
Blynk.virtualWrite(VPIN_RELAY, 0);
digitalWrite(BUZZERPIN, LOW);
noTone(BUZZERPIN);
}
delay(2000);
}