SISTEM PENYIRAM TANAMAN OTOMATIS BERBASIS ESP32

 SISTEM PENYIRAM TANAMAN OTOMATIS 

BERBASIS ESP32

Dosen Pengampu : 
Aminuddin R

Disusun Oleh :

Etika Tsani                 (3.32.20.2.08)
Roshid Ardiansyah     (3.32.20.2.21)

Kelas EK3C





D3 TEKNIK ELEKTRONIKA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG

LATAR BELAKANG

Perlu diketahui bahwa sebanyak 70%-90% dari bobot segar sel-sel dan jaringan tanaman adalah air. Selain itu, air juga memiliki peran penting dalam menjaga suhu tanaman, melakukan proses fotosintesis dan respirasi, menjadi media untuk reaksi-reaksi biokimia serta penyerapan mineral dari dalam tanah. Pertumbuhan tanaman akan terganggu jika kebutuhan airnya tidak terpenuhi. Untuk itu, penting sekali tanaman disiram air secara tepat dan berkala. Namun selain itu, pengaruh ketersediaan air pada tanaman dengan jumlah yang berlebih juga dapat menyebabkan tanaman akan sulit untuk melakukan pertukaran gas dan sulit menyerap nutrisi yang dibutuhkan. Untuk itu penting sekali memberikan air untuk tanaman yang sesuai dengan kebutuhan tanaman. Saat ini kemudahan dan efisiensi waktu serta tenaga menjadi pertimbangan utama manusia dalam melakukan aktifitas. Dari waktu ke waktu kita dihadapkan pada perkembangan teknologi yang begitu pesat, sehingga membuat pekerjaan manusia semakin mudah. oleh karena itu kami berusaha untuk membuat sistem penyiram tanaman secara otomatis. Dimana pada alat ini kami mengunakan Esp32 dan sensor soil moisture / kelembaban tanah sebagai kontrol utama dan kendali dalam alat tersebut. Alat ini berfungsi untuk menyiram tanaman secara otomatis berdasarkan PH tanah yang sudah di set sesuai kebutuhan tanaman.

KOMPONEN YANG DIGUNAKAN

1. Komponen Masukan    : NodeMCU ESP32, Capacitive Soil Moisture Sensor, Modul            
                                            Breadboard Power Supply MB102
2. Komponen Luaran       : Relay, Pompa Air Mini DC 12V, LCD I2C

CARA KERJA

Saat Esp32 diberi tegangan 5v dan internet yang sudah ada pada program, maka LCD akan menampilkan karakter “Penyiram Otomatis” dan alat juga akan terhubung pada Blynk. Selanjutnya jika alat sudah terhubung sensor soil moisture akan membaca tingkat kelembapan tanah, jika kelembaban diatas 25% maka tampilan pada lcd akan memunculkan karakter “T Kering” dan “Pompa Hidup” dan juga relay akan menyala dan membuat pompa air menyala sampai kelembapan tanah dirasa cukup, sedangkan jika sensor soil moisture mendeteksi  tingkat kelembapan tanah dibawah 25% maka tampilan LCD yaitu “T Basah” dan “Pompa Mati”. Tampilan Blynk berupa keadaan kelembaban tanah hasil pembacaan sensor, persentase kelembaban tanah dan indicator bahwa relay menyala atau tidak.

POWER POINT PRESENTASI Link Power Point


PROGRAM ARDUINO Link Program

//  Sistem Penyiram Tanaman Otomatis Berbasis ESP32
//  KELOMPOK C7
//  ETIKA  TSANI        07
//  ROSHID ARDIANSYAH 21

#define uS_TO_S_FACTOR 1000000 // Mengkonversi milisecon ke secon
#define TIME_TO_SLEEP 30  // waktu menuju sleep 30 secon

//Inisiasi Untuk Tampilan Blynk
#define BLYNK_TEMPLATE_ID           "TMPLn-jQSvce"
#define BLYNK_DEVICE_NAME           "Monitoring Penyiraman Tanaman Otomatis"
#define BLYNK_AUTH_TOKEN            "X1Qx3KVjE4Y3d2ggFk8rfmvElvejLluN"


#define BLYNK_PRINT Serial

//Library Yang Digunakan
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>

char auth[] = BLYNK_AUTH_TOKEN;

// SSID dan Pasword yang  digunakan
char ssid[] = "Redmi Note 9 Pro";
char pass[] = "28100203";



BlynkTimer timer;
//Pin alamat yang digunakan
LiquidCrystal_I2C lcd(0X27 ,16, 2);
const int relay = 14;    // deklarasi pin dht11 14
const int soilmoisture = 34;  //deklarasi pin sensor soilmoisture 34
float persen;

void setup()
{
  
  Serial.begin(115200);
  pinMode (relay,OUTPUT);
  Blynk.begin(auth, ssid, pass);
  timer.setInterval(1000L, analogSense);   //Waktu pembacaan memory pada deepsleep
//Tampilan Awal  LCD
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("    Penyiram");
  lcd.setCursor(0,1);
  lcd.print("    Otomatis");
  delay(5000);
  lcd.clear();
//Pengulangan hasil pembacaan sensor
  for(int i=0; i<5; i++){
    analogSense();
    delay(500);
}
  //pengaturan untuk timer DeepSleep
  esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
  Blynk.run();
  timer.run(); 
}

