Pengendalian ON/OFF Menggunakan Handphone Dengan Aplikasi J2ME Melalui Bluetooth.

Pengendalian ON/OFF Menggunakan Handphone Dengan
Aplikasi J2ME Melalui Bluetooth
Alvin Aditia
Email : alvinaditia@ymail.com
Jurusan Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha
Jalan Prof. drg. Suria Sumantri, MPH 65
Bandung 40164, Indonesia

ABSTRAK
Saat ini banyak peralatan listrik yang dikendalikan dengan menggunakan
remote control. Tetapi sebagian besar masih menggunakan teknologi infra red
sebagai media komunikasinya. Namun penggunaan infra red memiliki beberapa
kelemahan, untuk dapat mengatasi kelemahan penggunaan infra red dapat
digunakan teknologi bluetooth.
Dalam Tugas Akhir ini dilakukan perancangan dan realisasi pengendalian
ON/OFF Menggunakan Handphone Dengan Aplikasi J2ME Melalui Bluetooth.
Perintah akan dikirimkan dari Handphone ke mikrokontroler ATMega16 melalui
modul Bluetooth mb-c04. Kemudian perintah tersebut akan diproses di
mikrokontroler untuk mengaktifkan atau me-non-aktifkan lampu ac.
Hasil dari pengujian menunjukkan bahwa pengendalian peralatan listrik
ON/OFF berhasil dengan tingkat keberhasilan >= 80% untuk jarak 3 meter

indoor tanpa halangan dan tingkat keberhasilan >= 70% untuk jarak 2 meter
indoor dengan halangan.

Kata Kunci : pengendalian ON/OFF, handphone, modul bluetooth mb-c04, Java
J2ME

i
Universitas Kristen Maranatha

ON/OFF Control Using Mobile Phone With J2ME Applications
Via Bluetooth
Alvin Aditia
Email : alvinaditia@ymail.com
Jurusan Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha
Jalan Prof. drg. Suria Sumantri, MPH 65
Bandung 40164, Indonesia

ABSTRACT
Now a lot of electrical equipment that is controlled with a remote control.
But most use infra red technology as a medium of communication. However, to

use infra- red, has some deficiency that com munication, to be able to overcome
the disadvantages of the use of infra- red can be used bluetooth technology.
In this Final Project performed the design and realization of ON/OFF
Control Using Mobile Phone With J2ME Applications

Via Bluetooth. The

command will be sent from Mobile to the microcontroller ATmega16 via module
Bluetooth mb-c04. And then will be processed in the microcontroller to enable or
disable ac lamp.
Results of testing showed that control electrical appliances ON / OFF
success, with a success rate > = 80% for a distance of 3 meters indoors without a
object and success rate > = 70% for a distance of 2 meters indoor with object.

Keyword : ON/OFF Control, handphone, modul bluetooth mb-c04, Java J2ME

ii
Universitas Kristen Maranatha

DAFTAR ISI

ABSTRAK ........................................................................................................... i
ABSTRACT ........................................................................................................ ii
KATA PENGANTAR ........................................................................................ iii
DAFTAR ISI ....................................................................................................... v
DAFTAR GAMBAR ........................................................................................ viii
DAFTAR TABEL ............................................................................................... x
DAFTAR LAMPIRAN ....................................................................................... xi

BAB I. PENDAHULUAN .................................................................................. 1
1.1 Latar Belakang Masalah ..................................................................... 1
1.2 Indentifikasi Masalah ......................................................................... 2
1.3 Tujuan ................................................................................................ 2
1.4 Perumusan Masalah ............................................................................ 2
1.5 Pembatasan Masalah........................................................................... 2
1.6 Spesifikasi Sistem ............................................................................... 2
1.7 Metodologi ......................................................................................... 2
1.8 Sistematikan Penulisan ....................................................................... 3

BAB II. LANDASAN TEORI ............................................................................ 4
2.1 Bluetooth Komunikasi ........................................................................ 4

2.2 Modul Bluetooth MB-C04 .................................................................. 5
2.2.1 Karakteristik dan Spesifikasi Modul Bluetooth MB-C04 ........... 5
2.3 Mikrokontroler ATMega 16................................................................ 7
2.3.1 Diagram Blok ATMega16 ......................................................... 8
2.3.2 Konfigurasi Pin ATMega16 .................................................... 10
2.3.3 Peta Memori ATMega16 ......................................................... 12
2.3.3.1 Memori Program ........................................................... 12
2.3.3.2 Memori Data ................................................................. 13
2.3.3.3 Memori Data EEPROM................................................. 13

