Pengendalian Robot Beroda Melalui Smart Phone Android.

(1)

i

Universitas Kristen Maranatha

PENGENDALIAN ROBOT BERODA MELALUI SMART PHONE ANDROID

Disusun oleh :

Riyan Herliadi (0822078)

Jurusan Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha, Jln. Prof.Drg. Suria Sumantri, MPH no.65, Bandung, Indonesia,

Email : riyan_herliadi@yahoo.com

ABSTRAK

Perkembangan teknologi saat ini begitu pesat, dalam keadaan seperti ini banyak orang ingin sesuatu yang berbeda dan unik. Dengan menggunakan teknologi

bluetooth yang ada, penulis mencoba mengaplikasikan apa yang terdapat pada suatu film fiksi ilmiah mengenai mobil yang dapat dikendalikan jarak jauh menggunakan sebuah smartphone. Dari hal tersebut penulis terinspirasi untuk membuat suatu pengendali robot beroda dalam skala kecil dengan memanfaatkan media komunikasi

bluetooth.

Program untuk robot penulis buat dalam sebuah software Code_Vision AVR, yang berisi perintah-perintah yang akan dimasukkan ke dalam chip mikrokontroler ATMega 8535L sebagai penggerak robot. Sedangkan untuk antarmuka dengan pengguna, penulis menggunakan software eclipse. Komunikasi antara robot beroda dengan smart phone melalui media komunikasi Bluetooth.

Dari hasil pengujian, penulis berhasil mengaplikasikan teknologi bluetooth

pada robot beroda dengan memberikan instruksi seperti maju, mundur, berhenti, belok kanan, belok kiri, lampu jauh, dan lampu dekat.


(2)

ii

Universitas Kristen Maranatha WHEELED ROBOT CONTROLLING THROUGH ANDROID SMART

PHONE

Composed by :

Riyan Herliadi (0822078)

Electrical Engineering, Maranatha Christian University, Jln. Prof.Drg. Suria Sumantri, MPH no.65, Bandung, Indonesia,

Email : riyan_herliadi@yahoo.com

ABSTRACT

Nowadays, the development of technology is moving rapidly. In this case, many people want something different and unique. By using bluetooth technology, the writer wants to apply something that exists in several sci-fi movie, like a car which can be controlled from a long distant. Then, the writer was inspired to build a wheeled robot controller in smaller size using Bluetooth communication.

The writer has made program for the robot in software called Code_Vision AVR, which consists some instructions that will be packed to a microcontroller ATMega 8535L chip as robot activator. Besides, for interfacing used with user, the writer used eclipse software. Communication between wheeled robot and smart phone passed through with bluetooth communication.

The results from experiment that writer was revealed to apply the Bluetooth technology on the wheeled robot by giving some instructions such as go forward, go backward, stop, turn right, turn left, short lights, dan long lights.


(3)

vi

Universitas Kristen Maranatha

DAFTAR ISI

ABSTRAK... i

ABSTRACT ... ii

KATA PENGANTAR ... iii

DAFTAR ISI ... vi

DAFTAR TABEL ... viii

DAFTAR GAMBAR ... x

BAB I PENDAHULUAN ... 1

I.1 Latar Belakang. ... 1

I.2 Rumusan Masalah. ... 2

I.3 Tujuan ... 2

I.4 Pembatasan Masalah ... 3

I.5 Spesifikasi Alat... 3

I.6 Sistematika. ... 4

BAB II LANDASAN TEORI ... 5

II.1 Mikrokontroler ATmega 8535L ... 5

II.1.1 Arsitektur Mikrokontroler ATmega 8535L ... 6

II.1.2 Register dan Memory... 10

II.1.3 Port Input/Output ... 11

II.1.4 Pulse Width Modulation (PWM) ... 12

II.1.5 Komunikasi Serial USART ... 12

II.2 Android. ... 14

II.2.1 Arsitektur Android ... 16

II.2.1.1 Libraries ... 17

II.2.1.2 Android Runtime... 17


(4)

vii

Universitas Kristen Maranatha

II.2.1.4 Aplikasi ... 18

II.2.2 Fundamental Aplikasi ... 19

II.2.2.1 Komponen Aplikasi ... 19

II.2.2.2 File Manifest... 23

II.2.2.3 ActivitiesandTask... 23

II.2.2.4 Processesand Theards ... 25

II.2.2.5 Processesand Lifecycle ... 26

II.2.3 User Interface ... 28

II.2.4 API (Android Platfrom Interface) ... 31

II.3 Eclipse ... 32

II.4 Bluetooth ... 33

II.4.1 Protokol Bluetooth ... 36

II.4.2 Bluetooth V3 ... 37

II.5 Motor Driver ... 38

II.6 Motor DC ... 40

BAB III PERANCANGAN DAN REALISASI ... 42

III.1 Perancangan Perangkat Keras Sistem ... 42

III.1.1 Rangkaian Pengontrol Berbasis Mikrokontroler ATmega 8535L ... 43

III.2 Perancangan Perangkat Lunak ... 46

III.2.1 Pemogramman Pada Mikrokontroler ATmega 8535L ... 46

III.2.2 Pemogramman Pada Smart phone Android ... 48

III.2.2.1 Perancangan Algoritma Program Pada Smart phone Android ... 54

III.3 Realisasi Alat ... 56

III.3.1 Realisasi Perangkat Keras ... 56


(5)

viii

Universitas Kristen Maranatha

BAB IV DATA PENGAMATAN DAN ANALISIS DATA ... 60

IV.1 Pengujian Komunikasi Modul Bluetooth V3 ... 60

IV.2 Pengujian Komunikasi Smart phone Android Dengan Robot Beroda 62 IV.3 Pengujian Terhadap Sistem Pengendali Robot Beroda ... 69

