#define BLYNK_TEMPLATE_ID "TMPL6cDTv2Y54"
#define BLYNK_TEMPLATE_NAME "ESP32 DHT32"
#define BLYNK_AUTH_TOKEN "97qlL10Xa8ZdNpcHgACdRAGHIBRUm8zh"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
// Konfigurasi Blynk
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Konfigurasi sensor DHT22
#define DHTPIN 4 // Pin untuk sensor DHT22 (misalnya D4)
#define DHTTYPE DHT22 // Tipe sensor DHT22
DHT dht(DHTPIN, DHTTYPE);
// Konfigurasi sensor HC-SR04
#define TRIG_PIN 5 // Pin trig untuk HC-SR04 (misalnya D5)
#define ECHO_PIN 18 // Pin echo untuk HC-SR04 (misalnya D18)
BlynkTimer timer;
void setup() {
Serial.begin(115200);
// Inisialisasi sensor DHT22
dht.begin();
// Inisialisasi pin untuk HC-SR04
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
// Tambahkan pesan debug sebelum menghubungkan ke Blynk
Serial.println("Connecting to Blynk...");
// Hubungkan ke Blynk
Blynk.begin(auth, ssid, pass);
// Setup timer untuk mengirim data setiap 2 detik
timer.setInterval(2000L, sendSensor);
}
void loop() {
Blynk.run();
timer.run();
}
void sendSensor() {
// Membaca suhu dan kelembaban dari sensor DHT22
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Cek apakah pembacaan valid
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Gagal membaca dari sensor DHT!");
return;
}
// Mengirim data kelembaban dan suhu ke Blynk
Serial.print("Mengirim kelembaban: ");
Serial.println(humidity);
Blynk.virtualWrite(V1, humidity);
Serial.print("Mengirim suhu: ");
Serial.println(temperature);
Blynk.virtualWrite(V0, temperature);
// Membaca jarak dari sensor HC-SR04
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.034 / 2;
// Mengirim data jarak ke Blynk
Serial.print("Mengirim jarak: ");
Serial.println(distance);
Blynk.virtualWrite(V7, distance);
// Menampilkan data di Serial Monitor
Serial.print("Kelembaban: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.print(" *C\t");
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
}