IMPLEMENTASI ROBOT PEMBERSIH LANTAI DENGAN PENGENDALI SMARTPHONE MENGGUNAKAN LOGIKA FUZZY

(1)

LAMPIRAN A : LISTING PROGRAM JAVA ANDROID MainActivity.java package com.TA.bluetooth; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Set; import java.util.UUID; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothSocket; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ImageButton; import android.widget.TextView;

public class MainActivity extends Activity implements View.OnTouchListener{

// Debugging

private static final String TAG = "BlueComm"; private static final boolean D = true;

// deklarasi

private BluetoothAdapter mBluetoothAdapter; private BluetoothSocket mmSocket;

private BluetoothDevice mmDevice; private InputStream mmInputStream; private OutputStream mmOutputStream; private Button ButtonOpen;

private Button ButtonClose; private ImageButton ButtonMove; private ImageButton ButtonBack; private ImageButton ButtonRight; private ImageButton ButtonLeft; private TextView Label;

private TextView stat; private TextView act; byte[] Buffer;

int readBufferPosition; int counter;

volatile boolean stopWorker; public String dta;


(2)

public ArrayAdapter mArrayAdapter; public String strParam="menunggu";

// Untuk menerima message dari background thread

Handler h = new Handler() {

@Override

public void handleMessage (Message m) {

super.handleMessage(m);

if(D) Log.d(TAG, "Handle Message"); Bundle bund =m.getData();

String key = bund.getString("My Key"); }

};

// On Create Activity

@Override

public void onCreate(Bundle savedInstanceState) {

if(D) Log.d(TAG, "On Create"); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

ButtonOpen = (Button)findViewById(R.id.ButtonOpen); ButtonClose = (Button)findViewById(R.id.ButtonClose); ButtonMove = (ImageButton)findViewById(R.id.ButtonTop); ButtonBack = (ImageButton)findViewById(R.id.ButtonBelow); ButtonRight = (ImageButton)findViewById(R.id.ButtonRight); ButtonLeft = (ImageButton)findViewById(R.id.ButtonLeft);

//TextOutput = (TextView)findViewById(R.id.TextOutput);

Label = (TextView)findViewById(R.id.label);

stat = (TextView)findViewById(R.id.textViewStatus); act= (TextView)findViewById(R.id.textViewAction);

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if(mBluetoothAdapter == null)

{

Label.setText("No bluetooth adapter available"); }

if(!mBluetoothAdapter.isEnabled()) {

Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

startActivityForResult(enableBluetooth, 0); }

}

@Override

public boolean onTouch(View arg0, MotionEvent arg1) {

// TODO Auto-generated method stub

act.setText(String.valueOf(arg1.getAction())); if(arg0==ButtonMove) strParam="m";

if(arg0==ButtonBack) strParam="b"; if(arg0==ButtonLeft) strParam="l"; if(arg0==ButtonRight) strParam="r";


(3)

if(arg1.getAction()!=1){ try{

sendData(strParam); }

catch (IOException ex) { } }

return false; }

// On Start Activity

@Override

public void onStart() {

super.onStart();

if(D) Log.e(TAG, "ON START");

//Open Button

ButtonOpen.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) { try { CariBT(); BukaBT(); }

catch (IOException ex) { } }

});

//Close button

ButtonClose.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

try {

closeBT(); }

catch (IOException ex) { } } }); ButtonMove.setOnTouchListener(this); ButtonBack.setOnTouchListener(this); ButtonLeft.setOnTouchListener(this); ButtonRight.setOnTouchListener(this); }

// Mencari Client Bluetooth yg sudah paired dengan nama

