Perancangan Sistem Kontrol Kebun Bawang Otomatis Berbasi MikroKontroler


 


1. Tujuan [kembali]

1. Membuat prototype aplikasi Sitem Kontrol Tanaman bawang yang dapat mempermudah dalam mengontrol kelembaban tanah dan kecukupan air pada tanaman bawang 

2. Mengaplikasikan konsep – konsep PWM, ADC, dan teori komunikasi mikrokontroller yang telah dipelajari saat praktikum
A. Alat

a. Soil Moisture



b. Water Sensor
c. Rain Sensor



d. Arduino
e. LCD

f. Motor DC
g. Jumper




 

a. PWM (Pulse Width Modulation) PWM atau kepanjangan Pulse Width Modulation, dalam bahasa Indonesia biasa disebut Modulasi Lebar Pulsa. Pada prinsipnya, PWM adalah salah satu teknik modulasi yang mengubah lebar pulsa (pulse width) dengan nilai frekuensi dan amplitudo (tinggi pulsa) yang tetap. PWM Signal ini digunakan menghasilkan sinyal analog dari perangkat Digital yang salah satu contohnya adalah dari Mikrokontroler. Pembagian Pin PWM:

Setiap Board Arduino memiliki pin PWM dan nilai frekuensi yang berbeda-beda. Karena pada percobaan nanti kita akan menggunakan board arduino nano, maka gunakan salah satu dari pin berikut 3, 5, 6, 9, 10, 11.

PWM pada arduino bekerja pada frekuensi 500Hz, artinya 500 siklus/ketukan dalam satu detik. Untuk setiap siklus, kita bisa memberi nilai dari 0 hingga 255. Ketika kita memberikan angka 0, berarti pada pin tersebut tidak akan pernah bernilai 5 volt (pin selalu bernilai 0 volt). Sedangkan jika kita memberikan nilai 255, maka sepanjang siklus akan bernilai 5 volt (tidak pernah 0 volt). Jika kita memberikan nilai 127 (kita anggap setengah 4 dari 0 hingga 255, atau 50% dari 255), maka setengah siklus akan bernilai 5 volt, dan setengah siklus lagi akan bernilai 0 volt. Sedangkan jika jika memberikan 25% dari 255 (1/4 * 255 atau 64), maka 1/4 siklus akan bernilai 5 volt, dan 3/4 sisanya akan bernilai 0 volt, dan ini akan terjadi 500 kali dalam 1 detik.

b. ADC (Analog to Digital Converter) ADC atau Analog to Digital Converter merupakan salah satu perangkat elektronika yang digunakan sebagai penghubung dalam pemrosesan sinyal analog oleh sistem digital. Fungsi utama dari fitur ini adalah mengubah sinyal masukan yang masih dalam bentuk sinyal analog menjadi sinyal digital dengan bentuk kode-kode digital. Ada 2 faktor yang perlu diperhatikan pada proses kerja ADC yaitu kecepatan sampling dan resolusi. Kecepatan sampling menyatakan seberapa sering perangkat mampu mengkonversi sinyal analog ke dalam bentuk sinyal digital dalam selang waktu yang tertentu. Biasa dinyatakan dalam sample per second (SPS). Sementara Resolusi menyatakan tingkat ketelitian yang dimilliki. Pada Arduino, resolusi yang dimiliki adalah 10 bit atau rentang nilai digital antara 0 - 1023. Dan pada Arduino tegangan referensi yang digunakan adalah 5 volt, hal ini berarti ADC pada Arduino mampu menangani sinyal analog dengan tegangan 0 - 5 volt. Pada Arduino, menggunakan pin analog input yang diawali dengan kode A( A0- A5 padaArduino Uno). Fungsi untuk mengambil data sinyal input analog menggunakan analogRead(pin); 