IV.4 Data Pengamatan Tegangan, Arus dan Kecepatan ... 69

BAB V KESIMPULAN DAN SARAN ... 74

V.1 KESIMPULAN ... 74

V.2 SARAN ... 74

DAFTAR PUSTAKA ... 75 LAMPIRAN A ... A-1 LAMPIRAN B ... B-1 LAMPIRAN C ... B-1


(6)

ix

Universitas Kristen Maranatha

Daftar Tabel

Tabel 2.1 Tabel Konfigurasi Port ATmega 8535L ... 11

Tabel 2.2 Tabel API Level ... 31

Tabel 2.3 Tabel Stack Protocol Bluetooth.. ... 36

Tabel 2.4 Tabel Keterangan Kaki Bluetooth ... 38

Tabel 3.1 Tabel Konfigurasi Pin L293D dengan Port ATmega 8535L ... 45

Tabel 4.1 Tabel Respon Status PairingModul Bluetooth V3 Terhadap Jarak Pada Ruang Terbuka... ... 60

Tabel 4.2 Tabel Respon Status PairingModul Bluetooth V3 Terhadap Jarak Pada Ruang dengan Penghalang... ... 61

Tabel 4.3 Tabel Pengujian Karakter Instruksi Maju, Mundur, Dan Berhenti Pada Ruang Terbuka... ... 63

Tabel 4.4 Tabel Pengujian Karakter Instruksi Kanan, Kiri, Lampu Dekat Dan Lampu Jauh Pada Ruang Terbuka... ... 64

Tabel 4.5 Tabel Presentasi Keberhasilan Komunikasi Smartphone Dengan Mikrokontroller Pada Ruang Terbuka... 65

Tabel 4.6 Tabel Pengujian Karakter Instruksi Maju, Mundur, Dan Berhenti Pada Ruang Berpenghalang... ... 66

Tabel 4.7 Tabel Pengujian Karakter Instruksi Kanan, Kiri, Lampu Dekat Dan Lampu Jauh Pada Ruang Berpenghalang... ... 67

Tabel 4.8 Tabel Presentasi Keberhasilan Komunikasi Smartphone Dengan Mikrokontroller Pada Ruang Berpenghalang... ... 68

Tabel 4.9 Tabel Respon Robot Beroda Terhadap Perintah Pada Radius Optimal..69

Tabel 4.10 Data Pengamatan Tegangan Output Rata-Rata PWM Motor Kanan.. .. 70

Tabel 4.11 Data Pengamatan Tegangan Output Rata-Rata PWM Motor Kiri ... 70 Tabel 4.12 Data Pengamatan Tegangan Output Motor Driver Pada Motor Kanan 71


(7)

x

Universitas Kristen Maranatha

Tabel 4.13 Data Pengamatan Tegangan Output Motor Driver Pada Motor Kiri.. .. 71 Tabel 4.14 Data Pengamatan Perbandingan Arus Output Pada Motor Kanan dan Motor Kiri... ... 72 Tabel 4.15 Data Pengamatan Pengaruh Arus Output Terhadap Kecepatan Motor ... 72


(8)

xi

Universitas Kristen Maranatha

Daftar Gambar

Gambar 2.1 Konfigurasi Pin ATmega 8535L ... 7

Gambar 2.2 Diagram Blok ATmega 8535L ... 9

Gambar 2.3 Register ATmega 8535L.. ... 10

Gambar 2.4 Pemetaan Memory ATmega 8535L ... 10

Gambar 2.5 PWM Pada Sinyal Kotak (Square Wave) ... 12

Gambar 2.6 Kemasan Data Seri Asinkron ... 13

Gambar 2.7 Arsitektur Android ... 16

Gambar 2.8 Hirarki View ... 28

Gambar 2.9 Sistem Bluetooth... 33

Gambar 2.10 Fungsional Sistem Bluetooth ... 34

Gambar 2.11 Layer-layer Pada Sistem Bluetooth ... 35

Gambar 2.12 Bluetooth V3 ... 37

Gambar 2.13 Skematik Bluetooth V3.. ... 38

Gambar 2.14 Motor Driver dengan Menggunakan Transistor ... 39

Gambar 2.15 Motor Driver dengan Rangkaian H-Bridge... 39

Gambar 2.16 Jalur Transistor Aktif... 40

Gambar 2.17 Prinsip Kerja Motor DC ... 41

Gambar 3.1 Block Diagram Sistem Pengendalian Robot Beroda ... 42

Gambar 3.2 Skematik Mikrokontroler ATmega 8535L ... 44

Gambar 3.3 Flowchart Sistem Kendali Robot Pada Mikrokontroler ... 47

Gambar 3.4 Rancangan Tampilan Program Pada Smart Phone Android ... 49

Gambar 3.5 Tampilan Program Android XML File Pada Graphical Layout (Potrait) ………..51

Gambar 3.6 Tampilan Program Android XML File Pada Graphical Layout (Landscape)……….53


(9)

xii

Universitas Kristen Maranatha

Gambar 3.8 Kit Mikrokontroler ATMega 8535L... 57

Gambar 3.9 ModulBluetooth V3... 57

Gambar 3.10 Motor DC ... 58

Gambar 3.11 Robot Beroda Dan Smartphone Android... 58


(10)

LAMPIRAN A


(11)

A - 1 /******************************* This program was produced by the CodeWizardAVR V1.25.3 Standard Automatic Program Generator

© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project : Version :

Date : 6/1/2004

Author : Riyan Company : Indonesia Comments:

Chip type : ATmega8535L Program type : Application Clock frequency : 11.059200 MHz Memory model : Small

External SRAM size : 0 Data Stack size : 128

*******************************/