“nutscientist“ void CariBT() {


(4)

Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();

if(pairedDevices.size() > 0) {

for(BluetoothDevice device : pairedDevices) {

if(device.getName().equals("HC-05")) {

mmDevice = device;

Label.setText("Slave Client Found");

//break;

} else {

Label.setText("Slave Client Not Found"); }

@Override

protected void onStop() { super.onStop();

if(D) Log.e(TAG, "ON STOP"); }

@Override

protected void onDestroy() { super.onDestroy();

if(D) Log.e(TAG, "ON DESTROY"); }

@Override

protected void onResume() {

super.onResume();

if(D) Log.e(TAG, "+ ON RESUME +"); }

@Override

protected void onPause() { super.onPause();

if(D) Log.e(TAG, "- ON PAUSE -"); }

// Untuk memulai/ melakukan koneksi dengan client bluetooth

void BukaBT() throws IOException {

if(D) Log.d(TAG, "Buka BT");

UUID uuid = UUID.fromString( "00001101-0000-1000-8000-00805F9B34FB"); //Standard SerialPortService ID

mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid); mmSocket.connect();

mmOutputStream = mmSocket.getOutputStream(); mmInputStream = mmSocket.getInputStream(); ListenForData();

Label.setText("Bluetooth Opened");

//Toast.makeText(this, "Bluetooth Dibuka", Toast.LENGTH_LONG).show();


(5)

// Background thread untuk menerima data dari client bluetooth

void ListenForData() {

if(D) Log.d(TAG, "Listen Data");

final byte delimiter = 13; //atau Carriage Return (CR), di gunakan untuk mendeteksi akhir dari text

stopWorker = false; readBufferPosition = 0; Buffer = new byte[1024];

Thread workerThread = new Thread(new Runnable() {

@Override

public void run() { while(!Thread.currentThread().isInterrupted() && !stopWorker) { //Do work try {

int bytesAvailable = mmInputStream.available();

if(bytesAvailable > 0) {

byte[] packetBytes = new byte[bytesAvailable];

mmInputStream.read(packetBytes);

for(int i=0;i<bytesAvailable;i++)

{

byte b = packetBytes[i];

if(b == delimiter) {

byte[] encodedBytes = new byte[readBufferPosition];

System.arraycopy(Buffer, 0, encodedBytes, 0, encodedBytes.length); final String data = new String(encodedBytes, "US-ASCII");

readBufferPosition = 0;

Message m = new Message();

Bundle bund = new Bundle();

bund.putString("My Key", data);

m.setData(bund); h.sendMessage(m);

} else { Buffer[readBufferPosition++] = b;


(6)

} }

} }

catch (IOException ex) {

stopWorker = true; }

} }

});

workerThread.start(); }

// Untuk mengirim data ke client bluetooth

void sendData(String m) throws IOException {

if(D) Log.d(TAG, "Kirim Data"); mmOutputStream.write(m.getBytes()); Label.setText("Data Sent");

stat.setText(m);

//Toast.makeText(this, “Data Terkirim“, Toast.LENGTH_LONG).show();

}

// Untuk menutup/mengakhiri koneksi dengan client bluetooth

void closeBT() throws IOException {

if(D) Log.d(TAG, "Tutup BT"); stopWorker = true;

mmOutputStream.close(); mmInputStream.close(); mmSocket.close();

Label.setText("Bluetooth Closed");

//Toast.makeText(this, “Bluetooth Ditutup“, Toast.LENGTH_LONG).show();

} }


(7)

Activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/OpenButton"

android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >

> <ImageButton android:id="@+id/ButtonTop" android:layout_width="100dp" android:layout_height="100dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="21dp" android:background="@drawable/arrow_top"

android:contentDescription="@drawable/arrow_top" />

<ImageButton android:id="@+id/ButtonLeft" android:layout_width="100dp" android:layout_height="100dp" android:layout_below="@+id/ButtonTop" android:layout_toLeftOf="@+id/ButtonTop" android:background="@drawable/arrow_left"

android:contentDescription="@drawable/arrow_left" />

<ImageButton android:id="@+id/ButtonRight" android:layout_width="100dp" android:layout_height="100dp" android:layout_below="@+id/ButtonTop" android:layout_toRightOf="@+id/ButtonTop" android:background="@drawable/arrow_right"

android:contentDescription="@drawable/arrow_right" />

<ImageButton android:id="@+id/ButtonBelow" android:layout_width="100dp" android:layout_height="100dp" android:layout_below="@+id/ButtonRight" android:layout_toLeftOf="@+id/ButtonRight" android:background="@drawable/arrow_below" />

<Button android:id="@+id/ButtonOpen" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/ButtonLeft" android:layout_below="@+id/ButtonBelow" android:layout_marginTop="35dp" android:text="@string/Open" android:textColor="@color/open" />


(8)

<Button

android:id="@+id/ButtonClose" android:layout_width="wrap_content" android:layout_height="wrap_content"

android:layout_alignBaseline="@+id/ButtonOpen" android:layout_alignBottom="@+id/ButtonOpen" android:layout_alignRight="@+id/ButtonRight" android:text="@string/Close"

android:textColor="@color/close" />

<TextView

android:id="@+id/label"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/ButtonClose" android:layout_centerHorizontal="true" android:layout_marginBottom="7dp" android:text="@string/app_name" />

<TextView

android:id="@+id/textViewStatus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/ButtonOpen" android:layout_centerHorizontal="true" android:layout_marginTop="32dp"

android:text="TextView" />

<TextView

android:id="@+id/textViewAction" android:layout_width="wrap_content" android:layout_height="wrap_content"

android:layout_alignLeft="@+id/textViewStatus" android:layout_below="@+id/textViewStatus" android:layout_marginTop="8dp"

android:text="TextView" /> </RelativeLayout>


(9)

#include <mega32.h> #include <stdio.h> #include <delay.h> unsigned char der; void maju(){ PORTD.2=0; PORTD.3=1; PORTD.7=1; PORTD.6=0; OCR1A=100; OCR1B=100; }

// Declare your global variables here void b_kiri(){ PORTD.2=1; PORTD.3=0; PORTD.7=1; PORTD.6=0; OCR1A=100; OCR1B=100; } void b_kanan(){ PORTD.2=0; PORTD.3=1; PORTD.7=0; PORTD.6=1; OCR1A=100; OCR1B=100; } void mundur(){ PORTD.2=1; PORTD.3=0; PORTD.7=0; PORTD.6=1; OCR1A=100; OCR1B=100; } void stop(){ PORTD.2=0; PORTD.3=0; PORTD.7=0; PORTD.6=0;


(10)

int i=0;

void main(void) {

// Declare your local variables here // Input/Output Ports initialization // Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=Out

// State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 State0=0

PORTB=0x00; DDRB=0xFE;

// Port C initialization

// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;

DDRC=0xFF;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTD=0x00; DDRD=0xFE;

// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped TCCR0=0x00;

TCNT0=0x00;

// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 11,719 kHz // Mode: Fast PWM top=0x00FF // OC1A output: Non-Inv. // OC1B output: Non-Inv. // Noise Canceler: Off

// Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0xA1; TCCR1B=0x0D; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;


(11)

// Clock value: Timer2 Stopped // Mode: Normal top=0xFF

// OC2 output: Disconnected ASSR=0x00;

TCCR2=0x00; TCNT2=0x00; OCR2=0x00;

// External Interrupt(s) initialization // INT0: Off

// INT1: Off MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On

// USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00;

UCSRB=0x18; UCSRC=0x06; UBRRH=0x00; UBRRL=0x4D;

// Analog Comparator initialization // Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;

SFIOR=0x00;

// ADC initialization // ADC disabled

ADCSRA=0x00;

// SPI initialization // SPI disabled

SPCR=0x00;

// TWI initialization // TWI disabled

TWCR=0x00; while (1) {

// Place your code here

der = getchar (); // der berfungsi menampung nilai dari bT

if ( der == 'M' || der == 'm'){ maju(); OCR1A=150; OCR1B=150; delay_ms(100); // printf("maju\n"); }


(12)

mundur(); delay_ms(100);

// printf("mundur \n");

}

else if(der == 'R' || der == 'r'){ b_kanan();

delay_ms(100);

// printf("right \n"); }

else if(der == 'L' || der == 'l'){ b_kiri();

delay_ms(100);

// printf("left \n"); }

else {

delay_ms(100); // printf("%c \n",der);

}

// printf("mundur"); stop();

}

}


(13)

Nama : Edo Affan

Alamat Sekarang : Jl. Bakhti No. 30 Delitua, Deli Serdang Medan Alamat Orang Tua : Jl. Bakhti No. 30 Delitua, Deli Serdang Medan Telp/Hp : - / 082167673216

Email : edo.fan8@gmail.com

Riwayat Pendidikan

1998 –2004 : SD Negeri 101800 Delitua Medan 2004 – 2007 : SMP Negeri 1 Delitua Medan 2007 – 2010 : SMA Negeri 1 Delitua Medan

2010 – 2015 : S1 Ilmu Komputer Fasilkom-TI Universitas Sumatera Utara, Medan

Keahlian


(14)

Ardiansyah, Rezky. 2011. In System Programming AVR Menggunakan Koneksi Bluetooth. Jurnal Surabaya: Universitas Katolik Widya Mandala Surabaya. Chanana, Aanchal. 2012. Research on Bluetooth Technology. International Journal of

Innovative Technology and Exploring Engineering (IJITEE). Vol.1 no.6 . hal 36-41. ISSN: 2278-3075

Grunberg, david. 2010. Development of an Autonomous Dancing Robot. International Journal of Hybrid Information Technology: Department of Electrical and Computer Engineering. Vol.3, No.2. hal 33-44.

Nurmaini, Siti. 2012. Modeling of Mobile Robot System with Control Strategy Based on Type-2 Fuzzy Logic. Vol 2. No3. International Journal of Information and Communication Technology Research. Computer Engineering Department, Faculty of Computer Science, Sriwijaya University. Hal 235-241. ISSN: 2223-4985

Singh, Pratibha. 2011. A Modern Study Of Bluetooth Wireless Technology. International Journal Of Computer Science, Engineering and Information Technology. Vol.1, No.3 hal 55-63. DOI : 10.5121/ijcseit.2011.1306

Indriyanto, Cholik. 2015. Perancangan Sistem Kendali Remote Control Robot Mobil Menggunakan Smartphone Android. Researchgate: Universitas Sumatera Utara.

Budiharto, Widodo. 2010 .Elektronik Digital dan Mikroprosesor: Yogyakarta: Penerbit Andi.

Budiharto, Widodo. 2010 . Robotika Teori dan Impelemtasi . Yogyakarta: Andi Offset.

Kusumadewi, S. & Purnomo, H.2013. Aplikasi Logika Fuzzy untuk Pendukung Keputusan. Edisi 2. Graha Ilmu : Yogyakarta

Kuswadi, Son. 2007. Kendali Cerdas Teori dan Aplikasi Praktisnya. Yogyakarta: Penerbit Andi.

Iswanto. 2009. Mikrokontroller AT90S2313 dengan Basic Compiler . Yogyakarta: Penerbit Andi.


(15)

Makanan Berbasis Mikrokontroller ATMega32 Menggunakan Algoritma Fuzzy. Skripsi Medan: Universitas Sumatera Utara.

Seniman. 2009. Implementasi Algoritma Kriptografi AES pada Mikrokontroler ATMega32.Skripsi . Medan: Universitas Sumatra Utara.

Susilo, Dede. 2010. 48 Jam Kupas Tuntas Mikrokontroler MCS51 dan AVR . Yogyakarta: Penerbit Andi.

Suyadhi, Taufiq Dwi Septian. 2010 .Buku Pintar Robotika Bagaimana Merancang dan Membuat Robot Sendiri . Yogyakarta: Andi Offset . Usman .2008. Teknik Antarmuka dan Pemprograman Mikrokontroler AT89S52 Yogyakarta: Penerbit Andi.

Wakamenta, Yoga Nugraha. 2011. Perancangan dan Implementasi Robot IUV (Integrated Underwater Vehicle) Berbasis Sistem ROV (Remotely Operated Vehicle) sebagai Alat Bantu Survei Bawah Air . Skripsi Medan: Universitas Sumatra Utara.


(16)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

Robot pembersih lantai ini termasuk ke dalam jenis robot daratan (ground robot), secara umum robot ini bergerak menggunakan roda. Sesuai dengan namanya, robot ini merupakan robot akan bergerak mengikuti intruksi (masukkan) yang dikendalikan dari

smartphone. Oleh karena itu penulis akan menggunakan logika fuzzy sebagai pergerakan robot itu bergerak baik maju, mundur belok kiri, atau pun kekanan. Sehingga robot akan bergerak sesuai perintah user untuk membersihkan lantai dengan

vacum cleaner mini.

3.1 Analisis Sistem

Analisis sistem dapat didefinisikan sebagai penguraian dari suatu sistem yang utuh kedalam bagian-bagian komponennnya dengan maksud untuk mengidentifikasi dan mengevaluasi permasalahan-permasalahan yang terjadi dan kebutuhan - kebutuhan yang diharapkan sehingga dapat diusulkan perbaikan-perbaikannya.

3.1.1 Analisis Masalah

Untuk mengidentifikasi masalah digunakan diagram Ishikawa. Diagram Ishikawa adalah sebuah alat grafis yang digunakan untuk mengidentifikasi, mengeksplorasi dan menggambarkan masalah serta sebab dan akibat dari masalah tersebut. Ini sering disebut juga diagram sebab – akibat atau diagram tulang ikan (fishbone diagram).

Masalah utama adalah dalam melakukan pembersihan sering dilakukan secara manual (manusia membersihkan lantai menggunakan alat seperti sapu tanpa ada bantuan menggunakan robot) mengguanakan sapu. Kemudian untuk melakukan pembersihan sering merasa malas karena kebanyakan menggap sepele hal tersebut.

Seiring dengan kemajuan teknologi dalam hal robotik, Robot pembersih lantai ini dapat membantu pekerjaan manusia. Sebagai contohnya dalam kasus ini penulis melihat permasalahan-permasalahan yang ada dalam kasus sebuah ruangan yang


(17)

biasanya dalam hal pembersihan. Biasa pembersihan dilakukan dengan cara manual. Oleh karena itu robot pembersih lantai ini sekiranya dapat membantu kinerja manusia dalam melakukan pembersihan lantai dengan lebih efektif. Robot pembersih lantai ini dirangkai dengan menggunakan bahasa C CodeVision AVR.

Analisis masalah digambarkan dengan Diagram Ishikawa (fishbone Diagram) berikut ini. Bagian kepala atau segiempat yang berada di sebelah kanan merupakan masalah. Sementara di bagian tulang-tulangnya merupakan penyebab.

Membersihkan lantai denganRobot yang

dilengkapi vacum cleaner mini

Man Method

Material

Sapu sebagai alat manual yang dipakai dalam membersihkan sebelumnya Mechine

manusia Masih menggunakan Tenaga manusia untuk Membersihkan lantai

Masih membutuhkan manusia sebagai dalam menggerakkan

sapu

Gambar 3.1 Ishikawa Diagram Pada Robot Pembersih Lantai dengan Logika Fuzzy

3.1.2Analisis Kebutuhan (Requirement Analyst)

Analisis kebutuhan sistem dibagi menjadi dua, yaitu analisis kebutuhan non fungsional dan analisis kebutuhan fungsional. Pada tahapan analisis ini sangat dibutuhkan dalam mendukung kinerja sistem, apakah sistem yang dibuat telah sesuai dengan kebutuhan atau belum, karena kebutuhan sistem akan mendukung tercapainya tujuan yang diharapkan.

3.1.2.1Analisis Fungsional

Analisis kebutuhan fungsional merupakan jenis kebutuhan yang berisi proses-proses apa saja yang nantinya dilakukan oleh sistem. Kebutuhan fungsional juga berisi


(18)

informasi-informasi apa saja yang harus ada dan dihasilkan oleh sistem. Berikut ini adalah kebutuhan fungsional dari sistem, yaitu:

a. Robot dapat menerima perintah yang diinputkan oleh user.

b. Robot dapat melakukan manuver sesuai inputan (masukkan) berdasarkan Logika Fuzzy.

c. Robot dapat bergerak berdasarkan Logika Fuzzy dan membersihkan lantai dengan vacum cleaner mini .

3.1.2.2Analisis Nonfungsional

Untuk mendukung kinerja sistem, sistem juga dapat berfungsi sebagai berikut : 1. Robot menggunakan saklar agar dapat dioperasikan dengan mudah.

3.1.2 Pemodelan

Pemodelan sistem dapat dibagi menjadi Use Case Diagram, Activity diagram, dan Sequence diagram yang akan menggambarkan Alur Kerja dari Sistem Robot Pembersih Lantai ini.

3.1.2.1Pemodelan Persyaratan Sistem dengan Use Case

Unified Modelling Language(UML) merupakan bentuk perancangan dan dokumentasi perangkat lunak berbasis pemrograman berorientasi objek. Pada penelitian ini, bentuk perancangan UML menggunakan beberapa diagram, yaitu Usecase Diagram, Activity Diagram, dan Sequence Diagram. Use case adalah salah satu pemodelan yang digunakan untuk memodelkan persyaratan sistem. Dengan use case ini digambarkan siapa saja yang berinteraksi dengan sistem dan apa saja yang dapat dilakukan dengan sistem.

Diagram menunjukkan interaksi antara pengguna dan entitas eksternal lainnya dengan sistem yang sedang dikembangkan. Lebih jelasnya Use Case Diagram

digunakan untuk menggambarkan interaksi antara user dengan robot. Pada robot ini

user menginputkan perintah di smartphone berupa navigasi arah seperti maju, mundur, kanan, dan kiri dan akan dikirim ke robot yang akan ditangkap bluetooth dan akan bergerak sesuai user.


(19)

USER

Robot Pembersih lantai di kontrol menggunakan Smartphone

Pergerakkan Robot

Menonaktifkan Bluetooth

Include

Inc lude pearing Bluetooth

Gambar 3.2 Usecase Diagram Prototipe RobotPembersih Lantai

Tabel 3.1 Dokumentasi Naratif Use Case sistem

Nama Use case Pembersih lantai menggunakan vacum cleaner mini dengan logika fuzzy

Actors Pengguna

Description Proses ini mendeskripsikan proses pergerakan Robot dengan logika fuzzy

Pre-Condition Sistem dihidupkan (power on)

Basic Flow

Kegiatan pengguna Respon sistem

Menginput tombol navigasi Menunggu keseluruhan proses inputan selesai

Alternate Flow Menekan tombol reset/power Sistem reset

Post-Condition Robot akan bergerak sesuai inputan dari pengguna

3.1.2.2 Activity Diagram

Activity diagram menggambarkan proses-proses yang terjadi ketika aktivitas dimulai sampai aktivitas berhenti. Sedangkan use case menggambarkan bagaimana aktor rmenggunakan system untuk melakukan aktivitas. Aktivitas system dari robot ini didokumentasikan kedalam Activity Diagram seperti gambar 3.3 berikut.


(20)

menghidupkan robot (power on)

Mengaktifkan Bluetooth Smartphone

Pencarian Bluetooth HC-05

Memproses Inputan Navigasi

Robot bergerak sesuai Inputan pengguna mengulangi sistem

pengguna menekan tombol reset

Pengguna Sistem (Robot)

Y

T Menghidupkan Vacum Cleaner

Menginputkan navigasi

Robot membersihkan lantai

Matikan vacum cleaner

Matikan robot turn off

Gambar 3.3 Activity Diagram Prototipe Robot Pembersih Lantai denganLogika Fuzzy

Proses pembersihan lantai menggunakan robot yang dikontrol melalui

smartphone, Robot pembersih lantai ini di awali dengan menghidupkan robot (power on), menghidupkan vacum cleaner pada robot (on) dan mengaktifkan bluetooth pada

smartphone, kemudian bluetooth dari smartphone secara otomatis akan mencari

bluetooth external yang akan terjadi komunikasi serial. kemudian user akan mengarahkan robot pembersih lantai dengan memasukkan input-an button pada

smartphone yang akan mengontrol arah kemana robot pembersih lantai ini akan bekerja. Sistem akan melakukan perintah berdasarkan data yang telah dihasilkan menggunakan logika fuzzy. Ketika robot ini akan berbelok kanan, kiri, maju, dan


(21)

mundur sesuai logika fuzzy yaitu (IF-THAN). Dan ketika pekerjaan sudah seleai maka

User dapat menonaktifkan Bluetooth pada smartphone dan menonaktifkan vacum cleaner dan Robot tersebut.

3.1.2.3 Sequence Diagram

Sequence diagram merupakan interaksi antara aktor-aktor yang terdapat dalam suatu sistem, dan terjadi komunikasi yang berupa pesan. Pada gambar 3.4 berikut dijelaskan

sequence diagram robot pembersih lantai.

USER

Robot ;InputNavigasi :Fuzzy ;MoveRobot

Power ON

Instruksi bergerak

Input Navigasi

Pemilhan arah

Robot bergerak berdasarkan Input Navigasi dari user

Sistem Aktif

Robot Bergerak Sesuai Navigasi user

Gambar 3.4 Sequence Diagram Prototipe RobotPembersih Lantai dengan Algoritma Fuzzy

Pada sequence diagram robot pembersih lantai diatas dapat dilihat user

menghidupkan robot terlebih dahulu (power on). Sistem (robot) akan menerima inputan arah oleh pengguna yang akan dibersihkan oleh robot. Sistem akan melakukan proses pemilihan arah sesuai kontrol pengguna yang menggunakan logika fuzzy. Hasilnya robot dapat bergerak membersihkan lantai sesuai kontrol pengguna.


(22)

3.2 Perancangan Sistem

Pada tahap perancangan sistem akan dibagi menjadi beberapa bagian utama, yaitu penentuan komponen yang digunakan, perancangan kontruksi robot pembersih Lantai dan perancangan perangkat lunak robot serta algoritma fuzzy.

3.2.1Komponen yang Digunakan Robot

Komponen yang digunakan dikelompok menjadi dua yaitu komponen fisik dan komponen elektronik. Komponen fisik digunakan untuk membentuk kerangka robot, bagian body

utama, mekanis robot. Sedangkan komponen elektronik digunakan untuk membangun sirkuit utama (main circuit ), bagian aktuator. Berikut adalah tabel rincian dari peralatan dan komponen yang digunakan (Tabel 3.2, Tabel 3.3 dan Tabel 3.4).

Tabel 3.2 Tabel Peralatan yang digunakan

Nama Alat Fungsi

Gergaji Sebagai alat potong untuk papan PCB dan fisik robot

Bor Listrik Untuk melubangi papan PCB dan akrilik Gunting Sebagai alat potong untuk kabel

Cutter Untuk memotong Akrilik

Glue Gun Sebagai alat untuk melakukan pengeleman

Penggaris Sebagai alat ukur

Solder dan Timah Sebagai alat untuk Soldering

Obeng Untuk memasang dan membuka baut

Tang Untuk memasang dan membuka komponen

Multimeter Digital Alat ukur satuan listrik (tegangan, hambatan dan arus)

Tabel 3.3 Tabel Rincian Komponen Fisik

Nama Spesifikasi Keterangan

Akrilik Tebal 3 mm Sebagai badan robot dan

tempat meletakkan rangkaian


(23)

Papan PCB (Printed Circuit Board)

Tebal 3 mm Sebagai tempat untuk memasang rangkaian

Roda Diameter 65 mm

Lebar 30 mm

Sebagai roda penggerak

Baut dan Mur Diameter 2 mm Panjang 12 mm

Memasang rangkaian pada akrilik

Spacer Panjang 20 mm Tiang untuk akrilik

Tabel 3.4 Tabel Rincian Komponen Elektronik

Nama Spesifikasi Keterangan

Minimum Sistem Mikrokontroler

ATMega32 Processor Utama

Driver Motor L298D Driver untuk motor DC

Motor DC 6 Volt Akuator Roda

Komponen Pasif Kapasitor, Resistor, Kristal, Potensiometer

Komponen Sirkuit

Switch 6 pin Sebagai On/Off Robot

Pin Konektor Male Konektor

Housing Female Konektor

Kabel Pelangi Isi 20, 2 Meter Transmisi konektor Baterai 1,2 V, 2.000 MAh (8 buah) Sumber tegangan

Regulator IC 7805 Pengubah tegangan ke 5 Volt

3.2.2 Perancangan Konstruksi Robot Pembersih Lantai

Prototipe robot pembersih lantai yang akan dirancang ini untuk membantu dan meringankan pekerjaan manusia. Robot pembersih lantai ini merupakan robot yang diciptakan untuk membantu manusia dalam hal membersihkan lantai dirumah. Ada beberapa hal yang menjadi fokus dalam tahap perancangan robot yaitu kerangka robot, aktuator, sirkuit elektronik dan perangkat lunak.


(24)

3.2.3 Perancangan Kerangaka Robot

Kerangka adalah konstruksi robot yang akan menentukan desain, bentuk dan ukuran dari komponen fisik lainnya. Fungsi utama dari kerangka adalah sebagai tempat atau kedudukan untuk seluruh komponen robot. Disamping itu kerangka juga akan menentukan efisiensi kerja dari robot.

Untuk material kerangka robot dapat digunakan beberapa alternatif bahan seperti bahan dari logam, plastik, dan kayu. Pemilihan material akan sangat berpengaruh terhadap konstruksi robot seperti berat, kekuatan, ketahanan terhadap keretakan dan kemampuan meredam getaran. Perpaduan material yang baik dapat menghasilkan konstruksi yang kuat dan ringan.

Membicarakan soal robot, tidak lepas dari unsur mekanik sebagai kerangka robot. Kerangka robot pembersih lantai ini terbuat dari bahan plastik yaitu acrylic. Alasan penggunaan acrylic adalah, karena bahan ini ringan, kuat, tidak mudah rusak dan mudah dalam pengerjaannya. Untuk penghubung masing-masing acrylic menggunakan

spacer dengan ukuran 3,5 cm. Kerangka robot didesain dengan dimensi sebagai badan dasar robot, dengan menggunakan penyangga baut, mur dan spacer.

Gambar 3.5 Desain Rancangan Kerangka Robot

Dimana terdapat plat acrylic sebagai tempat baterai, driver motor, gearbox, motor DC, Mikrokontroller ATMega32 dan vacum cleaner mini untuk membersihkan lantai. Robot terdiri dari 2 buah roda yang terhubung secara mekanik menggunakan single gearbox dengan motor DC, dan 1 buah roda bebas.


(25)

3.2.4 Perancangan Aktuator Robot

Aktuator adalah komponen yang berfungsi untuk melakukan gerakan mekanis berdasarkan input perintah dari mikrokontroler (processor). Robot pembersih lantai ini memiliki 1 komponen mekanis yaitu roda (wheel).

Roda adalah aktuator yang akan digunakan oleh robot pembersih lantai untuk melakukan pergerakan didarat. untuk penggerak roda digunakan motor DC dan

gearbox untuk meningkatkan torsi motor. Motor DC yang digunakan akan dikontrol oleh mikrokontroler ATMega32 melalui IC driver L298. Arah perputaran motor akan ditentukan berdasarkan output dari IC L298. Rancangan aktuator robot pembersih lantai dapat dilihat pada gambar 3.9 berikut.

Gambar 3.6 Rancangan Aktuator Robot Pembersih Lantai

3.2.5 Perancangan Sirkuit Elektronik

Perancangan sirkuit elektronik berhubungan dengan perancangan rangkaian power supply, mikrokontroler ATMegaa32A, driver motor, dan motor DC. Semua rangkaian tersebut disatukan pada sebuah pada papan sirkuit utama (main circuit)


(26)

3.2.5.1Perancangan Rangkaian Sumber Tegangan

Agar sistem dapat bekerja dengan baik dibutuhkan sumber tegangan (power supply). Ada tiga jenis sumber tegangan yang dibutuhkan pada system ini yaitu sumber tegangan untuk sirkuit, sumber tegangan untuk actuator, dan sumber tegangan untuk

vacum cleaner mini. Sirkuit utama mebutuhkan tegangan agar dapat beroperasi dengan stabil yaitu 5V. Sedangkan aktuator membutuhkan tegangan 9V – 12V.

Sumber tegangan dapat diperoleh dengan beberapa cara seperti menggunakan adaptor AC – DC 1A – 5A dengan tegangan keluaran 6V – 12V atau menggunakan baterai (tunggal atau gabungan beberapa baterai) yang menghasilkan tegangan keluaran 9V – 12V. Untuk memperoleh tegangan 5V dari sumber tegangan 6V – 12V dapat digunakan IC regulator 7805, IC regulator ini berfungsi untuk menghasilkan tegangan keluaran sebesar 5V. Berikut adalah gambar rangkaian sumber tegangan untuk sirkuit utama (Gambar 3.12).

Gambar 3.7 Perancangan Rangkaian regulator IC 7805

3.2.5.2Perancangan Mikrokontroller ATMega32A

Mikrokontroler digunakan sebagai pengendali utama robot pembersih lantai. Mikrokontroler akan memproses input dari perangkat kontrol dan mengontrol semua aktivitas robot seperti pergerakan, sensing, dan komunikasi dengan perangkat kontrol. Rangkaian dasar yang digunakan untuk mengoperasikan sebuah mikrokontroler disebut


(27)

sebagai rangkaian sistem minimum. Rangkaian sistem minimum terdiri dari rangakaian osilator, rangkaian sistem reset, dan sumber tegangan.

Rangkaian osilator (clock) berfungsi memberikan sinyal clock untuk mikrokontroler dengan frekuensi tertentu agar mikrokontroler yang digunakan pada sistem dapat bekerja dengan baik. Rangkaian clock ini menghasilkan sinyal high atau low

dengan periode yang sama dan konstan. Pada gambar 3.13 ditunjukkan bentuk sinyal clock dalam satuan waktu mikro detik.

Gambar 3.8 Bentuk sinyal clock

Rangkaian clock (osilator) pada sistem menggunakan satu buah kristal dengan frekuensi 12 MHZ dan dua buah kapasitor keramik dengan kapasitas 22 pF. Keluaran dari osilator ini dihubungkan ke mikrokontroler pin 12 (XTAL2) dan pin 13 (XTAL1).

Sistem reset pada mikrokontroler berada pada pin 9. Sistem Mikrokontroler akan melakukan reset apabila pin 9 menerima satu siklus sinyal (1 dan 0). Jika sistem

reset berjalan dengan baik, maka mikrokontroler akan kembali menjalankan program dari awal. Pada gambar 3.14 berikut dapat dilihat sistem minimum mikrokontroler ATMega32A.

Tabel 3.5 Rincian Komponen Mikrokontroller ATMega32a

No Nama Barang Banyak Fungsi

1 Mikrokontroller

(ATmega32A) 1 Processor Utama

2 Crystall (12MHz) 1 Pembangkit Sinyal

3 Kapasitor nonpolar

(22pF) 2 Komponen Pendukung

4 Resistor 10k 1 Komponen Pendukung

5 Kapasitor10uF 1 Komponen Pendukung

6 Dioda1N4002 1 Komponen Pendukung

7 IC 7805 1 Pembagi tegangan sebesar 5 V


(28)

(100 uF)

9 LED 1 Sebagai indicator

10 Socket IC 40 PIN 1 Sebagai penyangga Mikrokontroller

Gambar 3.9 Perancangan Mikrokontroler ATMega32A

3.2.5.3Perancangan Rangkaian Driver Motor DC

Untuk mengendalikan perputaran motor DC digunakan IC L298. IC ini akan menerima input dari mikrokontrolerATMega32A dan menghasilkan output yang bersesuaian. L298 mampu men-drive dua motor DC sekaligus. Untuk mengaktifkan IC L298 membutuhkan dua sumber tegangan yaitu sumber tegangan 5 V untuk enable chip dan input-an (logic power supply) serta sumber tegangan yang kedua adalah sumber tegangan untuk motor DC sebesar 9V - 12V. Berikut ini adalah gambar rangkaian IC L298 (Gambar 3.18).

Tabel 3.6 Rincian Komponen Driver Motor IC L298D

No Nama Komponen Banyak Fungsi

1 IC L298D 1 Driver Motor DC

2 IC 7805 1 Pembagi tegangan sebesar 5 V

3 Dioda IN4002 9 Komponen Pendukung


(29)

5 Kapasitor bipolar (16 V) 1 Komponen Pendukung

6 LED 1 Indikator

7 TBlock 3 Terminal rangkaian

8 Resistor 4,7 Ohm 2 Komponen Pendukung

9 Pin jantan hitam 10 Konektor ke MCU

Gambar 3.10 Perancangan Rangkaian Driver Motor DC IC L298

3.2.6 Perancangan Program Mikrokontroller

Program dibuat dengan menggunakan bahasa C khusus untuk mikrokontroler AVR (ATMega32A termasuk keluarga AVR). Hasil compile ditanamkan ke dalam memori program mikrokontroler (memory flash). Program yang dibuat digunakan untuk membaca input dan melakukan output/proses pada robot pembersih lantai.


(30)

3.2.7 Perancangan Logika Fuzzy

Berikut adalah flowchart logika fuzzy :

Mulai

Kembali

Y Y

T

T

X = masukkan perintah pada

robot

X==”W” X==”A” X==”Z”

T T

Y Y

X==”D”

Kanan(); Maju(); Kiri(); Mundur();


(31)

3.2.8 Perancangan Diagram Block Robot Pembersih Lantai

Diagram Block ini bertujuan untuk melihat bagaimana sistem ini terhubung kemana saja dia terhubung, sehingga baik pengguna mengerti alur kerja sistem dari sistem robot pembersih lantai ini. Dari gambar 3.12 dapat kita lihat bahwa module bluetooth

membawa akan tersambung ke mikrokontroler ATMega32a, dan dari mikrokontroler inilah yang memproses semua perintah dari smartphone yang dikontrol oleh pengguna. Mikrokontroler akan menggerakkan aktuator dan memberi daya ke vacum cleaner mini.

Gambar 3.12 : Diagram Block Robot Pembersih Lantai

Modul

Bluetoo

th,

HC-05

Mikrokontroler ATMega32A

Driver Motor

Mot or 1

Mot or 2

Mini Vacum Cleaner

Smartphone

Android

Power

supply


(32)

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi Sistem

Setelah dilakukan analisis dan perancangan pada bab sebelumnya, proses yang akan dilakukan berikutnya adalah implementasi sistem sesuai dengan perancangan yang telah dibuat. Perangkat elektronika dapat dilakukan dengan dua cara yaitu menggunakan papan protoboard atau menggunakan PCB. Printed Circuit Board

(PCB) digunakan untuk mendapatkan rangkaian elektronika yang stabil, dengan menggunakan PCB pada sistem ini diharapkan perangkat tidak menimbulkan bug ke dalam sistem dan mempermudah pengerjaan dalam merangkai. Untuk itu pada implementasi dari sistem ini digunakan PCB

Kerangka robot pembersih lantai diimplementasikan menggunakan bahan plastik keras (acrilyc) dengan ketebalan lebih kurang 3 mm. Alasan utama penggunaan acrilyc adalah karena bahan yang cukup kuat , relatif ringan , mudah dalam pengerjaannnya serta mudah didapat. Secara keseluruhan bahan yang digunakan untuk membuat kerangka robot adalah acrilyc 3 mm, spacer berukuran 35 mm, baut dengan diameter 3 mm.Perangkat lunak diimplementasikan dengan bahasa pemrogramman c (CodeVisionAVR).

4.1.1 Implementasi Konstruksi Utama

Kerangka robot dibuat dengan 2 tingkat. Dimana tingkat pertama digunakan untuk menempatkan motor, driver motor, saklar on/off,, regulator serta baterry. Kemudian pada tingkat kedua digunakan untuk menempatkan rangkaian sistem minimum ATMega32a (MCU), Bluetooth , dan power supply. Dengan susunan ini nantinya user akan dengan mudah berinteraksi dengan robot (user interface). Untuk setiap tingkat dengan ukuran kerangka dibuat panjang 20 cm dan lebar 10 cm


(33)

Sedangkan tinggi setiap tingkat adalah kurang lebih 4,4 cm. Berikut gambar tahap implementasi kerangka robot (a) kerangka bagian samping (b) kerangka bagian bawah(c) kerangka bagian atas (gambar 4.1).

(a) (b)

(c)

Gambar 4.1 Implementasi kerangka robot Pembersih Lantai (a) Kerangka Bagian Samping(b) Kerangka Bagian Bawah (c) Kerangka Bagian Atas


(34)

4.1.2 Implementasi Konstruksi Aktuator

Robot pembersih lantai menggunakan dua motor DC sebagai aktuator yang digunakan sebagai penggerak robot. Aktuator ini diimplementasikan menggunakan motor gear box dan wheel. Motor yang digunakan dapat bekerja antara 3 – 6 volt. Untuk wheel memiliki diameter 8cm dan depth3.25 cm, dapat dilihat padagambar 4.3.

(a) aktuator pada bagian belakang robot.

(b)wheel aktuator


(35)

4.1.3 Implementasi Rangkaian Sirkuit Elektronik

Rangkaian sirkuit elektronik diimplementasikan dengan menggunakan papan PCB. PCB merupakan sebuah papan tipis yang di salah satu atau kedua sisinya terdapat jalur yang sudah tercetak dari lapisan tembaga. PCB berfungsi untuk meletakan komponen elektronika. PCB yang masih dalam keadaan polos atau belum terdapat jalur-jalur tembaga sebenarnya lebih tepat kalau disebut sebagai CCB (Cooper Clad Board). Jenis CCB sendiri ada banyak macamnya namun yang paling mudah dijumpai di toko-toko komponen eketronika adalah “PCB polos” dan “PCB lubang-lubang”. Penggunaan papan PCB dapat meminimalisir noise dan lebih stabil dibandingkan dengan penggunaan protoboard, disamping itu juga peletakan komponen elektronik pada papan PCB lebih kuat dibandingkan diletakkan pada protoboard.

Gambar 4.3 Implementasi Rangkaian Sirkuit Elektronik 4.1.4 Implementasi Board Mikrokontroller (main board)

Rangkaian dasar yang digunakan untuk mengoperasikan sebuah mikrokontroler disebut sebagai rangkaian sistem minimum. Rangkaian sistem minimum terdiri dari rangkaian osilator (cystal), sistem reset dan catu daya. Berdasarkan rangkaian sistem minimum tersebut dibuat suatu board yang berfungsi untuk menggabungkan fungsi dasar dan fungsi pengendalian yaitu board mikrokontroller dapat dilihat pada gambar 4.4.


(36)

(a) (b)

Gambar 4.4 Implementasi Rangkaian Mikrokontrollerpada PCB (a) Layout Mikrokontroller pada ARES

(b) Implementasi Menggunakan PCB

4.1.5 Implementasi Board Driver Motor DC

IC L298D memiliki rangkaian dasar untuk beroperasi (sistem minimum) juga diimplementasikan dalam PCB yang disebut boarddriver motor DC. Board driver ini nantinya akan menerima masukan dari mikrokontroller dan memberikan respon

terhadap motor DC.Layout driver motor dapat dilihat pada gambar 4.4.

(a) (b)

Gambar 4.5 Layout Driver Motor dengan menggunakan ARES (a)Layout Driver Motor pada ARES


(37)

Langkah-langkah implementasi rangkaian sirkuit elektronik pada papan PCB dijelaskan sebagai berikut:

1. Layout PCB dari rangkaian sirkuit elektronik. Layout pada PCB dibuat dengan menggunakan ISIS Proteus 7.7 Pro dan ARES. Setelah membuat schematic

rangkaian, tahap selanjut adalah membuat layout PCB dengan menggunakan ARES. Berikut gambar layout PCB (gambar 4.4.a dan 4.5.a).

2. Pencetakan, selanjutnya kita mencetak layoutdi kertas foto tipis (200 mg) untuk proses penyablonan.

3. Penyablonan, layout PCB yang sudah diprint sebelumnya, akan disablon ke papan PCB. Caranya adalah, pertama-tama papan PCB diamplas terlebih dahulu, kemudian dipanaskan dengan setrika, lalu letakkan cetakan layout

tersebut ke papan PCB, kemudian diratakan dengan setrika listrik hingga

layout tersebut menempel pada papan PCB (gambar 4.6).

(a) (b)

Gambar 4.6 Proses Penyablonan Layout pada PCB (a) alat dan bahan (b) Hasil Penyablonan

4. Pelarutan, pada tahap ini, papan PCB yang sudah disablon akan dilarutkan dengan larutan ferri cloride (FeCl3). Caranya adalah larutan FeCl3 dicampur dengan air hangat, kemudian papan PCB yang disablon dimasukkan kedalam larutan tersebut sampai tembaga pada papan PCB terlarut dan tinggal menyisakan layout yang telah kita buat sebelumnya. Berikut gambar 4.6 (a) papan PCB dan larutan FeCl3 (b) hasil pelarutan papan PCB.


(38)

(a) (b)

Gambar 4.7 Pelarutan PCB (a) PCB dan Larutan FeCl3

(b)Hasil pelarutan papan PCB

5. Pengeboran, pada tahap ini PCB yang telah dilarutkan akan dilubangi menggunakan bor dengan mata bor 0.8 mm – 1 mm. Tempat yang akan dilubangi telah tersedia pada layout PCB tersebut. Tujuan dari melubangi PCB untuk menyediakan tempat penyolderan antara komponen dengan papan PCB. Dapat dilihat pada gambar 4.7.

Gambar 4.8 Pengeboran pada PCB

6. Penempatan dan penyolderan, pada tahap ini setiap komponen ditempatkan pada posisi yang sesuai di papan PCB dan dilakukan penyolderan komponen (gambar 4.8).


(39)

Gambar 4.9 PemasanganKomponen pada PCB

7. Pengecekan dan pengujian, pada tahap ini setiap rangkaian dan komponen akan dicek serta diuji koneksinya. Pengujian ini menggunakan alat tambahan yaitu multimeter digital. Dapat dilihat pada gambar berikut (gambar 4.9).

Gambar 4.10 Uji komponen pada PCB 4.2 Implementasi Perangkat Lunak

4.2.1 Implementasi Modul Program Mikrokontroler

Modul program mikrokontroler dibuat menggunakan bahasa pemprograman c dengan CodeVisionAVR (CVAVR) sebagai compiler. Program *.c dikompilasi menjadi file *.hex yang kemudian di-download ke dalam mikrokontroler melalui downloader (ProgISP). Berikut gambar pembuatan program dengan CVAVR (gambar 4.10).


(40)

Gambar 4.11 Proses pembuatan program Mikrokontroller Robot Pembersih Lantai

4.2.2.1Rutin Program untuk Aktuator Robot

Rutin program berikut dapat digunakan untuk mengatur pergerakn robot baik maju, mundur, belok kiri dan belok kanan.

void maju(){ PORTD.2=0; PORTD.3=1; PORTD.7=1; PORTD.6=0; OCR1A=100; OCR1B=100; }

void b_kiri(){ PORTD.2=1; PORTD.3=0; PORTD.7=1; PORTD.6=0; OCR1A=100; OCR1B=100; }

void b_kanan(){ PORTD.2=0; PORTD.3=1;


(41)

PORTD.7=0; PORTD.6=1; OCR1A=100; OCR1B=100; }

void mundur(){ PORTD.2=1; PORTD.3=0; PORTD.7=0; PORTD.6=1; OCR1A=100; OCR1B=100; }

void stop(){ PORTD.2=0; PORTD.3=0; PORTD.7=0; PORTD.6=0;

Dari ritun program diatas disinilah letak proses fuzzyfikasi. Karena proses fuzzyfikasi

yaitu proses untuk mengubah variabel non-fuzzy (variabel numerik) menjadi variabel

fuzzy (variabel linguistik).terjadi yaitu dimana PORTD.2 menghasil nilai 0, PORTD.3 menghasilkan nilai 1, PORTD.7 menghasilkan nilai 1, PORTD.6 menghasilkan nilai 0, OCR1A menghasilkan nilai 100, dan OCR1B menghasilkan nilai 100 yang membuat kesimpulan menjadi arah maju. Dan seterusnya dapat kita lihat dari program rutin diatas.

4.2.2.2Skema Pembuatan Program di Mikrokontroller ATMega32a atau Cara menanamkan Program di Mikrokontroller ATMega32a

Dapat kita lihat dari skema gambar dibawah bagaimana Program C yang dibuat untuk menggerakkan Robot dibuat di Komputer dengan menggunakan Aplikasi AVR. Kemudian akan disimpan dan di tanam di Mikrokontroler ATMega 32a, melalui downloader inilah kita akan menyalurkan listing program c ke mikrokontroler. Untuk memindahkan Listing Program C ini kita akan menggunakan aplikasi Progisp. Dengan Program progisp ini kita akan memindahkan dan menanam program di Mikrokontroler ATMega32a.


(42)

Gambar 4.12 Skema Pembuatan Program di Mikrokontroller ATMega32a atau Cara menanamkan Program di Mikrokontroller ATMega32a

4.3 Pengujian Sistem

Pengujian sistem dilakukan untuk mengetahui bahwa sistem yang telah dibangun dapat berjalan dengan baik. Misalnya penekanan tombol pada button di smartphone

dapat terdeteksi sebagai input oleh mikrokontroller dan berjalan baik dalam pergerakan robot. Pengujian yang dilakukan pada sistem ini adalah pengujian input

robot, pengujian aktuator robot, pengujian pergerakan robot, pengujian vacum clener pada robot, dan pengujian bluetooth.

4.3.1 Pengujian Input Robot Pembersih Lantai

Pengujian ini dilakukan untuk melihat apakah button pada Smartphone Android akan berfungsi pada robot. Jika tahap pengujian smartphone android ini telah berhasil berarti hubungan antarmuka smartphone dan sistem bluetooth serta mikrokontroler yang dirangkai sudah berfungsi dengan baik.

Gambar 4.13 Pengujian Input Robot Pembersih Lantai Listing Program

C Yang dibuat dengan Aplikasi

Aplikasi Progisp

Downloader

Mikrokontroller ATMega32a


(43)

4.3.1.1 Pengujian Input Button Open pada Robot Pembersih Lantai

Misalnya jika button ditekan maka robot akan bergerak sesuai arah yang telah ditentukan, seperti jika ditekan button open maka hubungan komunikasi serial antara

bluetooth di smartphone dan bluetooth external terkoneksi dilihat pada gambar 4.14.

Gambar 4.14 Pengujian Input button Open pada Robot Pembersih Lantai

Contoh program open pada java android : public void onStart()

{

super.onStart();

if(D) Log.e(TAG, "ON START");

//Open Button

ButtonOpen.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

try {

CariBT(); BukaBT(); }

catch (IOException ex) { } }


(44)

4.3.1.2Pengujian Input Button Close pada Robot Pembersih Lantai

Misalnya jika button ditekan maka robot akan bergerak sesuai arah yang telah ditentukan, seperti jika ditekan button close maka hubungan komunikasi serial antara

bluetooth di smartphone dan bluetooth external tidak terkoneksi. Button close dilihat pada gambar 4.15.

Gambar 4.15 Pengujian Input button Close pada Robot Pembersih Lantai

Contoh program close pada java android :

ButtonClose.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

try {

closeBT(); }

catch (IOException ex) { } }

}); }