c. Mikrokontroler Mikrokontroler adalah suatu chip berupa IC (Integrated Circuit) yang dapat menerima sinyal input, mengolahnya dan memberikan sinyal output sesuai dengan program yang diisikan ke dalamnya. Sinyal input mikrokontroler berasal dari sensor yang merupakan informasi dari lingkungan sedangkan sinyal output ditujukan kepada aktuator yang dapat memberikan efek ke lingkungan. Jadi secara sederhana mikrokontroler dapat diibaratkan sebagai otak dari suatu perangkat/produk yang mempu berinteraksi dengan lingkungan sekitarnya. Mikrokontroler pada dasarnya adalah komputer dalam satu chip, yang di dalamnya terdapat mikroprosesor, memori, jalur Input/Output (I/O) dan perangkat pelengkap lainnya. Kecepatan pengolahan data pada mikrokontroler lebih rendah jika dibandingkan dengan PC. Pada PC kecepatan mikroprosesor yang digunakan saat ini telah mencapai orde GHz, sedangkan kecepatan operasi mikrokontroler pada umumnya berkisar antara 1 – 16 MHz. Begitu juga kapasitas RAM dan ROM pada PC yang bisa mencapai orde Gbyte, dibandingkan dengan mikrokontroler yang hanya berkisar pada orde byte/Kbyte. Meskipun kecepatan pengolahan data dan kapasitas memori pada mikrokontroler jauh lebih kecil jika dibandingkan dengan komputer personal, namun kemampuan mikrokontroler sudah cukup untuk dapat digunakan pada banyak aplikasi terutama karena ukurannya yang kompak. Mikrokontroler sering digunakan pada sistem yang tidak terlalu kompleks dan tidak memerlukan kemampuan komputasi yang tinggi. 


d. Komunikasi
Kegunaan dasar dari sistem komunikasi adalah menjalankan pertukaran data antara dua pihak. Pada gambar dibawah ini merupakan suatu model komunikasi yang sederhana yaitu komunikasi dua arah. Pada mikrokontroler ada beberapa komunikasi yaitu:

a. UART (Universal Asynchronous Receiver-Transmitter) adalah bagian perangkat keras komputer yang menerjemahkan antara bit-bit paralel data dan bit-bit serial. UART biasanya berupa sirkuit terintegrasi yang digunakan untuk komunikasi serial pada komputer atau port serial perangkat peripheral. Cara kerja komunikasi UART: 


Data dikirimkan secara paralel dari data bus ke UART1. Pada UART1 ditambahkan start bit, parity bit, dan stop bit kemudian dimuat dalam satu paket data. Paket data ditransmisikan secara serial dari Tx UART1 ke Rx UART2. UART2 mengkonversikan data dan menghapus bit tambahan, kemudia di transfer secara parallel ke data bus penerima

b. Serial Peripheral Interface (SPI) merupakan salah satu mode komunikasi serial synchrounous kecepatan tinggi yang dimiliki oleh ATmega 328. Komunikasi SPI membutuhkan 3 jalur yaituMOSI, MISO, dan SCK. Melalui komunikasi ini data dapat saling dikirimkan baik antara mikrokontroller maupun antara mikrokontroller dengan peripheral lain di luar mikrokontroler. MOSI: Master Output Slave Input Artinya jika dikonfigurasi sebagai master maka pin MOSI sebagai output tetapi jika dikonfigurasi sebagai slave maka pin MOSI sebagai input. MISO: Master Input Slave Output Artinya jika dikonfigurasi sebagai master maka pin MISO sebagai input tetapi jika dikonfigurasi sebagai slave maka pin MISO sebagai output. SCLK: Clock Jika dikonfigurasi sebagai master maka pin CLK berlaku sebagai output tetapi jika 7 dikonfigurasi sebagai slave maka pin CLK berlaku sebagai input. SS/CS: Slave Select/ Chip Select adalah jalur master memilih slave mana yang akan dikirimkan data.

Sinyal clock dialirkan dari master ke slave yang berfungsi untuk sinkronisasi. Master dapat memilih slave mana yang akan dikirimkan data melalui slave select, kemudian data dikirimkan dari master ke slave melalui MOSI. Jika master butuh respon data maka slave akan mentransfer data ke master melalui MISO.

c. Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arahmenggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya.