#include <mega8535.h>

#define RXB8 1 #define TXB8 0 #define UPE 2 #define OVR 3 #define FE 4 #define UDRE 5 #define RXC 7

#define FRAMING_ERROR (1<<FE)

#define PARITY_ERROR (1<<UPE)

#define DATA_OVERRUN

(1<<OVR)

#define DATA_REGISTER_EMPTY (1<<UDRE)

#define RX_COMPLETE (1<<RXC)

void lampu_dekat(void) {

OCR0=50; OCR2=50; }

void stop_lampu_dekat(void) {

OCR0=0; OCR2=0; }

void lampu_jauh(void) {

OCR0=255; OCR2=255; }

void stop_lampu_jauh(void) {

OCR0=0; OCR2=0; }

void maju(void) {


(12)

A - 2 PORTB.1=0;

PORTB.4=1; PORTB.5=0; }

void mundur(void) {

PORTB.0=0; PORTB.1=1; PORTB.4=0; PORTB.5=1; }

void kiri(void) {

PORTB.0=1; PORTB.1=1; PORTB.4=1; PORTB.5=0; }

void kanan(void) {

PORTB.0=1; PORTB.1=0; PORTB.4=1; PORTB.5=1; }

void diam(void) {

stop_lampu_dekat(); stop_lampu_jauh(); PORTB.0=0;

PORTB.1=0; PORTB.4=0; PORTB.5=0; }

// USART Receiver buffer #define RX_BUFFER_SIZE 8 char rx_buffer[RX_BUFFER_SIZE];

#if RX_BUFFER_SIZE<256

unsigned char

rx_wr_index,rx_rd_index,rx_counter; #else

unsigned int

rx_wr_index,rx_rd_index,rx_counter; #endif

// This flag is set on USART Receiver buffer overflow

bit rx_buffer_overflow;

// USART Receiver interrupt service routine

interrupt [USART_RXC] void usart_rx_isr(void)

{

char status,data; status=UCSRA; data=UDR;

if ((status & (FRAMING_ERROR |

PARITY_ERROR |

DATA_OVERRUN))==0) {


(13)

A - 3 if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE)

{

rx_counter=0;

rx_buffer_overflow=1; };

if(data=='f') { maju(); }

else if(data=='b') {

mundur(); }

else if(data=='r') {

kiri(); }

else if(data=='l') {

kanan(); }

else if(data=='s') {

diam(); }

else if(data=='a') {

lampu_dekat(); }

else if(data=='d') {

lampu_jauh(); }

}; }

#ifndef _DEBUG_TERMINAL_IO_ // Get a character from the USART Receiver buffer

#define _ALTERNATE_GETCHAR_ #pragma used+

char getchar(void) {

char data;

while (rx_counter==0); data=rx_buffer[rx_rd_index];

if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0; #asm("cli")

--rx_counter; #asm("sei") return data; }

#pragma used- #endif

// Standard Input/Output functions #include <stdio.h>

// Declare your global variables here void main(void)

{

// Declare your local variables here


(14)

A - 4 // Port A 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

PORTA=0x00; DDRA=0xFF;

// Port B initialization

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

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTB=0x00;

DDRB=0xFF;

// Port C 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

PORTC=0xFF; DDRC=0xFF;

// Port D initialization

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

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTD=0x00;

DDRD=0x7F;

// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x61;

TCNT0=0x00; OCR0=0x00;

// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 11059.200 kHz

// Mode: Ph. correct PWM top=00FFh // OC1A output: Inverted

// OC1B output: Inverted // Noise Canceler: Off

// Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0xF1;

TCCR1B=0x01; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=20;


(15)

A - 5 OCR1BH=0x00;

OCR1BL=20;

// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00;

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

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

// INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=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=0x98; UCSRC=0x86;

UBRRH=0x00; UBRRL=0x47;

// Analog Comparator initialization // Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80; SFIOR=0x00;

// Global enable interrupts #asm("sei")

while (1) {

// Place your code here

}; }


(16)

LAMPIRAN B


(17)

B - 1

Folder source.java pada

eclipse

MainActivity.Java

package com.example.bluetooth1;

import java.io.IOException;

import java.io.OutputStream;

import java.lang.reflect.Method;

import java.util.UUID;

import com.example.bluetooth1.R;

import android.app.Activity;

import android.bluetooth.BluetoothAdapter ; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothSocket;

import android.content.Intent;

import android.os.Build;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import

android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;

public class MainActivity extends

Activity {

private static final String TAG

= "bluetooth1";

Button

LampuJauh,LampuDekat,Kiri,Kanan,Ma ju,Mundur,Berhenti;

private BluetoothAdapter

btAdapter = null;

private BluetoothSocket btSocket

= null;

private OutputStream outStream =

null;

// SPP UUID service

private static final UUID

MY_UUID =

UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

// MAC-address of Bluetooth module

private static String address = "00:19:5D:EE:27:85";

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState) ; setContentView(R.layout.activity_m ain);

LampuJauh = (Button) findViewById(R.id.button2); LampuDekat = (Button) findViewById(R.id.button3); Kiri = (Button)

findViewById(R.id.button7); Kanan = (Button)

findViewById(R.id.button8); Maju = (Button)

findViewById(R.id.button4); Mundur = (Button) findViewById(R.id.button5); Berhenti = (Button) findViewById(R.id.button6);

btAdapter =

BluetoothAdapter.getDefaultAdapter ();

checkBTState();

LampuJauh.setOnClickListener(new

OnClickListener() {

public void onClick(View v) {

sendData("d");

Toast.makeText(getBaseContext(), "Pengaktifan Lampu Jauh",

Toast.LENGTH_SHORT).show(); }

});

LampuDekat.setOnClickListener(new

OnClickListener() {

public void onClick(View v) {

sendData("a");

Toast.makeText(getBaseContext(), "Pengaktifan Lampu Dekat", Toast.LENGTH_SHORT).show();


(18)

B - 2

} });

Kiri.setOnClickListener(new

OnClickListener() {

public void onClick(View v) {

sendData("r");

Toast.makeText(getBaseContext(), "Belok Kiri",

Toast.LENGTH_SHORT).show(); }

});

Kanan.setOnClickListener(new

OnClickListener() {

public void onClick(View v) {

sendData("l");

Toast.makeText(getBaseContext(), "Belok Kanan",

Toast.LENGTH_SHORT).show(); }

});

Maju.setOnClickListener(new

OnClickListener() {

public void onClick(View v) {

sendData("f");

Toast.makeText(getBaseContext(), "Bergerak Maju",

Toast.LENGTH_SHORT).show(); }

});

Mundur.setOnClickListener(new

OnClickListener() {

public void onClick(View v) {

sendData("b");

Toast.makeText(getBaseContext(), "Bergerak Mundur",

Toast.LENGTH_SHORT).show(); }

});

Berhenti.setOnClickListener(new

OnClickListener() {

public void onClick(View v) {

sendData("s");

Toast.makeText(getBaseContext(),

"Berhenti Bergerak",

Toast.LENGTH_SHORT).show(); }

}); }