4.3.1.3Pengujian Input Arah Panah ke Atas pada Robot Pembersih Lantai

Misalnya jika button ditekan maka robot akan bergerak sesuai arah yang telah ditentukan, seperti jika ditekan button arah panah atas maka robot akan bergerak maju ke depan dapat dilihat pada gambar 4.16.


(45)

Gambar 4.16 Pengujian Inpu Button Arah Panah ke Atas pada Robot Pembersih Lantai

Contoh program close pada java android :

ButtonMove.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

try {

String kata="m";

for(int i=0;i<kata.length();i++){ sendData(kata.charAt(i)); }

}

catch (IOException ex) { } }

});

4.3.1.4Pengujian Input Arah Panah ke Kanan pada Robot Pembersih Lantai

Misalnya jika button ditekan maka robot akan bergerak sesuai arah yang telah ditentukan, seperti jika ditekan button arah panah atas maka robot akan bergerak belok ke kanan dapat dilihat pada gambar 4.17.


(46)

Gambar 4.17 Pengujian Input Button Arah Panah ke Kanan pada Robot Pembersih Lantai

4.3.1.5Pengujian Input Button Arah Panah ke Kiri pada Robot Pembersih Lantai

Contoh program close pada java android :

ButtonRight.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

try {

String kata="r"; for(int

i=0;i<kata.length();i++){

sendData(kata.charAt(i));

} }