v
Universitas Kristen Maranatha

2.3.4 Komunikasi USART ............................................................... 14
2.3.4.1 Inisialisasi USART ........................................................ 15
2.4 IC ULN 2803.................................................................................... 18
2.5 Teknologi Java ................................................................................. 19
2.5.1 Java 2 Micro Edition (J2ME) .................................................. 20
2.5.1.1 Configuration ................................................................ 21
2.5.1.2 Profile ........................................................................... 22

2.5.2 MIDlet .................................................................................... 23
2.5.2.1 Daur Hidup MIDlet ....................................................... 24
2.6 Relai ................................................................................................. 25
2.7 AIC1722-33L ................................................................................... 26
2.8 Light Dependent Resistor (LDR) ...................................................... 26
BAB III. PERANCANGAN DAN REALISASI .............................................. 27
3.1 Perancangan Hardware..................................................................... 27
3.1.1 Mikrokontroler ATmega 16 .................................................... 28
3.1.2 Modul Bluetooth MB-C04 ....................................................... 30
3.1.3 IC ULN 2803 .......................................................................... 31
3.1.4 Relai dan Lampi AC ............................................................... 31
3.1.5 AIC1722-33L.......................................................................... 32
3.1.6 LDR ........................................................................................ 32
3.1.7 Handphone ............................................................................. 33
3.2 Perancangan Software....................................................................... 34
3.2.1 Program pada Mikrokontroler ................................................. 34
3.2.2 CodeVisionAVR ...................................................................... 37
3.2.2.1 Konfigurasi Chip dan Konfigurasi USART ................... 37
3.2.2.2 Konfigurasi Port C dan Konfigurasi Port D ................... 38
3.2.3 Program pada Handphone ....................................................... 39

3.2.4 J2ME Wireless Toolkit 2.5.2.................................................... 40

ii
Universitas Kristen Maranatha

BAB IV. DATA PENGAMATAN DAN ANALISIS ....................................... 43
4.1 Pengujian Pada Mikrokontroler ........................................................ 43
4.2 Pengujian Pada Handphone .............................................................. 45

BAB V. SIMPULAN DAN SARAN................................................................. 56
5.1 Simpulan .......................................................................................... 56
5.2 Saran ................................................................................................ 56

DAFTAR PUSTAKA ....................................................................................... 57

vii
Universitas Kristen Maranatha

DAFTAR GAMBAR
Gambar 2.1 Gambar Modul Bluetooth MB-C04 ................................................... 5

Gambar 2.2 Gambar Blok Diagram ATMega16 ................................................... 9
Gambar 2.3 Gambar Konfigurasi Pin ATMega16 ............................................... 10
Gambar 2.4 Gambar Peta Memori Program ATMega16 ..................................... 12
Gambar 2.5 Gambar Peta Memori Data ATMega16 ........................................... 13
Gambar 2.6 Gambar Blok USART ATMega16 .................................................. 14
Gambar 2.7 Register UDR ................................................................................. 15
Gambar 2.8 UBRR ............................................................................................. 15
Gambar 2.9 USCRA .......................................................................................... 16
Gambar 2.10 USCRB......................................................................................... 17
Gambar 2.11 USCRC......................................................................................... 17
Gambar 2.12 Rangkaian transistor dan konfigurasi pin pada IC ULN 2803 ........ 19
Gambar 2.13 Gambar Arsitektur J2ME .............................................................. 21
Gambar 2.14 Gambar Lingkup Configuration .................................................... 22
Gambar 2.15 Gambar Siklus MIDlet .................................................................. 24
Gambar 2.16 Gambar Fisik Relai ....................................................................... 25
Gambar 2.17 Gambar Pin Konfigurasi AIC1722-33L......................................... 26
Gambar 2.18 Gambar Fisik Light Dependent Resistor (LDR) ............................. 26
Gambar 3.1 Gambar Blog Diagram Perancangan Sistem .................................... 27
Gambar 3.2 Skematik Power Supply untuk ATMega 16 dan Modul Bluetooth ... 29
Gambar 3.3 Skematik Pin – pin ATMega 16 ...................................................... 29