private BluetoothSocket

createBluetoothSocket(BluetoothDev ice device) throws IOException { if(Build.VERSION.SDK_INT >= 10){

try {

final Method m = device.getClass().getMethod("creat eInsecureRfcommSocketToServiceReco rd", new Class[] { UUID.class }); return

(BluetoothSocket) m.invoke(device,

MY_UUID);

} catch (Exception e) { Log.e(TAG, "Could not create Insecure RFComm Connection",e);

} } return

device.createRfcommSocketToService Record(MY_UUID);

}

@Override

public void onResume() { super.onResume();

Log.d(TAG, "...onResume - try connect...");

// Set up a pointer to the remote node using it's address.

BluetoothDevice device =

btAdapter.getRemoteDevice(address) ;

// Two things are needed to make a connection:

// A MAC address, which we got above.

// A Service ID or UUID. In this case we are using the

// UUID for SPP.

try {

btSocket =

createBluetoothSocket(device); } catch (IOException e1) {

errorExit("Fatal Error", "In onResume() and socket create failed: " + e1.getMessage() + ".");


(19)

B - 3

}

// Discovery is resource intensive. Make sure it isn't going on

// when you attempt to connect and pass your message.

btAdapter.cancelDiscovery();

// Establish the connection. This will block until it connects.

Log.d(TAG, "...Connecting..."); try {

btSocket.connect(); Log.d(TAG, "...Connection ok...");

} catch (IOException e) { try {

btSocket.close();

} catch (IOException e2) { errorExit("Fatal Error", "In onResume() and unable to close socket during connection failure" + e2.getMessage() + ".");

} }

// Create a data stream so we can talk to server.

Log.d(TAG, "...Create Socket...");

try {

outStream =

btSocket.getOutputStream(); } catch (IOException e) { errorExit("Fatal Error", "In onResume() and output stream creation failed:" + e.getMessage() + ".");

} }

@Override

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

Log.d(TAG, "...In onPause()...");

if (outStream != null) { try {

outStream.flush(); } catch (IOException e) { errorExit("Fatal Error", "In onPause() and failed to flush output stream: " + e.getMessage() + ".");

} }

try {

btSocket.close();

} catch (IOException e2) { errorExit("Fatal Error", "In onPause() and failed to close socket." + e2.getMessage() + "."); }

}

private void checkBTState() { // Check for Bluetooth support and then check to make sure it is turned on

// Emulator doesn't support Bluetooth and will return null

if(btAdapter==null) { errorExit("Fatal Error", "Bluetooth not support"); } else {

if (btAdapter.isEnabled()) { Log.d(TAG, "...Bluetooth ON...");

} else {

//Prompt user to turn on Bluetooth

Intent enableBtIntent =

new Intent(BluetoothAdapter.ACTION_REQ UEST_ENABLE); startActivityForResult(enableBtInt ent, 1); } } }

private void errorExit(String title, String message){

Toast.makeText(getBaseContext(), title + " - " + message,

Toast.LENGTH_LONG).show(); finish();

}

private void sendData(String message) {

byte[] msgBuffer = message.getBytes();

Log.d(TAG, "...Send data: " + message + "...");

try {

outStream.write(msgBuffer); } catch (IOException e) {


(20)

B - 4

String msg = "In onResume() and an exception occurred during write: " + e.getMessage(); if

(address.equals("00:00:00:00:00:00 "))

msg = msg + ".\n\nUpdate your server address from

00:00:00:00:00:00 to the correct address on line 35 in the java code";

msg = msg + ".\n\nCheck that the SPP UUID: " +

MY_UUID.toString() + " exists on server.\n\n"; errorExit("Kerusakan Fatal!!!", msg); } } }

Folder gen (Generated

Java File) pada eclipse

I.BuildConfig.Java

/** Automatically generated file. DO NOT MODIFY */

package com.example.bluetooth1;

public final class BuildConfig { public final static boolean DEBUG = true;

}

II.R.Java

/* AUTO-GENERATED FILE. DO NOT MODIFY.

*

* This class was automatically generated by the

* aapt tool from the resource data it found. It

* should not be modified by hand. */

package com.example.bluetooth1;

