/* Comment this out to disable prints and save space */
#define BLYNK_TEMPLATE_ID "TMPL6J9vV1hjO"
#define BLYNK_TEMPLATE_NAME "Water Plant System"
#define BLYNK_AUTH_TOKEN "rZUUzW3KcgpIVGjeLnRcZ-6Qh3RSELol"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Wire.h>
BlynkTimer timer;
long duration;
int distance;
long duration2;
int distance2;
boolean relayState = LOW;
boolean manualControl = false;
const int trigPin = 16;
const int echoPin = 17;
const int trigPin2 = 18;
const int echoPin2 = 19;
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST"; //nama hotspot yang digunakan
char pass[] = ""; //password hotspot yang digunakan
void SendData() {
Blynk.virtualWrite(V0, distance);
Blynk.virtualWrite(V1, distance2);
}
BLYNK_CONNECTED() {
// Request the latest state from the server
Blynk.syncVirtual(V2);
}
BLYNK_WRITE(V2) {
int pinValue = param.asInt();
if (pinValue == 1) {
relayState = HIGH;
manualControl = true;
} else {
relayState = LOW;
manualControl = false;
}
digitalWrite(12, relayState);
Serial.println(relayState == HIGH ? "Relay Nyala" : "Relay Mati");
delay(100);
}
void setup()
{
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(12, OUTPUT);
pinMode(27,OUTPUT);
Blynk.begin(auth, ssid, pass);
// You can also specify server:
//Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
//Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);
}
void loop()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
digitalWrite(trigPin2, LOW);
delayMicroseconds(2);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin2, LOW);
duration2 = pulseIn(echoPin2, HIGH);
distance2 = duration2 * 0.034 / 2;
Blynk.run();
SendData();
if (!manualControl) {
if (distance < 20) {
relayState = HIGH;
} else {
relayState = LOW;
}
}
digitalWrite(12, relayState);
if (distance2 < 10) {
digitalWrite(27,HIGH);
delay(2000);
digitalWrite(27,LOW);
delay(2000);
}
}
Water Level
Moisture Sensor
Submersible Pump