Pada I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi start, Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2, dan kondisi Stop. Kondisi start dimana saat pada SDA beralih dari logika high ke low sebelum SCL.Kondisi stop dimana saat pada SDA beralih dari logika low ke high sebelum SCL. R/W bit berfungsi untuk menentukan apakah master mengirim data ke slave atau meminta data dari slave. (logika 0 = mengirim data ke slave, logika 1 = meminta data 8 dari slave) ACK/NACK bit berfungsi sebagai pemberi kabar jika data frame ataupun address frame telahditerima receiver.

-        Soil moisture sensor



Soil Moisture Sensor adalah suatu modul yang berfungsi untuk mendeteksi tingkat kelembaban tanah dan juga dapat digunakan untuk menentukan apakah ada kandungan air di tanah/ sekitar sensor. Cara penggunaan modul ini cukup mudah, yakni dengan memasukkan sensor ke dalam tanah dan setting potensiometer untuk mengatur sensitifitas dari sensor. Keluaran dari sensor akan bernilai 1 / 0 ketika kelembaban tanah menjadi tinggi / rendah yang dapat di treshold dengan potensiometer. Spesifikasi dari sensor ini adalah :

1.     Comparator menggunakan LM393

2.     Hanya menggunakan 2 plat kecil sebagai sensor

3.     Supply Tegangan 3.3-5 VDC

4.     Digital output D0 dapat secara langsung dikoneksikan dengan MCU dengan mudah

 


Sensor ini digunakan untuk mengukur kadar air didalam tanah, atau juga bisa untuk menedeteksi cuaca yang terjadi hari kemarin dan hari ini melalui media tanah, prinsip kerja sensor ini sangat simpel yaitu ada dua buah lempengan yang mana jika kedua buah lempengan terkena media penghantar maka elektron akan berpindah dari kutub + ke kutub - sehingga terjadilah arus yang akan menimbulkan tegangan. Pergerakan elektron dimanfaatkan untuk mendeteksi apakah ada air di tanah ataukah tidak, jika tanah basah berarti tanah tersebut mengandung media penghantar, namun jika tanah kering maka tidak mengandung media penghantar elektron, sehingga pada adc mikrokontroller akan terlihat perbedaannya. 

-        Water level Sensor



Prinsip kerja dari sensor water level adalah membaca resistasi yang dihasilkan oleh air   yang mengenai lempengan yang bergaris-garis pada sensor tersebut, semakin banyak air yang mengenai permukaan bergaris garis tersebut maka hambatannya semakin kecil dan ketika tidak ada air yang mengenai lempengan sensor tersebut maka hambatanya sangat besar atau bisa dikatakan tidak terhingga.

Karakteristik:

1)     Working voltage: 5V

2)      Working Current: <20ma

3)     Interface: Analog

4)      Width of detection: 40mm×16mm

5)      Working Temperature: 10℃~30℃

6)     Weight: 3g

7)     Size: 65mm×20mm×8mm

8)     Arduino compatible interface

9)     Low power consumption

 

Pinout: 

a)     "S" stand for signal input 

b)     "+" stand for power supply 

c)     "-" stand for GND

-      Rainsensor 

Rain Sensor (Sensor Hujan) adalah alat yang   dapat   membaca   intensitas air /dengan mengunakan panel sensor air. Panel ini dapat bekerja apabila terhubung dengan komponen lain. Panel ini adalah jenis resistor yang nilai hambatanya dapat berubatergantung dari intensitas keberadaan air yang ada pada permukaan panel. Jika air mengenai permukaan panel semakin kecil hambatanya dalam panel (Sainsmart 2016). Interval Max = 1023,  internal  Min = 0.

Pembacaan sensor untuk  sistem :

1.     Hujan kecil                        : if  (rain >= 600  && rain <=700)

2.     Hujan sedang                    : if  (rain  >=  500  &&  rain <=600)

3.     Hujan deras                       : if  (rain >= 400 && rain <=500)

4.     Hujan sangat deras            : if  (rain < 400).