public final class R {

public static final class attr {

}

public static final class

drawable {

public static final int ic_action_search=0x7f020000; public static final int ic_launcher=0x7f020001;

}

public static final class id { public static final int button2=0x7f060002;

public static final int button3=0x7f060003;

public static final int button4=0x7f060008;

public static final int button5=0x7f060009;

public static final int button6=0x7f06000a;

public static final int button7=0x7f060005;

public static final int button8=0x7f060006;

public static final int tableLayout1=0x7f060000; public static final int tableRow1=0x7f060001;

public static final int tableRow2=0x7f060004;

public static final int tableRow4=0x7f060007;

}

public static final class

layout {

public static final int activity_main=0x7f030000; }

public static final class

string {

public static final int Berhenti=0x7f040008;

public static final int Kanan=0x7f040005;

public static final int Kiri=0x7f040004;

public static final int LampuDekat=0x7f040003;

public static final int LampuJauh=0x7f040002;

public static final int Maju=0x7f040006;

public static final int Mundur=0x7f040007;

public static final int app_name=0x7f040000;

public static final int title_activity_main=0x7f040001; }

public static final class


(21)

B - 5

public static final int AppTheme=0x7f050000;

} }

Subfolder res

(Generated Java File)

pada eclipse

I.Folder Layout(Potrait)

Acticity_main.XML

<TableLayout

xmlns:android="http://schemas.andr oid.com/apk/res/android"

android:id="@+id/tableLayout1"

android:layout_width="fill_parent"

android:layout_height="fill_parent " >

<TableRow

android:id="@+id/tableRow1"

android:layout_width="wrap_content "

android:layout_height="wrap_conten t"

android:padding="3dip" >

<Button

android:id="@+id/button2"

android:layout_width="295dp"

android:layout_height="150dp"

android:text="Lampu Jauh" />

<Button

android:id="@+id/button3"

android:layout_width="295dp"

android:layout_height="150dp"

android:text="Lampu Dekat" />

</TableRow>

<! edittext span 2 column -->

<TableRow

android:id="@+id/tableRow2"

android:layout_width="wrap_content "

android:layout_height="wrap_conten t"

android:padding="3dip" >

<Button

android:id="@+id/button7"

android:layout_width="295dp"

android:layout_height="150dp"

android:text="Kiri" />

<Button

android:id="@+id/button8"

android:layout_width="295dp"

android:layout_height="150dp"

android:text="Kanan" />

</TableRow>

<TableRow

android:id="@+id/tableRow4"

android:layout_width="wrap_content "

android:layout_height="wrap_conten t"

android:padding="3dip" >

<Button

android:id="@+id/button4"

android:layout_width="295dp"

android:layout_height="150dp"

android:text="Maju" />

<Button

android:id="@+id/button5"

android:layout_width="295dp"

android:layout_height="150dp"

android:text="Mundur" />

</TableRow>

<Button

android:id="@+id/button6"

android:layout_width="wrap_content "


(22)

B - 6

android:layout_height="200dp"

android:text="Berhenti" />

</TableLayout>

II.Folder

Layout(Landscape)

Acticity_main.XML

<?xml version="1.0" encoding= "utf-8"?>

<TableLayout

xmlns:android="http://schemas.andr oid.com/apk/res/android"

android:id="@+id/tableLayout1"

android:layout_width="wrap_content "

android:layout_height="fill_parent " >

<TableRow

android:id="@+id/tableRow1"

android:layout_width="500dp"

android:layout_height="80dp"

android:baselineAligned="false"

android:padding="3dip" >

<Button

android:id="@+id/button2"

android:layout_width="500dp"

android:layout_height="80dp"

android:text="Lampu Jauh" />

<Button

android:id="@+id/button3"

android:layout_width="500dp"

android:layout_height="80dp"

android:text="Lampu Dekat" />

</TableRow>

<! edittext span 2 column -->

<TableRow

android:id="@+id/tableRow2"

android:layout_width="500dp"

android:layout_height="80dp"

android:padding="3dip" >

<Button

android:id="@+id/button7"

android:layout_width="500dp"

android:layout_height="80dp"

android:text="Kiri" />

<Button

android:id="@+id/button8"

android:layout_width="500dp"

android:layout_height="80dp"

android:text="Kanan" />

</TableRow>

<TableRow

android:id="@+id/tableRow4"

android:layout_width="500dp"

android:layout_height="80dp"

android:padding="3dip" >

<Button

android:id="@+id/button4"

android:layout_width="500dp"

android:layout_height="80dp"

android:text="Maju" />

<Button

android:id="@+id/button5"

android:layout_width="500dp"


(23)

B - 7

android:text="Mundur" />

</TableRow>

<Button

android:id="@+id/button6"

android:layout_width="500dp"

android:layout_height="80dp"

android:text="Berhenti" /> </TableLayout>

III.Folder Values

A.strings_main.XML

<resources>

<string

name="app_name">Pengendali Bluetooth V3</string>

<string

name="title_activity_main">Pengend ali Bluetooth V3</string>

<string name="LampuJauh">Lampu Jauh Aktif</string>

<string

name="LampuDekat">Lampu Dekat Aktif</string>

<string name="Kiri">Kiri Aktif</string>

<string name="Kanan">Kanan Aktif</string>

<string name="Maju">Maju Aktif</string>

<string name="Mundur">Mundur Aktif</string>

<string

name="Berhenti">Berhenti Aktif</string>

</resources>

B.style_main.XML

<resources>

<style name="AppTheme" parent="android:Theme.Holo" /> </resources>

AndroidManifest.XML

pada eclipse

<?xml version="1.0" encoding= "utf-8"?>

<manifest

xmlns:android="http://schemas.andr oid.com/apk/res/android"

package="com.example.bluetooth1"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk

