#define BLYNK_TEMPLATE_ID "TMPL6GUIOTj2P"
#define BLYNK_TEMPLATE_NAME "Kipas"
#define BLYNK_AUTH_TOKEN "fS52K2nidMLRYs_QG0hbGOBoNnVM0ljg"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ESP32Servo.h>
#define DHTPIN 4 // Pin yang terhubung dengan DHT22
#define DHTTYPE DHT22 // Tipe DHT
#define BUZZER 12 // Pin Buzzer
Servo myservo;
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Blynk Virtual Pin
#define VPIN_TEMP V0
void setup()
{
Serial.begin(115200);
dht.begin();
myservo.attach(15); // Pin yang terhubung dengan servo
// Inisialisasi LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.setCursor(0, 1);
lcd.print("Kipas: OFF");
// Hubungkan ke WiFi
Blynk.begin(auth, ssid, pass);
}
void loop()
{
Blynk.run();
readTemperature();
}
void readTemperature()
{
// Baca suhu dan kelembaban dari DHT22
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Kirim suhu ke Blynk
Blynk.virtualWrite(VPIN_TEMP, t);
// Kontrol kipas berdasarkan suhu
if (t > 30.0) {
myservo.write(90); // Nyalakan kipas
delay(2000);
lcd.setCursor(7, 1);
lcd.print("ON ");
// Pengaturan frekuensi suara Buzzer
tone(BUZZER, 300);
delay(300);
tone(BUZZER, 500);
delay(300);
tone(BUZZER, 300);
delay(300);
tone(BUZZER, 200);
noTone(BUZZER);
} else {
myservo.write(0); // Matikan kipas
delay(2000);
lcd.setCursor(7, 1);
lcd.print("OFF");
}
// Update tampilan LCD
lcd.setCursor(6, 0);
lcd.print(t);
lcd.print(" C ");
// Debugging di Serial Monitor
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C, Humidity: ");
Serial.print(h);
Serial.println(" %");
// Tunggu beberapa detik sebelum pembacaan berikutnya
delay(500);
}