Gambar 3.4 Skematik Pin – pin Modul Bluetooth MB-C04 ................................ 30
Gambar 3.5 Skematik Pin – pin UC ULN 2803 .................................................. 31
Gambar 3.6 Skematik Rangkaian Relai .............................................................. 31
Gambar 3.7 Skematik Pin – pin AIC1722-33L ................................................... 32
Gambar 3.8 Skematik LDR ................................................................................ 32
Gambar 3.9 Gambar Fisik Handphone Nokia N95 8gb ....................................... 34
Gambar 3.10 Diagram Alir pada Mikrokontroler ATMega 16 ............................ 36
Gambar 3.11 Konfigurasi Chip dan Konfigurasi USART ................................... 37
ii
Universitas Kristen Maranatha

Gambar 3.12 Konfigurasi Port C Sebagai Output dan Port D Sebagai Input ....... 38
Gambar 3.13 Diagram Alir pada Handphone ..................................................... 40
Gambar 3.14 Gambar Tampilan Konfigurasi J2ME Wireless Toolkit 2.5.2 ......... 41
Gambar 3.15 Gambar Tampilan File Program Pada J2ME ................................. 42

ix
Universitas Kristen Maranatha

DAFTAR TABEL

Tabel 2.1 Modul Bluetooth MB-C04 .................................................................... 6
Tabel 2.2 Fungsi Pin pada ATMega16 ............................................................... 10
Tabel 2.3 Baud Rate........................................................................................... 16
Tabel 2.4 Tabel Perbandingan Antara CDC dan CLD ........................................ 22
Tabel 3.1 Penggunaan pin ATMega 16 .............................................................. 28
Tabel 3.2 Penggunaan Pin Modul Bluetooth ....................................................... 30
Tabel 3.3 Perintah untuk Mengaktifkan dan Me-non-aktfikan Lampu ................ 35
Tabel 4.1 Pengujian Mikrokontroler Indoor Tanpa Halangan ............................. 43
Tabel 4.2 Pengujian Mikrokontroler Indoor Dengan Halangan Tembok ............. 44
Tabel 4.3 Pengujian Handphone Indoor Tanpa Halangan Untuk Lampu 1 ......... 46
Tabel 4.4 Pengujian Handphone Indoor Tanpa Halangan Untuk Lampu 2 ......... 47
Tabel 4.5 Pengujian Handphone Indoor Tanpa Halangan Untuk Lampu 3 ......... 49
Tabel 4.6 Pengujian Handphone Indoor Dengan Halangan Untuk Lampu 1 ....... 51
Tabel 4.7 Pengujian Handphone Indoor Dengan Halangan Untuk Lampu 2 ....... 52
Tabel 4.8 Pengujian Handphone Indoor Dengan Halangan Untuk Lampu 3 ....... 54

ii
Universitas Kristen Maranatha

DAFTAR LAMPIRAN


LAMPIRAN A
PROGRAM PADA MIKROKONTROLER ATMEGA16 ............................... A-1
LAMPIRAN B
PROGRAM PADA HANDPHONE (J2ME) .................................................... B-1
LAMPIRAN C
SKEMATIK DAN FOTO ................................................................................ C-1
FOTO ALAT ................................................................................................... C-2

LAMPIRAN D
AIC 1722 ......................................................................................................... D-1
MODUL BLUETOOTH MB-C04 ................................................................... D-2
RELAY ........................................................................................................... D-5
ULN 2803 ........................................................................................................ D-6
J2ME BLUETOOTH PROGRAMMING ......................................................... D-7

xi
Universitas Kristen Maranatha

LAMPIRAN A