catch (IOException ex) { } }

});

Misalnya jika button ditekan maka robot akan bergerak sesuai arah yang telah ditentukan, seperti jika ditekan button arah panah atas maka robot akan bergerak belok ke kiri dapat dilihat pada gambar 4.18.


(47)

Gambar 4.18 Pengujian Input Button Arah Panah ke Kiri pada Robot Pembersih Lantai

Contoh program close pada java android :

ButtonLeft.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

try {

String kata="l"; for(int

i=0;i<kata.length();i++){

sendData(kata.charAt(i));

} }

catch (IOException ex) { } }

});

4.3.1.6Pengujian Input Button Arah Panah ke Bawah pada Robot Pembersih Lantai

Misalnya jika button ditekan maka robot akan bergerak sesuai arah yang telah ditentukan, seperti jika ditekan button arah panah atas maka robot akan bergerak belok ke bawah dapat dilihat pada gambar 4.19.


(48)

Gambar 4.19 Pengujian Input Button Arah Panah ke Bawah pada Robot Pembersih Lantai

Contoh program close pada java android :

ButtonBack.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

try {

String kata="b"; for(int

i=0;i<kata.length();i++){

sendData(kata.charAt(i));

} }

catch (IOException ex) { } }

});

4.3.2 Pengujian Aktuator dan Pergerakan Robot Pembersih Lantai

