Perancangan Sistem Pengairan Tanaman Otomatis Menggunakan Grove Moisture Sensor Sen0100 Berbasis Arduino Leonardo dan Monitoring Melalui Wifi

(1)

(2)

(3)

(4)

LAMPIRAN (6)

#include <Adafruit_CC3000.h> #include <ccspi.h>


(5)

#define Wido_IRQ 7 #define Wido_VBAT 5 #define Wido_CS 10 #include "utility/debug.h"

#include <LiquidCrystal.h> LiquidCrystal lcd(8,9,4,5,6,7);

int sensorPin = A1; // inisiasi Pin input nilai analog sensor int sensorValue = 0; // variabel mulai sensor

// Tipe Security : WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA or WLAN_SEC_WPA2

#define WLAN_SECURITY WLAN_SEC_WPA2

#define WLAN_SSID "LG" // Nama SSID Wifi tidak boleh lebih dari 32 karakter

#define WLAN_PASS "lglglglglg" // Password WiFi #define TCP_TIMEOUT 3000 // TCP Timeout

#define TOKEN "oFtshN0z3TIjQwWxH3eTmhV43Hj9dE" // TOKEN Ubidots

#define VARIABLE_ID "5730aa3476254206d2899ede" // ID Variabel pada source yang akan diupload di UBidots

void setup(){

Serial.begin(115200);

Serial.println(F("Hello, CC3000!\n")); /* Initialise the module */

Serial.println(F("\nInitialising the CC3000 ...")); if (!Wido.begin())

{

Serial.println(F("Unable to initialise the CC3000! Check your wiring?"));

while(1); }

/* Attempt to connect to an access point */

char *ssid = WLAN_SSID; /* Max 32 chars */ Serial.print(F("\nAttempting to connect to "));

Serial.println(ssid);

/* NOTE: Secure connections are not available in 'Tiny' mode!

By default connectToAP will retry indefinitely, however you can pass an

optional maximum number of retries (greater than zero) as the fourth parameter.

*/

if (!Wido.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY)) { Serial.println(F("Failed!"));

while(1); }


(6)

/* Wait for DHCP to complete */ Serial.println(F("Request DHCP")); while (!Wido.checkDHCP())

{

delay(100); // ToDo: Insert a DHCP timeout! }

}

uint32_t ip = 0; // Store Ubidots ip address

float temp = 0; // Store temporary sensor data for post Adafruit_CC3000_Client WidoClient;

void loop(){

static unsigned long RetryMillis = 0; static unsigned long uploadtStamp = 0; static unsigned long sensortStamp = 0;

if(!WidoClient.connected() && millis() - RetryMillis > TCP_TIMEOUT){

// Update the time stamp for reconnecting the ip RetryMillis = millis();

Serial.println(F("Trying to connect to Ubidots...")); // Connect to Ubidots

ip = Wido.IP2U32(50,23,124,68); WidoClient = Wido.connectTCP(ip, 80);

Serial.println(F("Successfully connected to Ubidots.")); }

if(WidoClient.connected() && millis() - uploadtStamp > 1000){ // If the device is connected to the cloud server, upload the data every 1000ms.

uploadtStamp = millis(); moisture();

saklar2Ubidots(String variable, String value); if (WidoClient.available())

// if text arrived in from WIDOCLIENT OTA... {

a=(WidoClient.read()); if (a=='1')

{

int sensorValue = 0; digitalWrite(13, HIGH); } if (a=='2') { sensorValue==1023; digitalWrite(13, LOW); delay(10000); } } }


(7)

// mengirim http data stream ke Ubidots bacaan sensor sendstream2Ubidots(String variable, String value); /********** Get the http page feedback and print the response ***********/

unsigned long rTimer = millis();

Serial.println(F("Reading Cloud Response...\r\n")); while (millis() - rTimer < 2000) {

while (WidoClient.connected() && WidoClient.available()) {

char c = WidoClient.read(); Serial.print(c);

} }

delay(1000); // Wait for 1s to finish posting the data stream

WidoClient.close(); // Close the service connection RetryMillis = millis(); // Reset the timer stamp for applying the connection with the service

} }

void moisture() {

sensorValue = analogRead(sensorPin); // membaca nilai keluaran sensor if(sensorValue<=300 ){ digitalWrite(13, HIGH); lcd.print(“KERING”); } if(sensorValue>700 ){ lcd.print(“BASAH”); }

else if(sensorValue >=300 &&sensorValue <=700){ digitalWrite(13, LOW);

lcd.print(“LEMBAB”) }

}

void sendstream2Ubidots(String variable, String value){

Serial.print("Free RAM: "); Serial.println(getFreeRam(), DEC);

// Variables for storing the length of http package body int length = 0;

char lengthstr[5];


(8)

Serial.println(httpBodyPackage); // Debug the http body stream

//Make an HTTP request to the Ubidots server Serial.print(F("Sending Http Request..."));

WidoClient.fastrprint(F("POST /api/v1.6/variables/")); WidoClient.fastrprint(VARIABLE_ID); WidoClient.fastrprintln(F("/values HTTP/1.1")); WidoClient.fastrprintln(F("Host: things.ubidots.com")); WidoClient.fastrprint(F("X-Auth-Token: ")); WidoClient.fastrprintln(TOKEN); WidoClient.fastrprintln(F("Content-Type: application/json")); WidoClient.fastrprint(F("Content-Length: ")); WidoClient.println(String(httpBodyPackage.length())); WidoClient.fastrprintln(F("")); WidoClient.println(httpBodyPackage); Serial.println(F("Done...")); }

void saklar2Ubidots(String variable, String value){

String httpBodyPackage = "{\"value\":" + value + "}"; Serial.println(httpBodyPackage); // Debug the http body stream

//Make an HTTP request to the Ubidots server Serial.print(F("Sending Http Request...")); Serial.print(F("Sending Http Request..."));

WidoClient.fastrprint(F("GET /api/v1.6/variables/")); WidoClient.fastrprint(VARIABLE_ID); WidoClient.fastrprint(F("/values/?page_size=1&token=")); WidoClient.fastrprint(TOKEN); WidoClient.fastrprintln(F(" HTTP/1.1")); WidoClient.fastrprintln(F("Content-Type: application/json")); WidoClient.fastrprintln(F("Host: things.ubidots.com")); WidoClient.fastrprintln(F("Connection: close")); WidoClient.fastrprintln(); Serial.println(F("Done...")); }


(9)

DAFTAR PUSTAKA

Arnold, James E. 1999. Soil Moisture. USA: GHCC, Inc.

D.Kotaiah Swamy, G.Rajesh, M.Jaya Krishna Pooja, A.Rama Krishna. 2013.Microcontroller Based Drip Irrigation System. International Journal of Emerging Science and Engineering (IJESE).

Gardner, W. 1996. Method of Soil Analysis. Second Edition. Wisconsin: ASA, Inc., SSSA, Inc.

Hermawan, B. 2001. Korelasi antara Berat Volume dan Impedansi Listrik Tanah. Percobaan Laboratorium. JIPI.

Ihsan, Muhammad. 2012. Pengukuran Kelembaban Tanah Dengan Kadar Air Yang Bervariasi Menggunakan Sensor Kelembaban Tanah SEN0057 dan VH 400. Bogor : Institut Pertanian Bogor.

Isnainin, Rahmat. 2012. Rancangan dan Uji Coba Otomatisasi Irigasi Curah. Jawa Barat : Universitas Agrikultur Bogor.

Istiyanto, J.E. 2013. Pengantar Elektronika & Instrumentasi : PendekatanProject Arduino & Android. Yogyakarta : ANDI.

Jamulya dan Woro, Suratman. 1993. Pengantar Ilmu Tanah. UGM Press. Yogyakarta.

Jenny, Hans. 1994. Factors of Soil Formation. DOVER PUBLICATIONS, INC. New York.

Jury, W.A., W.R. Gardner and W.H. Gradner. 1991. Soil Physics. Fifth Edition. John Wiley and Sons Inc. Canada.


(10)

Kittel, C. 1996. Introduction to Solid State Physics. Singapore: John Willey And Sons.

Nedler, A., S. Dasberg, dan I. Lapid. 1991. Time Domain Reflectrometry

Measurements of Water Content and Electrical Conductivity of Layered Soil Columns. Soil Sci. Soc. Am. J.

Pamungkas, H.Y. 2011.Alat Monitoring Kelembaban Tanah dalam Pot Berbasis Mikrokontroler ATmega168 dengan Tampilan Output pada Situs Jejaring Sosial Twitter untuk Pembudidaya dan Penjual Tanaman Hias Anthurium, Tugas Akhir, PENS-ITS.

Prasetyo, E.N. 2015. Prototype Penyiram Tanaman Persemaian Dengan Sensor Kelembaban Tanah Berbasis Arduino. [Skripsi]. Surakarta : Universitas Muhammadiyah Surakarta.

Suyono dan Sudarmadil, 1997. Hidrologi Dasar. Yogyakarta: Diktat Kuliah

Swamy, D.K., Rajesh, G., Pooja, M.J.K., Krishna, A.R., 2013. Microcontroller Based Drip Irrigation System. International Journal of Emerging Science and Engineering (IJESE).

Wobschall, D. 1978. A Frequency Shift Dielectric Soil Moisture Sensor, IEEE Trans. Geosci.Elec.,GE-16.


(11)

Gambar 2.19 Ubidots Website

BAB 3

PERANCANGAN SISTEM


(12)

Gambar 3.1 Diagram Blok Sistem

3.1.1. Fungsi tiap blok diagram

Fungsi tiap blok diagram pada Gambar 3.1, yaitu :

1. Arduino leonardo : sebagai pusat kendali dari seluruh rangkaian, dimana mikrokontroller akan mengecek sinyal yang dikirimkan oleh sensor.

WiFi

Arduino Leonardo Power Supply

5V

Grove Moisture Sensor SEN0100

Relay LCD 20x4

Power Supply 12V Modem

(Hotspot)

Android Atau

PC SERVER

UBIDOTS

Tanah

Mini Water Pump 12V


(13)

2. Grove Moisture Sensor : sebagai nilai input analog. 3. LCD 20x4 : sebagai output tampilan.

4. Power Supply 5V : sebagai sumber tegangan dari arduino.

5. Power Supply 12V : sebagai sumber tegangan dari relay.

6. Relay :sebagai penentu kerja mini water pump 9V.

7. Mini Water Pump 12V :sebagaipengatur kelembaban tanah pada

media tanam.

8. Android (PC) :sebagai perangkat akses untuk memonitor

dan mengontrol sistem.

9. Modem (hotspot) : sebagai internet gateway antara arduino dan

perangkat akses (android atau pc). 10. WiFi : sebagai komunikasi antara arduino dan

server ubidots.

3.2. Rangkaian Arduino Leonardo

Rangkaian sistem minimum Arduino Leonardo dapat dilihat pada Gambar 3.2 di bawah ini :


(14)

Gambar 3.2 Rangkaian Sistem Minimum Arduino Leonardo

Dari Gambar 3.2, Rangkaian tersebut berfungsi sebagai pusat kendali dari seluruh sistem yang ada. Komponen utama dari rangkaian ini adalah IC Mikrokontroler ATMega32U4. Semua program diisikan pada memori dari IC ini sehingga rangkaian dapat berjalan sesuai dengan yang dikehendaki.

3.3. Rangkaian Grove Moisture Sensor SEN0100

Grove Moisture Sensor SEN0100 adalah suatu alat yang terbuat dari materi logam dengan bahan tertentu seperti terlihat pada Gambar 3.3.


(15)

Gambar 3.3.Grove Moisture Sensor SEN0100

Grove Moisture Sensor SEN0100 yang terbuat dari logam ini digunakan sebagai sensor untuk pengukuran kadar air di dalam tanah.

Gambar 3.4.Rangkaian Grove Moisture Sensor SEN0100 3.4. Rangkaian Power Supply

Rangkaian ini berfungsi untuk memberikan supply tegangan ke seluruh rangkaian yang ada. Rangkaian PSA yang dibuat terdiri dari dua keluaran, yaitu 5


