• Tidak ada hasil yang ditemukan

Aplikasi Web Embedded Microcontroller Untuk Penginformasian Kondisi Lalu Lintas Berupa Tulisan Menggunakan Web Browser Melalui Jaringan GPRS.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Aplikasi Web Embedded Microcontroller Untuk Penginformasian Kondisi Lalu Lintas Berupa Tulisan Menggunakan Web Browser Melalui Jaringan GPRS."

Copied!
43
0
0

Teks penuh

(1)

i Universitas Kristen Maranatha

APLIKASI WEB EMBEDDED MICROCONTROLLER UNTUK PENGINFORMASIAN KONDISI LALU LINTAS BERUPA TULISAN

MENGGUNAKAN WEB BROWSER MELALUI JARINGAN GPRS

Nama : Hardianto Puji Utama Nrp : 0622028

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

email : hardiantoutama@yahoo.com

ABSTRAK

Pengiriman informasi secara jarak jauh dapat dilakukan dengan menggunakan dua buah PC (Personal Computer) yang harus terhubung melalui jaringan Internet secara terus menerus. Hal ini kurang efisien dari segi biaya. Penggunaan web embedded microcontroller, web browser pada PC atau telepon seluler, dan jaringan GPRS (General Packet Radio Service) merupakan salah satu solusi agar dapat dilakukan pengiriman informasi secara cepat, efisien, serta dapat dilakukan setiap saat.

Pada tugas akhir ini dirancang suatu sistem untuk penginformasian kondisi lalu lintas berupa tulisan menggunakan web browser pada PC / telepon seluler melalui jaringan GPRS. Model sistem berupa display LCD 16x2 yang terhubung langsung dengan mikrokontroler ATmega16, sedangkan web embedded microcontroller digunakan sebagai web server. Informasi yang akan diumumkan, dimasukkan melalui textfield yang terdapat pada halaman web di web browser PC ataupun telepon seluler kemudian tekan tombol PUBLISH pada halaman web

tersebut.

Dari hasil uji coba, aplikasi untuk penginformasian kondisi lalu lintas berupa tulisan dengan menggunakan web embedded microcontroller dan jaringan GPRS sebagai media komunikasi data dapat direalisasikan dan berfungsi sesuai dengan rancangan.

