Membuat
Alat Pengendali Led dengan Handphone J2ME
Pada kesempatan kali ini akan membahas bagaimana
cara membuat pengenali led yang berjumlah dua buah yang dikendalikan nyala-mati
atau ON-OFF menggunakan sebuah handphone dengan operating system J2ME, jadi
menggunakan media Bluetooth, pada handphone terdapat fitur Bluetooth yang
diposisikan sebagai master (pengirim) dan pada mikrokontroller terdapat
bluetooth device JY-MCU ver 1.03 yang diposisikan sebagai slave (penerima),
sehingga kedua device dapat saling berkomunikasi satu sama lainnya. Gambar 6.28
adalah tampilan alat yang akan dibuat.
Alat ini menggunakan
mikrokontroller ATMega32 sebagai penerjemah dari data yang dikirimkan oleh
handphone, sehingga data diterima oleh Bluetooth JY-MCU ver 1.03 dapat
diterjemahkan oleh mikrokontroller dengan baik dan akan menghasilkan output
yang sesuai.
Prinsip Kerja Alat
Prinsip
kerja alat ini sangatlah sederhana yaitu hanphone mengirimkan data berupa angka
“1”, “2”, “3”, dan “4” melalui bluetooh, kemudian data tersebut diterima oleh
Bluetooth JY-MCU ver 1.03 sebagai slave (penerima), kemudian data tersebut
kirim lagi ke mikrokontroller, di mikrokontroller data yang diterima oleh
Bluetooth JY-MCU diolah dan dibaca, setelah menemukan data yang dikirim maka
mikrokontroller akan mengeluarkan output yang sesuai dengan program yang
dimasukkan. Untuk lebih jelasnya perhatikan bagan berikut.
Output dari mikrokontroller pada alat ini adalah tampilan karakter pada
LCD display dan dua buah led yaitu led 5mm merah dan kuning, sebenarnya output
led hanyalah contoh saja, untuk aplikasi yang lebih bagus bisa diganti dengan
output berupa motor DC, motor servo, buzzer, dotmatrik, dan lain-lain.
Rangkaian Hardware
Rangkaian
hardware yang dibutuhkan untuk membuat alat ini adalah rangkaian minimum system
ATMega32 ditambah LCD, Bluetooth (slave) JY-MCU, rangkaian led, Handphone J2ME
(tidak touchscreen).
a.
Bluetooth JY-MCU
Sebagai
slave atau receiver dari USB bluetooth dongle, maka lebih tepat menggunakan
modul slave yang bernama JY-MCU v1.03, untuk versi bisa apa saja, namun yang
dipakai pada pembahasan kali ini yaitu JY-MCU yang versi 1.03. berikut adalah
bentuk dari modulnya.
Pemasangan dari modul ini ke mikrokontroler
hanya memasangkan pin RX JY-MCU ke TX pin mikrokontroler, begitula
dengan Tx masuk ke pin Rx mikrokontroller, VCC dan GND. yang
digunakan hanyalah 4 buah jalur yaitu RX, TX, GND dan VCC. Berikut bagan dan konfigurasi
koneksinya
b. Handphone J2ME
Maksud dari Handphone J2ME disini yaitu handphone yang
menggunakan operating system J2ME bukan Android, atau yang lain. Handphone yang
menggunakan operatis system J2ME banyak sekali namun biasanya dipakai oleh
handphone Sony Ericsson contoh Sony Ericsson K310i, Sony Ericsson K530i dan
lainnya.
Handphone yang
dipakai untuk pembuatan alat ini yaitu handphone Sony Ericsson K530i yang mana
bentuknya seperti pada Gambar 6.28c, handphone ini memiliki operating system
JAVA J2ME, dan menggunakan tombol keypad, sehingga memudahkan dalam
penggunaannya.
c. Minimum System ATMega
d.
Rangkaian Led
Dua buah Led yang digunakan pada
alat ini adalah led merah
5mm super bright dan led
kuning
5mm super bright, led ini hanyalah untuk contoh output, untuk pengembangan
lebih lanjut bisa diganti dengan output lain seperti relay, motor, servo dan
lain-lain
Program Bascom AVR
'==========================================================================
'Programmer: Yanuar
Mukhammad
'E-mail : Yanuarm@hotmail.com
'==========================================================================
$regfile =
"m32def.dat"
$crystal = 12000000
$baud = 9600
Config Lcdpin = Pin ,
Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin ,
Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2
Config Portb.0 =
Output
Config Portb.1 =
Output
Enable Interrupts
Dim Perintah As
String * 1
Upperline
Lcd
"Bluetooth"
Lowerline
Lcd
"Connect"
Wait 5
Cls
Cursor Off
Do
Perintah = Waitkey()
Select Case Perintah
Case "1" :
Cls
Portb.0 = 1
Upperline
Lcd "led 1 ON"
Case "2" :
Cls
Portb.0 = 0
Upperline
Lcd "led 1 OFF"
Case "3" :
Cls
Portb.1 = 1
Lowerline
Lcd "led 2 ON"
Case "4" :
Cls
Portb.1 = 0
Lowerline
Lcd "led 2 OFF"
End Select
Loop
Pembuatan
Aplikasi Handphone
Pada Pembuatan software
/ aplikasi pada handphone J2ME ini memerlukan sebuah software bernama Netbeans,
kenapa pakai Netbeans ? karena Netbeans merupakan software yang dapat menampung
dan menangani file-file yang berformat “.java” sehingga jika telah jadi akan
menghasilkan file berbentuk “.jar” atau “.jad” untuk Java ME.
Aplikasi yang
akan dibuat pada alat ini tampilannya akan tampak seperti Gambar 6.28f, yang
mana terdapat empat buah menu kendali yaitu Led 1 On, Led 1 Off, Led 2 On dan
Led 2 Off.
1. Isikan
program pada MIDlet “bluetoothj2me” dengan program berikut.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;
import javax.microedition.io.*;
public class bluetoothj2me extends MIDlet
implements CommandListener {
private Display display;
Menu menu;
private Command cmdExit;
private Command cmdfresh;
public String btConnectionURL;
public OutputStream out;
public InputStream is;
public OutputStreamWriter ow;
public InputStreamReader ir;
public bluetoothj2me() {
display = Display.getDisplay(this);
menu = new Menu();
cmdExit = new Command("Exit", Command.EXIT, 0);
menu.setCommandListener(this);
menu.addCommand(cmdExit);
}
public void startApp() {
display.setCurrent(menu);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
if (c == cmdExit) {
destroyApp(true);
notifyDestroyed();
}
}
}
2. Kemudian
isikan program pada Java Class “Menu” dengan program berikut. Ubah code “001203287048” dengan
nama Bluetooth yang akan digunakan
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;
import javax.microedition.io.*;
public class Menu extends Canvas implements
CommandListener {
int lebar;
int panjang;
int selectedMenu = 1;
String[] menu = {"Daftar Menu:", "Led 1 On",
"Led 1 Off", "Led 2 On", "Led 2 Off"};
Font plainMenu, boldMenu;
private Display display;
public String btConnectionURL;
public OutputStream out;
public InputStream is;
public OutputStreamWriter ow;
public InputStreamReader ir;
public Menu() {
lebar = getWidth();
panjang = getHeight();
plainMenu = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN,
Font.SIZE_SMALL);
boldMenu = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD,
Font.SIZE_MEDIUM);
}
public void drawMenu(Graphics g) {
g.setColor(100, 100, 100);
g.setFont(plainMenu);
g.drawString(menu[0], 20, 20, Graphics.BASELINE | Graphics.LEFT);
for (int i = 1; i < menu.length; i++) {
if (i == selectedMenu) {
g.setColor(100, 80, 150);
g.setFont(boldMenu);
} else {
g.setColor(50, 80, 100);
g.setFont(plainMenu);
}
g.drawString(menu[i], 25, 20 + i * plainMenu.getHeight(),
Graphics.BASELINE | Graphics.LEFT);
}
}
protected void paint(Graphics g) {
g.setColor(250, 250, 250);
g.fillRect(0, 0, getWidth(), getHeight());
drawMenu(g);
}
public void keyPressed(int keyCode) {
switch (getGameAction(keyCode)) {
case Canvas.DOWN:
selectedMenu++;
if (selectedMenu >
menu.length - 1) {
selectedMenu = 1;
}
break;
case Canvas.UP:
selectedMenu--;
if (selectedMenu <= 0) {
selectedMenu = menu.length
- 1;
}
break;
case Canvas.FIRE:
if (selectedMenu == 1) {
try {
btConnectionURL =
"btspp://" + "001203287048" +
":1;authenticate=true;encrypt=false;master=false";
StreamConnection
connection = (StreamConnection) Connector.open(btConnectionURL);
out =
connection.openOutputStream();
is =
connection.openInputStream();
OutputStreamWriter ow =
new OutputStreamWriter(out, "US-ASCII");
InputStreamReader ir =
new InputStreamReader(is, "US-ASCII");
ow.write("1");
connection.close();
connection = null;
is.close();
ow.close();
} catch (IOException ioe) {
}
} else if (selectedMenu == 2) {
try {
btConnectionURL =
"btspp://" + "001203287048" +
":1;authenticate=true;encrypt=false;master=false";
StreamConnection
connection = (StreamConnection) Connector.open(btConnectionURL);
out =
connection.openOutputStream();
is =
connection.openInputStream();
OutputStreamWriter ow =
new OutputStreamWriter(out, "US-ASCII");
InputStreamReader ir =
new InputStreamReader(is, "US-ASCII");
ow.write("2");
connection.close();
connection = null;
is.close();
ow.close();
} catch (IOException ioe) {
}
} else if (selectedMenu == 3) {
try {
btConnectionURL =
"btspp://" + "001203287048" +
":1;authenticate=true;encrypt=false;master=false";
StreamConnection
connection = (StreamConnection) Connector.open(btConnectionURL);
out =
connection.openOutputStream();
is =
connection.openInputStream();
OutputStreamWriter ow =
new OutputStreamWriter(out, "US-ASCII");
InputStreamReader ir =
new InputStreamReader(is, "US-ASCII");
ow.write("3");
connection.close();
connection = null;
is.close();
ow.close();
} catch (IOException ioe) {
}
} else if (selectedMenu == 4) {
try {
btConnectionURL =
"btspp://" + "001203287048" +
":1;authenticate=true;encrypt=false;master=false";
StreamConnection
connection = (StreamConnection) Connector.open(btConnectionURL);
out =
connection.openOutputStream();
is =
connection.openInputStream();
OutputStreamWriter ow =
new OutputStreamWriter(out, "US-ASCII");
InputStreamReader ir =
new InputStreamReader(is, "US-ASCII");
ow.write("4");
connection.close();
connection = null;
is.close();
ow.close();
} catch (IOException ioe) {
}
}
}
repaint();
}
public void commandAction(Command c, Displayable d) {
}
private void destroyApp(boolean b) {
}
private void notifyDestroyed() {
}
}
Cara Penggunaan Alat
Penggunaan
alat ini, pertama aktifkan minimum system dan Bluetooth JY-MCU, sehingga akan nampak
LCD yang menyala dan Led indikator pada bluetooth JY-MCU berkedip, langkah
kedua siapkan handphone yang telah terintsll program bluej2me.jar, aktifkan
aplikasinya. Jika telah terkoneksi dengan baik, tekan salah satu menu yang ada,
maka hasil akan seperti pada table berikut.
Menu Yang
Ditekan
|
Nyala Led
|
Tampilan LCD
|
Led 1 On
|
Led merah
menyala
|
Led 1 ON
|
Led 1 Off
|
Led merah
padam
|
Led 1 OFF
|
Led 2 On
|
Led kuning menyala
|
Led 2 ON
|
Led 2 Off
|
Led kuning
padam
|
Led 2 OFF
|
VIDEO HASILNYA
Selamat Mencoba kawan........................
No comments:
Post a Comment