PROGRAM PADA MIKROKONTROLER ATMEGA16
/*****************************************************
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 : 11/9/2011
Author : F4CG
Company : F4CG
Comments:
Chip type
: ATmega16
Program type
: Application
Clock frequency : 11.059200 MHz
Memory model
: Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/
#include
// Standard Input/Output functions
#include
#include
// Declare your global variables here
void main(void)
{
// Declare your local variables here
unsigned char d,p;
// Input/Output Ports initialization
// 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=0x00;

// Port B 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
PORTB=0x00;
DDRB=0x00;
// 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=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=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// 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=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;

ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
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=0x18;
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;
printf("\n Password");

while (1)
{
// Place your code here
p=getchar();
if( p=='2')
{ printf("\n Password Benar");
d=getchar();
if (d=='A' )
{
PORTC.0=1;
if(PORTD.4 ==0)
{
delay_ms(200);
printf("Lampu 1 Off");
}
else
{
delay_ms(200);
printf("Lampu 1 On");
}
}
if (d=='D')
{
PORTC.0=0;
if(PORTD.4 ==0)
{
delay_ms(200);
printf("Lampu 1 Off");
}
else
{
delay_ms(200);
printf("Lampu 1 On");
}

}
if (d=='G' )
{
PORTC.1=1;
if(PORTD.5 ==0)

{
delay_ms(200);
printf("Lampu 2 Off");
}
else
{
delay_ms(200);
printf("Lampu 2 On");
}
}
if (d=='J')
{
PORTC.1=0;
if(PORTD.5 ==0)
{
delay_ms(200);
printf("Lampu 2 Off");
}
else
{
delay_ms(200);
printf("Lampu 2 On");
}
}
if (d=='M' )
{
PORTC.2=1;
if(PORTD.6 ==0)
{
delay_ms(200);
printf("Lampu 3 Off");
}
else
{
delay_ms(200);
printf("Lampu 3 On");
}

}
if (d=='P')
{
PORTC.2=0;
if(PORTD.6 ==0)
{

delay_ms(200);
printf("Lampu 3 Off");
}
else
{
delay_ms(200);
printf("Lampu 3 On");
}
}
if (p!='2')
{
printf("\n Password Salah");
}
};
}

LAMPIRAN B
PROGRAM PADA HANDPHONE (J2ME)
BluetoothDeviceDiscovery
import java.io.IOException;
import java.util.Vector;
import javax.bluetooth.DeviceClass;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.DiscoveryListener;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.RemoteDevice;
import javax.bluetooth.ServiceRecord;
public class BluetoothDeviceDiscovery implements DiscoveryListener
{
public static Object lock=new Object();
public static Vector vecDevices=new Vector();
public static void main() throws IOException
{
BluetoothDeviceDiscovery bluetoothDeviceDiscovery=new
BluetoothDeviceDiscovery();
LocalDevice localDevice = LocalDevice.getLocalDevice();
DiscoveryAgent agent = localDevice.getDiscoveryAgent();
agent.startInquiry(DiscoveryAgent.GIAC,
bluetoothDeviceDiscovery);
try
{
synchronized(lock)
{
lock.wait();
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod)
{
if(!vecDevices.contains(btDevice))

{
vecDevices.addElement(btDevice);
}
}
public void servicesDiscovered(int transID, ServiceRecord[] servRecord)
{
}
public void serviceSearchCompleted(int transID, int respCode)
{
}
public void inquiryCompleted(int discType)
{
synchronized(lock)
{
lock.notify();
}
}
}

TerminalIOStream
import javax.microedition.midlet.MIDlet;
public class TerminalIOStream
{
StringBuffer line;
private boolean full;
public TerminalIOStream()
{
reset();
}
public void append(char c)
{
line.append(c);
}
public void append(char [] l)
{
line.append(l);
}

public synchronized String read()
{
try
{
while (full == false)
{
wait();
}
}
catch (Exception e)
{
e.printStackTrace();
}
String s = line.toString();
reset();
return s;
}
public void write(String s)
{
line.append(s);
flush();
}
public void reset()
{
line = new StringBuffer();
full = false;
}
public synchronized boolean isFull()
{
return full;
}

Lampu
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;
import javax.bluetooth.*;
import javax.microedition.io.Connector;
import java.io.IOException;
import java.util.Stack;

public class lampu extends MIDlet implements Runnable,
javax.microedition.lcdui.CommandListener {
public String output;
data data;
public lampu()
{
}
private void initialize()
{
}
public void commandAction(javax.microedition.lcdui.Command command,
javax.microedition.lcdui.Displayable displayable)
{
if (command == exitCommand1)
{
exitMIDlet();
}
}
private javax.microedition.lcdui.Command get_exitCommand()
{
if (exitCommand == null) {
exitCommand = new javax.microedition.lcdui.Command("Exit",
javax.microedition.lcdui.Command.EXIT, 1);
}
return exitCommand;
}
protected void exitMIDlet()
{
data.Closeconnection();
destroyApp(true);
notifyDestroyed();
}
private javax.microedition.lcdui.Command get_okCommand()
{
if (okCommand == null) {
okCommand = new javax.microedition.lcdui.Command("Ok",
javax.microedition.lcdui.Command.OK, 1);

}
return okCommand1;
}
private javax.microedition.lcdui.Form get_form1()
{
if (form1 == null) {
form1 = new javax.microedition.lcdui.Form(null, new
javax.microedition.lcdui.Item[] {get_stringItem1()});
form1.addCommand(get_exitCommand1());
form1.setCommandListener(this);
}
return form1;
}
private javax.microedition.lcdui.StringItem get_stringItem1()
{
if (stringItem1 == null)
{
stringItem1 = new javax.microedition.lcdui.StringItem("Thank You","");
}
return stringItem1;
}
public void startApp()
{
initialize();
data = new data(Display.getDisplay(this), get_form1());
Display.getDisplay(this).setCurrent(data);
new Thread(this).start();
}
public void pauseApp()
{
}
public void destroyApp(boolean unconditional)
{
}
public void run()
{
try {
data.write(" L A M P U " + "\n");
while (true)
{

output = "" ;
String tmp = "";
int input;
if (data.reader != null)
{
input = data.reader.read();
output += (char) input;
if (input == 10)
{
data.write("\r\n");
}
}
data.write(output);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

Data
import java.io.IOException;
import java.util.Vector;
import javax.bluetooth.DeviceClass;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.DiscoveryListener;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.RemoteDevice;
import javax.bluetooth.ServiceRecord;
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.TextBox;
import javax.microedition.io.StreamConnection;
import java.io.InputStreamReader;

import javax.microedition.io.Connector;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import javax.bluetooth.*;
import java.io.*;
public class data extends Canvas implements CommandListener, Runnable
{
InputStreamReader reader;
public StreamConnection connection;
public List lamp = null;
public String URL = "";
StringBuffer strbuf = new StringBuffer();
List list = null;
Vector two = new Vector();
private Command show;
private Command conne;
private Command discon;
private Command back;
public String output;
private Command cmdExit;
StringBuffer sb = new StringBuffer(0);
BluetoothDeviceDiscovery disc;
private Command cmdDiscover;
private Command cmdStopDiscover;
public String col[]= null;
private LocalDevice devLocal;
private DiscoveryAgent discoverAgent;
public String BUG = "";
lampu midi;
public OutputStreamWriter ow = null;
public boolean what;
public OutputStream dos = null;
private char[][] content;
private short numberOfRows, numberOfColumns;
private int cursorRow, cursorCol;
private int width, height;
private short charHeight, charWidth;
private Font font;
private int color = 0x00FFFFFF;
private Image offscreenT;
private Image offscreenG;
private boolean isWaiting;
private char[] typeAheadBuffer = new char[20];

boolean timerActive = false, upperCase = false, userInput = false, starInput =
false;
private String keys[] = { " 0=", "1.,'", "abc2", "def3", "ghi4", "jkl5", "mno6",
"pqrs7", "tuv8", "wxyz9", "?!\"-()@/:_;+&%*=$[]{}\\~^#|", "#" };
public TerminalIOStream istream = null;
public TerminalIOStream ostream = null;
Display display = null;
Displayable parent = null;
Command backCommand;
Command Connect;
TextBox tb = null;
Command BackCommand = null;
Command TextboxCommand = null;
Command Connection = null;
Command okCommand = null;
public void setColor(int color)
{
this.color = color;
}
public data(Display display, Displayable parent)
{
super();
this.display = display;
this.parent = parent;
initialize();
}
public TextBox get_StarTextBox()
{
if (tb == null)
{
tb = new TextBox("", "", 20, 0);
okCommand = new Command("Ok", Command.OK, 1);
tb = new TextBox(null, "", 20, 0x0);
tb.addCommand(okCommand);
tb.setCommandListener(this);
}
return tb;
}
public void Connect ()
{
try {

connection = (StreamConnection) Connector.open ("btspp://"+URL+":1",
Connector.READ_WRITE);
reader = new InputStreamReader(connection.openInputStream());
dos = connection.openOutputStream();
ow = new OutputStreamWriter(dos, "iso-8859-1");
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
public void Closeconnection()
{
try {
if (reader != null)
{
reader.close();
reader = null;
}
if (dos != null)
{
dos.close();
dos = null;
}
if (connection !=null)
{
connection.close();
connection = null;
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
public List getlamp()
{
if (lamp==null)
{
lamp = new List( "Device list", Choice.IMPLICIT );
show = new Command("Search", Command.OK, 1);
back= new Command("Back", Command.OK, 1);

conne = new Command("Connect", Command.OK, 1);
discon = new Command("Disconnect", Command.OK, 1);
lamp.addCommand( show );
lamp.setCommandListener( this );
}
return lamp;
}
public void initialize()
{
this.addCommand(Connection = new Command("Connect",
Command.SCREEN, 2));
this.addCommand(TextboxCommand = new Command("Text input",
Command.SCREEN, 2));
this.addCommand(BackCommand = new Command("Exit",
Command.SCREEN, 2));
istream = new TerminalIOStream();
ostream = new TerminalIOStream();
setCommandListener(this);
width = getWidth();
height = getHeight();
offscreenT = Image.createImage(width, height);
offscreenG = Image.createImage(width, height);
font = Font.getFont( Font.FACE_MONOSPACE, Font.STYLE_PLAIN,
Font.SIZE_SMALL);
charHeight = (short) font.getHeight();
charWidth = (short) font.stringWidth("w");
numberOfColumns = (short) ( width / charWidth );
numberOfRows = (short) ( height / charHeight );
content = new char[numberOfRows][];
for (int i = 0; i < numberOfRows; i++)
{
content[i] = new char[numberOfColumns];
}
cls();
new Thread(this).start();
}
public Graphics getGraphics()
{
return offscreenG.getGraphics();
}
public void cls()
{

clearGraphixScreen();
clearTextScreen();
}
public void clearTextScreen()
{
for (int i = 0; i < numberOfRows; i++)
{
for (int j = 0; j < numberOfColumns; j++)
{
content[i][j] = ' ';
}
}
cursorRow = 0;
cursorCol = 0;
Graphics g = offscreenT.getGraphics();
g.setColor(0, 0, 0);
g.fillRect(0, 0, width, height);
repaint();
}
public void clearGraphixScreen()
{
clearTextScreen();
Graphics g = offscreenG.getGraphics();
g.setColor(0, 0, 0);
g.fillRect(0, 0, width, height);
repaint();
}
private void processLineFeed()
{
if (cursorRow == numberOfRows - 1)
{
}
else
{
cursorRow++;
}
if (starInput == true)
{
ostream.append(content[cursorRow - 1]);
}
}
public void update(Graphics g)

{
paint(g);
}
public void paint(Graphics g)
{
Graphics g1 = offscreenT.getGraphics();
g1.setFont(font);
g1.setColor(0);
g1.fillRect(0, 0, width, height);
g1.setColor(255, 255, 255);
g1.drawImage(offscreenG, 0,0,0 );
int y = 0;
content[cursorRow][cursorCol] = '_';
for (int i = 0; i < numberOfRows; i++)
{
g1.drawChars(content[i], 0, numberOfColumns, 0, y, 0);
y += charHeight;
}
g.drawImage(offscreenT, 0, 0, 0);
}
public void run()
{
String s = null;
int i = 0;
while (true)
{
s = istream.read();
for (i = 0; i < s.length(); i++)
{
userInput = false; writeChar(s.charAt(i));
}
}
}
public void writeChar(char c)
{
if (content[cursorRow][cursorCol] == '_')
{ content[cursorRow][cursorCol] = ' '; }
switch (c)
{
case '\r': cursorCol = 0; break;
case '\n': /* CR+LF */
cursorCol = 0;
processLineFeed();