(16)

volt dan 12 volt, keluaran 5 volt digunakan untuk mensupplay tegangan ke seluruh rangkaian, sedangkan keluaran 12 volt digunakan untuk mensuplai tegangan ke relay. Rangkaian power supplay ditunjukkan pada Gambar 3.4 berikut ini :

Vin +XXV

GND

Vin +XXV

GND V in + X XV GN D X1 UR1 78xx C1 2200uF/ 35v C3 2200uF/ 35v C6 100nF C5 10/25 D2 1N4004 L2 R2 470R 1/2w C2 100nF C4 10/25 D1

1N4004 470RR2

1/2w COM L1 V+ V-X2 UR 3 7805 C7 1000 uF / 25V C8 1 uF /50V B1 KBL481

Gambar 3.4 Rangkaian Power supply

Trafo CT merupakan trafo stepdown yang berfungsi untuk menurunkan tegangan dari 220 volt AC menjadi 12 volt AC. Kemudian 12 volt AC akandisearahkan dengan menggunakan dioda, selanjutnya 12 volt DC

akandiratakan oleh kapasitor 2200 μF. Regulator tegangan 5 volt

(LM7805CT)digunakan agar keluaran yang dihasilkan tetap 5 volt walaupun terjadi perubahanpada tegangan masukannya. LED hanya sebagai indikator apabila PSAdinyalakan.


(17)

3.5. Rangkaian LCD 20x4

Pada alat ini, display yang digunakan adalah LCD (Liquid Crystal

Display) 20x4.Untuk blok ini tidak ada komponen tambahan

karenamikrokontroler dapat memberi data langsung ke LCD, pada LCD Hitachi - M1632 sudah terdapat driver untuk mengubah data ASCII output mikrokontroler menjadi tampilan karakter. Pemasangan potensio sebesar 5 KΩ untuk mengatur kontras karakter yang tampil. Gambar 3.6 berikut merupakan Gambar rangkaian LCD yang dihubungkan ke mikrokontroler.

GND VCC VO RS R/W E

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 DB0DB1DB2DB3DB4DB5DB6 DB7 A K

Pin Digital Ard uino

Penampil

(LCD 20x4)

+5V +5V


(18)

3.6. Perancangan WiFi

Modul WiFi dalam penelitian ini telah terintegrasi dengan arduino leonardo dalam satu papan modul WiDO. Modul WiFi yang terintegrasi adalah WG 1300-BO. Perancangan tidak lagi membutuhkan komponen eksternal hanya modifikasi program. Rangkaian skematik WiFi yang ada pada papan modul WiDO dapat dilihat pada Gambar 3.7.

Gambar 3.7 Skematik WiFI WG1300-BO

Modifikasi program yang dilakukan pada Arduino IDE adalah dengan penambahan library yang sesuai dengan modul WiFi WG 1300-BO yaitu Adafruit_CC3000.h.. Library ini harus terlebih dahulu ditambahkan secara manual melalui Arduino IDE. Langkah pertama ialah dengan mengunduh library Adafruit_CC3000.h dalam fromat *.zip, kemudian tambahkan pada Arduino IDE, dengan langkah Scketch>Import Library>Add Library>pilih file *.zip yang telah diunduh, kemudian library akan secara otomatis masuk ke dalam Arduino IDE.


(19)

3.7. Flowchart Sistem

Start

Inisialisasi Port

Grove Moisture Sensor SEN0100

Cek Kondisi Tanah Basah

Mengeluarkan Perintah Ke

Mini Water Pump

Memberikan laporan dari Androi d ke Arduino melalui WiFi B ahwa

Tanah kering

Nyalakan Pompa

Tanaman Tersiram

Selesai

Memberikan laporan dari Androi d ke Arduino melalui WiFi B ahwa

Tanah Basah

Matikan Pompa Ya

Tidak


(20)

Dari Gambar 3.8, terlihat bahwa proses pengukurankelembaban tanah dapat dilakukan secara otomatis oleh program. Sistem akan mengecek apakah tanah kering atau basah. Jika tanah basah maka sistem akan memberikan laporan dari android ke arduino melalui bluetooth bahwa tanah basah dan pompa dimatikan. Sebaliknya jika tanah kering maka pompa dinyalakan.


(21)

BAB 4

PENGUJIAN RANGKAIAN

4.1. Pengujian Rangkaian Power Supply

Pengujian rangkaian power supply ini bertujuan untuk mengetahui teganganyang dikeluarkan oleh rangkaian tersebut, dengan mengukur tegangan keluarandari power supply menggunakan multimeter digital. Power supply ini terdiri atas dua tegangan keluaran. Setelah dilakukanpengukuran maka diperoleh besarnya tegangan keluaran sebesar +5 volt dan +12,07, seperti pada gambr 4.1 dan 4.2. Denganbegitu dapat dipastikan apakah terjadi kesalahan terhadap rangkaian atau tidak.Hasil tersebut dikarenakan beberapafaktor, diantaranya kualitas dari tiap-tiap komponen yang digunakan nilainya tidak murni.Selain itu, tegangan jala-jala listrik yang digunakan tidak stabil.


(22)

Gambar 4.2 Hasil Pengukuran Tegangan Keluaran 12V

4.2. Pengujian Arduino Leonardo

Pengujian pada rangkaian Mikrokontroler Arduino Leonardo ini dapat dilakukan dengan menghubungkan rangkaian ini dengan 3 Pin Grove Moisture Sensor yang terdiri dari VCC, GND, dan SIG. VCC dari sensor dihubungkan ke Pin 14 (VCC) dari Arduino Leonardo , GND dari sensor dihubungkan ke Pin 11 (GND) dari Arduino Leonardo, dan SIG dari sensor dihubungkan ke Pin 36 (A0) dari Arduino Leonardo.Langkah selanjutnya adalah memberikan program sederhana pada mikrokontroler Arduino Leonardo, program yang diberikan adalah sebagai berikut:

int sensorPin = A0; int sensorValue = 0;

void setup() {

// declare the ledPin as an OUTPUT: Serial.begin(9600);

}


(23)

// read the value from the sensor:

sensorValue = analogRead(sensorPin); delay(10000);

Serial.print("sensor = " ); Serial.println(sensorValue);

}

Setelah dilakukan pengujian melalui program sederhana, diambil kesimpulan bahwa arduino dapat bekerja dengan baik, hal itu ditunjukkan dengan tampilnya hasil keluaran data bacaan dari sensor pada serial monitor di Arduino IDE seperti yang ditunjukkan pada Gambar 4.3.

Gambar 4.3 Hasil Keluaran Sensor pada serial monitor Arduino IDE

4.3. Interface LCD ke Arduino

Bagian terdiri dari sebuah LCD dot matriks 20x4 karakter yang berfungsi sebagai tampilan hasil pengukuran dan tampilan dari beberapa keterangan. Kaki 1 dan 16 pada LCD dihubungkan ke GND, kaki 2 pada LCD dihubungkan ke +5V, kaki 3 pada LCD dihubungkan ke resistor variabel, kaki (4,6,11,12,13,14) pada LCD dihubungkan ke pin digital (8,9,4,5,6,7) pada arduino, kaki 15 pada LCD


(24)

bentuk alfabet dan numerik pada LCD.Display karakter pada LCD diatur oleh pin EN, RS dan RW: Jalur EN dinamakan Enable. Jalur ini digunakan untuk memberitahu LCD bahwa anda sedang mengirimkan sebuah data. Untuk mengirimkan data ke LCD, maka melalui program EN harus dibuat logika low “0” dan set ( high ) pada dua jalur kontrol yang lain RS dan RW. Jalur RW adalah jalur kontrol Read/ Write. Ketika RW berlogika low (0), maka informasi pada bus data akan dituliskan pada layar LCD. Ketika RW berlogika high ”1”, maka program akan melakukan pembacaan memori dari LCD. Sedangkan pada aplikasi umum pin RW selalu diberi logika low ( 0 )

Berdasarkan keterangan di atas maka kita sudah dapat membuat progam untuk menampilkan karaker pada display LCD seperti pada Gambar 4.4. Adapun program yang diisikan ke mikrokontroller untuk menampilkan karakter pada display LCD adalah sebagai berikut:


(25)

4.4. Pengujian Groove Moisture Sensor SEN0100

Sensor ini bekerja dengan sistem analog, sehingga dihubungkan ke Pin analog di arduino. Sementara Pin GND pada arduino berfungsi sebagai jalur masukan ground. Kabel USB pada arduino dihubungkan dengan port USB laptop dengan tujuan untuk komunikasi serial dengan laptop dan memberikan daya pada arduino agar tetap bekerja.

#include <LiquidCrystal.h> LiquidCrystal lcd(8,9,4,5,6,7); int sensorPin = A1;

int sensorValue = 0; void setup() {

Serial.begin(9600); lcd.begin(16, 2); }