Pengujian aktuator robot menyangkut pada bagian penggerak motor dengan modul program. Pengujian ini dilakukan untuk melihat apakah pergerakan robot sesuai dengan modul program yang dibuat. Jika modul program memanggil rutin program


(49)

maju()’, maka robot akan berjalan maju, dan menandakan tahap pengujian ini sudah berfungsi dengan baik, dapat dilihat pada gambar 4.20.

(a) (b)

Gambar 4.20 Pengujian Aktuator Robot Pembersih Lantai (a) Robot Belok Kiri (b) Posisi Robot Maju

4.3.3 Pengujian Vacum Cleaner pada Robot Pembersih Lantai

Pada pengujian ini akan dilihat apakah vacum cleaner mini sudah dapat digunakan. Dapat kita lihat pada gambar 4.21 (a) dimana robot pembersih lantai sedang membersihkan sampah yaitu potongan kertas. Pada gambar 4.21 (b) merupakan hasil dari pembersihan yang dilakukan vacum clener mini ini. Dan pada gambar 4.21 (c) saat dibongkar tempat penyimpanan sementara sampah. Sehingga vacum cleaner mini

ini sudah dapat berfungsi dengan baik dalam hal membersihkan sampah dalam hal ini contohnya potongan-potongan kertas.


(50)