android:targetSdkVersion="15" /> <uses-permission

android:name="android.permission.B LUETOOTH_ADMIN" />

<uses-permission

android:name="android.permission.B LUETOOTH" />

<application

android:icon="@drawable/ic_launche r"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<activity

android:name=".MainActivity"

android:label="@string/title_activ ity_main">

<intent-filter>

<action

android:name="android.intent.actio n.MAIN" />

<category

android:name="android.intent.categ ory.LAUNCHER" />

</intent-filter>

</activity>

</application> </manifest>


(24)

LAMPIRAN C


(25)

(26)

1 Universitas Kristen Maranatha

BAB I

PENDAHULUAN

Bab ini membahas tentang latar belakang beserta masalah dan tujuan dari

pembuatan sistem pengendalian robot beroda dengan komunikasi bluetooth berbasis

smart phone android. Bab ini pun berisikan spesifikasi alat yang digunakan dan keseluruhan isi dari laporan.

I.1 LATAR BELAKANG

Pemahaman tentang permasalahan di dunia teknologi, akan banyak menunjang pengetahuan secara teoritis yang didapat dari materi perkuliahan, sehingga mahasiswa dapat menjadi salah satu sumber daya manusia yang siap menghadapi tantangan era globalisasi dengan mempelajari cara kerja dari teknologi yang sudah ada, lalu membuat inovasi dalam teknologi tersebut.

Dengan adanya keinginan dari penulis untuk mencoba membuat inovasi melalui alat-alat yang berhubungan dengan bidang elektro, penulis ingin mempelajari sekaligus membuat sebuah robot beroda yang pengendaliannya dilakukan secara

manual dengan menggunakan remote (berupa smart phone android), dengan bantuan

koneksi bluetooth.

Android sebagai salah satu operating system yang berbasis pada

pemogramman Java dan XML dari smart phone,memiliki fungsi lebih luas jika

dibandingkan para kompetitornya yaitu dapat diaplikasikan untuk monitoring dan

controlling.

Robotik secara umum adalah suatu sistem yang menggunakan mikrokontroler digunakan untuk mengerjakan suatu instruksi tertentu. Pada dasarnya suatu robot dengan sistem yang kompleks diperlukan juga sebuah prosesor untuk mengatur kinerja dari mikrokontroler. Dalam hal ini penulis menggunakan android sebagai pengontrol pemrosesannya, karena lebih memudahkan dalam hal mobilitas dibandingkan menggunakan PC atau Laptop.


(27)

BAB I PENDAHULUAN 2

Universitas Kristen Maranatha

I.2 RUMUSAN MASALAH

Dari latar belakang di atas perumusan masalah yang akan dibahas adalah membuat robot beroda yang digerakkan dengan menggunakan dua buah motor DC,

serta dikendalikan secara manual (diantaranya maju, mundur, belok kiri, belok kanan,

berhenti, lampu dekat, lampu jauh, dan turbo) dengan menggunakan sebuah remote.

Remote ini berupa smart phone android. Dalam praktiknya nanti, pengendalian robot

beroda ini akan dilakukan dengan bantuan koneksi bluetooth. Selain perangkat keras,

tentunya dibutuhkan perangkat lunak yang berguna sebagai antarmuka antara pengguna (sebagai pengendali) dengan robot (sebagai alat yang dikendalikan).

Fokus utama tugas akhir ini adalah bagaimana membuat aplikasi android untuk mengendalikan kerja dari objek robot beroda, penulis diharapkan dapat menyatukan seluruh komponen / perangkat penunjang robot beroda tersebut, baik perangkat keras maupun perangkat lunak.

I.3 TUJUAN

Tujuan Tugas Akhir ini adalah :

 Merealisasikan pengendalian robot beroda melalui smartphone android.

I.4 PEMBATASAN MASALAH

Dengan banyaknya alat yang digunakan dalam pembuatan robot beroda ini, mahasiswa membatasi masalah untuk menghindari meluasnya materi pembahasan tugas akhir ini, maka permasalahan dibatasi pada beberapa hal berikut antara lain:

 Mikrokontroler yang digunakan yaitu ATMega 8535L.

Pulse Width Modulation (PWM) digunakan untuk mengendalikan kecepatan motor dc.

 Motor driver sebagai penggerak motor DC pada robot.

 Komunikasi dengan menggunakan bluetooth.

 Perangkat lunak yang digunakan sebagai antarmuka adalah bahasa

pemograman Java, XML, dan C.


(28)

BAB I PENDAHULUAN 3

Universitas Kristen Maranatha

Operating system yang digunakan pada smart phone android adalah ice cream sandwich 4.0.3

I.5 SPESIFIKASI ALAT

Alat-alat yang digunakan dalam pembuatan robot beroda ini antara lain:

 Mikrokontroler ATMega 8535L.

 Modul bluetooth V3.

 Dua buah motor DC.

 Dua buah IC L293D sebagai motor driver.

 Dimensi robot secara keseluruhan memiliki panjang 20cm, lebar 14cm,

memiliki 3 buah roda (2 roda sebagai penggerak dan 1 roda depan berupa roda

cluster).

 Rangkaian lampu super LED untuk aplikasi lampu jauh dan lampu dekat.

 Satu buah battery 9V untuk supply mikrokontroller ATmega 8535L dan 4

buah battery 1.5 V untuk mendrive motor dc.

I.6 SISTEMATIKA PENULISAN

Penyusunan laporan Tugas Akhir terdiri dari lima bab sebagai berikut:

Bab I PENDAHULUAN

Bab ini membahas mengenai latar belakang, rumusan masalah, tujuan, pembatasan masalah, spesifikasi alat, dan sistematika penulisan.

Bab II LANDASAN TEORI

