#define BLYNK_TEMPLATE_ID "TMPL62Fn8rD3P"
#define BLYNK_TEMPLATE_NAME "HCSR"
#define BLYNK_AUTH_TOKEN "Hn8tnmeK0BCYdFSsG6LyIBgRdbZ3xR2a"
#include <NewPing.h>
#include <BlynkSimpleEsp32.h>
#define TRIG_PIN 13 // Pin Trigger untuk HC-SR04
#define ECHO_PIN 12 // Pin Echo untuk HC-SR04
#define MAX_DISTANCE 200 // Jarak maksimal yang bisa dibaca sensor (200 cm)
#define RELAY_PIN 14 // Pin kontrol Relay untuk buzzer
// Ganti dengan token Blynk kamu
char auth[] = BLYNK_AUTH_TOKEN; // Auth Token dari Blynk
char ssid[] = "Wokwi-GUEST"; // SSID Wi-Fi kamu
char pass[] = ""; // Password Wi-Fi kamu
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE); // Inisialisasi sensor HC-SR04
BlynkTimer timer; // Timer untuk mengirim data ke Blynk setiap interval
void setup() {
// Inisialisasi Serial Monitor untuk debugging
Serial.begin(115200);
// Koneksi ke Blynk dan Wi-Fi
Blynk.begin(auth, ssid, pass);
// Mengatur pin relay sebagai output
pinMode(RELAY_PIN, OUTPUT);
// Mengatur interval pengiriman data ke Blynk
timer.setInterval(1000L, sendSensorData); // Update data setiap 1 detik
}
void loop() {
// Menjalankan fungsi Blynk dan timer untuk interval
Blynk.run();
timer.run();
// Membaca jarak dari sensor HC-SR04
unsigned int jarak = sonar.ping_cm();
// Jika jarak yang terdeteksi adalah 0, anggap jarak sebagai maksimal
if (jarak == 0) {
jarak = MAX_DISTANCE;
}
// Kirim jarak ke aplikasi Blynk
Blynk.virtualWrite(V1, jarak); // V0 adalah pin virtual untuk menampilkan jarak di Blynk
// Menampilkan jarak di Serial Monitor
Serial.print("Jarak: ");
Serial.print(jarak);
Serial.println(" cm");
// Mengendalikan relay berdasarkan jarak
if (jarak <= 50) {
digitalWrite(RELAY_PIN, HIGH); // Menyalakan relay dan buzzer
Serial.println("Buzzer ON");
} else {
digitalWrite(RELAY_PIN, LOW); // Mematikan relay dan buzzer
Serial.println("Buzzer OFF");
}
delay(200); // Delay untuk stabilitas pembacaan sensor
}
// Fungsi untuk mengirim data sensor ke Blynk setiap interval
void sendSensorData() {
unsigned int jarak = sonar.ping_cm();
if (jarak == 0) {
jarak = MAX_DISTANCE;
}
Blynk.virtualWrite(V1, jarak); // Kirim jarak ke Blynk
}