// Konfigurasi Blynk
#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6OGF5sLnD"
#define BLYNK_TEMPLATE_NAME "Quickstart Template"
#define BLYNK_AUTH_TOKEN "X3Bw3M3G21Wq8khztI7za6-XK7hYl752"
// Menambahkan Library untuk kendali Blynk menggunakan ESP32
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// Konfigurasi Jaringan (SSID dan Password) Wifi
// Catatan: Jika menggunakan simulasi Wokwi, konfigurasi jaringan
// Seperti dibawah ini.
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST"; // Nama jaringan WiFi
char pass[] = ""; // Password Wifi
BlynkTimer timer;
// Konfigurasi Relay 15 dengan nama Relay
#define Relay 15
int SW_Relay=0;
//Konfigurasi Sensor Ultrasonik
#define triggerPin 26 // nomor pin untuk trigger
#define echoPin 25 // nomor pin untuk echo
long duration;
float jarak;
float tinggiwadah = 400; // Tinggi wadah dalam cm
float lebarwadah = 200; // Lebar wadah dalam cm
float panjangwadah = 200; // Panjang wadah dalam cm
float luasAlaswadah = 400; // Luas wadah dalam cm2
float tinggiAir;
float volume;
void setup() {
Serial.begin(115200);
pinMode(Relay, OUTPUT);
pinMode(triggerPin, OUTPUT);
pinMode(echoPin, INPUT);
Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
}
void loop() {
// Mengukur jarak dengan sensor ultrasonik
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
duration = pulseIn(echoPin, HIGH);
jarak = duration * 0.034 / 2; // konversi ke jarak sebenarnya (cm)
Serial.print("jarak : ");
Serial.print(jarak);
Serial.println(" cm");
// Menghitung volume wadah air
tinggiAir = tinggiwadah - jarak;
volume = (tinggiAir / 100) * (lebarwadah / 100) * (panjangwadah / 100);
Blynk.run();
timer.run();
Blynk.virtualWrite(V2, tinggiAir);
Blynk.virtualWrite(V3, volume);
delay(1000);
}
// Perintah menerima Datastream V0 dari Blynk Handphone
// Jika perangkat menerima kondisi 1 dari Button, maka nyalakan Relay
// Jika tidak maka matikan Relay
BLYNK_WRITE (V0)
{
SW_Relay = param.asInt();
if (SW_Relay == 1)
{
digitalWrite(Relay, HIGH);
Serial.println("POMPA AIR HIDUP");
// Perintah untuk mengirim kondisi Relay ke HP melalui Datastream V1
Blynk.virtualWrite(V1, HIGH);
}
else
{
digitalWrite(Relay, LOW);
Serial.println("POMPA AIR MATI");
// Perintah untuk mengirim kondisi Relay ke HP melalui Datastream V1
Blynk.virtualWrite(V1, LOW);
}
}