Bab ini membahas mengenai teori yang akan digunakan dalam pembuatan sistem pengendali robot beroda dengan menggunakan mikrokontroler ATMega 8535L,

pembuatan pengendali robot beroda menggunakan software eclipse dan peripheral


(29)

BAB I PENDAHULUAN 4

Universitas Kristen Maranatha

Bab III PERANCANGAN DAN REALISASI

Bab ini membahas mengenai skematik robot beroda, motor driver, serta algoritma

program Codevision AVR dan Eclipse yang digunakan.

Bab IV HASIL DAN ANALISIS

Bab ini membahas tentang hasil kerja dari perangkat sistem pengendalian robot beroda.

Bab V KESIMPULAN DAN SARAN

Bab ini membahas tentang kesimpulan dari pembuatan sistem pengendalian robot beroda, serta saran yang diperlukan untuk pengembangan.


(30)

74 Universitas Kristen Maranatha BAB V

SARAN DAN KESIMPULAN

Bab ini berisi kesimpulan dari Tugas Akhir serta saran yang diperlukan untuk pengembangan sistem pengendalian robot beroda berikutnya.

V.1 KESIMPULAN

Pada data pengamatan telah diketahui bahwa sistem pengendalian robot beroda berbasis smartphone android dengan komunikasi bluetooth mampu memenuhi tujuan awal yang telah ditetapkan. Dari Tugas Akhir ini dapat diambil kesimpulan sebagai berikut:

1. Aplikasi pada smartphone android yang dibuat dapat mengirimkan karakter yang sesuai sehingga robot dapat mengerjakan instruksi dengan tepat.

2. Robot beroda dapat bergerak maju, mundur, berbelok ke arah kanan, kiri, berhenti, lampu dekat, dan lampu jauh yang menunjukkan bahwa sistem bekerja dengan baik.

3. Komunikasi antara robot beroda dan smartphone android di ruang terbuka bekerja optimal pada radius maksimum sampai dengan 25 meter.

4. Komunikasi antara robot beroda dan smartphone android di ruang

berpenghalang bekerja optimal pada radius maksimum sampai dengan 15 meter.

V.2 SARAN

Sistem pengendalian robot beroda masih memiliki kekurangan dan dapat dikembangkan. Saran-saran untuk pengembangan antara lain:

1. Penambahan sensor juga dapat diaplikasikan untuk menunjang kerja robot.


(31)

75 Universitas Kristen Maranatha

DAFTAR PUSTAKA

1. Andrianto, Heri. Pemrograman Mikrokontroler AVR ATMEGA16 Menggunakan Bahasa C (CodeVision AVR). 2008. Bandung: INFORMATIKA.

2. Raharjo, Budi. Mudah Belajar Java (Revisi Kedua). 2012. Bandung: INFORMATIKA.

3. http://www.dfrobot.com/image/data/TEL0026/TEL0026_Datasheet.pdf 4. http://droboticsonline.com/ebaydownloads/BluetoothV3%20Manual.pdf 5. http://www.atmel.com/images/doc2502.pdf

6. http://en.wikipedia.org/wiki/Bluetooth

7. http://kuliah.andifajar.com/aktuator/prinsip-kerja-motor-dc 8. http://english.cxem.net/arduino5.php


(1)

BAB I PENDAHULUAN

Bab ini membahas tentang latar belakang beserta masalah dan tujuan dari pembuatan sistem pengendalian robot beroda dengan komunikasi bluetooth berbasis smart phone android. Bab ini pun berisikan spesifikasi alat yang digunakan dan keseluruhan isi dari laporan.

I.1 LATAR BELAKANG

Pemahaman tentang permasalahan di dunia teknologi, akan banyak menunjang pengetahuan secara teoritis yang didapat dari materi perkuliahan, sehingga mahasiswa dapat menjadi salah satu sumber daya manusia yang siap menghadapi tantangan era globalisasi dengan mempelajari cara kerja dari teknologi yang sudah ada, lalu membuat inovasi dalam teknologi tersebut.

Dengan adanya keinginan dari penulis untuk mencoba membuat inovasi melalui alat-alat yang berhubungan dengan bidang elektro, penulis ingin mempelajari sekaligus membuat sebuah robot beroda yang pengendaliannya dilakukan secara manual dengan menggunakan remote (berupa smart phone android), dengan bantuan koneksi bluetooth.

Android sebagai salah satu operating system yang berbasis pada pemogramman Java dan XML dari smart phone,memiliki fungsi lebih luas jika dibandingkan para kompetitornya yaitu dapat diaplikasikan untuk monitoring dan controlling.

Robotik secara umum adalah suatu sistem yang menggunakan mikrokontroler digunakan untuk mengerjakan suatu instruksi tertentu. Pada dasarnya suatu robot dengan sistem yang kompleks diperlukan juga sebuah prosesor untuk mengatur kinerja dari mikrokontroler. Dalam hal ini penulis menggunakan android sebagai pengontrol pemrosesannya, karena lebih memudahkan dalam hal mobilitas dibandingkan menggunakan PC atau Laptop.


(2)

BAB I PENDAHULUAN 2

I.2 RUMUSAN MASALAH

Dari latar belakang di atas perumusan masalah yang akan dibahas adalah membuat robot beroda yang digerakkan dengan menggunakan dua buah motor DC, serta dikendalikan secara manual (diantaranya maju, mundur, belok kiri, belok kanan, berhenti, lampu dekat, lampu jauh, dan turbo) dengan menggunakan sebuah remote. Remote ini berupa smart phone android. Dalam praktiknya nanti, pengendalian robot beroda ini akan dilakukan dengan bantuan koneksi bluetooth. Selain perangkat keras, tentunya dibutuhkan perangkat lunak yang berguna sebagai antarmuka antara pengguna (sebagai pengendali) dengan robot (sebagai alat yang dikendalikan).

