#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6AOPw1ZGl"
#define BLYNK_TEMPLATE_NAME "smart irigation msob"
#define BLYNK_AUTH_TOKEN "uySh4UIZtGth_fVSNDLABpCDKZ_C7u-m"
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
//OLED Display - Init
#define SCREEN_WIDTH 128 // lebar layar OLED
#define SCREEN_HEIGHT 64 // tinggi layar OLED
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
//Sensor Kelembanan Tanah - Init
int kelembaban_tanah = 0;
int inv_kelembaban_tanah = 0;
//Relay Pompa - Init
int relay_pompa = 15;
int mode_pompa = 0;
int control_pompa = 0;
//Blynk - Init
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BLYNK_WRITE(V1){
mode_pompa = param.asInt();
}
BLYNK_WRITE(V2){
control_pompa = param.asInt();
}
void setup() {
Serial.begin(115200);
//OLED Display - Config
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(500);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
//Sensor Kelembanan Tanah - Config
analogReadResolution(10);
pinMode(34, INPUT);
//Relay Pompa - Config
pinMode(relay_pompa, OUTPUT);
digitalWrite(relay_pompa, LOW);
Blynk.virtualWrite(V2, "Pompa MATI");
//Blynk - Config
Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
}
void loop() {
Blynk.run();
display.clearDisplay();
kelembaban_tanah = analogRead(34);
kelembaban_tanah = map (kelembaban_tanah, 0,1023, 0,100);
inv_kelembaban_tanah = 100-kelembaban_tanah;
Blynk.virtualWrite(V0, inv_kelembaban_tanah);
if (mode_pompa == 0 && control_pompa == 1){
digitalWrite(relay_pompa, HIGH);
Blynk.virtualWrite(V3, "Pompa HIDUP");
display.setCursor(0, 30);
display.println("Status Pompa:");
display.setCursor(0, 40);
display.println("Pompa HIDUP");
}
else if(mode_pompa == 0 && control_pompa == 0){
digitalWrite(relay_pompa, LOW);
Blynk.virtualWrite(V3, "Pompa MATI");
display.setCursor(0, 30);
display.println("Status Pompa:");
display.setCursor(0, 40);
display.println("Pompa MATI");
}
else if(inv_kelembaban_tanah < 50 && mode_pompa == 1){
digitalWrite(relay_pompa, HIGH);
Blynk.virtualWrite(V3, "Pompa HIDUP");
display.setCursor(0, 30);
display.println("Status Pompa:");
display.setCursor(0, 40);
display.println("Pompa HIDUP");
}
else if(inv_kelembaban_tanah > 50 && mode_pompa == 1){
digitalWrite(relay_pompa, LOW);
Blynk.virtualWrite(V3, "Pompa MATI");
display.setCursor(0, 30);
display.println("Status Pompa:");
display.setCursor(0, 40);
display.println("Pompa MATI");
}
display.setCursor(0, 0);
display.println("Kelembaban Tanah:");
display.setCursor(0, 10);
display.println(inv_kelembaban_tanah);
display.display();
}