break;
case '\f': clearTextScreen(); break;
case '\b':
if (--cursorCol < 0)
{
cursorCol = numberOfColumns - 1;
cursorRow = (cursorRow - 1 + numberOfRows) % numberOfRows;
while (content[cursorRow][cursorCol] == ' ' && cursorCol > 0) {
cursorCol--; }
if (content[cursorRow][cursorCol] != ' ')
{
try
{
System.out.print(content[cursorRow][cursorCol+1]);
cursorCol++;
} catch (ArrayIndexOutOfBoundsException e) { }
}
}
break;
case '\t':
do {
writeChar(' ');
} while ((cursorCol % 8) != 7);
break;
default:
if (c >= ' ') {
content[cursorRow][cursorCol++] = (upperCase == true) ?
Character.toUpperCase(c) :
c;
}
}
if (cursorCol >= numberOfColumns)
{
cursorCol = 0;
processLineFeed();
if (userInput == true)
{ ostream.append(content[cursorRow - 1]); }
}
repaint();
}

public void axis()
{
Graphics g = offscreenG.getGraphics();
g.setColor(255, 255, 255);

g.drawLine(width/2, 0, width/2, height);
g.drawLine(0, height/2, width, height/2);
repaint();
}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command command, Displayable displayable)
{
if (command == BackCommand)
{
display.setCurrent(parent);
}
if (command == back)
{
display.setCurrent(this);
}
if (command == TextboxCommand)
{
display.setCurrent(get_StarTextBox());
}
if (command == Connection)
{
display.setCurrent(getlamp());
}
if (command == conne)
{
URL = "";
URL = lamp.getString(lamp.getSelectedIndex());
Connect();
lamp.removeCommand(conne);
lamp.addCommand(discon);
display.setCurrent(this);
}
if (command == discon)
{
Closeconnection();
if (reader == null && dos == null)
{
lamp.addCommand(conne);
lamp.removeCommand(discon);
}
}
else if (command == okCommand)
{ BUG = tb.getString();
try

{
ow.write(BUG+"\r\n");
ow.flush();
}
catch (IOException ex)
{
ostream.write("No connection"+"\n");
ostream.flush();
}
starWrite(tb.getString());
tb.setString("");
display.setCurrent(this);
}
else if (command == show)
{
String str = "Device";
Ticker t = new Ticker(str);
lamp.removeCommand(show);
lamp.addCommand(back);
lamp.setTicker(t);
try
{
BluetoothDeviceDiscovery.main();
} catch (IOException ex) {
ex.printStackTrace();
}
int deviceCount = BluetoothDeviceDiscovery.vecDevices.size();
for (int i = 0; i < deviceCount; i++) {
RemoteDevice remoteDevice = (RemoteDevice)
BluetoothDeviceDiscovery.vecDevices.elementAt(i);
lamp.append(remoteDevice.getBluetoothAddress(), null);
}
lamp.addCommand(conne);
display.setCurrent(lamp);
}
}
public TerminalIOStream getInputstream()
{
return ostream;
}
public TerminalIOStream getOutputstream()
{
return istream;
}