(a) Pengujian Vacum Clener sedang membersihkan potongan kertas

(b)Pengujian Vacum Clener sudah membersihkan potongan kertas

(c) Pengujian isi dari Vacum Clener dari membersihkan potongan kertas Gambar 4.21 Pengujian Vacum Cleaner Robot Pembersih Lantai


(51)

4.3.4 Pengujian Bluetooth pada Robot Pembersih Lantai

Pengujian ini dilakukan untuk melihat apakah bluetooth eksternal yang ditekan saklar pada robot dapat berfungsi. Jika tahap pengujian bluetooth ini telah berhasil berarti hubungan atau antarmuka smartphone dan sistem bluetooth serta mikrokontroler yang dirangkai sudah berfungsi dengan baik. Dapat kita lihat pada gambar 4.22 (a) yaitu jika pearing atau proses pencarian bluetooth pada smartphone dan bluetooth eksternal berhasil maka led pada bluetooth akan menampilkan warna tidak berkedip, dan pada gambar 4.22 (b) yaitu jika lampu led pada bluetooth berkedip maka proses pencarian

bluetooth pada smartphone belum ditemukan.

(a) (b)

Gambar 4.22 Pengujian Bluetooth Robot Pembersih Lantai (a) Led Bluetoth sedang berkedip (b) Led Bluetooth tidak berkedip


(52)

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan hasil dari implementasi dan pengujian perancangan robot pembersih lantai dengan mikrokontroler ATMega32A dengan algoritma Fuzzy untuk membersihkan lantai , maka penulis mengambil kesimpulan sebagai berikut:

1. Robot pengendali menggunakan smartphone android berbasis mikrokontroler ATMega32A menggunakan logika Fuzzy berhasil di rakit dengan baik. robot yang bergerak dengan dikontrol oleh pengguna untuk membersihkan lantai, dengan hanya mengontrol , dengan menekan tombol arah seperti kanan, kiri, maju dan mundur melalui smartphone. Robot akan membersihkan dan bergerak lantai sesuai pengguna yang diperoleh dari logika fuzzy.

5.2 Saran

Berikut beberapa saran yang penulis berikan untuk pengembangan lebih lanjut dari penelitian ini:

1. Pengisian daya baterai masih dilakukan dalam keadaan manual, yaitu dengan cara di isi melalui charger. Dapat dilakukan pengembangan dengan mengisi daya melalui jaringan wifi.

2. Pengontrolan robot menggunakan smartphone, dapat dilakukan pengembangan dengan pemetaan tempat yang akan dibersihkan melaui komputer dan sehingga


(53)

komputer tersebut.

3. Penggunaan roda pada robot pembersih lantai sekarang hanya menggunakan 3 roda saja, untuk kedepannya dapat kembangkan lagi menjadi 4 roda.

4. Saklar pada vacum cleaner kedepannya sudah dapat dikontroler melalui

smartphone.

5. Pengontrolan Vacum cleaner pada robot, dapat dilakukan pengembangan dengan dikontrol naik dan turun sehingga tidak menghambat gerak robot saat tidak membersihkan lantai.


(54)

BAB 2

LANDASAN TEORI

2.1 Robotika 2.1.1 Sejarah Robot

Kata robot berasal dari Czech yaitu robot yang berarti bekerja. Istilah ini diperkenalkan ke publik oleh Karel Capek pada saat mementaskan RUR (Rossum’s

Universals Robots) pada tahun 1921. Robot adalah peralatan eletro-mekanik atau bio-mekanik, atau gabungan peralatan yang menghasilkan gerakan yang otonomi maupun gerakan berdasarkan gerakan yang diperintahkan.

Awal kemunculan robot dapat dirunut dari bangsa Yunani kuno yang membuat patung yang dapat dipindah-pindah. Pada tahun 270 SM, Ctesibus seorang insinyur Yunani, membuat organ dan jam air dengan komponen yang dapat dipindahkan. Pada zaman Nabi Muhammad SAW telah dibuat mesin perang dengan menggunakan roda dan dapat melontarkan bom. Bahkan Al-Jajari (1136-1206), seorang ilmuan Islam pada dinasti Artuqid, dianggap sebagai tokoh yang pertama kali menciptakan robot humanoid yang berfungsi sebagai 4 musisi.

Robot adalah rangkaian peralatan mekanika dan elektronika yang di rangkai bersama-sama yang bekerja dan beroperasi sesuai dengan instruksi atau program. Robot yang selama ini kita kenal adalah sebuah mesin berbentuk manusia yang dapat berbicara dan berjalan layaknya manusia. Robot tersebut adalah salah satu jenis robot berdasarkan bentuknya yaitu kategori Android. Robot jenis ini berbentuk seperti kendaraan yang dilengkapi dengan roda dan bergerak seperti sebuah mobil.

Humanoids, robot direkayasa untuk meniru bentuk manusia dan fungsi, telah menjadi semakin mampu dalam beberapa tahun terakhir . Misalnya, Albert Hubo, dari Korea Advanced Institut Sains dan Teknologi ( KAIST ), mampu berjalan, berjabat tangan, pegang benda, dan berbicara dengan ekspresi wajah realistis. Honda ASIMO


(55)

telah berjalan ke sebuah gedung konser panggung dan melakukan Detroit Symphony Orchestra, dan Wakamaru robot, diproduksi oleh Mitsubishi, telah dilakukan dalam produksi teater di Osaka, Jepang. The Kawada HRP2 humanoid dapat melakukan rumit tarian tradisional Jepang. Semua robot ini pertunjukan, bagaimanapun, telah mempekerjakan direncanakan gerakan koreografi yang memiliki telah diprogram cermat, pada dasarnya dengan tangan (David Grunberg, 2010)

2.1.2 Karakteristik Robot

Sebuah robot umumnya memiliki karakteristik sebagai berikut:

1. Sensing : Robot dapat mendeteksi lingkungan sekitarnya (halangan, panas, suara, dan image).

2. Mampu Bergerak : Robot umumnya bergerak dengan menggunakan kaki atau roda, dan pada beberapa kasus robot dapat terbang dan berenang.

3. Cerdas : Robot memiliki kecerdasan buatan agar dapat memutuskan aksi yang tepat dan akurat.

4. Membutuhkan Energi yang Memadai : Robot membutuhkan catu daya yang memadai.

2.1.3 Tipe Robot

Robot didesain dan dibuat sesuai kebutuhan pengguna. Robot, hingga saat ini, secara umum dibagi menjadi beberapa tipe sebagai berikut:

1. Robot manipulator

2. Robot mobil (mobile robot) a. Robot daratan (ground robot)

1. Robot beroda 2. Robot berkaki b. Robot air (submarine robot) c. Robot terbang (aerial robot)

Robot manipulator biasanya dicirikan dengan memiliki lengan (arm robot). Robot ini biasanya diterapkan pada dunia industri, seperti pada industri otomotif,


(56)

elektronik dan komputer. Sedangkan robot mobil mengarah ke robot yang bergerak, meskipun nantinya robot ini juga memiliki manipulator.

2.2Logika Fuzzy

2.2.1Sejarah Logika Fuzzy

Logika fuzzy pertama kali dikembangkan oleh Prof. Lotfi A. Zadeh, seorang peneliti dari Universitas California, pada tahun 1960-an. Logika fuzzy dikembangkan dari teori himpunan fuzzy.

Kurangnya pengetahuan yang tepat dan lengkap tentang lingkungan membatasi penerapan desain sistem kontrol konvensional ke domain dari mobile robot otonom. Apa yang dibutuhkan adalah kontrol cerdas dan pengambilan keputusan sistem dengan kemampuan untuk berpikir di bawah ketidakpastian dan belajar dari pengalaman.

Misalnya, banyak penelitian telah dilakukan di aplikasi mobile robot dengan masalah pasti seperti, logika fuzzy, jaringan saraf dan algoritma evolusioner. Sistem logika fuzzy (FLS) memiliki kemampuan menangani tak terduga dan ketidakpastian masalah. Dalam penelitian robotika, FLS adalah sistem kontrol yang mampu menavigasi mobile robot otonom tanpa campur tangan manusia. Dengan menggunakan aturan FLS, mobile robot tergantung pada perilaku sistem. Pendekatan berbasis perilaku dengan sistem logika fuzzy bertujuan untuk mengembangkan arsitektur agen cerdas, serta struktur kontrol yang efektif untuk mengendalikan agen atau robot fisik. Karena fleksibilitas yang tinggi dan kecepatan reaktif terhadap lingkungan tidak terstruktur, ketahanan dan keandalan sistem, dan kemampuan yang kuat untuk memperluas dan pembelajaran, pendekatan ini telah diterapkan umum dalam penelitian robot. Namun, sebagai sebuah sistem, perilaku mobile robot diperlakukan sebagai sistem keseluruhan dan dimodelkan dalam tingkat agregat. Oleh karena itu algoritma yang efisien yang terpisah dari pemodelan mobile robot diperlukan, karena robot mobile dan perilakunya adalah bagian interaktif dari keseluruhan sistem. Metode pemodelan sistematis sangat mungkin untuk menerapkannya ke bidang penelitian robot


(57)

Secara luas menggunakan teknik fuzzy logic dengan pendekatan berbasis perilaku dalam aplikasi mobile robot adalah jenis - 1 kabur sistem logika (T1FLS). Namun, dalam pelaksanaannya, T1FLS memiliki satu batasan . Pembatasan adalah bahwa himpunan fuzzy adalah tertentu dalam arti bahwa kelas keanggotaan untuk setiap masukan adalah nilai crisp. Ini berarti bahwa itu , dalam tingkat tertentu , hanya memetakan nilai crisp menjadi nilai crisp lain mulai dari 0 ke 1, menghilangkan sifat ketidakpastian yang awalnya menawarkan sebagai manfaat dari logika fuzzy. Hilangnya sifat ketidakpastian menyebabkan kinerja kegagalan ketidakpastian penanganan (Siti Nurmaini,2012).