-  Arduino


Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino yang kita gunakan dalam praktikum ini adalah Arduino Uno yang menggunakan chip AVR ATmega 328P. Dalam memprogram Arduino, kita bisa menggunakan komunikasi serial agar Arduino dapat berhubungan dengan komputer ataupun perangkat lain.

-  LCD



Liquid Crystal Display (LCD) adalah sebuah peralatan elektronik yang berfungsi untuk menampilkan output sebuah sistem dengan cara membentuk suatu citra atau gambaran pada sebuah layar. Secara garis besar komponen penyusun LCD terdiri dari kristal cair (liquid crystal) yang diapit oleh 2 buah elektroda transparan dan 2 buah filter polarisasi (polarizing filter). Struktur LCD dapat dilihat pada gambar berikut:



Keterangan:

-         Film dengan polarizing filter vertical untuk memolarisasi cahaya yang masuk.

-        Glass substrate yang berisi kolom-kolom elektroda Indium tin oxide (ITO).

-        Twisted nematic liquid crystal (kristal cair dengan susunan terpilin).

-        Glass substrate yang berisi baris-baris elektroda Indium tin oxide (ITO).

-        Film dengan polarizing filter horizontal untuk memolarisasi cahaya yang masuk.

-         Reflektor cahaya untuk memantulkan cahaya yang masuk LCD kembali ke mata pengamat.

Sebuah citra dibentuk dengan mengombinasikan kondisi nyala dan mati dari pixel-pixel yang menyusun layar sebuah LCD. Pada umumnya LCD yang dijual di pasaran sudah memiliki integrated circuit tersendiri sehingga para pemakai dapat mengontrol tampilan LCD dengan mudah dengan menggunakan mikrokontroler untuk mengirimkan data melalui pin-pin input yang sudah tersedia.

-  Motor DC

Motor Listrik DC atau DC Motor adalah suatu perangkat yang mengubah energi listrik menjadi energi kinetik atau gerakan (motion). Motor DC ini juga dapat disebut sebagai motor arus searah. Seperti namanya, DC Motor memiliki dua terminal dan memerlukan tegangan arus searah atau DC (Direct Current) untuk dapat menggerakannya.Motor Listrik DC ini biasanya digunakan pada perangkat-perangkat elektronik dan listrik yang menggunakan sumber listrik DC seperti vibrator ponsel, kipas DC dan bor listrik DC.

Motor Listrik DC atau DC Motor ini menghasilkan sejumlah putaran per menit atau biasanya dikenal dengan istilah RPM (Revolutions per minute) dan dapat dibuat berputar searah jarum jam maupun berlawanan arah jarum jam apabila polaritas listrik yang diberikan pada Motor DC tersebut dibalikan. Motor listrik DC tersedia dalam berbagai ukuran rpm dan bentuk. Kebanyakan motor listrik DC memberikan kecepatan rotasi  sekitar 3000 rpm hingga 8000 rpm dengan tegangan operasional dari 1,5V hingga 24V. Apabila tegangan yang diberikan ke motor listrik DC lebih rendah dari tegangan operasionalnya maka akan dapat memperlambat rotasi motor DC tersebut sedangkan tegangan yang lebih tinggi dari tegangan operasional akan membuat rotasi motor DC menjadi lebih cepat. Namun ketika tegangan yang diberikan ke Motor DC tersebut turun menjadi dibawah 50% dari tegangan operasional yang ditentukan maka Motor DC tersebut tidak dapat berputar atau terhenti. Sebaliknya, jika tegangan yang diberikan ke Motor DC tersebut lebih tinggi sekitar 30% dari tegangan operasional yang ditentukan, maka motor DC tersebut akan menjadi sangat panas dan akhirnya akan menjadi rusak.

Pada saat motor listrik DC berputar tanpa beban, hanya sedikit arus listrik atau daya yang digunakannya, namun pada saat diberikan beban, jumlah arus yang digunakan akan meningkat hingga ratusan persen bahkan hingga 1000% atau lebih (tergantung jenis beban yang diberikan). Oleh karena itu, produsen motor DC biasanya akan mencantumkan Stall Current pada Motor DC. Stall Current adalah arus pada saat poros motor berhenti karena mengalami beban maksimal.