void loop()
{
  Blynk.run();
  timer.run();  
}
 void analogSense(){   //Sensor kelembaban tanah
    float soil = analogRead(soilmoisture);  //mendeteksi nilai dari sensor soil moisture
    persen=(soil/8192)*100;  //mempersentasikan hasil pembacaan nilai sensor ke persen
//Tampilan pada serial moitor
    Serial.print("\nSoil Moisture: ");
    Serial.print(soil);
    delay(800);
    Serial.print("Hasil Persen: ");
    Serial.print(persen);
    delay(900);
//Tampilan pada Blynk melalui virtual PIN
    Blynk.virtualWrite(V3, soil);
    Blynk.virtualWrite(V7, persen);

//Untuk kondisi tanah kering
     if(persen>25){  //jika kelembaban tanah <= 25, maka pompa on
    relayON();
    lcd.setCursor(0,0);
    lcd.print("T Kering: ");
    lcd.print(persen);
    lcd.print("%");
    lcd.setCursor(0,1);
    lcd.print("Pompa Nyala");

  }

//Untuk kondisi  tanah basah
    else if(persen<=25){// jika kelembaban tanah > 25 pompa off
    relayOFF();
    lcd.setCursor(0,0);
    lcd.print("T Basah: ");
    lcd.print(persen);
    lcd.print("%");
    lcd.setCursor(0,1);
    lcd.print("Pompa  Mati ");

    }
    delay(100);
  }

//Inisiasi penggunaan relay
  void relayON(){
  digitalWrite(relay, HIGH);
  WidgetLED relay(V8);
  relay.on();
}
void relayOFF(){
  digitalWrite(relay, LOW);
  WidgetLED relay(V8);
  relay.off();
}
//  Sistem Penyiram Tanaman Otomatis Berbasis ESP32
//  KELOMPOK C7
//  ETIKA  TSANI        07
//  ROSHID ARDIANSYAH 21

#define uS_TO_S_FACTOR 1000000 // Mengkonversi milisecon ke secon
#define TIME_TO_SLEEP 30  // waktu menuju sleep 30 secon

//Inisiasi Untuk Tampilan Blynk
#define BLYNK_TEMPLATE_ID           "TMPLn-jQSvce"
#define BLYNK_DEVICE_NAME           "Monitoring Penyiraman Tanaman Otomatis"
#define BLYNK_AUTH_TOKEN            "X1Qx3KVjE4Y3d2ggFk8rfmvElvejLluN"


#define BLYNK_PRINT Serial

//Library Yang Digunakan
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>

char auth[] = BLYNK_AUTH_TOKEN;

// SSID dan Pasword yang  digunakan
char ssid[] = "Redmi Note 9 Pro";
char pass[] = "28100203";



BlynkTimer timer;
//Pin alamat yang digunakan
LiquidCrystal_I2C lcd(0X27 ,16, 2);
const int relay = 14;    // deklarasi pin dht11 14
const int soilmoisture = 34;  //deklarasi pin sensor soilmoisture 34
float persen;

void setup()
{
  
  Serial.begin(115200);
  pinMode (relay,OUTPUT);
  Blynk.begin(auth, ssid, pass);
  timer.setInterval(1000L, analogSense);   //Waktu pembacaan memory pada deepsleep
//Tampilan Awal  LCD
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("    Penyiram");
  lcd.setCursor(0,1);
  lcd.print("    Otomatis");
  delay(5000);
  lcd.clear();
//Pengulangan hasil pembacaan sensor
  for(int i=0; i<5; i++){
    analogSense();
    delay(500);
}
  //pengaturan untuk timer DeepSleep
  esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
  Blynk.run();
  timer.run(); 
}

void loop()
{
  Blynk.run();
  timer.run();  
}
 void analogSense(){   //Sensor kelembaban tanah
    float soil = analogRead(soilmoisture);  //mendeteksi nilai dari sensor soil moisture
    persen=(soil/8192)*100;  //mempersentasikan hasil pembacaan nilai sensor ke persen
//Tampilan pada serial moitor
    Serial.print("\nSoil Moisture: ");
    Serial.print(soil);
    delay(800);
    Serial.print("Hasil Persen: ");
    Serial.print(persen);
    delay(900);
//Tampilan pada Blynk melalui virtual PIN
    Blynk.virtualWrite(V3, soil);
    Blynk.virtualWrite(V7, persen);

//Untuk kondisi tanah kering
     if(persen>25){  //jika kelembaban tanah <= 25, maka pompa on
    relayON();
    lcd.setCursor(0,0);
    lcd.print("T Kering: ");
    lcd.print(persen);
    lcd.print("%");
    lcd.setCursor(0,1);
    lcd.print("Pompa Nyala");

  }

//Untuk kondisi  tanah basah
    else if(persen<=25){// jika kelembaban tanah > 25 pompa off
    relayOFF();
    lcd.setCursor(0,0);
    lcd.print("T Basah: ");
    lcd.print(persen);
    lcd.print("%");
    lcd.setCursor(0,1);
    lcd.print("Pompa  Mati ");
    }
    delay(100);
  }

//Inisiasi penggunaan relay
  void relayON(){
  digitalWrite(relay, LOW);
  WidgetLED relay(V8);
  relay.on();
}
void relayOFF(){
  digitalWrite(relay, HIGH);
  WidgetLED relay(V8);
  relay.off();
}

VIDEO KERJA ALAT Link Video


GitHub Link GitHub





Komentar