public void write(String s)
{
istream.write(s);
}
public void starWrite(String s)
{
starInput = true; userInput = false;
for (int i = 0; i < s.length(); i++)
{
writeChar(s.charAt(i));
}
starInput = false;
}
}

LAMPIRAN C
SKEMATIC DAN FOTO

FOTO ALAT

LAMPIRAN D

AIC 1722

MODUL BLUETOOTH MB-C04

RELAY

ULN 2803

J2ME BLUETOOTH PROGRAMMING

BAB 1
PENDAHULUAN

1.1

Latar Belakang
Pada abad ini, perkembangan teknologi sudah sangat pesat. Dengan

berkembangnya teknologi tersebut, maka diharapkan kebutuhan manusia dalam
segala bidang dapat terpenuhi. Salah satunya adalah dalam bidang automation.
Saat ini banyak peralatan elektronik yang dapat dikendalikan dengan
menggunakan remote control. Tetapi sebagian besar masih menggunakan infra
merah sebagai media komunikasinya. Tetapi teknologi infra red masih memiliki
beberapa kelemahan.
Oleh karena itu diperlukan sebuah teknologi baru untuk mengatasi
keterbatasan teknologi infared. Salah satunya adalah teknologi Bluetooth.
Bluetooth adalah teknologi frekuensi radio yang menggunakan pita frekuensi 2,4
GHz. Dengan menggunakan Bluetooth diharapkan dapat mengatasi kelemahan
infra red yaitu akses jarak yang cukup jauh, komunikasi yang terjadi tidak harus
secara garis lurus, dan dapat tembus benda yang menghalanginya. Sehingga untuk
waktu mendatang, peralatan elektronik dapat dikendalikan menggunakan remote
control melalui Bluetooth. Remote control yang digunakan sebaiknya tidak khusus
dibuat hanya untuk digunakan untuk mengendalikan peralatan listrik.
Dengan adanya teknologi Bluetooth pada Handphone, dapat dimanfaatkan
sebagai remote control. Dengan menggunakan Java J2me dapat dibuat aplikasi
untuk pengendalian peralatan listrik. Oleh sebab itu memungkinkan untuk
membuat sebuah sistem yang dapat mengaktifkan atau menon-aktifkan peralatan
listrik seperti lampu, kipas, pintu pagar atau pamanas dengan menggunakan
handphone