Fokus utama tugas akhir ini adalah bagaimana membuat aplikasi android untuk mengendalikan kerja dari objek robot beroda, penulis diharapkan dapat menyatukan seluruh komponen / perangkat penunjang robot beroda tersebut, baik perangkat keras maupun perangkat lunak.

I.3 TUJUAN

Tujuan Tugas Akhir ini adalah :

 Merealisasikan pengendalian robot beroda melalui smartphone android. I.4 PEMBATASAN MASALAH

Dengan banyaknya alat yang digunakan dalam pembuatan robot beroda ini, mahasiswa membatasi masalah untuk menghindari meluasnya materi pembahasan tugas akhir ini, maka permasalahan dibatasi pada beberapa hal berikut antara lain:

 Mikrokontroler yang digunakan yaitu ATMega 8535L.

Pulse Width Modulation (PWM) digunakan untuk mengendalikan kecepatan motor dc.

 Motor driver sebagai penggerak motor DC pada robot.  Komunikasi dengan menggunakan bluetooth.

 Perangkat lunak yang digunakan sebagai antarmuka adalah bahasa pemograman Java, XML, dan C.


(3)

Operating system yang digunakan pada smart phone android adalah ice cream sandwich 4.0.3

I.5 SPESIFIKASI ALAT

Alat-alat yang digunakan dalam pembuatan robot beroda ini antara lain:  Mikrokontroler ATMega 8535L.

 Modul bluetooth V3.  Dua buah motor DC.

 Dua buah IC L293D sebagai motor driver.

 Dimensi robot secara keseluruhan memiliki panjang 20cm, lebar 14cm, memiliki 3 buah roda (2 roda sebagai penggerak dan 1 roda depan berupa roda cluster).

 Rangkaian lampu super LED untuk aplikasi lampu jauh dan lampu dekat.  Satu buah battery 9V untuk supply mikrokontroller ATmega 8535L dan 4

buah battery 1.5 V untuk mendrive motor dc.

I.6 SISTEMATIKA PENULISAN

Penyusunan laporan Tugas Akhir terdiri dari lima bab sebagai berikut:

Bab I PENDAHULUAN

Bab ini membahas mengenai latar belakang, rumusan masalah, tujuan, pembatasan masalah, spesifikasi alat, dan sistematika penulisan.

Bab II LANDASAN TEORI

Bab ini membahas mengenai teori yang akan digunakan dalam pembuatan sistem pengendali robot beroda dengan menggunakan mikrokontroler ATMega 8535L, pembuatan pengendali robot beroda menggunakan software eclipse dan peripheral interface berupa motor DC dan modul bluetooth.


(4)

BAB I PENDAHULUAN 4

Bab III PERANCANGAN DAN REALISASI

Bab ini membahas mengenai skematik robot beroda, motor driver, serta algoritma program Codevision AVR dan Eclipse yang digunakan.

Bab IV HASIL DAN ANALISIS

Bab ini membahas tentang hasil kerja dari perangkat sistem pengendalian robot beroda.

Bab V KESIMPULAN DAN SARAN

Bab ini membahas tentang kesimpulan dari pembuatan sistem pengendalian robot beroda, serta saran yang diperlukan untuk pengembangan.


(5)

BAB V

SARAN DAN KESIMPULAN

Bab ini berisi kesimpulan dari Tugas Akhir serta saran yang diperlukan untuk pengembangan sistem pengendalian robot beroda berikutnya.

V.1 KESIMPULAN

Pada data pengamatan telah diketahui bahwa sistem pengendalian robot beroda berbasis smartphone android dengan komunikasi bluetooth mampu memenuhi tujuan awal yang telah ditetapkan. Dari Tugas Akhir ini dapat diambil kesimpulan sebagai berikut:

1. Aplikasi pada smartphone android yang dibuat dapat mengirimkan karakter yang sesuai sehingga robot dapat mengerjakan instruksi dengan tepat.

2. Robot beroda dapat bergerak maju, mundur, berbelok ke arah kanan, kiri, berhenti, lampu dekat, dan lampu jauh yang menunjukkan bahwa sistem bekerja dengan baik.

3. Komunikasi antara robot beroda dan smartphone android di ruang terbuka bekerja optimal pada radius maksimum sampai dengan 25 meter.

4. Komunikasi antara robot beroda dan smartphone android di ruang berpenghalang bekerja optimal pada radius maksimum sampai dengan 15 meter.

V.2 SARAN

Sistem pengendalian robot beroda masih memiliki kekurangan dan dapat dikembangkan. Saran-saran untuk pengembangan antara lain:

1. Penambahan sensor juga dapat diaplikasikan untuk menunjang kerja robot. 2. Kamera dapat ditambahkan sebagai monitoring.


(6)

DAFTAR PUSTAKA

1. Andrianto, Heri. Pemrograman Mikrokontroler AVR ATMEGA16 Menggunakan Bahasa C (CodeVision AVR). 2008. Bandung: INFORMATIKA.

2. Raharjo, Budi. Mudah Belajar Java (Revisi Kedua). 2012. Bandung: INFORMATIKA.

3. http://www.dfrobot.com/image/data/TEL0026/TEL0026_Datasheet.pdf 4. http://droboticsonline.com/ebaydownloads/BluetoothV3%20Manual.pdf 5. http://www.atmel.com/images/doc2502.pdf

6. http://en.wikipedia.org/wiki/Bluetooth

7. http://kuliah.andifajar.com/aktuator/prinsip-kerja-motor-dc 8. http://english.cxem.net/arduino5.php