Fuzzy secara bahasa diartikan sebagai kabur atau samar-samar. Suatu nilai dapat bernilai besar atau salah secara bersamaan. Dalam fuzzy dikenal derajat keanggotaan yang memiliki rentang nilai 0 (nol) hingga 1(satu). Berbeda dengan himpunan tegas yang memiliki nilai 1 atau 0 (ya atau tidak).

Logika Fuzzy merupakan seuatu logika yang memiliki nilai kekaburan atau kesamaran (fuzzyness) antara benar atau salah. Dalam teori logika fuzzy suatu nilai bias bernilai benar atau salah secara bersama. Namun berapa besar keberadaan dan kesalahan suatu tergantung pada bobot keanggotaan yang dimilikinya. Logika fuzzy

memiliki derajat keanggotaan dalam rentang 0 hingga 1. Berbeda dengan logika digital yang hanya memiliki dua nilai 1 atau 0. Logika fuzzy digunakan untuk menterjemahkan suatu besaran yang diekspresikan menggunakan bahasa (linguistic), misalkan besaran kecepatan laju kendaraan yang diekspresikan dengan pelan, agak cepat, cepat, dan sangat cepat. Dan logika fuzzy menunjukan sejauh mana suatu nilai itu benar dan sejauh mana suatu nilai itu salah. Tidak seperti logika klasik (scrisp)/ tegas, suatu nilai hanya mempunyai 2 kemungkinan yaitu merupakan suatu anggota himpunan atau tidak. Derajat keanggotaan 0 (nol) artinya nilai bukan merupakan anggota himpunan dan 1 (satu) berarti nilai tersebut adalah anggota himpunan.

Logika fuzzy adalah suatu cara yang tepat untuk memetakan suatu ruang input

kedalam suatu ruang output, mempunyai nilai kontinyu. Fuzzy dinyatakan dalam derajat dari suatu keanggotaan dan derajat dari kebenaran. Oleh sebab itu sesuatu dapat dikatakan sebagian benar dan sebagian salah pada waktu yang sama (Kusumadewi. 2004).

Logika Fuzzy memungkinkan nilai keanggotaan antara 0 dan 1, tingkat keabuan dan juga hitam dan putih, dan dalam bentuk linguistik, konsep tidak pasti


(58)

seperti "sedikit", "lumayan" dan "sangat" (Zadeh 1965). Kelebihan dari teori logika

fuzzy adalah kemampuan dalam proses penalaran secara bahasa (linguistic reasoning). Sehingga dalam perancangannya tidak memerlukan persamaan matematik dari objek yang akan dikendalikan.

Pada kebanyakan sistem rekayasa, ada dua sumber informasi yang penting, yaitu sensor – yang menyediakan pengukuran numerik dari variabel, dan tenaga ahli (human expert) – yang menyediakan instruksi linguistik dan deskripsi tentang sistem. Informasi dari sensor dapat disebut sebagai informasi numerik, sedangkan informasi dari tenaga ahli disebut informasi linguistik. Informasi numerik dinyatakan dengan angka, seperti 2, 3, 4, sementara informasi linguistik dinyatakan dengan kata-kata seperti besar, kecil, sangat panas, dan sebagainya. Pendekatan rekayasa konvensional banyak memanfaatkan informasi numerik dan sedikit sulit untuk memanfaatkan informasi linguistik. Mengingat begitu banyak pengetahuan manusia yang dinyatakan dengan istilah-istilah linguistik, memadukannya dengan sistem rekayasa secara sistematik dan efisien sangatlah penting.

Informasi linguistik biasanya disajikan dengan istilah-istilah yang kabur alias

fuzzy. Hal ini paling tidak ada tiga alasan yang dapat dikemukakan. Pertama, kita biasanya akan merasa lebih mudah dan efisien untuk mengkonsumsi pengetahuan kita dalam bentuk fuzzy. Hal ini dapat dimengerti karena kalau kita memaksakan untuk memakai istilah-istilah yang pasti dan kaku (crisp terms) maka yang pertama harus kita dapatkan adalah definisi yang pasti dari istilah diatas. Ini akan mengakibatkan kita terperangkap dalam prosedur yang sangat tidak efisien dan tidak praktis yang jelas-jelas tidak akan pernah kita hadapi dalam kehidupan sehari-hari. Kedua, pengetahuan kita tentang banyak persoalan pada hakikatnya adalah fuzzy. Sebagai contoh, ketika kita mempelajari teori baru, kita sering mengalami bahwa kita mengerti teori tersebut secara garis besarnya saja. Kita memperkenalkan teori itu kepada orang lain maka orang tersebut hanya akan mendapatkan gambaran yang fuzzy dari teori itu. Hal yang menarik adalah, meskipun gambarannya kurang jelas tetapi seringkali kita dapatkan bahwa perkenalan tersebut memenuhi tujuan dan sasaran yang diharapkan. Sebagai contoh, mengetahui motivasi, ide dasar, keuntungan, dan kerugian mungkin mencukupi untuk manajer tingkat tinggi. Ketiga banyak sistem yang terlalu rumit kalau dinyatakan dalam bentuk yang pasti . sebagai contoh, pengetahuan kita tentang suatu proses kimia mungkin hanya dapat dinyatakan dengan istilah-istilah yang fuzzy,


(59)

seperti, “Kalau suhunya naik dan alirannya tinggi maka tekanannya akan bertambah

tinggi.” Hal menarik yang dapat kita lihat disini adalah meskipun informasi linguistik tidak persis tetap ia dapat memberikan informasi yang penting mengenai sistem dan kadangkala hanya itulah informasi yang tersedia. Karena itu maka akan menarik kalau kita dapat menggunakan informasi fuzzy tersebut secara ilmiah.

Berikut ini akan dipaparkan beberapa metode yang secara efektif mampu mengkombinasikan informasi numerik dan linguistik dan memanfaatkannya untuk memecahkan masalah sistem kontrol (meskipun pada hakikatnya tidak harus terbatas pada bidang kontrol, tetapi bisa juga yang lain seperti pemrosesan sinyal, komunikasi, ekonomi, atau politik). Untuk keperluan tersebut maka dipakai sistem fuzzy adaptif.

Sistem fuzzy adaptif didefinisikan sebagai sistem logika fuzzy yang dilengkapi dengan algoritma pembelajaran. Sistem logika fuzzy tersebut disusun dari suatu kumpulan aturan JIKA-MAKA (IF-THEN) fuzzy sedangkan algoritma pembelajarannya dapat mengubah parameter dan struktur dari sistem logika fuzzy berdasarkan informasi numerik. Sistem fuzzy adaptif dapat dipandang sebagai sistem logika fuzzy yang memiliki kemampuan untuk membangkitkan aturan-aturan (rule) secara otomatis melalui proses pembelajaran (Kuswandi, 2007).

2.2.2Fuzzyfikasi

Proses fuzzyfikasi merupakan proses untuk mengubah variabel non-fuzzy (variabel numerik) menjadi variabel fuzzy (variabel linguistik). Nilai masukkan yang masih dalam bentuk variabel numerik yang telah dikuantisasi sebelum diolah oleh pengendali logika fuzzy harus diubah terlebih dahulu ke dalam variabel fuzzy. Melalui fungsi keanggotaan yang telah disusun maka dari nilai-nilai masukkan tersebut menjadi informasi fuzzy yang berguna nantinya untuk proses pengolahan secara fuzzy

pula. Proses ini disebut fuzzyfikasi (Kuswandi,2007).

2.3 Mikrokontroller ATMega32

Mikrokontroler adalah chip yang berisi berbagai unit penting untuk melakukan pemrosesan data (I/O, timer, memory, Arithmatic Logic Unit (ALU) dan lainnya) sehingga dapat berlaku sebagai pengendali dan komputer sederhana (Susilo, 2010). Ada juga yang berpendapat bahwa mikrokontroller merupakan sebuah kombinasi dari


(60)

sebuah CPU, memori dan I/O yang terintegrasi dalam bentuk sebuah IC atau dapat disebut dengan single Chip. Mikrokontroller AVR (Alf and Vegard’s Risc Processor) standart memiliki arsitektur 8 – bit, dimana semua intruksi dikemas dalam kode 16 – bit dan sebagian besar intruksi dalam 1 (satu) siklus clock. AVR berteknologi RISC (Reduced Intruction Set Computing).

Kontrol utama dari keseluruhan sistem pada penelitian ini ditangani oleh

mikrokontroler AVR (Alf and Vegard’s Risc Processor) ATmega32. Mikrokontroler

ini memiliki arsitektur 8 bit, dimana semua instruksi dikemas dalam kode 16 – bit, dan sebagian besar instruksinya dieksekusi dalam satu siklus clock. Kelebihan dari ATmega32 sehingga digunakan sebagai kontrol utama adalah sebagai berikut[8]:

1. Mempunyai performa yang tinggi (berkecepatan akses maksimum 16MHz) tetapi hemat daya.

2. Memori untuk program flash cukup besar yaitu 32Kb. 3. Memori internal (SRAM) cukup besar yaitu 2Kb. 4. Mendukung hubungan serial SPI.

5. Tersedia 3 channel timer/counter (2 untuk 8 bits dan 1 untuk 16 bits).

Gambar 2.1 Bentuk Fisik Mikrokontroller ATMega32A Mikrokontroler Keluarga AVR secara umum dikelompokkan menjadi 6 (enam) kelompok, yaitu(Iswanto, 2009) :

a. Keluarga ATtini : biasanya bentuk dimensinya kecil, ukuran memori kecil, jumlah pin masukan dan keluaran juga sedikit.

b. Keluarga AT90Sxx : Merupakan mikrokontroler yang pertama kali dibuat oleh Atmel Corp.

c. keluarga ATMega : Merupakan pengembangan mikrokontroler AT90Sxx dengan fitur yang lebih banyak.


(61)

e. Keluarga AT90USBxx : Merupakan mikrokontroler yang berorientasi pemrograman USB.

f. Keluarga AVR 32 Bit contohnya AP7000, UC3Axxxx, UC3Bxxx, UC3Lxx, dsb : Merupakan mikrokontroler dengan register dan instruksi dengan panjang 32 bit.

Mikrokontroler ATMega32 adalah keluarga dari ATMega yang memiliki Arsitektur seperti gambar 2.2 berikut :

Gambar 2.2 Arsitektur Mikrokontroller ATMega32A Fitur-fitur yang dimiliki oleh ATMega32A adalah sebagai berikut: a. Performa tinggi, mikrokontroler berdaya rendah.

b. Mikrokontroler dengan arsitektur RISC 8 bit.

1. 131 kode instruksi dalam bahasa assembly, hampir semua membutuhkan satu clock untuk eksekusi.


(62)

2. Mempunyai 32 x 8 bit register kerja kegunaan umum.