yang memiliki teknologi Bluetooth

dan mendukung untuk

pemrograman java. Sehingga Handphone dapat memiliki fungsi tambah yaitu
sebagai remote control yang universal, dan dapat digunakan pada lebih dari satu
jenis peralatan listrik.

1
Universitas Kristen Maranatha

1.2

Identifikasi Sistem
Berdasarkan latar belakang di atas, masalah utama yang akan diangkat
pada Tugas Akhir ini adalah dibutuhkannya sebuah pengendali ON/OFF
yang baru dan lebih canggih.

1.3

Tujuan
1. Membuat sebuah Pengendali ON/OFF Menggunakan Handphone Dengan
Aplikasi J2ME Melalui Bluetooth.

1.4

Perumusan Masalah
1. Bagaimana merancang sebuah Pengendali ON/OFF Menggunakan
Handphone Dengan Aplikasi J2ME Melalui Bluetooth.

1.5

Pembatasan Masalah
1. Pada Tugas Akhir ini, konektivitas yang digunakan adalah Bluetooth.
2. Pada Tugas Akhir ini, program yang digunakan pada Handphone berupa
Java dan Code Vision pada mikrokontroler.
3. Pengendalian berupa pengendalian ON/OFF.

1.6

Spesifikasi Sistem
1. Menggunakan jenis Handphone yang memiliki Bluetooth.
2. Menggunakan mikrokontroler ATMEGA16.
3. Menggunakan module Bluetooth MB-C04.
4. Peralatan listrik yang dikendalikan hanya berupa lampu AC (5W, 220V)
sebanyak 3 buah.

