#define BLYNK_TEMPLATE_ID "TMPL6229MRu3-"
#define BLYNK_TEMPLATE_NAME "tugasIoT"
#define BLYNK_AUTH_TOKEN "-3pa9Va7sVH6Ai1-qXlFhBbmnkU3JicD"
#define BLYNK_PRINT Serial
// definisi pin DHT
#define DHTPIN 22
#define DHTTYPE DHT22
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// memasukkan library DHT
#include <DHT.h>
// memasukkan library LCD I2C
#include <LiquidCrystal_I2C.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST"; // Change your Wifi/ Hotspot Name
char pass[] = ""; // Change your Wifi/ Hotspot Password
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Ganti 0x27 dengan alamat I2C yang sesuai
const int analogPin = A0;
const float BETA = 3950; // Seharusnya sesuai dengan Koefisien Beta dari termistor
const int buzzerPin = 13;
#define GREEN 12
#define fire 23
#define RED 14
#define buzzer 13
int fire_Val = 0;
BlynkTimer timer;
WidgetLED led(V1);
void setup()
{
Serial.begin(9600);
pinMode(buzzerPin, OUTPUT);
lcd.init();
lcd.backlight();
lcd.begin(16, 2); // Sesuaikan dengan jumlah kolom dan baris layar LCD Anda
lcd.clear();
pinMode(GREEN, OUTPUT);
pinMode(fire, INPUT);
pinMode(RED, OUTPUT);
Blynk.begin(auth, ssid, pass); // Splash screen delay
delay(2000);
timer.setInterval(500L, mySensor);
}
void loop() // Loop function
{
Blynk.run();
timer.run();
}
void mySensor()
{
// put your main code here, to run repeatedly:
//membaca nilai suhu
float t = dht.readTemperature();
//membaca nilai kelembapan
float h = dht.readHumidity();
//menampilkan nilai suhu I2C
lcd.setCursor(0,0);
lcd.print("temp. = ");
lcd.print(t);
lcd.print((char)223);
lcd.print('C');
//menampilkan nilai kelembapan pada LCD I2C
lcd.setCursor(0,1);
lcd.print("humid. = ");
lcd.print(h);
lcd.print("%");
Serial.print("Suhu : ");
Serial.println(t);
delay(1000);
Serial.print("humid : ");
Serial.println(h);
delay(1000); // this speeds up the simulation
if (t > 32)
{
tone(buzzerPin, 100, 1000);
delay(500);
lcd.setCursor(0, 1);
lcd.print("Kebakaran!!!");
}
else
{
digitalWrite(buzzerPin, LOW);
lcd.setCursor(0, 1);
lcd.print("Aman");
}
Blynk.virtualWrite(V0, t); // Kirim data suhu ke widget di Blynk (gunakan pin V1 atau sesuaikan dengan pin yang Anda tentukan di aplikasi Blynk)
delay(1000);
fire_Val = digitalRead(fire);
if (fire_Val == LOW)
{
Serial.println("Fire in the House");
Blynk.logEvent("fire_alert", "Fire Detected");
digitalWrite(GREEN, LOW);
digitalWrite(RED, HIGH);
digitalWrite(buzzer, HIGH);
Blynk.virtualWrite(V0, 1);
Serial.print("Fire Level: ");
Serial.println(fire_Val);
led.on();
}
else
{
digitalWrite(GREEN, HIGH);
digitalWrite(RED, LOW);
digitalWrite(buzzer, LOW);
Blynk.virtualWrite(V0, 0);
Serial.print("Fire Level: ");
Serial.println(fire_Val);
led.off();
}
}