3. Pengoprasian full static, artinya clock dapat diperlambat, bahkan dihentikan sehingga chip berada dalam kondisi sleep. CMOS juga lebih tahan terhadap

noise.

4. Kecepatan mengeksekusi sampai dengan 16 mega instruksi per detik pada saat diberikan osilator sebesar 16 MHZ.

5. Terdapat rangkaian pengali 2 (dua) kali untuk siklus kerjanya di dalam chip. c. Flash EEPROM (Electrically Eraseable Programmable Read Only Memory)

sebesar 32 kilobyte yang dapat diprogram ulang dan dengan kemampuan Read While Write.

d. Ketahanan hapus-tulis Flash ROM adalah 10.000 kali dengan pengaturan pilihan kode boot dan Lock Bit yang independen.

e. Memori SRAM sebesar 2 kilobyte yang dapat dihapus-tulis 100.000 kali.

f. Penguncian kode program untuk keamanan perangakat lunak agar tidak dapat dibaca.

g. Memori yang non-volatile EEPROM sebesar 1024 byte.

h. Memiliki 2 buah timer/counter 8 bit sebanyak 2 buah dan sebuah timer/counter

16 bit dengan opsi PWM sebanyak 4 kanal.

i. Memiliki 8 kanal Analog to Digital Converter 10 bit dengan jenis single ended. j. Untuk kemasan TQFP ADC dapat diatur 7 buah kanal jenis diferensial dan

khusus 2 kanal dengan penguatan yang dapat diatur melalui registernya sebesar 1x, 10x atau 20x.

k. Antarmuka komunikasi serial USART yang dapat diprogram dengan kecepatan maksimal 2,5 Mbps.

l. Antarmuka SPI master / slave.

m. Watchdog timer dengan osilator di dalam chip yang dapat diprogram. n. Komparator Analog di dalam chip.

o. Pendeteksian tegangan gagal yang dapat diprogram.

p. Osilator RC internal yang terkalibrasi. q. Sumber interupsi internal dan eksternal.

r. Pilihan Mode sleep : idle, pereduksi noise ADC, penghematan daya konsumsi, penurunan daya, kondisi standby.


(63)

t. Terdapat pilihan kemasan PDIP 40 pin,TQFP 44 kaki, QFN/MLF 44 titik. u. Tegangan pengoprasian

1. 2,7 – 5,5 Volt untuk ATMega32L 2. 4,5 – 5,5 Volt untuk ATMega32 v. Kecepatan

1. 0 – 8 MHz untuk ATMega32L 2. 0 – 16 MHz untuk ATMega32

w. Konsumsi daya pada 1 MHz, 3 Volt, suhu 25o C untuk ATMega32L. 1. Aktif : 1,1 Miliampere

2. Mode idle : 0,35 Miliampere

3. Mode power down : kurang dari 1 Mikroampere

ATMega32 dapat dilihat pada Gambar 2.3 berikut.


(1)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel xi

Daftar Gambar xii

Bab 1 Pendahuluan

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metode Penelitian 3

1.7 Sistematika Penulisan 4

Bab 2 Tinjauan Pustaka

2.1 Robotika 6

2.1.1 Sejarah Robot 6

2.2.2 Karakteristik Robot 7

2.2.3 Tipe Robot 7

2.2 Logika Fuzzy 8

2.2.1 Sejarah Logika Fuzzy 8

2.2.2 Fuzzyfikasi 11

2.3 Mikrokontroler ATMega32A 11

2.3.1 Cara Kerja Mikrokontroler 17

2.4 Aktuator 18

2.4.1 Motor DC 18

2.4.2 Driver Motor DC L298 19

2.5 Bluetooth External 20

Bab 3 Analisis Dan Perancangan Sistem

3.1 Analisis Sistem 24

3.1.1 Analisis Masalah 24

3.1.2 Analisis Kebutuhan Sistem 25

3.1.2.1 Kebutuhan Fungsional Sistem 25

3.1.2.2 Kebutuhan Non-Fungsional Sistem 26

3.1.3 Pemodelan 26

3.1.3.1 Use Case Diagram 26


(2)

3.1.3.3 Sequence Diagram 29

3.2 Perancangan Sistem 30

3.2.1 Komponen yang Digunakan Robot 30

3.2.2 Perancangan Konstruksi Robot Pembersih Lantai 31

3.2.3 Perancangan Kerangka Robot 32

3.2.4 Perancangan Aktuator Robot 33

3.2.5 Perancangan Sirkuit Elektronik 33

3.2.5.1 Rangkaian Sumber Tegangan 34

3.2.5.2 Sistem Minimum Mikrokontroler ATMega32 34

3.2.5.3 Rangkaian Driver Motor DC 36

3.2.6 Rangkaian Program Mikrokontroler 37

3.2.7 Perancangan Logika Fuzzy 38

3.2.8 Perancangan Diagram Block Robot Pembersih Lantai 39

Bab 4 Implementasi Dan Pengujian Sistem

4.1 Implementasi Sistem 40

4.1.1 Implementasi Konstruksi Utama 40

4.1.2 Implementasi Konstruksi Aktuator Robot Pembersih Lantai 42 4.1.3 Implementasi Rangkaian Sirkuit Elektronik 43 4.1.4 Implementasi Board Mikrokontroller (main board) 43 4.1.5 Implementasi Board Driver Motor DC 44

4.2 Implementasi Perangkat Lunak 47

4.2.1 Implementasi Modul Program Mikrokontroler 47 4.2.2.1 Rutin Program untuk Aktuator Robot 48 4.2.2.2 Skema pembuatan program di mikrokontroller ATMega- 49 32a atau cara menanamkan program di mikrokontroller ATMega32a

4.3 Pengujian Sistem 50

4.3.1 Pengujian Input Robot Pembersih Lantai 50 4.3.1.1 Pengujian Input Button Open pada Robot Pembersih Lantai 51 4.3.1.2 Pengujian Input Button Close pada Robot Pembersih Lantai 52 4.3.1.3 Pengujian Input Button Arah Panah ke atas pada 52 Robot Pembersih Lantai

4.3.1.4 Pengujian Input Button Arah kanan ke atas pada 53 Robot Pembersih Lantai

4.3.1.5 Pengujian Input Button Arah kiri pada Robot 54 Pembersih Lantai

4.3.1.6 Pengujian Input Button Arah bawah pada Robot 55 Pembersih Lantai

4.3.2 Pengujian Aktuator Robot 56

4.3.3 Pengujian Vacum Clenaer pada Robot 57

4.3.4 Pengujian Bluetooth pada Robot 59


(3)

Bab 5 Kesimpulan Dan Saran

5.1 Kesimpulan 60

5.2 Saran 60

Daftar Pustaka 61

LAMPIRAN A: Listing Program Smartphone Android A-1

LAMPIRAN B: Listing Program Mikrokontroler B-1


(4)

DAFTAR TABEL

Halaman

Tabel 2.1 Konfigurasi Pin ATMega32 16

Tabel 2.2 Koneksi Pin Port Paralel dan ATMega32 17

Tabel 2.3 Tabel Logika Prinsip Kerja IC L298 20

Tabel 3.1 Dokumentasi Naratif Use Case Sistem 27

Tabel 3.2 Tabel Peralatan yang Digunakan 30

Tabel 3.3 Tabel Rincian Komponen Fisik 30

Tabel 3.4 Tabel Rincian Komponen Elektronik 31

Tabel 3.5 Rincian Komponen Mikrokontroler ATMega32a 35 Tabel 3.6 Rincian Komponen Driver Motor ICL L298D 36


(5)

DAFTAR GAMBAR

Halaman

Gambar 2.1 Bentuk Fisik Mikrokontroler ATMega32A 12

Gambar 2.2 Arsitektur ATMega32A 13

Gambar 2.3 Konfigurasi Pin ATMega32A 15

Gambar 2.4 Memory ATMega32A 16

Gambar 2.5 Prinsip Gaya Lorentz 18

Gambar 2.6 Arah perputaran motor DC 19

Gambar 2.7 Penampang IC L298 20

Gambar 2.8 Bagian-Bagian Bluetooth 21

Gambar 2.9 Embedded Blue 500 23

Gambar 3.1 Diagram Ishikawa untuk Analisis Permasalahan Sistem 25 Gambar 3.2 Use case diagram pencarian lintasan terpendek 27

Gambar 3.3 Activity Diagram Sistem 28

Gambar 3.4 Sequence Diagram Sistem 29

Gambar 3.5 Rancangan Kerangka Robot 32

Gambar 3.6 Rancangan atkuator robot 33

Gambar 3.7 Rangkaian regulator IC 7805 34

Gambar 3.8 Bentuk sinyal clock 35

Gambar 3.9 Sistem Minimum Mikrokontroler ATMega32A 36 Gambar 3.10 Perancangan Rangkaian Driver Motor DC IC L298 37

Gambar 3.11 Flowchart Logika Fuzzy 38

Gambar 3.12 Diagram Block pada Robot Pembersih Lantai 39 Gambar 4.1 Implementasi kerangka robot Pembersih Lantai 41 Gambar 4.2 Implementasi aktuator robot Pembersih Lantai 42 Gambar 4.3 Implemenasi Rangkaian Sirkuit Elektronik 43 Gambar 4.4 Implementasi Rangkaian Mikrokontroler pada PCB 44 Gambar 4.5 layout Driver Motor Dengan Menggunakan ARES 44

Gambar 4.6 Proses penyablonan Layout pada PCB 45


(6)

Gambar 4.8 Proses pengeboran pada PCB 46

Gambar 4.9 Proses Pemasangan komponen pada PCB 47

Gambar 4.10 Uji komponen pada PCB 47

Gambar 4.11 Proses Pembuatan Program Mikrokontroler Robot Pembersih Lantai 48 Gambar 4.12 Skema Pembuatan Program di Mikrokontroller ATMega32A 50 Gambar 4.13 Pengujian Input pada Robot Pembersih Lantai 50 Gambar 4.14 Pengujian Input Button Open pada Robot Pembersih Lantai 51 Gambar 4.15 Pengujian Input Button Close pada Robot Pembersih Lantai 52 Gambar 4.16 Pengujian Input Button Arah Panah ke Atas pada Robot 53

Pembersih Lantai

Gambar 4.17 Pengujian Input Button Arah Panah ke Kanan pada Robot 54 Pembersih Lantai

Gambar 4.18 Pengujian Input Button Arah Panah ke Kiri pada Robot 55 Pembersih Lantai

Gambar 4.19 Pengujian Input Button Arah Panah ke Bawah pada Robot 56 Pembersih Lantai

Gambar 4.20 Pengujian Aktuator pada Robot Pembersih Lantai 57 Gambar 4.21 Pengujian vacum cleaner mini pada Robot Pembersih Lantai 58 Gambar 4.22 Pengujian Bluetooth pada Robot Pembersih Lantai 59