void loop() {

sensorValue = analogRead(sensorPin); Serial.print("sensor = " );

Serial.println(sensorValue); lcd.setCursor(2,0);

lcd.print("SENSOR = " ); lcd.print(sensorValue); delay(500); lcd.clear(); if(sensorValue<=300 ){ lcd.setCursor(4,1); lcd.print("{KERING}"); }

if(sensorValue >=300 &&sensorValue <=700){ lcd.setCursor(4,1);

lcd.print("{LEMBAB}"); }

else if(sensorValue >=700){ lcd.setCursor(4,1);

lcd.print("{BASAH}"); }


(26)

Pengujian sensor dilakukan dengan mengukur kelembaban tanah yang diberi air hingga pada titik jenuh, dalam kasus ini tanah yang digunakan untk pengujian adalah tanah kompos yang telah dikeringkan terlebih dahulu dengan cara dipanggang sebanyak 400gr kemudian diberi air hingga 400 ml dengan interval 40 ml.. Pengukuran dilakukan di tiga titik pada wadah, seperti ditunjukkan pada Gambar 4.5.

Gambar 4.5 Pengukuran kelembaban tanah di tiga titik pada wadah

Setiap kali air ditambahkan, tanah terlebih dahulu diaduk selama 5 menit lalu kemudian diambil data pengukurannya.Berikut adalah hasil pengujiannya :

Tabel 4.1. Pengujian Grove Moisture Sensor SEN0100

Volume Air Posisi Pengukuran Nilai Rataan (ml) Titik 1 (bit) Titik 2 (bit) Titik 3 (bit) Sensor (bit)

0 62 45 28 45

40 368 380 370 373

80 612 596 602 603

120 659 683 692 678

160 745 712 730 729

200 739 740 735 738

240 749 744 748 747

280 750 753 753 752

320 756 755 756 756

360 759 759 761 760


(27)

Berdasarkan data pada Tabel 4.3, nilai yang dibaca oleh grove moisture sensor menghasilkan jumlah bit yang besar pada tanah dengan kandungan air yang banyak dan sebaliknya, menghasilkan jumlah bit yang kecil pada tanah dengan kandungan air yang lebih sedikit. Hasil dari kedua persamaan dibawah ini dapat dilihat pada Tabel 4.2.Untuk mengetahui tegangan yang masuk pada sensor maka digunakan Persamaan (1) dan untuk mengetahui %Rh maka digunakan Persamaan (2) seperti berikut :

5.

V =

Jumlah Bit

2�−1

x 5 V

………..(1)

Dimana :

V = Tegangan yang masuk pada sensor (volt)

n = Kemapuan olah data mikrokontroler arduino mega2560 sebasar 10 bit Dan untuk mengetahui % Rh digunakan persamaan 2 berikut :

%Rh =

Ma

Mt

x 100

%...(2)

Dimana :

%Rh=Persentase kelembaban tanah pada sensor (%) Ma = Massa Air (gr)


(28)

Tabel 4.2. Hasil Pengujian Grove Moisture Sensor SEN0100 (massa tanah kering = 400 gram)

Volume Air (ml)

Nilai bacaan sensor (bit)

Tegangan

sensor (V) %Rh

Responsifitas (%Rh/mV)

0 45 0.22 0 0.000

40 373 1.82 10 0.005

80 603 2.95 20 0.007

120 678 3.31 30 0.009

160 729 3.56 40 0.011

`200 738 3.61 50 0.014

240 747 3.65 60 0.016

280 752 3.68 70 0.019

320 756 3.69 80 0.022

360 760 3.71 90 0.024

400 774 3.78 100 0.026

Berdasarkan Tabel 4.2 di atas terlihat jelas bahwa semakin besar nilai kelembaban tanah maka nilai tegangan (voltase) tanah yang dikeluarkan oleh grove moisture sensor semakin besar pula.

Gambar 4.6 Grafik Perbandingan Tegangan dengan Kelembaban Tanah y = 0.004x + 3.4072

0,00 0,50 1,00 1,50 2,00 2,50 3,00 3,50 4,00

0 20 40 60 80 100 120

O ut put Se ns or ( V )

Kelembaban Tanah/Rh (%)

Grafik Perbandingan Output Sensor (V) vs Kelembaban Tanah/Rh (%)


(29)

Terlihat dari Gambar 4.6, semakin lembab kondisi tanah membuat tanah lebih mudah menghantarkan listrik (resistansi kecil). Jika resistansinya kecil, maka nilai voltase tanah semakin besar. Sedangkan tanah yang kering sangat sulit menghantarkan listrik (resistansi besar).

Jika resistansinya besar, maka nilai voltase tanah semakin kecil. Dari nilai %Rh dan voltase dapat diperoleh nilai sensitivitas dari grove moisture sensor yang menunjukkan seberapa besar kemampuan sensor untuk mengukur nilai kelembaban tanah. Dari Gambar 4.6 diketahui bahwa responsifitas sensor meningkat secara signifikan pada data dengan kelembaban 0% hingga 40%, disisi lain responsifitas sensor terlihat linier pada data dengan kelembaban 40% hingga 100% (jenuh), ini ditunjukkan dengan persamaan y = 0.004x + 3.0472.

4.5 Pengujian Pompa (Mini Water Pump 12V)

Pompa adalah suatu perangkat keras yang berfungsi mengalirkan, memindahkan, bahkan dapat pula mensirkulasikan fluida cair. Besarnya laju aliran air (dalam bentuk volume air) yang melewati pipa pada pompa per satuan waktu disebut dengan debit air, secara matematis dapat dirumuskan seperti pada Persamaan (3) berikut ini :

Q = V

t... (3) Dimana :

Q = Debit Air (m3/s) V = Volume Air (m3) t = Selang Waktu (s)


(30)

Tabel 4.3 Hasil Pengujian Debit Air Waktu (s) Volume (cm3) Q ( cm3/s)

10 75 7,5

20 170 8,5

30 235 7,83

40 310 7,75

50 370 7,4

60 450 7,5

70 530 7,57

80 605 7,56

90 680 7,56

100 770 7,7

Rata-rata 7,69

Debit air yang dikeluarkan oleh pompa dihitung dengan cara mengukur volume air yang dihasilkan pompa pada selang waktu yang ditentukan. Pengukuran pada pengujian ini dimulai dari 10 detik sampai dengan 100 detik dengan interval 10 seperti yang terlihat pada Tabel 4.3. Pada tersebut dapat disimpulkan bahwa dari 10 (sepuluh) kali pengukuran debit air yang dihasilkan oleh pompa bernilai konstan dengan rata-rata 7,69 cm3/detik.

4.6 Pengujian Wifi

Pengujian Wifi dilakukan untuk menguji jarak jangkauan Modul Wifi untuk dapat terhubung dengan access point atau internet hotspot. Pengujian dilakukan dengan memposisikan papan modul WiDO (Modul Wifi telah terintegrasi di dalamnya)pada suatu tempat dan mengubah jarak access point dalam hal ini modem atau mobile hotspot, dengan interval jarak 4 m di dalam ruangan dan 8 m di luar ruangan. Setiap dilakukan pergeseran jarak modem akan didiamkan selama kurang lebih 2(dua) menit untuk menstabilkan sinyal. Data


(31)

pengujian diambil di dalam dan diluar ruangan, sehingga dapat dibandingkan seberapa besar pengaruh ruangan dalam mempengaruhi RSSI (Received Signal Strenght Indicator) dari Wifi WG1300-BO.

Tabel 4.4 Hasil Pengujian dalam ruangan Wifi WG1300-BO

Jarak (m) RSSI (%) Status

0 83 Connected

4 63 Connected

8 55 Connected

12 41 Connected

16 41 Connected

20 39 Connected

24 38 Connected

28 39 Connected

32 38 Connected

34 31 Connected

38 25 Connected

42 18 Connected

46 - Unconnected

Tabel 4.4 Hasil Pengujian luar ruangan Wifi WG1300-BO

Jarak (m) RSSI (%) Status

0 83 Connected

8 76 Connected

16 66 Connected

24 55 Connected

32 52 Connected

40 46 Connected

48 41 Connected

56 38 Connected

64 25 Connected

72 23 Connected

80 18 Connected


(32)

Setelah dilakukan pengujian dapat disimpulkan jarak optimal alat pada dalam ruangan adalah sekitar 40 m seperti terlihat pada Tabel 4.4 dan pada luar ruangan adalah sekitar 70 m seperti terlihat pada Tabel 4.5, melebihi jarak tersebut kondisi sinyal sudah tidak stabil atau bahkan sudah terputus.

4.7 Pengujian Pengiriman Data ke Server Ubidots

Pengiriman data hasil baccan sensor ke server Ubidots dilakukan melalui jaringan internet. Data hasil bacaan sensor yang telah diubah menjadi data digital akan ditransmisikan oleh wifi terlebih dahulu ke access point (Modem/Mobile Hotspot) lalu dikirim melalui jaringan internet menuju server Ubidots, sehingga dapat diakses dari berbagai perangkat yang terhiubung dengan internet seperti Android dan PC yang terlihat pada Gambar 4.7 dan Gambar 4.8.

Berikut adalah program pada Arduino IDE yang mengirimkan data ke server Ubidots :

#include <LiquidCrystal.h> #include <Adafruit_CC3000.h> #include <ccspi.h>

#include <SPI.h> #define Wido_IRQ 7 #define Wido_VBAT 5 #define Wido_CS 10 #include "utility/debug.h"

Adafruit_CC3000 Wido = Adafruit_CC3000(Wido_CS, Wido_IRQ, Wido_VBAT,SPI_CLOCK_DIVIDER);

#define WLAN_SECURITY WLAN_SEC_WPA2

#define WLAN_SSID "LG"

#define WLAN_PASS "lglglglglg"

#define TCP_TIMEOUT 3000

#define TOKEN "oFtshN0z3TIjQwWxH3eTmhV43Hj9dE"

#define VARIABLE_ID "5730aa3476254206d2899ede" void setup(){

pinMode(13, OUTPUT); lcd.begin(16, 2);

Serial.begin(115200);

Serial.println(F("Hello, CC3000!\n"));


(33)

if (!Wido.begin()) {

Serial.println(F("Tidak dapat menginisialisasi WiDO CC3000! Cek Wiring?"));

while(1); }

char *ssid = WLAN_SSID;

Serial.print(F("\nMenghubungkan dengan SSID ")); Serial.println(ssid);

if (!Wido.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY)) { Serial.println(F("Failed!")); while(1); } Serial.println(F("Connected!")); Serial.println(F("Meminta DHCP")); while (!Wido.checkDHCP()) { delay(100); } }

uint32_t ip = 0; float temp = 0;

Adafruit_CC3000_Client WidoClient;

void loop(){

static unsigned long RetryMillis = 0; static unsigned long uploadtStamp = 0; static unsigned long sensortStamp = 0;

if(!WidoClient.connected() && millis() - RetryMillis > TCP_TIMEOUT){

RetryMillis = millis();

Serial.println(F("Trying to connect to Ubidots..."));

ip = Wido.IP2U32(50,23,124,68); WidoClient = Wido.connectTCP(ip, 80); Serial.println(F("Successfully connected to

Ubidots.")); }

if(WidoClient.connected() && millis() - uploadtStamp > 1000){

uploadtStamp = millis();

sendstream2Ubidots(VARIABLE_ID, String(analogRead(0))); unsigned long rTimer = millis();

Serial.println(F("Reading Cloud Response...\r\n")); while (millis() - rTimer < 2000) {

while (WidoClient.connected() && WidoClient.available()) {

char c = WidoClient.read(); Serial.print(c);


(34)

delay(1000); WidoClient.close(); RetryMillis = millis(); }

}

void sendstream2Ubidots(String variable, String value){ Serial.print("Free RAM: "); Serial.println(getFreeRam(),

DEC); int length = 0; char lengthstr[5];

String httpBodyPackage = "{\"value\":" + value + "}"; Serial.println(httpBodyPackage); Serial.print(F("Sending Http Request..."));

WidoClient.fastrprint(F("POST /api/v1.6/variables/")); WidoClient.fastrprint(VARIABLE_ID);

WidoClient.fastrprintln(F("/values HTTP/1.1"));

WidoClient.fastrprintln(F("Host: things.ubidots.com")); WidoClient.fastrprint(F("X-Auth-Token: "));

WidoClient.fastrprintln(TOKEN);

WidoClient.fastrprintln(F("Content-Type:application/json")); WidoClient.fastrprint(F("Content-Length: "));

WidoClient.println(String(httpBodyPackage.length())); WidoClient.fastrprintln(F(""));

WidoClient.println(httpBodyPackage); Serial.println(F("Done...")); }


(35)

Gambarr 4.8 Tampilan Ubidots pada PC

Pada pengujian pengiriman data ke server Ubidots, diamati bahwa jeda waktu pengiriman data sangat bergantung pada kualitas dari jaringan internet itu sendiri. Dari Penguian selama 1 hari, koneksi dengan server Ubidots tetap stabil walaupun koneksi sempat beberapakali terputus, tetapi papan modul WiDO dapat dengan baik melakukan reconnect (koneksi ulang).

4.8 Pengujian penyiraman otomatis

Pengujian penyiraman otomatis ini dilakukan selama 3 hari. Pengujian dilakukan di lantai 4 Gedung P2F (Pusat Penelitian Fisika) LIPI, Kawasan Puspitek, Tangerang Selatan. Gambar 4.9 merupakan tempat penelitian dilakukan. Tanah kompos dengan berat 500 gram dengan nilai kelembaban di bawah 10 % diletakkan pada lokasi dan dipantau perubahan kondisinya melalui android. Data pengujian diambil pada pagi hingga sore hari sehingga dapat diamati perubahan kelembaban tanah akibat penguapan oleh sinar matahari.


(36)

Gambar 4.9Pengujian penyiraman otomatis

Tabel 4.5 Tabel pengujian penyiraman otomatis

Hari Waktu Keluaran

Sensor (bit) Kondisi Tanah Kondisi Pompa

1

09.00 276 KERING HIDUP

11.00 687 LEMBAB MATI

13.00 660 LEMBAB MATI

15.00 612 LEMBAB MATI

17.00 580 LEMBAB MATI

2

09.00 479 LEMBAB MATI

11.00 388 LEMBAB MATI

13.00 298 KERING HIDUP

15.00 688 LEMBAB MATI

17.00 670 LEMBAB MATI

3

09.00 589 LEMBAB MATI

11.00 512 LEMBAB MATI

13.00 468 KERING MATI

15.00 320 LEMBAB MATI

17.00 299 LEMBAB HIDUP

Dari data pengujian didapatkan kesimpulan bahwa banyaknyapenyiraman pada tanah kompos 500 gr selama 1 hari adalah sebanyak 1 kali. Perubahan kondisi tanah dari kondisi lembab menuju kondisi kering membutuhkan waktu selama sehari.


(37)

Gambar 4.10 Grafik Pengukuran Kelembaban Tanah dalam 3 hari

276 298 299

0 100 200 300 400 500 600 700 800

09:00:00 11:00:00 13:00:00 15:00:00 17:00:00

Grafik Pengukuran Kelembaban Tanah


(38)

BAB 5

PENUTUP

5.1 KESIMPULAN

Setelah melakukan tahap perancangan dan pembuatan sistem yang kemudian dilanjutkan dengan tahap pengujian dan analisa maka dapat diambil kesimpulan sebagai berikut :

1. Sensitivitas sensor meningkat secara signifikan pada data dengan kelembaban 0% hingga 40%, sehingga dapat diasumsikan bahwa pada saat tanah diberi air nilai resistansi listrik tanah menurun sehingga tegangan yang mengalir semakin besar. Disisi lain, sensitivitas sensor terlihat linier pada data dengan kelembaban 40% hingga 100% (jenuh), ini ditunjukkan dengan persamaan y = 0.004x + 3.0472.

2. Dari 10 (sepuluh) kali pengukuran debit air yang dihasilkan oleh pompa yang pengujiannya dimulai dari 10 detik sampai dengan 100 detik dengan interval 10 diperoleh hasil debit air dengan rata-rata 7,69 cm3/detik.

3. Pada pengujian pengiriman data ke server Ubidots, diamati bahwa jeda waktu pengiriman data sangat bergantung pada kualitas dari jaringan internet itu sendiri. Dari Penguian selama 1 hari, koneksi dengan server Ubidots tetap stabil walaupun koneksi sempat beberapakali terputus, tetapi papan modul WiDO dapat dengan baik melakukan reconnect (koneksi ulang).

4. Banyaknya penyiraman pada tanah kompos 500 gr selama 1 hari adalah sebanyak 1 kali. Perubahan kondisi tanah dari kondisi lembab menuju


(39)

kondisi kering membutuhkan waktu selama sehari.Tanaman dapat dikontrol baik itu secara manual, otomatis berdasarkan sensor, dan monitoring melalui Wifi.

5.2. Saran

Penulis menyadari bahwa alat ini masih sangat membutuhkan banyak pengembangan baik dari segi penggunaan dan sistem kerja, maka penulis mempunyai beberapa saran yakni :

1. Untuk kedepannya alat ini dapat dikembangkan lagi dengan menambahkan sensor kelembaban dan suhu, sehingga menambah informasi kondisi tanaman bagi petani.

2. Untuk kedepannya alat ini dapat dikembangkan lagi dengan menambahkan sistem pemupukan otomatis berdasarkan kondisi tanaman atau pun dengan penjadwalan.


(40)

BAB 2

LANDASAN TEORI

Dalam Bab ini penulis akan membahas tentang komponen- komponen yang di gunakan dalam seluruh unit alat ini. Agar pembahasan tidak melebar dan menyimpang dari topik utama laporan ini, maka setiap komponen hanya di bahas sesuai fungsinya pada masing- masing unitnya.

2.1. Pengenalan Tanah

Tanah adalah lapisan permukaan bumi yang secara fisik berfungsi sebagai tempat tumbuh dan berkembangnya perakaran penopang tegak tumbuhnya tanaman dan menyuplai kebutuhan air dan udara. Tanah terbentuk dari proses pelapukan batuan yang dibantu oleh organisme membentuk tekstur unik yang menutupi permukaan bumi. Proses pembentukan tanah ini akan membentuk lapisan-lapisan yang menutupi seluruh permukaan bumi.

Lapisan-lapisan yang terbentuk memiliki tekstur yang berbeda dan setiap lapisan akan mencerminkan proses-proses fisika, kimia dan biologi yang telah terjadi selama proses pembentukannya. Hans Jenny (1899-1992), seorang pakar tanah asal Swiss yang bekerja di Amerika Serikat, menyebutkan bahwa tanah terbentuk dari bahan induk yang telah mengalami modifikasi/pelapukan akibat dinamika faktor iklim, organisme (termasuk manusia), dan relief permukaan bumi (topografi) seiring dengan berjalannya waktu.


(41)

2.1.1 Tanah Kompos

Tanah kompos adalah hasil dekomposisi bahan-bahan organik (tanaman, sisa bangkai binatang) yang diurai oleh mikroorganisme di dalam tanah. Prosesnya disebut juga pengomposan. Proses dekomposisi ini dapat dipengaruhi oleh berbagai faktor. Misalnya penambahan mikroorganisme pengurai dan penyesuaian lingkungan yang dilakukan dengan tujuan untuk mempercepat proses penguraian/dekomposisi. Hal ini tentunya dilakukan atas campur tangan manusia, bentuk fisik tanah kompos dapat dilihat pada Gambar 2.1.

Manfaat tanah kompos bagi pertanian, yaitu : 1. Meningkatkan kesuburan tanah

2. Memperbaiki struktur dan karakteristik tanah 3. Meningkatkan kapasitas penyerapan air oleh tanah 4. Meningkatkan aktivitas mikroba tanah

5. Meningkatkan kualitas hasil panen (rasa, nilai gizi, dan jumlah panen) 6. Menyediakan hormon dan vitamin bagi tanaman

7. Menekan pertumbuhan/serangan penyakit tanaman 8. Meningkatkan retensi/ketersediaan hara di dalam tanah.


(42)

2.1.2 Kelembaban Tanah

Kelembaban tanah adalah air yang mengisi sebagian atau seluruh pori – pori tanah yang berada di atas water table (Jamulya dan Suratman, 1993). Definisi yang lain menyebutkan bahwa kelembaban tanah menyatakan jumlah air yang tersimpan di antara pori – pori tanah. kelembaban tanah sangat dinamis, hal ini disebabkan oleh penguapan melalui permukaan tanah, transpirasi dan perkolasi (Suyono dan Sudarmadil, 1997). Kelembaban tanah memiliki peranan yang penting bagi pemerintah untuk mengetahui informasi seperti potensi aliran permukaan dan pengendali banjir, kegagalan erosi tanah dan kemiringan lereng, manajemen sumber daya air, geoteknik, dan kualitas air. Kelembaban tanah merupakan salah satu variabel kunci pada perubahan dari air dan energi panas di antara permukaan dan atmosfer melalui evaporasi dan transpirasi (Arnold, 1999).

Untuk mengetahui kadar kelembaban tanah dapat digunakan banyak macam teknik, diantaranya dapat dilakukan secara langsung melalui pengukuran perbedaan berat tanah (disebut metode gravimetri) dan secara tidak langsung melalui pengukuran sifat-sifat lain yang berhubungan erat dengan air tanah (Gardner, 1986). Metode langsung secara gravimetri memiliki akurasi yang sangat tinggi namun membutuhkan waktu dan tenaga yang sangat besar. Kebutuhan akan metode yang cepat dalam memonitor fluktuasi kadar air tanah menjadi sangat mendesak sebagai jawaban atas tingginya waktu dan tenaga yang dibutuhkan oleh metode gravimetri.

Dua metode penetapan kadar air tanah secara tidak langsung yang sudah banyak dikenal adalah melalui pengukuran sebaran neutron dan pengukuran waktu hantaran listrik di dalam tanah (time domain reflectrometry, TDR). Prinsip


(43)

kerja kedua metode tersebut adalah pengukuran dinamika sebaran neutron atau waktu hantaran listrik di dalam tanah akibat adanya sejumlah air (Nadler et al., 1991). Kendala yang dihadapi dalam memanfaatkan neutron probe dan TDR untuk memonitor fluktuasi kadar air tanah adalah harga kedua alat tersebut yang sangat mahal. Oleh sebab itu, perlu dilakukan penelitian tentang sifat-sifat tanah lain yang dapat diukur sebagai penduga kadar air tanah.

Penelitian yang dilakukan Hermawan et al. (2000) menemukan adanya hubungan yang erat antara sifat-sifat dielektrik tanah seperti konduktivitas, kapasitansi dan impendensi listrik pada suatu media berpori dengan kadar air. Kontribusi air tanah terhadap keragaman air tanah terhadap keragaman nilai impendensi listrik, misalnya jauh lebih besar dibandingkan kontribusi dari kepadatan tanah yang sebenarnya menjadi aspek utama dari penelitian tersebut. Air tanah cenderung meningkat dan sebaliknya udara di dalam pori cenderung menghambat laju konduktivitas listrik di dalam tanah, laju konduktivitas menurun dengan semakin rendahnya kadar air tanah (Kittel,1991). Fenomena tersebut sejalan dengan teori hubungan dielektrik dan air tanah yang dikembangkan Friendman (1997).

2.2. Irigasi

Irigasi adalah usaha penyediaan dan pengaturan air untuk menunjang pertanian. Semua proses kehidupan di dalam tanah merupakan tempat media pertumbuhan tanaman hanya dapat terjadi apabila ada air. Proses utama yang menciptakan kesuburan tanah atau sebaliknya yang mendorong degradasi tanah hanya dapat berlangsung apabila terdapat air.


(44)

Irigasi berarti mengalirkan air secara buatan dari sumber air yang tersedia kepada sebidang lahan untuk memenuhi kebutuhan tanaman. Dengan demikian tujuan irigasi adalah mengalirkan air secara teratur sesuai kebutuhan tanaman pada saat persediaan lengas tanah tidak mencukupi untuk mendukung pertumbuhan tanaman, sehingga tanaman bisa tumbuh secara normal. Pemberian air irigasi yang efisien selain dipengaruhi oleh tatacara aplikasi, juga ditentukan oleh kebutuhan air guna mencapai kondisi air tersedia yang dibutuhkan tanaman.

2.3 Mikrokontroler

Mikrokontroler adalah sebuah sistem komputer fungsional dalam sebuah chip. Di dalamnya terkandung sebuah inti prosesor, memori (sejumlah kecil RAM, memori program, atau keduanya), dan perlengkapan input output. Dengan kata lain, mikrokontroler adalah suatu alat elektronika digital yang mempunyai masukan dan keluaran serta kendali dengan program yang bisa ditulis dan dihapus dengan cara khusus, cara kerja mikrokontroler sebenarnya membaca dan menulis data. Mikrokontroler merupakan komputer didalam chip yang digunakan untuk mengontrol peralatan elektronik, yang menekankan efisiensi dan efektifitas biaya.

Secara harfiahnya bisa disebut “pengendali kecil” dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan komponen-komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya terpusat serta dikendalikan oleh mikrokontroler ini.

Arduino merupakan kit mikrokontroler yang bersifat Open-Source baik perangkat keras maupun perangkat lunaknya. Perangkat keras yang diprogram menggunakan bahasa pemrogaman berbasis Wiring menyerupai C++ dengan


(45)

beberapa penyederhanaan dan modifikasi. Untuk perangkat lunak IDE yang dibangun berbasis Proccessing. Arduino ditemukan dan dikembangkan pertama kali di Ivrea, italia oleh Massimo Banzi dan David Cuertilles.

Ide terciptanya Arduino didasari dari mahalnya komponen perangkat keras elektronik yang tersedia. Hal ini menjadi penghambat utama para mahasiswa dan pelajar dalam bereksplorasi. Selain harga yang murah, kemudahan dan fleksibilitas penggunaan menjadi pertimbangan oleh pengguna-pengguna Arduino masa kini. Pengguna tidak lagi terkendala waktu untuk mendalami elektronika dan mikrokontroler. Pengguna juga tidak akan disulitkan dalam merancang suatu sistem eletktronika karena banyak komunitas yang menyediakan tutorial proyek berbasis Arduino secara gratis di dunia maya.

Munculnya Arduino menjadikannya sebagai tren teknologi yang revolusioner. Arduino terbuka untuk semua orang yang ingin mengembangkan suatu sistem interaktif berbasis mikrokontroler, baik untuk kalangan mahasiswa, pelajar, profesional bahkan pemula sekalipun.

Pengguna dapat memiliki Arduino sesuai kebutuhannnya karena Arduino dibuat dalam beberapa jenis diantaranya yaitu Arduino Diecimila, Duemilanove, UNO, Lenardo, Mega, Nano, Due, Yun dan berbagai jenis Arduino lainnya.

2.3.1 Arduino Leonardo

Arduino Leonardo adalah papan mikrokontroler berbasis ATmega32u4, seperti yang tampak pada Gambar 2.2. Arduino Leonardo memiliki 20 digital pin input/output (yang mana 7 pin dapat digunakan sebagai output PWM dan 12 pin sebagai input analog), 16 MHz kristal osilator, koneksi micro USB, jack power


(46)

suplai tegangan, header ICSP, dan tombol reset. Ini semua yang diperlukan untuk mendukung mikrokontroler. Cukup dengan menghubungkannya ke komputer melalui kabel USB atau power dihubungkan dengan adaptor AC-DC atau baterai untuk mulai mengaktifkannya.

Leonardo berbeda dari semua papan Arduino yang lainnya karena ATmega32u4 secara terintegrasi (built-in) telah memiliki komunikasi USB, sehingga tidak lagi membutuhkan prosesor sekunder (tanpa chip ATmega16U2 sebagai konverter USB-to-serial).

Hal ini memungkinkan Arduino Leonardo yang terhubung ke komputer digunakan sebagai mouse dan keyboard, selain bisa digunakan sebagai virtual (CDC) serial/COM port. Adapun spesifikasi singkat mengenai Arduino Leonardo adalah sebagai berikut :

1. Mikrokontroler : ATmega32U4

2. Kapasitas memori program / Flash Memory : 32 KB (4 KB sudah digunakan untuk bootloader)

3. Kapasitas SRAM : 2,5 KB

4. Kapasitas NVRAM/ EEPROM: 1 KB (dapat diakses menggunakan

5. Kecepatan detak : 16 MHz 6. Tegangan Operasional : 5V (TTL) 7. Tegangan Catu Daya : 7 - 12 Volt

(sekurang-kurangnya 6V, maksimum 20V) 8. Jumlah pin digital I/O : 20 pin


(47)

10. Jumlah pin masukan analog (ADC) : 12 kanal

11. Maksimum arus per pin : 40 mA

12. Maksimum arus yang dapat ditarik dari pin 3v3 : 50 mA

Gambar 2.2 Arduino Leonardo

Arduino Leonardo dalam penelitian ini telah dikemas dalam satu papan modul bernama WiDO bersamaan dengan modul WiFi seperti yang ditunjukkan oleh Gambar 2.3 sehingga papan modul ini memudahkan proses integrasi modul WiFi dengan Mikrokontroller Arduino.


(48)

2.3.2 Pemetaan Pin Arduino Leonardo

Mikrokontroler yang digunakan pada Arduino Leonardo ini adalah Mikrokontroler ATMega32U4. Mikrokontroler ini menjadi komponen utama dari sistem minimum Arduino Leonardo. Setiap pin mikrokontroler ATMega32U4 dipetakan sesuai dengan kebutuhan standarArduino pada umumnya. Pemetaan pin (pin mapping) ATMega32U4 dapat dilihat pada Gambar 2.3 dan Tabel 2.1.

Tabel 2.1 Daftar Pin Arduino Leonardo

Nomor Pin Nama Pin Pemetaan Nama Pin

1 PE6 (INT.6/AIN0) Digital pin 7

2 UVcc +5V

3 D- RD-

4 D+ RD+

5 UGnd UGND

6 UCap UCAP

7 VUSB VBus

8 (SS/PCINT0) PB0 RXLED

9 (PCINT1/SCLK) PB1 SCK

10 (PDI/PCINT2/MOSI) PB2 MOSI

11 (PDO/PCINT3/MISO) PB3 MISO

12

(PCINT7/OCA0/OC1C/#RTS) PB7

Digital pin 11 (PWM)

13 RESET RESET

14 Vcc +5V

15 GND GND

16 XTAL2 XTAL2

17 XTAL1 XTAL1

18 (OC0B/SCL/INT0) PD0

Digital pin 3 (SCL)(PWM)


(49)

Nomor Pin Nama Pin Pemetaan Nama Pin

19 (SDA/INT1) PD1 Digital pin 2 (SDA)

20 (RX D1/AIN1/INT2) PD2 Digital pin 0 (RX)

21 (TXD1/INT3) PD3 Digital pin 1 (TX)

22 (XCK1/#CTS) PD5 TXLED

23 GND1 GND

24 AVCC AVCC

25 (ICP1/ADC8) PD4 Digital pin 4

26 (T1/#OC4D/ADC9) PD6 Digital pin 12 27 (T0/OC4D/ADC10) PD7 Digital Pin 6 (PWM)

28 (ADC11/PCINT4) PB4 Digital pin 8

29

(PCINT5/OC1A/#OC4B/ADC12)

PB5 Digital Pin 9 (PWM)

30

(PCINT6/OC1B/OC4B/ADC13)

PB6 Digital Pin 10 (PWM)

31 (OC3A/#0C4A) PC6 Digital Pin 5 (PWM) 32 (ICP3/CLK0/)C4A) PC7 Digital Pin 13 (PWM)

33 (#HWB) PE2 HWB

34 Vcc1 +5V

35 GND2 GND

36 (ADC7/TDI) PF7 Analog In 0

37 (ADC6/TDO) PF6 Analog In 1

38 (ADC5/TMS) PF5 Analog In 2

39 (ADC4/TCK) PF4 Analog In 3

40 (ADC1) PF1 Analog In 4

41 (ADC0) PF0 Analog In 5

42 AREF AEF

43 GND3 GND


(50)

Gambar 2.4 Pemetaan Pin Arduino Leonardo

2.3.3 Memori

ATmega32u4 memiliki memori sebesar 32 KB (4 KB digunakan untuk bootloader). Juga memiliki 2,5 KB SRAM dan 1 KB EEPROM (yang dapat dibaca dan ditulis dengan perpustakaan EEPROM).


(51)

2.3.4 Pin Input dan Output

Pada Arduino Leonardo, 20 pin digital I/O dapat digunakan sebagai input atau output, menggunakan fungsi pinMode(), digitalWrite(), dan digitalRead(). Mereka beroperasi pada tegangan 5 volt. Setiap pin dapat memberikan atau menerima maksimum 40 mA dan memiliki resistor pull-up internal sebesar 20-50 kOhm yang terputus secara default. Selain itu, beberapa pin memiliki fungsi khusus, yaitu:

1. Serial : Pin 0 (RX) dan pin 1 (TX). Digunakan untuk menerima (RX) dan mengirimkan (TX) data serial TTL menggunakan hardware ATmega32U4 yang memiliki kemampuan serial didalamnya. Perhatikan bahwa pada Leonardo, kelas Serial mengacu pada komunikasi USB (CDC); untuk TTL serial pada pin 0 dan 1, menggunakan kelas Serial 1.

2. TWI : Pin 2 (SDA) dan pin 3 (SCL). Dukungan komunikasi TWI menggunakan perpustakaan Wire.

3. Eksternal Interupsi : Pin 3 (interrupt 0), pin 2 (interrupt 1), pin 0 (interrupt 2), pin 1 (interrupt 3) dan pin 7 (interrupt 4). Pin ini dapat dikonfigurasi untuk memicu sebuah interupsi pada nilai yang rendah, meningkat atau menurun, atau merubah nilai.

4. PWM : Pin 3, 5, 6, 9, 10, 11, dan 13. Menyediakan 8-bit output PWM dengan fungsi analogWrite().

5. SPI : Pin pada header ICSP ini mendukung komunikasi SPI menggunakan perpustakaan SPI. Perhatikan bahwa pin SPI tidak terhubung ke salah satu pun pin digital I/O karena yang terhubung langsung hanya pada Arduino Uno, Mereka hanya menyediakan konektor ICSP.


(52)

Ini berarti bahwa jika Anda memiliki shield yang menggunakan SPI, tetapi tidak terdapat 6 pin konektor ICSP yang terhubung ke 6 pin ICSP header Leonardo, maka shield tidak akan bekerja.

6. LED : Pin 13. Tersedia secara built-in pada papan Arduino ATmega2560. LED terhubung ke pin digital 13. Ketika pin diset bernilai HIGH, maka LED menyala (ON), dan ketika pin diset bernilai LOW, maka LED padam (OFF).

7. Input Analog : Pin A0-A5, Pin A6 - A11 (pada pin digital 4, 6, 8, 9, 10, dan 12). Leonardo memiliki 12 input analog, berlabel A0 sampai A11, yang semuanya juga dapat digunakan sebagai digital I/O. Pin A0-A5 terdapat di lokasi yang sama seperti pada Arduino Uno; Pin input A6-A11 masing-masing ada pada digital I/O pin 4, 6, 8, 9, 10, dan 12. Masing-masing pin menyediakan resolusi 10 bit (yaitu 1024 nilai yang berbeda). Secara default pin ini dapat diukur/diatur dari mulai Ground sampai dengan 5 Volt, juga memungkinkan untuk mengubah titik jangkauan tertinggi atau terendah mereka menggunakan pin AREF dan fungsi analogReference().

Masih ada beberapa pin lainnya pada Arduino Leonardo, yaitu:

1. AREF : Referensi tegangan untuk input analog. Digunakan dengan fungsi analogReference().

2. RESET : Jalur LOW ini digunakan untuk me-reset (menghidupkan ulang) mikrokontroler. Jalur ini biasanya digunakan untuk menambahkan tombol reset pada shield yang menghalangi papan utama Arduino.


(53)

2.3.5. Sumber Daya

Arduino Leonardo dapat diaktifkan melalui koneksi USB mikro atau dengan catu daya eksternal. Sumber daya dipilih secara otomatis. Sumber daya Eksternal (non-USB) dapat berasal baik dari adaptor AC-DC atau baterai. Adaptor dapat dihubungkan dengan mencolokkan steker 2.1 mm denan pusat-positif ke jack power pada papan. Sumber tegangan dari baterai dapat dihubungkan ke header pin Gnd dan Vin pin sebagai konektor sumber daya tegangan papan.

Papan Arduino Leonardo dapat beroperasi dengan pasokan daya eksternal 6 Volt sampai 20 volt. Jika diberi tegangan kurang dari 7 Volt, maka, pin 5 Volt mungkin akan menghasilkan tegangan kurang dari 5 Volt dan ini akan membuat papan menjadi tidak stabil. Jika sumber tegangan menggunakan lebih dari 12 Volt, regulator tegangan akan mengalami panas berlebihan dan bisa merusak papan. Rentang sumber tegangan yang dianjurkan adalah 7 Volt sampai 12 Volt. Pin tegangan yang tersedia pada papan Arduino Leonardo adalah sebagai berikut:

1. VIN : Adalah input tegangan untuk papan Arduino ketika menggunakan sumber daya eksternal (sebagai ‘saingan’ tegangan 5 Volt dari koneksi USB atau sumber daya ter-regulator lainnya). Anda dapat memberikan tegangan melalui pin ini, atau jika memasok tegangan untuk papan melalui jack power, kita bisa mengakses/mengambil tegangan melalui pin ini. 2. 5V : Tegangan listrik ter-regulator yang digunakan untuk daya


(54)

dapat menggunakan pin VIN melalui regulator on-board, atau dipasok oleh USB atau power suplai lain dengan besar tegangan 5V ter-regulator.

3. 3V3 : Sebuah pin yang menghasilkan tegangan 3,3 Volt. Tegangan ini dihasilkan oleh regulator yang terdapat pada papan (on-board). Arus maksimum yang dihasilkan adalah 50 mA.

4. GND : Pin Ground atau Massa.

5. IOREF: Pin ini pada papan Arduino berfungsi untuk memberikan referensi tegangan yang beroperasi pada mikrokontroler (atau VCC untuk papan). Pin ini bertegangan 5V pada Leonardo.

2.3.6. Arduino IDE

Arduino leonardo dapat diprogram dengan perangkat lunak Arduino. IDE Arduino adalah software yang sangat canggih ditulis dengan menggunakan Java. Pada Gambar 2.4 IDE Arduino terdiri dari:

1. Editor program, sebuah window yang memungkinkan pengguna menulis

dan mengeditprogram dalam bahasa processing.

2. Compiler, sebuah modul yang mengubah kode program (bahasa

processing) menjadi kode biner. Bagaimanapun sebuah mikrokontroler tidak akan bisa memahami bahasa processing. Yang bisa dipahami oleh mikrokontroler adalah kode biner. Itulah sebabnya compiler diperlukan dalam hal ini.

3. Uploader, sebuah modul yang memuat kode biner dari komputer ke dalam memory didalam papan Arduino.


(55)

Sebuah kode program Arduino umumnya disebut dengan istilah sketch. Kata “sketch” digunakan secara bergantian dengan “kode program” dimana keduanya memiliki arti yang sama.

Gambar 2.5 Tampilan Arduino IDE

2.4. Komunikasi Serial

Kemampuan untuk bisa melakukan komunikasi data antara 2 atau lebih peralatan elektronik adalah hal yang sangat penting yang harus dimiliki oleh sebuah mikrokontroler. Dan yang lebih penting lagi, kemampuan komunikasi tersebut tidak boleh sampai mengurangi fungsi dari mikrokontroler itu sendiri. Ada 2 jenis komunikasi data yang bisa dilakukan oleh mikrokontroler, yaitu komunikasi parallel dan komunikasi serial. Komunikasi parallel memiliki kelebihan dari sisi kecepatan transfer data, namun efisiensi penggunaan pin dari mikrokontroler juga menjadi berkurang.

Saat ini ada banyak jenis kemampuan komunikasi serial yang dimiliki oleh mikrokontrole, terutama oleh mikrokontroler arduino. Arduino Leonardo,


(56)

port komunikasi serial ini bisa digunakan secara independen, artinya bisa digunakan satu per satu ataupun digunakan keseluruhan secara bersama.

Komunikasi serial yang dimiliki oleh arduino bisa kita manfaatkan untuk berkomunikasi dengan Personal Computer, Bluetooth Modul, Wifi atau bahkan dengan Arduino yang lain. Yang perlu menjadi catatan utama adalah, jika port dari arduino mikrokontroler sudah difungsikan sebagai sarana komunikasi serial, maka port tersebut tidak dapat difungsikan sebagai port input/output digital.Ada 5 Fungsi utama dalam proses komunikasi serial oleh Arduino :

1. Fungsi Transmit Data –> lebih dikenal dengan fungsi Tx 2. Fungsi Receiving Data –> lebih dikenal dengan fungsi Rx 3. Fungsi Grounding System Komunikasi Serial –> Atau GND 4. Kecepatan Transfer Data –> lebih dikenal dengan Baudrate.

5. Format Data –> biasa digunakan 8 bit data, No Parity, dan 1 bit untuk stop bit

Sebelum menjalankan perintah pengiriman data, maka pengguna diharuskan untuk melakukan setting dari baudrate. Karena baudrate yang berbeda antara 2 peralatan komunikasi, akan menyebabkan sistem menerima data yang salah. Secara default hampir keseluruhan mikrokontroler menggunakan format komunikasi serial dengan data 8 bit data, No Parity, dan 1 bit untuk stop bit.Software Arduino, menyediakan perintah khusus untuk prosess setting baudrate yaitu :Serial.begin(9600);maka software Arduino akan menterjemahkan perintah tersebut menjadi :

1. Baudrate komunikasi serial adalah 9600 bps 2. 8 bit data, No Parity, 1 bit stop


(57)

2.4.1. Perintah Mengirim Data

Ada 3 jenis perintah untuk proses pengiriman data dalam Arduino yaitu : 1. print();

2. println(); 3. write();

Perintah print() dan println() hampir sama fungsi, hanya saja perintah prinln() dilengkapi dengan carriage return dan baris baru pada akhir pengiriman atau yang lebih dikenal dengan linefeed dan new line command. Sedangkan perintah write() sudah hampir tidak pernah digunakan. Anda dapat menambahkan parameter didalam kurung dari masing-masing perintah tersebut, seperti data yang akan dikirim ataupun isi dari variable data yang akan dikirim melalui port serial.

2.4.2. Perintah Menerima Data

Untuk menerima data/mengambil data yang ada di Buffer serial dari Arduino, bisa menggunakan 2 perintah berikut :

1. read(); 2. readbytes();

Perintah read() biasa digunakan jika data yang akan diambil bertipe data string, sedangkan perintah readbyte digunakan jika data bertipe bilangan dengan tipe data byte. Anda bisa menambahkan variable data dalam perintah ini untuk mengidentifikasi serial port yang akan baca datanya.


(58)

2.4.3. Perintah Recheck Data

Selain perintah mengirim dan menerima data, Arduino juga menyediakan perintah untuk recheck apakah data yang diinginkan siap diambil di Buffer serial ataukah tidak. Perintah tersebut antara lain adalah :

1. available(); 2. find();

2.5. Bahasa Pemograman C

Bahasa C dikembangkan pada Lab Bell pada tahun 1978, oleh Dennis Ritchi dan Brian W. Kernighan. Pada tahun 1983 dibuat standar C yaitu stnadar ANSI ( American National Standards Institute ), yang digunakan sebagai referensi dari berbagai versi C yang beredar dewasa ini termasuk Turbo C. Dalam beberapa literature, bahasa C digolongkan bahasa level menengah karena bahasa C mengkombinasikan elemen bahasa tinggi dan elemen bahasa rendah.

Kemudahan dalam level rendah merupakan tujuan diwujudkanya bahasa C. Pada tahun 1985 lahirlah pengembangan ANSI C yang dikenal dengan C++ (diciptakan oleh Bjarne Struostrup dari AT % TLab). Bahasa C++ adalah pengembangan dari bahasa C. Bahasa C++ mendukung konsep pemrograman berorientasu objek dan pemrograman berbasis windows.

Sampai sekarang bahasa C++ terus brkembang dan hasil perkembangannya muncul bahasa baru pada tahun 1995 (merupakan keluarga C dan C++ yang dinamakan java). Istilah prosedur dan fungsi dianggap sama dan disebut dengan fungsi saja.


(59)

Hal ini karena di C++ sebuah prosedur pada dasanyaadalah sebuah fungsi yang tidak memiliki tipe data kembalian (void). Hingga kini bahasa ini masih populer dan penggunaannya tersebar di berbagai platform dari windows samapi linux dan dari PC hingga main frame.

Arduino sendiri menggunakan bahasa C, walaupun banyak sekali terdapat bahasa pemrograman tingkat tinggi (high level language) seperti pascal, basic,cobol, dan lainnya.Para programer profesional masih tetap memilih bahasa C sebagai bahasa yang lebih unggul, berikut alasan-alasannya:

1. Bahasa C merupakan bahasa yang powerful dan fleksibel yang telah terbukti dapat menyelesaikan program-program besar seperti pembuatan sistem operasi, pengolah Gambar (seperti pembuatan game) dan juga pembuatan kompilator bahasa pemrograman baru.

2. Bahasa C merupakan bahasa yang porTabel sehingga dapat dijalankan di beberapa sistem operasi yang berbeda. Sebagai contoh program yang kita tulis dalam sistem operasi windows dapat kita kompilasi didalam sistem operasi linux dengan sedikit ataupun tanpa perubahan sama sekali.

3. Bahasa C merupakan bahasa yang sangat populer dan banyak digunakan oleh programer berpengalaman sehingga kemungkinan besar library pemrograman telah banyak disediakan oelh pihak luar/lain dan dapat diperoleh dengan mudah.

4. Bahasa C merupakan bahasa yang bersifat modular, yaitu tersusun atas rutin-rutin tertentu yang dinamakan dengan fungsi (function) dan


(60)

fungsi-fungsi tersebut dapat digunakan kembali untuk pembuatan program-program lainnya tanpa harus menulis ulang implementasinya.

5. Bahasa C merupakan bahasa tingkat menengah (middle level language) sehingga mudah untuk melakukan interface (pembuatan program antar muka) ke perangkat keras.

6. Struktur penulisan program dalam bahasa C harus memiliki fungsi utama, yang bernama main(). Fungsi inilah yang akan dipanggil pertama kali pada saat proses eksekusi program. Artinya apabila ada fungsi lain selain fungsi utama, maka fungsi lain tersebut baru akan dipanggil pada saat digunakan. Kekurangan Bahasa C, yaitu :

1. Banyaknya operator serta fleksibilitas penulisan program kadangkadang membingungkan pemakai.

2. Bagi pemula pada umumnya akan kesulitan menggunakan pointer.

2.5.1. Struktur Bahasa C

Program bahasa C tersusun atas sejumlah blok fungsi.

1. Setiap fungsi terdiri dari satu atau beberapa pernyataan untuk melakukan suatu proses tertentu.

2. Tidak ada perbedaan antara prosedur dan fungsi.

3. Setiap program bahasa C mempunyai suatu fungsi dengan nama “main” (Program Utama).

4. Fungsi bisa diletakkan diatas atau dibawah fungsin “main”. 5. Setiap statemen diakhiri dengan semicolon (titik koma).


(61)

2.5.2. Pengenal

Pengenal (identifier) merupakan sebuah nama yang didefenisikan oleh pemrograman untuk menunjukkan indetitas dari sebuah konstanta, variable fungsi, label atau tipe data khusus. Pemberian nama sebuah pengenal dapat ditentukan bebas sesuai keinginan pemrogram tetapi harus memenuhi atura berikut :

1. Karakter pertama tidak boleh menggunakan angka.

2. Karakter kedua dapat berupa huruf, angka, atau garis bawah.

3. Tidak boleh menggunakan spasi. Bersifat Case Sensitive, yaitu huruf kapital dan huruf kecil dianggap berbeda.

4. Tidak boleh mengunakan kata – kata yang merupakan sitaks maupun operator dalam pemrograman C, misalnya : Void, short, const, if, static, bit, long, case, do, switch dll.

2.5.3. Tipe Data

Macam-macam tipe data pada bahasa C seperti yang terlihat pada Tabel 2.2, yaitu :

1. Tipe Data Karakter

Sebuah karakter, baik itu berupa huruf atau angka dapat disimpan pada sebuah variabel yang memiliki tipe data char dan unsigned char. Besarnya data yang dapat disimpan pada variabel yang bertipe data char adalah -127 - 127. Sedangkan untuk tipe data unsigned char adalah dari 0 - 255. Pada


(62)

dasarnya setiap karakter memiliki nilai ASCII, nilai inilah yang sebetulnya disimpan pada variabel yang bertipe data karakter ini.

2. Tipe Data Bilangan Bulat

Tipe data bilangan bulat atau dapat disebut juga bilangan desimal merupakan sebuah bilangan yang tidak berkoma. Pada bahasa C terdapat bermacam-macam tipe data yang dapat kita gunakan untuk menampung bilangan bulat. Kita dapat menyesuaikan penggunaan tipe data dengan terlebih dahulu memperhitungkan seberapa besar nilai yang akan kita simpan. Contohnya seperti berikut, kiata akan melakukan operasi penjumlahan nilai 300 dan 100 dan hasilnya akan disimpan pada variabel c. Jika dilihat, hasil dari penjumlahan tersebut nilainya akan lebih besar dari 255 dan nilainya pasti positif, oleh karena itu sebaiknya kita menggunakan tipe data unsigned int. Namun berbeda halnya jika saya ingin melakukan operasi pengurangan -5 - 300, jika dilihat hasilnya akan negatif maka selayaknya digunakan variabel dengan tipe data int.

3. Tipe Data Bilangan Berkoma

Pada bahasa C terdapat dua buah tipe data yang berfungsi untuk menampung data yang berkoma. Tipe data tersebut adalah float dan double. Double lebih memiliki panjang data yang lebih banyak dibandingkan float. Tipe data double dapat digunakan jika kita membutuhkan variabel yang dapat menampung tipe data berkoma yang bernilai besar.


(63)

Tabel 2.2 Tipe Data

Tipe Lebar Jangkauan Nilai

int 16 bit -32768 s/d 32767

unsigned int 16 bit 0 s/d 65535

long int 32 bit -2147483648 s/d 2147483649 unsigned long int 32 bit 0 s/d 4294967296

float 32 bit 3.4E-38 s/d 3.4E+38 double 64 bit 1.7E-308 s/d 1.7E+308

char 8 bit -128 s/d 127

unsigned char 8 bit 0 s/d 255

2.5.4. Konstanta Dan Variabel

Konstanta dan variable merupakan sebuah tempat untuk menyimpan data yang berada di dalam memori. Konstanta berisi data yang nilainya tetap dan tidak dapat diubah selama program dijalankan, sedangkan variable berisi data yang bisa berubah nilainya pada saat program dijalankan.


(64)

Identifier atau nama pengenal adalah nama yang ditentukan sendiri oleh pemrogram yang digunakan untuk menyimpan nilai, misalnya nama variable, nama konstanta, nama suatu elemen (misalnya: nama fungsi, nama tipe data, dll).

Identifier punya ketentuan sebagai berikut :

1. Maksimum 32 karakter (bila lebih dari 32 karakter maka yang diperhatikan hanya 32 karakter pertama saja).

2. Case sensitive: membedakan huruf besar dan huruf kecilnya.

3. Karakter pertama harus karakter atau underscore ( _ ) . selebihnya boleh angka.

4. Tidak boleh mengandung spasi atau blank.

5. Tidak boleh menggunakan kata yang sama dengan kata kunci dan fungsi. Bahasa C merupakan bahasa prosedural yang menerapkan konsep runtutan (program dieksekusi per baris dari atas ke bawah secara berurutan), apabila fungsi-fungsi lain tersebut dituliskan dibawah fungsi utama, maka harus menuliskan bagian prototipe (prototype), hal ini dimaksudkan untuk mengenalkan terlebih dahulu kepada kompiler daftar fungsi yang akan digunakan di dalam program. Namun apabila fungsi-fungsi lain berada diatas atau sebelum fungsi utama, maka bagian prototipe tidak perlu dituliskan diatas. (Djuandi, Feri. (2011).Selain itu dalam bahasa C juga dikenal file header, biasa ditulis dengan ekstensi h(*.h), adalah file bantuan yang yang digunakan untuk menyimpan daftar-daftar fungsi yang akan digunakan dalam program.


(65)

2.6. Grove Moisture Sensor SEN0100

Sensor kelembaban tanah merupakan sensor yang mampu mendeteksi intensitas air di dalam tanah (moisture). Seperti tampak padaGambar 2.5sensor ini terdiri dua probe untuk melewatkan arus melalui tanah, kemudian membaca resistansinya untuk mendapatkan nilai tingkat kelembaban. Semakin banyak air membuat tanah lebih mudah menghantarkan listrik (resistansi kecil), sedangkan tanah yang kering sangat sulit menghantarkan listrik (resistansi besar). Kedua probe ini merupakan media yang akan menghantarkan tegangan analog yang nilainya relatif kecil.

Gambar 2.6 Grove Moisture Sensor SEN0100

Sensor kelembaban ini dapat digunakan untuk mendeteksi kelembaban tanah atau kandungan air di dalam tanah di sekitar sensor. Sensor ini sangat mudah digunakan yaitu dengan memasukkan ke dalam tanah pada kedalaman 1-5 cm dan kemudian membaca data hasil pengukuran sensor. Spesifikasi sensor ini dilihat pada Tabel 2.3.

Tabel 2.3 Spesifikasi Grove Moisture Sensor SEN0100

Item Parameter Min Khas Maks Satuan


(66)

Arus - 0 ~ 35 mA Nilai Output Sensor di tanah kering 0 ~ 300 /

Sensor di dalam tanah lembab 300 ~ 700 / Sensor dalam air 700 ~ 950 / 2.7. LCD (Liquid Crystal Display)

LCD merupakan salah satu perangkat penampil yang sekarang ini mulai banyak digunakan. Penampil LCD seperti yang tampak pada Gambar 2.6, mulai dirasakan menggantikan fungsi dari penampil CRT (Cathode Ray Tube), yang sudah berpuluh-puluh tahun digunakan manusia sebagai penampil Gambar/text baik monokrom (hitam dan putih), maupun yang berwarna. Teknologi LCD memberikan keuntungan dibandingkan dengan teknologi CRT, kaena pada dasarnya, CRT adalah tabung triode yang digunakan sebelum transistor ditemukan. Beberapa keuntungan LCD dibandingkan dengan CRT adalah konsumsi daya yang relative kecil, lebih ringan, tampilan yang lebih bagus, dan ketika berlama-lama di depan monitor, monitor CRT lebih cepat memberikan kejenuhan pada mata dibandingkan dengan LCD.


(67)

LCD memanfaatkan silicon atau gallium dalam bentuk Kristal cair sebagai pemendar cahaya. Pada layar LCD, setiap matrik adalah susunan dua dimensi piksel yang dibagi dalam baris dan kolom. Konfigurasi pin LCD dapat dilihat pada Tabel 2.4.

Tabel 2.4 Konfigurasi Pin LCD 20x4

No.Pin Nama Keterangan

1 GND Ground

2 VCC +5V

3 VEE Contras

4 RS Register Select

5 RW Read/write

6 E Enable

7-14 D0-D7 Data bit 0-7

15 A Anoda (back light)

16 K Katoda (back light)

Dengan demikian, setiap pertemuan baris dan kolom adalah sebuah LED terdapat sebuah bidang latar (backplane), yang merupakan lempengan kaca bagian belakang dengan sisi dalam yang ditutupi oleh lapisan elektroda trasparan. Dalam keadaan normal, cairan yang digunakan memiliki warna cerah. Daerah-daerah tertentu pada cairan akan berubah warnanya menjadi hitam ketika tegangan diterapkan antara bidang latar dan pola elektroda yang terdapat pada sisi dalam lempeng kaca bagian depan.


(68)

Keunggulan LCD adalah hanya menarik arus yang kecil (beberapa microampere), sehingga alat atau sistem menjadi portable karena dapat menggunakan catu daya yang kecil. Keunggulan lainnya adalah tampilan yang diperlihatkan dapat dibaca dengan mudah di bawah terang sinar matahari.

Dibawah sinar cahaya yang remang-remang dalam kondisi gelap, sebuah lampu (berupa LED) harus dipasang dibelakang layar tampilan.LCD yang digunakan adalah jenis LCD yang mena mpilkan data dengan 2baris tampilan pada display. Keuntungan dari LCD ini adalah :

1. Dapat menampilkan karakter ASCII, sehingga dapat memudahkan untuk membuat program tampilan.

2. Mudah dihubungkan dengan port I/O karena hanya mengunakan 8 bit data dan 3 bit control.

3. Ukuran modul yang proporsional.

4. Daya yang digunakan relative sangat kecil.

Operasi dasar pada LCD terdiri dari empat, yaitu instruksi mengakses proses internal, instruksi menulis data, instruksi membaca kondisi sibuk, dan instruksi membaca data. ROM pembangkit sebanyak 192 tipe karakter, tiap karakter dengan huruf 5x7 dot matrik. Kapasitas pembangkit RAM 8 tipe karakter (membaca program), maksimum pembacaan 80x8 bit tampilan data. Perintah utama LCD adalah Display Clear, Cursor Home, Display ON/OFF, Display Character Blink, Cursor Shift, dan Display Shift.


(69)

Register yang terdapat di LCD adalah sebagai berikut: 1. IR (Intruction Register)

Digunakan untuk menentukan fungsi yang harus dikerjakan oleh LCD serta pengalamatan DDRAM atau CGRAM.

2. DR (Data Register)

Digunakan sebagai tempat data DDRAM atau CGRAM yang akan ditulis atau dibaca oleh komputer atau sistem minimum. Saat dibaca, DR menyimpan data DDRAM atau CGRAM, setelah itu data alamatnya secara otomatis masuk ke DR. Pada waktu menulis, cukup lakukan inisialisasi DDRAM atau CGRAM, kemudian untuk selanjutnya data dituliskan ke DDRAM atau CGRAM sejak awal alamat tersebut.

3. BF (Busy Flag)

Digunakan untuk bahwa LCD dalam keadaan siap atau sibuk. Apabila LCD sedang melakukan operasi internal, BF diset menjadi 1, sehingga tidak akan menerima perintah dari luar. Jadi, BF harus dicek apakah telah diriset menjadi 0 ketika akan menulis LCD (memberi data pada LCD). Cara untuk menulis LCD adalah dengan mengeset RS menjadi 0 dan mengeset R/W menjadi 1.

4. AC (Address Counter)

Digunakan untuk menunjukan alamat pada DDRAM atau CGRAM dibaca atau ditulis, maka AC secara otomatis menunjukan alamat berikutnya. Alamat yang disimpan AC dapat dibaca bersamaan dengan BF.


(70)

Digunakan sebagai tempat penyimpanan data yang sebesar 80 byte atau 80 karakter. AC menunjukan alamat karakter yang sedang ditampilkan.

6. CGROM (Character Generator Read Only Memory)

Pada LCD terdapat ROM untuk menyimpan karakter-karakter ASCII (American Standart Code for Interchage Intruction), sehingga cukup memasukan kode ASCII untuk menampilkanya.

7. CGRAM (Character Generator Random Access Memory)

Sebagai data storage untuk merancang karakter yang dikehendaki. Untuk CGRAM terdapat kode ASCII dari 00h sampai 0Fh, tetapi hanya 8 karakter yang disediakan. Alamat CGRAM hanya 6 bit, 3 bit untuk mengatur tinggi karakter dan 3 bit tinggi menjadi 3 bit rendah DDRAM yang menunjukan karakter, sedangkan 3 bit rendah sebagai posisi data CGRAM untuk membuat tampilan baris dalam dot matriks 5x7 karakter tersebut, dimulai dari atas. Sehingga karakter untuk kode ASCII 00h sama dengan 09h sampai 07h dengan 0Fh. Dengan demikian untuk perancangan 1 karakter memerlukan penulisan data ke CGRAM samapai 8 kali.

8. Cursor and Blink Control circuit

Merupakan rangkaian yang menghasilkan tampilan kursor dan kondisi blink (berkedap-kedip).


(71)

2.8. Relay

Relay adalah saklar mekanik yang dikendalikan atau dikontrolsecara elektronik (elektro magnetik). Saklar pada relay akan terjadiperubahan posisi OFF ke ON pada saat diberikan energi elektro magnetikpada armatur relay tersebut.

Relay pada dasarnya terdiri dari 2 (dua) bagian utama yaitu saklar mekanik dan sistem pembangkit elektromagnetik (induktor inti besi). Saklar atau kontaktor relay dikendalikan menggunakan tegangan listrik yang diberikan ke induktor pembangkit magnet untuk menarik armatur tuas saklar atau kontaktor relay. Relay yang ada dipasaran terdapat berbagai bentuk dan ukuran dengan tegangan kerja dan jumlah saklar yang bervariasi, pada Gambar 2.7 adalah salah satu bentuk relay yang ada dipasaran.

Gambar 2.8 Relay


(72)

supplynya. Secara fisik antara saklar atau kontaktor dengan elektromagnet relay terpisah sehingga antara beban dan sistem kontrol terpisah. Bagian utama relay elektro mekanik adalah sebagai berikut :

1. Kumparan elektromagnet 2. Saklar atau kontaktor Swing 3. Armatur Spring (Pegas).

Gambar 2.9 Konstruksi Relay Posisi NC

Dari konstruksi relay elektro mekanik diatas dapat diuraikan sistem kerja atau proses relay bekerja. Pada saat elektromagnet tidak diberikan sumber tegangan maka tidak ada medan magnet yang menarik armature, sehingga saklar relay tetap terhubung ke terminal NC (Normally Close) seperti terlihat pada Gambar 2.9. Kemudian pada saat elektromagnet diberikan sumber tegangan maka terdapat medan magnet yang menarik armature, sehingga saklar relay terhubung ke terminal NO (Normally Open) seperti terlihat pada Gambar 2.10.


(73)

Gambar 2.10 Konstruksi Relay Posisi NO

Relay elektro mekanik memiliki kondisi saklar atau kontaktor dalam 3 posisi. Ketiga posisi saklar atau kontaktor relay ini akan berubah pada saat relay mendapat tegangan sumber pada elektromagnetnya. Ketiga posisi saklar relay tersbut adalah :

1. Posisi Normally Open (NO), yaitu posisi saklar relay yang terhubungke terminal NO (Normally Open). Kondisi ini akan terjadi pada saatrelay mendapat tegangan sumber pada elektromagnetnya.

2. Posisi Normally Colse (NC), yaitu posisi saklar relay yangterhubung ke terminal NC (Normally Close). Kondisi ini terjadi padasaat relay tidak mendapat tegangan sumber pada elektromagnetnya.

3. Posisi Change Over (CO), yaitu kondisi perubahan armatur saklarrelay yang berubah dari posisi NC ke NO atau sebaliknya dari NO keNC. Kondisi ini terjadi saat sumber tegangan diberikan keelektromagnet atau saat sumber tegangan diputus dari elektromagnetrelay.


(74)

Mini Water Pumpadalah peralatan mekanis yang digunakan untuk menaikkan cairan dari dataran rendah ke dataran tinggi atau untuk mengalirkan cairan dari daerah bertekanan rendah ke daerah yangbertekanan tinggi dan juga sebagai penguat laju aliran pada suatu sistemjaringan perpipaan. Hal ini dicapai dengan membuat suatu tekanan yangrendah pada sisi masuk atau suction dan tekanan yang tinggi pada sisikeluar atau discharge dari pompa.

Pada prinsipnya, pompa mengubah energi mekanik motor menjadienergi aliran fluida, bentuk fisik mini water pump dapat dilihat pada Gambar 2.10. Energi yang diterima oleh fluida akan digunakanuntuk menaikkan tekanan dan mengatasi tahanan-tahanan yang terdapatpada saluran yang dilalui.

Gambar 2.11 Mini Water Pump DC 12V

Mini water pump DC ini menggunakan motor DC 12V. Motor DC merupakan perangkat elektromagnetis yang mengubah energi listrik menjadi energi mekanik. Spesifikasi mini water pump DC 12V, yaitu :

1. Merk/Model : Mabuchi RS-360SH

2. Catu Daya : 7,2 Volt DC (min.3V, max 9V) 3. Kecepatan : 12500 RPM (360 mA, No Load)


(75)

4. Torsi maksimum (stall torque): 420 g.cm 5. Arus maksimum (stall current): 8,6 A

6. Konstruksi : Shunt Wound

7. Daya Keluaran : 0,7 W - 40 W (aproksimasi) 8. Diameter Saluran : 2,3 mm

9. Dimensi Keseluruhan : 49,6 mm x 27,7 mm

Energi mekanik ini digunakan untuk, misalnya memutar impeller pompa, fan atau blower, menggerakan kompresor, mengangkat bahan,dll. Motor listrik digunakan juga di rumah (mixer, bor listrik, fan angin) dan di industri. Motor listrik kadangkala disebut “kuda kerja” nya industri sebab diperkirakan bahwa motor-motor menggunakan sekitar 70% beban listrik total di industri.

Motor DC memerlukan suplai tegangan yang searah pada kumparan medan untuk diubah menjadi energi mekanik. Kumparan medan pada motor dc disebut stator (bagian yang tidak berputar) dan kumparan jangkar disebut rotor (bagian yang berputar).Jika terjadi putaran pada kumparan jangkar dalam pada medan magnet, maka akan timbul tegangan (GGL) yang berubah-ubah arah pada setiap setengah putaran, sehingga merupakan tegangan bolak-balik.

Prinsip kerja dari arus searah adalah membalik phasa tegangan dari gelombang yang mempunyai nilai positif dengan menggunakan komutator, dengan demikian arus yang berbalik arah dengan kumparan jangkar yang berputar dalam medan magnet. Bentuk motor paling sederhana memiliki kumparan satu lilitan yang bisa berputar bebas di antara kutub-kutub magnet permanen, seperti yang terlihat pada Gambar 2.11.


(76)

Gambar 2.12 Motor DC

Catu tegangan dc dari baterai menuju ke lilitan melalui sikat yang menyentuh komutator, dua segmen yang terhubung dengan dua ujung lilitan. Kumparan satu lilitan pada Gambar di atas disebut angker dinamo. Angker dinamo adalah sebutan untuk komponen yang berputar di antara medan magnet.

2.10. Power Supply

Power supply adalah alat atau sistem yang berfungsi untuk menyalurkan energi listrik atau bentuk energi jenis apapun yang sering digunakan untuk menyalurkan energi listrik. Secara prinsip rangkaian power supply adalah menurunkan tegangan AC , menyearahkan tegangan AC sehingga menjadi DC ,menstabilkan tegangan DC, yang terdiri atas transformator, dioda dan kapasitor/condensator.

Ada 2 jenis rangkaian penyearah, yaitu setengah gelombang (half wave) dan gelombang penuh (full wave). Arus listrik DC yang keluar dari dioda masih berupa deretan pulsa-pulsa. Tentu saja arus listrik DC semacam ini tidak cocok atau tidak dapat digunakan oleh perangkat elektronik apapun. Kapasitor berfungsi sebagai filter pada sebuah rangkaian power supply, yang saya maksud disini


(1)

DAFTAR ISI

Halaman

PENGHARGAAN ... i

ABSTRAK ... iii

ABSTRACT ... iv

DAFTAR ISI ... v

DAFTAR GAMBAR ... viii

DAFTAR TABEL ... x

BAB 1. PENDAHULUAN ... 1

1.1. Latar Belakang masalah ... 1

1.2. Rumusan Masalah ... 3

1.3. Tujuan Penulisan ... 4

1.4. Batasan Masalah ... 4

1.5. Metodologi Penulisan ... 4

1.6. Sistematika Penulisan ... 6

BAB 2. LANDASAN TEORI ... 7

2.1. Pengenalan Tanah ... 8

2.1.1. Tanah Kompos ... 9

2.1.2. Kelembaban ... 10

2.2. Irigasi ... 10

2.3. Mikrokontroler ... 11

2.3.1. ArduinoLeonardo ... 12

2.3.2. Pemetaan Pin Arduino Leonardo ... 15

2.3.3. Memori ... 17

2.3.4. Pin Input/Output ... 18

2.3.5. Sumber Daya ... 20

2.3.6. Arduino IDE ... 21

2.4. Komunikasi Serial ... 22


(2)

vi

2.4.2. Perintah Menerima Data ... 24

2.4.3. Perintah Recheck Data ... 25

2.5. Bahasa Pemograman C ... 25

2.5.1. Struktur Bahasa C ... 27

2.5.2. Pengenal ... 28

2.5.3. Tipe Data ... 28

2.5.4. Konstanta Dan Variabel ... 30

2.5.5. Identifier ... 30

2.6. Grove Moisture Sensor SEN0100 ... 31

2.7. LCD (Liquid Crystal Display) ... 33

2.7.1. Register LCD ... 35

2.8. Relay ... 38

2.9. Mini Water Pump DC 12V ... 40

2.10. Power Supply ... 43

2.10.1. Konversi AC ke DC ... 44

2.10.2. Transistor ... 45

2.10.3. Transformer ... 48

2.11. Saklar ... 49

2.12. Wifi ... 51

2.13. Ubidots ... 51

BAB 3. PERANCANGAN SISTEM ... 53

3.1. Diagram Blok Sistem ... 53

3.1.1. Fungsi Tiap Blog Diagram ... 54

3.2. Rangkaian Arduino Mega2560 ... 55

3.3. Rangkaian Grove Moisture Sensor SEN0100 ... 56

3.4. Rangkaian Power Supply ... 57

3.5. Rangkaian Liquid Crystal Display ... 58

3.6. Perancangan Wifi ... 59


(3)

BAB 4. PENGUJIAN RANGKAIAN ... 62

4.1. Pengujian Rangkaian Power Supply ... 63

4.2. Pengujian Arduino Mega2560 ... 64

4.3. Interface LCD ke Arduino ... 64

4.4. Pengujian Grove Moisture Sensor SEN0100 ... 66

4.5. Pengujian Pompa (Mini Water Pump 12V) ... 70

4.6. Pengujian WiFi ... 71

4.7. Pengujian Pengiriman data ke Server Ubidots ... 73

4.7. Pengujian Penyiraman Otomatis ... 76

BAB V. PENUTUP ... 79

5.1. Kesimpulan ... 79

5.2. Saran ... 80

DAFTAR PUSTAKA ... 81

LAMPIRAN Lampiran (1) Datasheet Grove Moisture Sensor ... 83

Lampiran (2) Datasheet Wifi WG1300-BO ... 87

Lampiran (3) Datasheet Mini Water Pump RS-360SH ... 89

Lampiran (4) Gambar Skematik Keseluruhan Sistem ... 90

Lampiran (5) Dokumentasi ... 91


(4)

viii

DAFTAR GAMBAR

Halaman

Gambar 2.1 Tanah Kompos ... 8

Gambar 2.2 Arduino Leonardo ... 12

Gambar 2.3 Papan Modul WiDO ... 12

Gambar 2.4 Pemetaan Pin Arduino Leonardo ... 17

Gambar 2.5 Tampilan Arduino IDE... 22

Gambar 2.6 Grove Moisture Sensor SEN0100 ... 32

Gambar 2.7 Tampilan LCD 20x4 ... 33

Gambar 2.8 Relay... 38

Gambar 2.9 Konstruksi Relay Posisi NC ... 39

Gambar 2.10 Konstruksi Relay Posisi NO ... 39

Gambar 2.11. Mini Water Pump DC 12V... 41

Gambar 2.12 Motor DC ... 42

Gambar 2.13 Transistor ... 45

Gambar 2.14 Transistor NPN ... 46

Gambar 2.15 Transistor PNP ... 47

Gambar 2.16 Trafo ... 48

Gambar 2.17 Hubungan Primer – Sekunder ... 48

Gambar 2.18 Saklar Open dan Close ... 49

Gambar 2.19 Ubidots Website... 52

Gambar 3.1 Diagram Blok Rangkaian ... 53

Gambar 3.2 Sistem Minimum Arduino Leonardo ... 55

Gambar 3.3. Grove Moisture Sensor SEN0100 ... 56

Gambar 3.4. Rangkaian Grove Moisture Sensor SEN0100 ... 56

Gambar 3.5 Rangkaian Power Supply ... 57

Gambar 3.6 Rangkaian LCD 20x4 ... 58

Gambar 3.7 Skematik WiFI WG1300-BO ... 59

Gambar 3.9 Flowchart Sistem ... 60

Gambar 4.1 Hasil Pengukuran Tegangan Keluaran 5V ... 62


(5)

Gambar 4.3Hasil Keluaran Sensor pada Serial Monitor Arduino IDE ... 64

Gambar 4.4 Tampilan LCD ... 65

Gambar 4.5 Pengujian Kelembaba tanah di tiga titik pada wadah ... 67

Gambar 4.6 Grafik Perbandingan Tegangan dengan Kelembaban Tanah .. 69

Gambar 4.7 Tampilan Ubidots pada Android ... 75

Gambar 4.8 Tampilan Ubidots pada PC ... 76

Gambar 4.9 Lokasi pengujian penyiraman otomatis... 77


(6)

x

DAFTAR TABEL

Halaman

Tabel 2.1 Daftar Pin Arduino Leonardo ... 15

Tabel 2.2 Tipe Data ... 30

Tabel 2.3 Spesifikasi Grove Moisture Sensor SEN0100 ... 32

Tabel 2.4 Konfigurasi Pin LCD 20x4 ... 34

Tabel 4.1 Pengujian Grove Moisture Sensor SEN0100 ... 67

Tabel 4.2 Hasil Pengujian Grove Moisture Sensor SEN0100 ... 69

Tabel 4.3 Hasil Pengujian Debit Air ... 71

Tabel 4.4 Pengujian jangkauan WiFI WG1300-BO di dalam ruangan ... 72

Tabel 4.5 Pengujian jangkauan WiFI WG1300-BO di luar ruangan ... 72