LAMPIRAN A : LISTING PROGRAM JAVA ANDROID
public class MainActivity extends Activity implements View.OnTouchListener{
// Debugging
private static final String TAG = "BlueComm"; private static final boolean D = true;
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"); }
if(D) Log.d(TAG, "On Create"); super.onCreate(savedInstanceState);
Label.setText("No bluetooth adapter available"); }
public boolean onTouch(View arg0, MotionEvent arg1) {
if(arg1.getAction()!=1){ try{
sendData(strParam); }
catch (IOException ex) { } }
if(D) Log.e(TAG, "ON START");
//Open Button
catch (IOException ex) { } }
catch (IOException ex) { } }
// Mencari Client Bluetooth yg sudah paired dengan nama
“nutscientist“ void CariBT() {
Set<BluetoothDevice> pairedDevices =
Label.setText("Slave Client Found");
//break;
} else {
Label.setText("Slave Client Not Found"); }
if(D) Log.e(TAG, "ON DESTROY"); }
// 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
// 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() {
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);
}
// 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();
}
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" >
>
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"
<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"
#include <mega32.h>
// Declare your global variables here
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
// Clock value: Timer2 Stopped
// Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On
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();
}
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
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.
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
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
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
Sapu sebagai alat manual yang dipakai dalam membersihkan sebelumnya 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
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
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
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
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
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
Papan PCB (Printed Circuit Board)
Tebal 3 mm Sebagai tempat untuk memasang rangkaian
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
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
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)
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.
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
(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
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
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();
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
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
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
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
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)
(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
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
(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
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
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.7=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
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
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) { }
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
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
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) { }
} });
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
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
‘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
(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
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
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
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
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.
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)
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
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).
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
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
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.
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
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.
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.
Konfigurasi Pin ATMega32A dapat dilihat pada tabel 2.1 berikut: Tabel 2.1 Konfigurasi Pin ATMega32
Nomor Pin Nama Fungsi
10 VCC Catu daya positif
11, 31 GND Catu daya negative/ground
30 AVCC Catu daya positif untuk ADC internal
32 AREF Pin untuk tegangan referensi AADC
1 – 8 PB7…PB0 Pin masukan dan keluaran Port B
33 – 40 PA7…PA0 Pin masukan dan keluaran Port A
14 – 21 PD7…PD0 Pin masukan dan keluaran Port D
22 – 29 PC7…PC0 Pin masukan dan keluaran Port C
9 RESET Pin masukan untuk reset (active low)
12, 13 XTAL1 dan 2 Pin untuk masukan osilator eksternal
Memori ATMega32 dapat dilihat pada gambar 2.4 berikut:
(a) (b)
Untuk dapat menggunakan atau mengoprasikan mikrokontroller ATMega32, harus dibuat sistem minimum yang meliputi komponen antara lain : sumber tegangan (Vcc) sebesar 5V DC, Ground (Gnd) dan sistem reset. Mikrokontroller ATMega32 memiliki clock generator internal sebesar 1 MHz, sehingga mikrokontroller ini dapat bekerja langsung tanpa harus menggunakan clock external.
Untuk membuat program mikrokotroler ATMega32 digunakan editor dan
compiler untuk bahasa C. Dalam pembahasan ini editor dan compiler yang digunakan adalah WinAVR. Setelah proses pembuatan dan kompilasi program selesai dilakukan akan diperoleh file intel hex (*.hex). File ini adalah file yang nantinya akan diprogramkan ke mikrokontroler ATMega32 melalui interface bsd programmer (Brian Dean's Programmer) yang terhubung ke komputer melalui antarmuka port
paralel komputer. Koneksi antara ATmega32 dan port paralel untuk bsd programmer
diberikan oleh tabel 2.2.
Tabel 2.2 Koneksi Pin Port Paralel dan ATmega32
Port Paralel ATMega32
Prinsip kerja mikrokontroler adalah sebagai berikut:
Berdasarkan nilai yang berada pada register Program Counter, mikrokontroler mengambil data pada ROM dengan alamat sebagaimana yang tertera pada register Program Counter. Selanjutnya isi dari register Program Counter ditambah dengan satu (Increment) secara otomatis.
Data yang diambil pada ROM merupakan urutan instruksi program yang telah dibuat dan diisikan sebelumnya oleh pengguna.
pada register, RAM, isi Port, atau melakukan pembacaan dan dilanjutkan dengan pengubahan data.
Program Counter telah berubah nilainya (baik karena penambahan otomatis pada langkah 1, atau karena pengubahan-pengubahan pada langkah 2). Selanjutnya yang dilakukan oleh mikrokontroler adalah mengulang kembali siklus ini pada langkah 1. Demikian seterusnya hingga power dimatikan.
2.4 Aktuator
Aktuator adalah bagian yang berfungsi sebagai penggerak dari perintah yang diberikan oleh input. Aktuator biasanya merupakan peranti elektromekanik yang menghasilkan gaya gerakan. Aktuator terdiri dari 2 jenis, yaitu:
1. Aktuator elektrik
2. Aktuator pneumatik dan hidrolik.
Pada penelitian ini aktuator yang akan digunakan adalah aktuator elektrik yang berupa motor DC yang akan dijelaskan sebagai berikut :
2.4.1 Motor DC
Motor DC adalah suatu mesin yang berfungsi untuk mengubah energi listik arus searah menjadi energi gerak atau energi mekanik. Motor yang paling sederhana untuk pengaktifannya. Motor DC terdiri dari dua bagian utama, yaitu rotor dan stator. Rotor adalah bagian yang berputar atau armature, berupa koil dimana arus listrik dapat mengalir. Stator adalah bagian yang tetap dan menghasilkan medan magnet dari koilnya (Cholik, 2014).
Prinsip kerja motor DC adalah jika kumparan dialiri arus listrik maka pada kedua kumparan akan bekerja gaya Lorentz. Pada gambar 2.5 dapat dilihat prinsip kerja gaya Lorentz, dimana gaya yang jatuh pada telapak tangan (F), jari yang