4. Listing Program [kembali]




//GERINANDA
//2010953004
//KEL 11

//MASTER

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

 

LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27 for a 16 chars and 2 line display

           

#define SOIL A1

#define WATER A2

#define RAIN A0

//LiquidCrystal lcd(8, 9, 10, 11, 12, 13);        

int nilaiRAIN;

int nilaiSOIL;

int nilaiWATER;

float panjangSensor = 6 ;

void setup()     //Semua kode dalam fungsi ini dieksekusi sekali

{

  lcd.init();

 lcd.backlight();                           //Deklarasi pin A0 sebagai OUTPUT

  pinMode(A1, INPUT);

  pinMode(A2, INPUT);

  lcd.begin(16, 2);                             //Dimensi LCD yang digunakan

  Serial.begin(9600); //Set baud rate 9600

}

 

void loop()   //Semua kode dalam fungsi ini dieksekusi berulang

{

 

  int nilaiWATER = analogRead(WATER);

  float tinggiAir = nilaiWATER * panjangSensor / 1023;

   //lcd.clear();                             //Menghapus layar LCD

   lcd.setCursor(0, 0);

   lcd.print("Tinggi Air = ");

   lcd.setCursor(13, 0);

   lcd.print(tinggiAir);

   lcd.setCursor(14, 0);

   lcd.print("cm");

 

  if (tinggiAir < 3 )

  {

    Serial.println("5");

 //lcd.clear();                             //Menghapus layar LCD

 lcd.setCursor(0, 0);

 lcd.print("Tinggi Air = ");

 lcd.setCursor(13, 0);

 lcd.print(tinggiAir);

 lcd.setCursor(14, 0);

 lcd.print("cm");

    delay(100);

  }

  if (tinggiAir >= 3)

  {

    Serial.println("4");

    delay(100);

    lcd.setCursor(0, 0);

    lcd.print("Tinggi Air = ");

    lcd.setCursor(13, 0);

    lcd.print(tinggiAir);

    lcd.setCursor(14, 0);

    lcd.print("cm");

  }

 

   //SOIL

    nilaiSOIL = analogRead(SOIL);

   

    if (nilaiSOIL > 700) {

      Serial.println("1");

   delay(100);

      //lcd.clear();

      lcd.setCursor(0, 1);                     //Menentukan posisi kursor pada awal penulisan

      lcd.print("Kondisi : Kering");           //Menampilkan text pada LCD

    }

    if(nilaiSOIL<=700) {

      Serial.println("3");

   delay(100);

      //lcd.clear();

      lcd.setCursor(0, 1);                     //Menentukan posisi kursor pada awal penulisan

      lcd.print("Kondisi : Basah.");           //Menampilkan text pada LCD

  }

 

  delay(1000);

 

  //RAIN

    nilaiRAIN = analogRead(RAIN);

    if(nilaiRAIN <550) {

      Serial.println("2");

    delay(100);

    }

    if(nilaiRAIN>=550) {

      Serial.println("6");

    delay(100);

    }

    delay(100);

 

}



 SLAVE



//SLAVE

#include<Servo.h>

Servo servorain;

Servo servosoil;

#define in1 2 //Deklarasi pin 2 sebagai input 1

#define in2 3 //Deklarasi pin 10 sebagai input 2

#define duration 2000 //Deklarasi durasi 2000 ms

 

int pos1 = 0;

int pos2 = 0;

int data;

 

void setup()   //Semua kode dalam fungsi ini dieksekusi sekali

{

   servosoil.attach(10);    

   servorain.attach(9);

   pinMode(in1, OUTPUT); //Deklarasi in1 sebagai OUTPUT

  pinMode(in2, OUTPUT); //Deklarasi in2 sebagai OUTPUT

  Serial.begin(9600);            //Set baud rate 9600

}

void loop()                         //Semua program dalam fungsi ini dieksekusi berulang

