Pengendalian Robot Beroda Melalui Smart Phone Android.
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