1.7

Metodologi


Dalam pembuatan Tugas Akhir ini digunakan metodologi sebagai berikut :



pembelajaran mengenai Bluetooth device.

Studi literatur yang dilakukan dengan pengumpulan bahan-bahan serta

Desain dan pembuatan perangkat keras.
2
Universitas Kristen Maranatha






1.8

Pembuatan perangkat lunak (program).
Pengujian dan analisa.
Pembuatan laporan.

Sistematika Penulisan
Sistematika penulisan laporan Tugas Akhir ini disusun menjadi lima (5)

bab, yaitu sebagai berikut:


Bab 1
Membahas pendahuluan tentang Tugas Akhir yang di dalamnya berisikan
tentang latar belakang, identifikasi masalah, tujuan, perumusan masalah,
pembatasan masalah, spesifikasi sistem, metodologi, dan sistematika
penulisan.



Bab 2
Pembahasan tentang teori dasar yang berhubungan dengan mikrokontroler
dan perangkat-perangkat lainnya.



Bab 3
Membahas tentang cara kerja alat serta perancangan hardware dan




software.
Bab 4
Berisikan hasil uji coba perangkat lunak.
Bab 5
Penutup berisikan simpulan dari pelaksanaan dan saran – saran
pengembangan aplikasi.

3
Universitas Kristen Maranatha

BAB 5
SIMPULAN DAN SARAN

5.1 Simpulan
Berdasarkan hasil pengujian maka pada tugas akhir ini dapat disimpulkan :
1. Perancangan sistem Pengendalian ON/OFF menggunakan Handphone
Berbasis J2ME Melalui Bluetooth dalam sebuah gedung berhasil
direalisasikan.
2. Pengendalian ON/OFF menggunakan Handphone Berbasis J2ME Melalui
Bluetooth didalam ruangan tanpa halangan dapat beroperasi dengan baik
sampai dengan 3 meter dengan tingkat keberhasilan >= 80%.
3. Pengendalian ON/OFF menggunakan Handphone Berbasis J2ME Melalui
Bluetooth didalam ruangan dengan halangan berupa tembok dapat
beroperasi dengan baik sampai dengan 2 meter dengan tingkat
keberhasilan >= 70%.

5.2 Saran
1. Agar jarak Pengendalian ON/OFF yang dikendalikan menggunakan
Handphone Berbasis J2ME Melalui Bluetooth dapat beroperasi dengan
baik dan tingkat keberhasilnya >= 70, sebaiknya digunakan antena
external.

56

Universitas Kristen Maranatha

DAFTAR PUSTAKA

1. Andrianto, Heri. 2008. Pemrograman Mikrokontroler AVR Atmega 16.
Bandung : INFORMATIKA Bandung.
2. Shalahuddin, M. dan A. S.,Rosa. 2010. Pemrograman J2me. Bandung :
INFORMATIKA Bandung.
3. http://www.delta-electronic.com/Design/Data%20Sheet/mbc04.pdf
Akses : 10 Juni 2011
4. http://www.nowires.org/Thesis-PDF/AndreK.pdf
Akses : 15 Juni 2011
5. http://www.codeguru.com/java/article.php/c13147
Akses : 15 Juni 2011
6. http://www.codeguru.com/java/article.php/c13147__2/Simple-BluetoothCommunication-in-J2ME.htm
Akses : 15 Juni 2011
7. http://www.datasheetcatalog.org/datasheet/aic/AIC1722.pdf
Akses : 15 Agustus 2011
8. http://www.onsemi.com/pub_link/Collateral/ULN2803-D.PDF
Akses : 15 Agustus 2011
9. http://www.lontar.ui.ac.id/file?file=digital/124171-SK-598-Uji%20cobaLiteratur.pdf
Akses : 10 November 2011

57

Universitas Kristen Maranatha