{

  if(Serial.available()>0)

  {

    int data = Serial.read();

    if(data=='5')  //Jika data yang dikirimkan berlogika TINGGI AIR < 2

      {

        digitalWrite(in1, HIGH);  //in2 diberi logika 0

        digitalWrite(in2, LOW);

        //  delay(1000);                     //Jarak waktu 1000 ms setelah input dieksekusi

      }      

    else if(data=='3')  //Jika data yang dikirimkan berlogika KONDISI BASAH

      {

        servosoil.write(0);

        delay(15);

      }        

    else if(data=='2')  //Jika data yang dikirimkan berlogika   ADA HUJAN

      {

        servorain.write(90);

        }

    else if(data=='1')  //Jika data yang dikirimkan berlogika   KONDISI KERING

      {

        servosoil.write(90);

        delay(15);

      }

    else if(data=='4'){

        digitalWrite(in1, LOW);  //in2 diberi logika 0 TINGGI AIR > 4

        digitalWrite(in2, LOW);

        }

    if(data=='6'){

        servorain.write(0);  //itidak ada hujan

        delay(100);

        }

  }

}











Cara kerja  dari rangkaian yang telah kelompok kami buat yaitu sebuah sistem kontrol dari tanaman bawang dengan basis mokro kontorler yang mana mikrokontroler ini akan membantu para petani bawang dalam mengontorl tanaman bawang nya. disini kita menggunakan 3 bauh sensor yang bekerja secara terintergrasi. ada sensor rain, water dan soil dimana masing masing sensor bekerja untuk mengontrol kelembapan tanah dari lahan yang di pakai. pertama sensor soil mosture akan mendeteksi apakah tanah dalam keadaan lembab atau kering, jika kering maka sensor akan menghasilkan output berupa tegangan yang mana datanya akan di konversi pada arduino master sehingga akan menghasilkan output berupa motor servo yang akan bergerak membuka katup dari keran atau palang dari sumber tangki air sehingga air akan mengalir ke tanah. jika tanah sudah terdeteksi basah kembali makan servo akan kembali menutup katup dari palang airnya.

selanjutnya untuk mengatur dari suplai air pada bak penampungan makan digunakan sensor water level. water level akan menghitung ketinggian air, jika kondisi air kurang dari batqas yang sudah ditentukan maka outputan dari sensor akan menghidupkan motor dc atau water pump sehingga waterpump akan menghisap air dari sumber atau sumur agar dapat di alirkan ke bak penampungan sementara.

selanjutny ada rain sensor yang akan menutup atap dari lahan, atap dapat berupa terpal yang akan menutup lahan agar supply air pada tanah tidak berlebih. autput brupa motor servo. seperti yang kita tahu terlalu banyak air pada tanaman bawang akan membuat bawang menjadi membusuk karena terlalu lembab pada kondisi tanah.


Berdasarkan percobaan yang sudah dilakukan  yaitu perangcangan sistem kontrol tanamana bawang berbasis mikro kontroler dengan pengaplikasian materi materi yang sudah di pelajari dari mikro kontroler sebelumnya kami dapat menciptakan sebuah prototipe dari sistem ini. dengan memanfaatkan arduino uno sebagai basis dimanan akan diberikan input dari 3 sensor yang ada pada rangkaian dan juga 3 buat outputan. prototipe yang telah kami buat ini kedepannya dapat mempermudah para petani bawang untuk medapat hasill panen yang lebih baik.

File Proteus : Klik Disini...
File HTML : Klik Disini...
Video Prototype : Klik Disini...
Program Arduino Master : Klik Disini...
Program Arduino Slave : Klik Disini...
Library Arduino UNO : Klik Disini...
Data sheet Arduino UNO : Klik Disini...
Data sheet Beardboard : Klik Disini...
Data sheet Jumper : Klik Disini...
Data sheet Motor Dc : Klik Disini...
Data sheet Motor Servo : Klik Disini...







Tidak ada komentar:

Posting Komentar

 BAHAN PORESENTASI UNTUK MATAKULIAH KIMIA 2020 Kelompok 14 Bab 8. Hubungan Periodik Antar Unsur OLEH GERINANDA 2010953004 ...