#define BLYNK_TEMPLATE_ID "TMPL6VG7FYHrO"
#define BLYNK_TEMPLATE_NAME "Monitoring suhu, Kelembaban, dan Relay"
#define BLYNK_AUTH_TOKEN "v3gmR3fSIumFIocLLxvunrHVnNu-FA2l"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST"; // Nama hotspot yang digunakan
char pass[] = ""; // Kata sandi hotspot yang digunakan
#define DHTPIN 15 // Pin digital tempat Anda menghubungkan sensor DHT22
#define DHTTYPE DHT22 // Jenis sensor DHT (DHT11 atau DHT22)
#define RELAY_PIN1 12 // Pin relay 1
#define RELAY_PIN2 13 // Pin relay 2
DHT dht(DHTPIN, DHTTYPE);
int relay1State = LOW;
int relay2State = LOW;
void setup() {
Serial.begin(115200);
LCD.init();
LCD.backlight();
Blynk.begin(auth, ssid, pass);
dht.begin();
pinMode(RELAY_PIN1, OUTPUT);
pinMode(RELAY_PIN2, OUTPUT);
}
void loop() {
Blynk.run();
sendSensorData();
}
BLYNK_WRITE(V2) {
int relayValue = param.asInt();
if (relayValue == 1) {
digitalWrite(RELAY_PIN1, HIGH);
relay1State = HIGH;
} else {
digitalWrite(RELAY_PIN1, LOW);
relay1State = LOW;
}
}
BLYNK_WRITE(V3) {
int relayValue = param.asInt();
if (relayValue == 1) {
digitalWrite(RELAY_PIN2, HIGH);
relay2State = HIGH;
} else {
digitalWrite(RELAY_PIN2, LOW);
relay2State = LOW;
}
}
void sendSensorData() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Kirim data suhu ke widget V0 di Blynk
Blynk.virtualWrite(V0, t);
// Kirim data kelembaban ke widget V1 di Blynk
Blynk.virtualWrite(V1, h);
// Tampilkan suhu di LCD
LCD.setCursor(0, 0);
LCD.print("Temp: ");
LCD.print(t);
LCD.print(" C");
// Tampilkan kelembaban di LCD
LCD.setCursor(0, 1);
LCD.print("Humidity: ");
LCD.print(h);
LCD.print(" %");
// Kirim status relay 1 ke widget V4 di Blynk
Blynk.virtualWrite(V4, relay1State);
// Kirim status relay 2 ke widget V5 di Blynk
Blynk.virtualWrite(V5, relay2State);
Serial.print("Temperature : ");
Serial.print(t);
Serial.print(" Humidity : ");
Serial.println(h);
}