#define BLYNK_TEMPLATE_ID "TMPL6E3AvzHqg"
#define BLYNK_TEMPLATE_NAME "DHT22"
#define BLYNK_AUTH_TOKEN "_hP1769VGtB5ECrmSMBpZKejvuFA8pMe"
#define BLYNK_PRINT Serial // Mengaktifkan output serial untuk debugging
#include <WiFi.h> // Library untuk koneksi WiFi
#include <WiFiClient.h> // Library untuk koneksi WiFi
#include <BlynkSimpleEsp32.h> // Library Blynk untuk ESP32
#include <DHT.h> // Library untuk sensor DHT
// Token autentikasi Blynk yang didapat dari aplikasi Blynk
char auth[] = BLYNK_AUTH_TOKEN;
// Kredensial WiFi
char ssid[] = "Wokwi-GUEST"; // Nama jaringan WiFi yang digunakan
char pass[] = ""; // Password jaringan WiFi
#define DHTPIN 5 // Pin digital tempat sensor DHT22 terhubung
#define DHTTYPE DHT22 // Jenis sensor DHT yang digunakan adalah DHT22
#define LEDPIN 4 // Pin LED
DHT dht(DHTPIN, DHTTYPE); // Membuat objek DHT dengan pin dan tipe yang telah ditentukan
BlynkTimer timer; // Membuat objek timer Blynk
void setup() {
Serial.begin(115200); // Memulai komunikasi serial dengan baud rate 115200
Blynk.begin(auth, ssid, pass); // Memulai koneksi ke Blynk dengan token autentikasi dan kredensial WiFi
// Anda juga bisa menentukan server:
// Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
// Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);
dht.begin(); // Memulai sensor DHT
pinMode(LEDPIN, OUTPUT); // Mengatur pin LED sebagai output
timer.setInterval(2500L, sendSensor); // Menentukan interval waktu untuk memanggil fungsi sendSensor setiap 2500 ms
}
void loop() {
Blynk.run(); // Menjalankan Blynk
timer.run(); // Menjalankan timer Blynk
}
void sendSensor() {
float h = dht.readHumidity(); // Membaca nilai kelembaban dari sensor DHT22
float t = dht.readTemperature(); // Membaca nilai suhu dari sensor DHT22
if (isnan(h) || isnan(t)) { // Jika pembacaan sensor gagal (menghasilkan NaN)
Serial.println("Failed to read from DHT sensor!"); // Tampilkan pesan kesalahan
return;
}
Blynk.virtualWrite(V1, h); // Mengirim nilai kelembaban ke Virtual Pin V1 di Blynk
Blynk.virtualWrite(V0, t); // Mengirim nilai suhu ke Virtual Pin V0 di Blynk
Serial.print("Temperature : ");
Serial.print(t); // Menampilkan nilai suhu di serial monitor
Serial.print(" Humidity : ");
Serial.println(h); // Menampilkan nilai kelembaban di serial monitor
// Mengontrol LED berdasarkan suhu
if (t > 35) {
digitalWrite(LEDPIN, HIGH); // Menyalakan LED jika suhu di atas 35 derajat Celsius
} else {
digitalWrite(LEDPIN, LOW); // Mematikan LED jika suhu di bawah atau sama dengan 35 derajat Celsius
}
}
// Fungsi untuk mengontrol LED dari Blynk
BLYNK_WRITE(V2) {
int ledState = param.asInt(); // Membaca nilai dari pin virtual V2 di Blynk
digitalWrite(LEDPIN, ledState); // Mengatur keadaan LED sesuai dengan nilai yang diterima
}