Kata kunci : Web Embedded Microcontroller, Web Browser, GPRS (General

(2)

ii Universitas Kristen Maranatha

WEB EMBEDDED MICROCONTROLLER APPLICATION TO INFORM THE TRAFFIC CONDITIONS

IN THE FORM OF TEXT USING WEB BROWSER VIA GPRS NETWORK

Name : Hardianto Puji Utama

Nrp : 0622028

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

email : hardiantoutama@yahoo.com

ABSTRACT

Sending information can be done remotely by using two PCs (Personal Computers) which must be connected through the Internet network continuously. This is less efficient in term of cost. The usage of web embedded microcontroller, web browser on PC or mobile phone, and GPRS network (General Packet Radio Service) is one of solution for sending information quickly, efficiently, and can be done at any time.

In this final project, a system to inform the traffic conditions in the form of text using a web browser on a PC or mobile phone via GPRS network is designed. The system model is 16x2 LCD display which linked directly to the ATmega16 microcontroller and web embedded microcontroller is used as a web server. The information which will be announced is inserted through the textfield on web page in PC or mobile phone web browser and then press the PUBLISH button on this web page.

The application that inform the traffic conditions in the form of text using a web embedded microcontroller and GPRS networks as a medium of data communication has been realized and the results from testing show that it works as it should.

Key words : Web Embedded Microcontroller, Web Browser, GPRS (General

(3)

iii Universitas Kristen Maranatha

DAFTAR ISI

Halaman

ABSTRAK ... i

ABSTRACT ... ii

KATA PENGANTAR ... iii

DAFTAR ISI ... v

DAFTAR TABEL ... viii

DAFTAR GAMBAR ... ix

BAB I PENDAHULUAN 1.1. Latar Belakang ... 1

1.2. Perumusan Masalah ... 2

1.3. Tujuan ... 2

1.4. Batasan Masalah ... 2

1.5. Spesifikasi Sistem ... 3

1.6. Sistematika Penulisan ... 3

BAB II LANDASAN TEORI 2.1. Web Embedded Microcontroller TINI400 ... 4

2.1.1. Perangkat Keras TINI400 ... 5

2.1.1.1 Perangkat Keras TINIs400 ... 5

2.1.1.2 Perangkat Keras TINIm400 ... 6

2.1.2 Perangkat Lunak TINI400 ... 9

2.1.2.1 JAVA API (Application Programming Interface) ... 10

2.1.2.2 Java Virtual Machine ... 11

2.1.2.3 Native Methods ... 12

2.1.2.4 Sistem Operasi TINI400 ... 12

2.2. Mikrokontroler ATmega16 ... 13

2.2.1. Arsitektur Mikrokontroler ATmega16 ... 14

(4)

iv Universitas Kristen Maranatha

2.2.3. Komunikasi Serial USART Mikrokontroler ATmega16 ... 18

2.3. Web Browser ... 20

2.4. GPRS (General Packet Radio Service) ... 22

2.5. HTTP (HyperText Transfer Protocol) ... 24

BAB III PERANCANGAN DAN REALISASI 3.1. Perancangan Sistem ... 26

3.1.1. Diagram Blok Sistem ... 26

3.1.2. Diagram Sistem Kerja ... 28

3.2. Perancangan Perangkat Keras ... 29

3.2.1. LCD 16x2 ... 30

3.2.2. Rangkaian Antarmuka RS-232 to TTL ... 31

3.3. Perancangan Perangkat Lunak ... 34

3.3.1. Perangkat Lunak TINI400 ... 34

3.3.1.1 Thread Sistem ... 36

3.3.1.2 Thread Modem ... 38

3.3.2. Perangkat Lunak Mikrokontroler ATmega16 ... 39

3.3.2.1 Sub Rutin LCD baris 1 ... 41

3.3.2.2 Sub Rutin LCD baris 2 ... 42

BAB IV DATA PENGAMATAN DAN ANALISIS DATA 4.1. Data Pengamatan ... 44

4.1.1. Waktu dari pemanggilan alamat IP sampai halaman login terbuka ... 48

4.1.2. Waktu dari penekanan tombol Publish pada web browser PC sampai informasi tampil di halaman web yang baru ... 49

4.1.3. Waktu dari penekanan tombol Publish pada web browser PC sampai informasi tampil di LCD ... 50

(5)

v Universitas Kristen Maranatha 4.1.5. Waktu dari penekanan tombol Publish pada web browser

Telepon Seluler sampai informasi tampil di LCD ... 52 4.2. Analisis Data ... 53

BAB V KESIMPULAN DAN SARAN

5.1. Kesimpulan ... 55 5.2. Saran ... 55

DAFTAR PUSTAKA ... 56

(6)

vi Universitas Kristen Maranatha

DAFTAR TABEL

Halaman Tabel II.1 Fungsi Khusus Port B ... 17 Tabel II.2 Fungsi Khusus Port C ... 17 Tabel II.3 Fungsi Khusus Port D ... 18 Tabel IV.1 Pengujian Contoh Informasi yang dimasukkan pada halaman

web ... 45 Tabel IV.2 Hasil Percobaan tingkat kelengkapan informasi yang tampil pada

LCD ... 47

Tabel IV.3 Hasil Pengujian Waktu dari pemanggilan alamat IP sampai

halaman web login terbuka ... 48 Tabel IV.4 Hasil Pengujian waktu dari penekanan tombol Publish pada

web browser PC sampai informasi tampil di halaman web

yang baru ... 49 Tabel IV.5 Hasil Pengujian waktu dari penekanan tombol Publish pada

web browser PC sampai informasi tampil di LCD ... 50 Tabel IV.6 Hasil Pengujian waktu dari penekanan tombol Publish pada

web browser Telepon Seluler sampai informasi tampil di

halaman web yang baru ... 51 Tabel IV.7 Hasil Pengujian waktu dari penekanan tombol Publish pada

web browser Telepon Seluler sampai informasi tampil di

(7)

vii Universitas Kristen Maranatha

DAFTAR GAMBAR

Halaman

Gambar II.1 Perangkat Keras TINIs400 ... 5

Gambar II.2 Perangkat Keras TINIm400 ... 6

Gambar II.3 Diagram Blok Arsitektur Mikrokontroler DS80C400 ... 7

Gambar II.4 TINI Runtime Environtment ... 10

Gambar II.5 Diagram Blok Arsitektur Mikrokontroler ATmega16 ... 15

Gambar II.6 Konfigurasi Pin ATmega16 ... 16

Gambar II.7 Diagram Blok USART Mikrokontroler ATmega16 ... 19

Gambar II.8 Contoh tampilan sebuah web browser ... 21

Gambar II.9Jaringan GSM-GPRS... 24

Gambar III.1 Diagram Blok Sistem ... 26

Gambar III.2 Diagram Sistem Kerja ... 28

Gambar III.3 Diagram Blok Pengendali Model Sistem ... 29

Gambar III.4 Konfigurasi pin pada LCD 16x2 ... 31

Gambar III.5 Rangkaian Antarmuka RS-232 to TTL ... 32

Gambar III.6 Rangkaian Keseluruhan Model Sistem ... 33

Gambar III.7 Diagram Alir Proses Utama ... 35

Gambar III.8 Diagram Alir Thread Sistem ... 37

Gambar III.9 Diagram Alir Thread Modem ... 38

(8)
(9)

LAMPIRAN A

(10)

Foto 1

Modul Mikrokontroler ATmega16 & LCD 16x2

(11)

Foto 3 - Modem GPRS

(12)

LAMPIRAN B

(13)

Foto 1 - Tampilan Halaman Web pada Web Browser PC

(14)

LAMPIRAN C

(15)

Utama.java

import java.util.*; import java.io.*; import java.net.*; import java.lang.*;

import com.dalsemi.system.*; import com.dalsemi.shell.server.*; public class Utama

{

Sistem sistem; Modem modem;

int port = 80;

int info1; int info2;

boolean IsiPertama =false; boolean IsiKedua =false; static boolean login =false; Object lock;

static String user = ""; static String pass = ""; static String variabel1 = ""; static String variabel2 = ""; public Utama(){}

public static void writePage(BufferedWriter wr) {

try {

Calendar calendar = Calendar.getInstance();

int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE);

int second = calendar.get(Calendar.SECOND);

String timestring = new String("Waktu Sekarang : " + hour + ":"); if(minute < 10) timestring += "0";

timestring += Integer.toString(minute); timestring += ":";

(16)

String jam = new String("pukul : " + hour + ":"); if(minute < 10) jam += "0";

jam += Integer.toString(minute); jam += ":";

if(second < 10) jam += "0"; jam += Integer.toString(second); wr.write("HTTP/1.0 200 OK\n"); wr.write("Content-type: text/html\n\n"); wr.write("<HTML>\n");

wr.write("<HEAD>\n");

wr.write("<TITLE>Tugas Akhir Hardianto (0622028)</TITLE>\n"); wr.write("</HEAD>\n");

wr.write("<BODY COLOR='green' BGCOLOR='white'>\n");

wr.write("<h2 ALIGN='CENTER'><font COLOR='red'>Server Penginformasian Kondisi Lalu Lintas </font></h4>\n");

wr.write("<form>"); if(!login)

{

wr.write("<h4 ALIGN='CENTER'> Name: <INPUT TYPE='text' NAME='Name'>\n");

wr.write("<h4 ALIGN='CENTER'> Password: <INPUT TYPE='password' NAME='Password'>\n");

wr.write("<h4 ALIGN='CENTER'><INPUT TYPE='submit' NAME='login' VALUE='OK'><br>\n");

} else {

wr.write("<font color='blue'>\n");

wr.write("<h4 ALIGN='CENTER'> Informasi 1 : <INPUT TYPE='TEXT' NAME='info1' MAXLENGTH='32'>\n");

wr.write("<h4 ALIGN='CENTER'> Informasi 2 : <INPUT TYPE='TEXT' NAME='info2' MAXLENGTH='32'>\n");

wr.write("<h4 ALIGN='CENTER'><INPUT TYPE='submit' NAME='tombol1' VALUE='PUBLISH'><br>\n");

wr.write("<h4 ALIGN='CENTER'>info pertama : " + variabel1 + " <br>\n"); wr.write("<h4 ALIGN='CENTER'>info kedua : " + variabel2 + " <br>\n"); wr.write("</font>\n");

}

wr.write("<form><br>\n\n"); wr.write("</font></h4>\n");

wr.write("<h4 ALIGN='CENTER'>"+timestring+"</h4>\n"); wr.write("</CENTER></BODY></HTML>\n");

wr.flush();

}

(17)

public void Running() {

try {

modem.setSerialPort(new Integer("4")); modem.setUsername("wap");

modem.setPassword("wap123"); modem.setPhoneNumber("*99***1#"); Thread sistemClass = new Thread(sistem); sistemClass.setName("Sistem");

Thread modemClass = new Thread(modem); modemClass.setName("Modem");

sistemClass.start(); modemClass.start(); Thread.sleep(2000);

ServerSocket srv = new ServerSocket(port); while(true)

{ try {

Socket mySocket = srv.accept(); BufferedWriter serverResponse =

newBufferedWriter(newOutputStreamWriter(mySocket.getOutputStream())); BufferedReader clientRequest =

newBufferedReader(newInputStreamReader(mySocket.getInputStream())); String str, temp, result = "";

str=clientRequest.readLine(); System.out.println(str); sistem.setConnectionWeb(4);

Calendar calendar = Calendar.getInstance();

int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE);

String jam = new String("_pk." + hour + ":"); if(minute < 10) jam += "0";

jam += Integer.toString(minute); if (str.startsWith("GET /?info1")) {

temp = str; int i=0;

temp = temp.substring(12);

char[] tempChar = temp.toCharArray(); while(tempChar[i] != '&'){

result += tempChar[i]; i++;

}

(18)

if(variabel1 != "") {

variabel1 = result + jam; }

while(tempChar[i] != '&') {

result += tempChar[i]; i++;

}

variabel2 = result; if(variabel2 != "") {

variabel2 = result + jam; }

System.out.println("variabel1 : "+ variabel1); System.out.println("variabel2 : "+ variabel2); sistem.setDataInfo(variabel1, variabel2); writePage(serverResponse);

}

else if(str.startsWith("GET /?Name")) {

temp = str; int i=0;

temp = temp.substring(11);

char[] tempChar = temp.toCharArray(); while(tempChar[i] != '&')

{

result += tempChar[i]; i++;

while(tempChar[i] != '&') {

(19)

i++; }

pass = result;

System.out.println("user : "+ user); System.out.println("pass : "+ pass);

if(user.equals("root")&&pass.equals("tini")){

catch(Exception e) {

System.out.println("Connection Socket Error !!"); System.out.println(e.toString());

} } }

catch(Exception e) {

System.out.println("Error to Initial Thread !!"); System.out.println(e.toString());

} }

public static void main(String[] args) {

catch(Throwable t){} }

(20)

Sistem.java

import java.io.*; import javax.comm.*; import java.util.*;

public class Sistem implements Runnable {

String info1 = ""; String info2 = "";

int WebConnect = 0;

boolean plant = false;

boolean WebConnection = false;

InputStream in;

OutputStream output;

SerialPort sp;

static Enumeration portList; static CommPortIdentifier portIdTemp; public Sistem()

{ try {

portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements())

{

portIdTemp = (CommPortIdentifier) portList.nextElement(); System.out.println(portIdTemp.getName());

}

CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier("serial0"); sp = (SerialPort)portId.open("PLANT", 2000);

sp.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

sp.setFlowControlMode(sp.FLOWCONTROL_NONE); System.out.println();

System.out.println();

System.out.println("Open Serial with System...."); }

catch(Exception e){System.out.println(e.toString());} }

public void initwritetoport() {

try {

output = sp.getOutputStream(); }

(21)

System.out.println(e.toString());} return;

}

public void setData() {

try {

String str; if(info1 != "") {

str = "1" + info1 ; if(str.length() < 32) {

i += info1.length()+1; }

}

byte[] data = str.getBytes(); output.write(data); if(str.length() < 32) {

i += info2.length()+1; }

}

byte[] kata = str.getBytes(); output.write(kata);

output.flush(); }

}

catch(IOException e){

(22)

} }

public void setConnectionWeb(int Web) {

WebConnection=true; WebConnect=Web; }

public void setDataInfo(String info1, String info2) {

this.info1=info1; this.info2=info2; }

public void run() {

System.out.println("System Model Connected"); }

else {

Thread.sleep(20); if (WebConnection) {

if (x==75) {Thread.sleep(20);x=0; }

}

catch(Throwable t){}//System.out.println(t.toString()) }

(23)

Modem.java

import java.io.*; import java.util.*; import javax.comm.*;

import com.dalsemi.system.*; import com.dalsemi.tininet.ppp.*;

public class Modem extends Thread implements PPPEventListener, CommPortOwnershipListener

{

private CommPortIdentifier portId;

static SerialPort serialPort = null; private InputStream modemInputStream; private OutputStream modemOutputStream; private int portNumber;

PPP ppp = null;

private boolean connected = false; private boolean running = true;

private byte[] localAddress = new byte[] {0, 0, 0, 0}; private byte[] remoteAddress = new byte[] {0, 0, 0, 0}; private String interfaceName = "pppClient";

public String username; public String password; public String phoneNumber;

private boolean haveControlLines = false; private boolean carrierLost = false; private boolean interfaceActive = false; private ModemCommand[] dialSequence = {

new ModemCommand("AT\r", "OK", 5), new ModemCommand("ATZ\r", "OK", 5), new ModemCommand("ATM1L0\r", "OK", 5), };

public void run() {

boolean callServer = false; boolean closeConnection = false; String optionParam;

System.out.println("Starting PPP...."); ppp = new PPP();

if (openSerialPort(portNumber) == false) {

(24)

return;

catch(Exception e) {

System.out.println("Exception adding event listener"); }

ppp.setLocalAddress(localAddress); ppp.setRemoteAddress(remoteAddress); ppp.setRemoteAccm(0x00000000); ppp.setLocalAccm(0x00000000); ppp.setAuthenticate(false, true); try

{

ppp.setUsername(username); ppp.setPassword(password); }

catch(Exception e) {

System.out.println("Exception setting username/password"); }

System.out.println("Dialing ISP...."); for (int i = 0; i < dialSequence.length; ++i) {

if (!atCommand(dialSequence[i])) {

System.out.println("Modem did not respond to command " + dialSequence[i].command);

System.out.println();

System.out.println("Please Shutdown Modem GPRS and Restart TINI400 Module !!");

if (!atCommand(new ModemCommand("ATDT" + phoneNumber + "\r", "CONNECT", 45)))

{

closeSerialPort();

(25)

System.out.println();

System.out.println("Please Shutdown Modem GPRS and Restart TINI400 Module !!"); System.out.println();

System.out.println(); return;

}

System.out.println("Connected to ISP"); connected = true;

ppp.up(serialPort); while (running) {

try { Thread.sleep(1000); } catch (Exception e){} if (connected && haveControlLines && !carrierLost) {

if (!serialPort.isCD()) {

ppp.close(); carrierLost = true; }

}

if (!connected) {

System.out.println("closePPP"); closePPP();

closeSerialPort(); running = false; }

} }

public void pppEvent(PPPEvent ev) {

switch (ev.getEventType()) {

case PPPEvent.UP:

System.out.println("PPP IS UP"); System.out.println();

System.out.println();

System.out.println("System Model Ready to Control and Monitor"); System.out.println();

System.out.println();

ppp.addInterface(interfaceName); ppp.setDefaultInterface(true); interfaceActive = true;

(26)

case PPPEvent.CLOSED:

System.out.println("PPP IS DOWN"); if (interfaceActive)

{

interfaceActive = false;

ppp.removeInterface(interfaceName); }

connected = false; break;

default: break; } }

private void closePPP() {

ppp.freePort(); ppp.finish();

try{Thread.sleep(2000);} catch (Exception _){}

ppp.removeEventListener(this); }

private void closeSerialPort() {

resetModem(); serialPort.close();

portId.removePortOwnershipListener(this); }

private boolean openSerialPort(int portNum) {

try {

if ( portNum > 0 && portNum < 4 )

TINIOS.setSerial(TINIOS.SERIAL_SET_ENABLE, portNum, true); }

catch (UnsupportedCommOperationException _) {

System.out.println("Exception enabling serial port " + portNum); return false;

} try {

portId = CommPortIdentifier.getPortIdentifier("serial" + portNum); serialPort = (SerialPort)portId.open(interfaceName, 5000);

(27)

SerialPort.DATABITS_8, SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

portId.addPortOwnershipListener(this); if (haveControlLines)

{

TINIOS.setSerial(TINIOS.SERIAL_SET_RTSCTS_FLOW_CONTROL, 4, false);

TINIOS.setSerial(TINIOS.SERIAL_SET_RTSCTS_FLOW_CONTROL, 1, false);

TINIOS.setSerial(TINIOS.SERIAL_SET_RTSCTS_FLOW_CONTROL, 0, false);

TINIOS.setSerial(TINIOS.SERIAL_SET_RTSCTS_FLOW_CONTROL, portNum, true);

serialPort.setFlowControlMode(serialPort.FLOWCONTROL_RTSCTS_IN | serialPort.FLOWCONTROL_RTSCTS_OUT);

modemInputStream = serialPort.getInputStream(); modemOutputStream = serialPort.getOutputStream(); long available = modemInputStream.available(); if (available > 0)

modemInputStream.skip(available); modemOutputStream.flush(); resetModem();

}

catch (Exception e) {

System.out.println(e.toString()); return false;

}

return true; }

private boolean waitFor(String expect, String response, int timeout) {

boolean done = false;

boolean returnValue = false; int numBytes;

byte[] readBuffer = new byte[40]; int bytesAvailable;

(28)

while (done == false) {

try {

Thread.sleep(500);

if ((bytesAvailable = modemInputStream.available()) > 0) {

numBytes = modemInputStream.read(readBuffer, 0, bytesAvailable); buffer = buffer.concat(new String(readBuffer, 0, numBytes));

if (buffer.indexOf(expect) != -1) {

catch(Exception e) {

System.out.println(e.toString() + " during write"); }

returnValue = true; done = true;

returnValue = true; done = true;

} } } }

catch (Exception e) {

System.out.println(e.toString()); }

}

return returnValue; }

(29)

boolean returnValue = false; String response = new String(); int timeout = mc.timeout * 2;

catch(Exception e) {

System.out.println("atCommand write " + e.toString()); return false;

}

boolean done = false; while (done == false) {

Thread.sleep(500);

int bytesAvailable = modemInputStream.available(); if (bytesAvailable > 0)

{

byte[] readBuffer = new byte[bytesAvailable];

int numBytes = modemInputStream.read(readBuffer, 0, bytesAvailable); response = response.concat(new String(readBuffer, 0, numBytes)); if (response.indexOf(mc.response) != -1)

{

returnValue = true; done = true;

} } else {

// If not waiting forever if (timeout > 0)

{

// Decrement seconds counter if (--timeout == 0)

{

returnValue = false; done = true;

(30)

{

System.out.println("atCommand all " + e.toString()); }

return returnValue; }

private void resetModem() {

if (haveControlLines) {

serialPort.setDTR(false); serialPort.setRTS(false); try { Thread.sleep(2000); }

catch(Exception _){} serialPort.setDTR(true); serialPort.setRTS(true); try

{ Thread.sleep(2000); }

catch(Exception _){} }

else {

try { Thread.sleep(2000); } catch(Exception _){}

atCommand(new ModemCommand("+++", "", 2)); try { Thread.sleep(2000); }

catch(Exception _){}

atCommand(new ModemCommand("ATH\r", "OK", 2)); }

}

public void ownershipChange(int ev) {

switch (ev) {

case CommPortOwnershipListener.PORT_OWNED: break;

case CommPortOwnershipListener.PORT_OWNERSHIP_REQUESTED: ppp.close();

closePPP(); try

{

(31)

portId.removePortOwnershipListener(this); }

catch(Exception _){} break;

case CommPortOwnershipListener.PORT_UNOWNED: break;

default: break; } }

public void setUsername(String username) {

this.username = username; }

public void setPassword(String password) {

this.password = password; }

public void setPhoneNumber(String phoneNumber) {

this.phoneNumber = phoneNumber; }

public void setSerialPort(Integer portNumber) {

this.portNumber = portNumber.intValue(); }

}

class ModemCommand {

String command; String response; int timeout;

private ModemCommand(){};

public ModemCommand(String command, String response, int timeout) {

this.command = command; this.response = response; this.timeout = timeout; }

}

(32)

LAMPIRAN D

(33)

#include <mega16.h>

// Alphanumeric LCD Module functions #asm

.equ __lcd_port=0x15 ;PORTC #endasm

#include <lcd.h> #include <delay.h> #include <stdio.h> #include <stdlib.h> unsigned int j;

signed char rf1[32],rf2[32],isi[2]; int z,y;

#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)

// 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;

(34)

interrupt [USART_RXC] void usart_rx_isr(void) {

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

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)

{

rx_buffer[rx_wr_index]=data;

if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE)

{

#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)

{

char text[32];

(35)

// 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=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

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

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=0x00;

DDRC=0x00;

// 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;

(36)

// 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;

// 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;

(37)

UBRRL=0x47;

// Analog Comparator initialization // Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;

SFIOR=0x00;

// LCD module initialization lcd_init(16);

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

if (isi[0]=='1')goto lcd1; if (isi[0]=='2')goto lcd2; else

{

lcd_putsf("Tunggu Info"); delay_ms(100);

(38)

goto scan; lcd2:

for(j=0;j<32;j++) {

scanf("%c",&rf2[j]); }

for (y=0;y<17;y++) {

lcd_gotoxy(0,1);

sprintf(text,"%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",rf2[y],rf2[y+1], rf2[y+2],rf2[y+3],rf2[y+4],rf2[y+5],rf2[y+6],rf2[y+7],rf2[y+8],rf2[y+9], rf2[y+10],rf2[y+11],rf2[y+12],rf2[y+13],rf2[y+14],rf2[y+15]);

lcd_puts(text); delay_ms(500); lcd_clear(); }

goto scan; };

(39)

1 Universitas Kristen Maranatha

BAB I

PENDAHULUAN

1.1. Latar Belakang

Dewasa ini jumlah kendaraan di suatu perkotaan semakin meningkat. Hal ini dapat ditandai dengan semakin tingginya tingkat kepadatan lalu lintas. Namun mobilitas masyarakat yang tinggi serta kebutuhan untuk berpindah dari tempat yang satu ke tempat yang lain dalam waktu yang cepat menyebabkan diperlukannya informasi yang akurat mengenai keadaan lalu lintas. Untuk itu kondisi lalu lintas perlu diinformasikan setiap saat kepada para penggunanya, termasuk salah satunya mengenai keadaan ruas jalan tol serta kondisi terkini mengenai gerbang tol.

Salah satu cara yang dapat digunakan adalah dengan memberikan informasi kondisi lalu lintas berupa display tulisan berjalan. Informasi yang akan ditampilkan akan selalu berubah-ubah sesuai dengan kondisi lalu lintas yang sedang terjadi. Oleh karena itu, display ini harus terhubung dengan jaringan komunikasi agar dapat dilakukan pengiriman informasi secara cepat, efisien dan dapat dilakukan setiap saat.

Dengan adanya jaringan Internet, pengiriman informasi dapat dilakukan dengan menggunakan dua buah PC (Personal Computer), satu PC berperan sebagai Web Server yang terhubung langsung dengan display, dan PC lainnya sebagai Web Client untuk memberikan informasi. Namun pada kenyataanya, hal ini kurang efisien karena PC sebagai Web Server harus dalam keadaan nyala terus menerus untuk dapat menerima informasi.

(40)

Bab I Pendahuluan 2

Universitas Kristen Maranatha penginformasian kondisi lalu lintas menggunakan web browser. Pada sistem penginformasian ini, akan digunakan jaringan GPRS (General Packet Radio Service) sebagai media komunikasi data antara Web Server dan Web Client.

1.2. Perumusan Masalah

Permasalahan yang akan dibahas dalam tugas akhir ini meliputi:

1. Bagaimana merancang dan merealisasikan suatu sistem yang dapat digunakan untuk menginformasikan kondisi lalu lintas berupa tulisan dengan menggunakan web embedded microcontroller TINI400 dan GPRS sebagai media komunikasi data ?

2. Bagaimana membuat model suatu sistem penginformasian kondisi lalu lintas ?

1.3. Tujuan

Tujuan yang hendak dicapai dalam pengerjaan tugas akhir ini adalah: 1. Merancang dan merealisasikan suatu sistem yang dapat digunakan untuk

menginformasikan kondisi lalu lintas berupa tulisan dengan menggunakan

web embedded microcontroller TINI400 dan GPRS sebagai media komunikasi data.

2. Membuat model suatu sistem penginformasian kondisi lalu lintas.

1.4. Batasan Masalah

Pembatasan masalah pada tugas akhir ini meliputi: 1. Jaringan GPRS diasumsikan dalam keadaan baik. 2. Alamat IP model sistem diasumsikan tidak berubah.

3. Pemrograman web embedded microcontroller TINI400 menggunakan bahasa pemrograman JAVA.

4. Pemrograman mikrokontroler ATmega16 dilakukan dengan perangkat lunak Code Vision.

(41)

Bab I Pendahuluan 3

Universitas Kristen Maranatha

1.5. Spesifikasi Sistem

Spesifikasi sistem yang dikerjakan pada tugas akhir ini adalah: 1. Display yang digunakan berupa LCD 16x2.

2. Jumlah maksimal karakter informasi yang dapat dimasukkan dibatasi sampai 32 karakter.

3. Beberapa karakter seperti : !, @, #, $, %, ^, &, *, ”, <, >, ?, dan spasi tidak dapat dimasukkan sebagai bagian dari sebuah informasi.

1.6. Sistematika Penulisan

Agar dalam penulisan laporan Tugas Akhir dapat lebih terarah dan terstruktur, maka laporan ini dibagi dalam lima bab, yaitu :

BAB I PENDAHULUAN

Membahas latar belakang, perumusan masalah, tujuan, batasan masalah, spesifikasi sistem, dan sistematika penulisan.

BAB II LANDASAN TEORI

Membahas teori penunjang mengenai web embedded microcontroller

TINI400, mikrokontroler ATmega16, web browser, jaringan GPRS, dan HTTP.

BAB III PERANCANGAN DAN REALISASI

Membahas perancangan dan realisasi sistem, perangkat keras sistem, dan perangkat lunak sistem.

BAB IV DATA PENGAMATAN DAN ANALISIS DATA

Membahas pengamatan sistem dan menganalisa data.

BAB V KESIMPULAN DAN SARAN

(42)

55 Universitas Kristen Maranatha

BAB V

KESIMPULAN DAN SARAN

5.1. Kesimpulan

1. Sistem untuk penginformasian kondisi lalu lintas berupa tulisan dengan menggunakan web embedded microcontroller TINI400 dan GPRS sebagai media komunikasi data telah berhasil dibuat dan berfungsi sesuai dengan rancangan.

2. Dari pengujian yang telah dilakukan, semua informasi yang akan diumumkan berhasil ditampilkan pada display LCD tanpa ada data / karakter yang hilang.

5.2. Saran

1. Menggunakan modem dengan kemampuan 3G / 3.5G supaya waktu yang diperlukan untuk mengirimkan informasi menjadi lebih cepat serta dapat mengirimkan data yang lebih besar seperti gambar atau video.

2. Menggunakan display running text / moving sign yang berukuran besar agar sistem dapat benar-benar diaplikasikan.

(43)

56 Universitas Kristen Maranatha

DAFTAR PUSTAKA

Daftar pustaka sebagai referensi dalam pengerjaan tugas akhir ini adalah : 1. –, ATmega16, Atmel, USA, 2004.

2. –, DS80c400 Network Microcontroller, Maxim, Sunnyvale, 2007. 3. –, DSTINIm400 Networked Microcontroller Evaluation Board, Maxim,

Sunnyvale, 2006.

4. –, DSTINIs400 Sockets Evaluation Board, Maxim, Sunnyvale, 2006. 5. –, Power Point Standar GSM-GPRS, Insitut Teknologi Telkom, Bandung,

2008.

6. Andersson, Christoffer, GPRS and 3G Wireless Applications, John Wiley & Sons Inc, 2001.

7. Deitel, H.M, Internet & World Wide Web How to Program, Prentice-Hall International, 2000.

8. Fiati, Rina, Akses Internet via Ponsel, Andi Yogyakarta, 2005.

9. Halonen, Timo, GSM, GPRS and Edge Performance, John Wiley & Sons Ltd, 2003.

10.Loomis, Don, The TINI™ Specification and Developer’s Guide, Dallas Semiconductor Corporation, 2001.

11.http://id.wikipedia.org/wiki/GPRS, 7Januari 2010. 12.http://id.wikipedia.org/wiki/HTTP, 7Januari 2010.

Referensi

Dokumen terkait

Setelah pengolahan data dengan sofware GrADS selesai, kemudian menganalisa data sekunder dari NOAA, data curah hujan yang diperoleh dari BMKG serta data emisi gas

tabaci yang berasal dari brokoli mampu menginduksi daun labu menjadi berwarna keperakan (DP) sedangkan populasi lainnya tidak menimbulkan gejala DP (Gambar 2). Perubahan warna

Edaran mendagri tentang revitalisasi posyandu hal yang krussial berbicara kebijakan public untuk kebijakan posyandu, ada juga tentang perda posyandu, perdanya mengharuskan

Sup krim instan merupakan sup yang berbahan dasar kaldu dari protein hewani dan diperkaya dengan cream , yang mengalami proses pengeringan kemudian dijadikan

Tujuan dari kegiatan ini adalah melatih pemuda Karang Taruna Fajar Desa Masawah membuat bioplastik dengan memanfaatkan sumber daya hayati yang ada di Pantai

Secara preventif penegakan hukum ini dilakukan melalui kerjasama dengan pihak-pihak berkait seperti pengusaha warung internet (warnet) dalam hal pengawasan dan

Mengontrol cara yang dilakukan oleh semua software dalam menggunakan hardware yang mendasari (underlying) dan juga menyembunyikan kompleksitas hardware dari software lain dengan

Analisis potensi wilayah menggunakan parameter location quotient (LQ) dan faktor-faktor pengembangan sapi potong dianalisis dengan model regresi linier berganda,