Simulasi Pengaturan Lampu Lalu Lintas Otomatis Menggunakan Kamera Berdasarkan Distribusi Kepadatan
Yusriadi/ 0322093
Jurusan Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha Jalan Prof. Drg. Suria Sumantri 65
Bandung 40164, Indonesia
Email: saint_2k6@yahoo.com
ABSTRAK
Kemacetan lalu lintas pada persimpangan jalan disebabkan pengaturan lampu lalu lintas yang kurang baik di kota-kota besar, menjadi masalah dalam kelancaran transportasi. Kerugian yang disebabkan oleh kemacetan lalu lintas tidak sedikit antara lain : waktu produktif menjadi hilang, bahan bakar terbuang secara percuma, bertambahnya polusi udara, sehingga mempengaruhi kesehatan maupun psikologis manusia.
Dalam tugas akhir ini dibuat simulasi pengaturan lampu lalu lintas otomatis menggunakan kamera berdasarkan distribusi kepadatan. Kamera berfungsi sebagai sensor untuk memantau jumlah kendaraan atau kepadatan (K) yang mengantri di lampu merah. PC berfungsi untuk mengolah data dengan bahasa pemrograman microsoft visual basic 6.0. Data dari PC dikirimkan ke mikrokontroler yang dihubungkan melalui serial port, mikrokontroller mengatur lama penyalaan lampu hijau.
Hasil pengujian simulasi yang dilakukan dalam tugas akhir ini menunjukkan bahwa sistem dapat bekerja menentukan lama penyalaan lampu hijau berdasarkan distribusi kepadatan. Apabila K < 30 % lama penyalaan lampu hijau 3 detik, K >= 30 % dan K < 60 % lama penyalaan lampu hijau 6 detik, K >= 60 % lama penyalaan lampu hijau 9 detik sesuai dengan rancangan.
Automatic Traffic Light Simulation Using A Camera Based On Density Distribution
Yusriadi/ 0322093
Electrical Engineering, Technic Faculty, Christian Maranatha University Prof. Drg. Suria Sumantri 65 Street, Bandung 40164, Indonesia
Email: saint_2k6@yahoo.com
ABSTRACT
Intersections traffic jams that caused by the unorganized traffic lights in big cities, has become an issue in traffic smoothness flow. The disadvantages caused by traffics jams, such as losing productivity, wasted petrol, increase pollutions, hint affecting human’s health and human’s psychology.
In this final assessment, automatic traffic lights simulation using a camera based on density distribution is discussed. The camera is acted a sensor to monitor the amount of vehicles or density (K) stops at the red light. PC is used to process the data using a microsoft visual basic 6.0 program. The data from PC is then sent to micro-controller that has been connected through serial port, micro-controller used to turn the green light on.
The simulation test result which has done in this final assessment showed that the system could work to determine how long the green light is on based on the density distribution. If K < 30% the green light is on for 3 seconds, K >= 30% and K < 60% the green light is on for 6 seconds, K >= 60% the green light is on for 9 seconds, depending on the arrangement.
DAFTAR ISI
LEMBAR PENGESAHAN SURAT PERNYATAAN
ABSTRAK... ... i
ABSTRACT... ii
Kata Pengantar ... iii
DAFTAR ISI... v
DAFTAR TABEL... ix
DAFTAR GAMBAR ... x
BAB I PENDAHULUAN ... 1
I.1 Latar Belakang... 1
I.2 Identifikasi Masalah... 2
I.3 Tujuan ... 2
I.4 Pembatasan Masalah... 2
I.5 Sistematika Pembahasan... 2
BAB II DASAR TEORI ... 4
II.1 Sejarah Sistem Pengatur Lampu Lalu Lintas ... 4
II.1.1 Fase pada Sistem Pengatur Lalu Lintas... 4
II.1.2 Aspek Sinyal... 5
II.2 Perhitungan Kepadatan... 5
II.3 Mikrokontroler AVR ATMega8535... 6
II.3.1 Arsitektur ATMega8535 ... 7
II.3.2 Konfigurasi pin ATMega8535 ... 9
II.4 Code Vision AVR 1.25.3 Professional... 10
II.5 Sistem Warna ... 12
II.5.1 Red Green Blue (RGB)... 12
II.6 Konversi ke 'Citra Biner' ... 13
II.8 Microsoft Visual Basic 6.0 ... 15
II.8.1 Project ... 16
II.8.2 Form ... 17
II.8.3 Toolbox ... 17
II.8.4 Properties ... 17
BAB III PERANCANGAN DAN REALISASI ... 18
III.1 Perangkat Keras ... 18
III.1.1 Maket ... 19
III.1.2 Mikrokontroler ... 19
III.1.3 Kamera ... 21
III.1.4 Personal Computer (PC)... 22
III.1.5 Serial Port ... 22
III.2 Perangkat Lunak... 22
III.2.1 Program Mikrokontroller ... 22
III.2.2 Perancangan Alur Pada Tiap Jalur ... 23
III.2.3 Konfigurasi Code Vision AVR ... 26
III.2.3.1 Konfigurasi Chip... 26
III.2.3.2 Konfigurasi Port... 27
III.2.3.2.1 Konfigurasi Port A... 27
III.2.3.2.2 Konfigurasi Port B... 28
III.2.3.3 Konfigurasi USART ... 29
III.2.4 Program Visual Basic... 30
III.3 Komunikasi Serial... 35
BAB IV DATA PENGAMATAN DAN ANALISA ... 37
IV.1 Pengujian Perangkat Keras ... 37
IV.1.1 Pengujian Pada Mikrokontroler ... 37
IV.1.2 Pengujian Pada Kamera ... 38
IV.2 Pengujian Perangkat Lunak ... 38
BAB V KESIMPULAN DAN SARAN... 43
V.1 Kesimpulan ... 43
V.2 Saran...43
LAMPIRAN LAMPIRAN A
Program pada Mikrokontroler...A-1 Program pada Microsoft Visual Basic 6.0... A-10 LAMPIRAN B
Foto Alat... B-1 LAMPIRAN C
Datasheet ATMega8535... C-1 Datasheet MAX232... C-8 LAMPIRAN D
DOKUMENTASI... D-1 LAMPIRAN E
DAFTAR TABEL
Tabel II.1 Konfigurasi pin dan nama sinyal konektor serial DB-9... 14
Tabel II.2 Pengaruh baudrate dengan Panjang Kabel untuk interface RS232 ... 15
Tabel III.1 Port Mikrokontroler Yang Digunakan ... 20
Tabel III.2 Timing Diagram Pengatur Nyala Lampu Lalu Lintas ... 26
Tabel IV.1 Pengujian Mikrokontroler... 37
Tabel IV.2 Hasil pengujian 1 ... 39
Tabel IV.3 Hasil pengujian 2 ... 40
Tabel IV.4 Hasil pengujian 3 ... 40
Tabel IV.5 Hasil pengujian 4 ... 41
Tabel IV.6 Hasil pengujian 5 ... 41
DAFTAR GAMBAR
Gambar II.1 Blok Diagram Fungsional ATMega8535 ... 8
Gambar II.2 Konfigurasi Pin ATMega8535 ... 9
Gambar II.3 Code Vision AVR 1.25.3 Professional... 10
Gambar II.4 Dialog Box Untuk Membuat Project Baru ... 10
Gambar II.5 Blok Penginisialisasian Program ... 11
Gambar II.6 Bagian Penulisan Program... 12
Gambar II.7 Sistem warna RGB ... 13
Gambar II.8 Frame Data pada Komunikasi Serial Asynchronous ... 14
Gambar II.9 Konektor Serial DB-9... 14
Gambar II.10 Tampilan dasar VB 6.0... 16
Gambar III.1 Blok Diagram Sistem ... 18
Gambar III.2 Maket Lalu Lintas ... 19
Gambar III.3 Skematik Rangkaian... 20
Gambar III.4 Simulasi arah kendaraan dari jalur1 ... 23
Gambar III.5 Simulasi arah kendaraan dari jalur2 ... 23
Gambar III.6 Simulasi arah kendaraan dari jalur3 ... 24
Gambar III.7 Simulasi arah kendaraan dari jalur4 ... 24
Gambar III.8 Diagram Alir pada Mikrokontroller ... 25
Gambar III.9 konfigurasi Chip... 27
Gambar III.10 Konfigurasi Port A ... 28
Gambar III.11 Konfigurasi Port B ... 29
Gambar III.12 Konfigurasi USART... 30
Gambar III.13 Diagram Alir Sistem ... 31
Gambar III.14 Diagram Alir RGB to Binary ... 33
Gambar III.15 Diagram Alir Hitung Kepadatan ... 34
Gambar III.16 Icon Microsoft Comm Control 6.0 pada Form1 ... 35
Gambar III.17 Tampilan Perangkat Lunak Pada Visual Basic ... 36
Gambar IV.1 Maket Persimpangan Jalan Raya ... 38
Gambar IV.3 Pengujian 1... .39
Gambar IV.4 Pengujian 2... 40
Gambar IV.5 Pengujian 3... 40
Gambar IV.6 Pengujian 4... 41
Gambar IV.7 Pengujian 5... 41
Gambar IV.8 Pengujian 6... 42
LAMPIRAN A
Listing Program
Program
pada
Mikrokontroler
A-1
Lampiran
Listing Program pada Mikrokontroler
/*****************************************************
#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;
Lampiran
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)
Lampiran
putsf("MENYALA SEMUA"); PORTA = 0xFF;
// Get a character from the USART Receiver buffer #define _ALTERNATE_GETCHAR_
Lampiran
// USART Transmitter buffer #define TX_BUFFER_SIZE 8 char tx_buffer[TX_BUFFER_SIZE];
#if TX_BUFFER_SIZE<256
unsigned char tx_wr_index,tx_rd_index,tx_counter; #else
unsigned int tx_wr_index,tx_rd_index,tx_counter; #endif
// USART Transmitter interrupt service routine interrupt [USART_TXC] void usart_tx_isr(void) {
if (tx_counter) {
--tx_counter;
UDR=tx_buffer[tx_rd_index];
if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0; };
}
#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART Transmitter buffer #define _ALTERNATE_PUTCHAR_
#pragma used+ void putchar(char c) {
while (tx_counter == TX_BUFFER_SIZE); #asm("cli")
if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0)) {
tx_buffer[tx_wr_index]=c;
if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0; ++tx_counter;
Lampiran
// Declare your global variables here
void main(void) {
// Declare your local variables here
// Input/Output Ports initialization // Port A initialization
// Func7=In Func6=In Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTA=0x00;
DDRA=0xFF;
// Port B initialization
// Func7=In Func6=In Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=T State6=T 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=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;
Lampiran
// 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;
// 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
Lampiran
UCSRB=0xD8; 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;
Lampiran
Listing Program pada Mikrosoft Visual Basic 6.0
Option Explicit
Dim P1, P2, P3, P4 As Integer
Dim i, j, warna, r, G, b, X, luas, lebar As Integer Dim buffx, buffy As Integer
Dim ZZ As Long
Dim x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14, y15, y16 As Integer
Private Sub cmdjlr1_Click() If cmdjlr1.Tag = "0" Then cmdjlr1.Tag = "1"
cmdjlr1.Caption = "RST Jalur1" Else
cmdjlr1.Tag = "0"
cmdjlr1.Caption = "Set Jalur1" End If
End Sub
Private Sub cmdjlr2_Click() If cmdjlr2.Tag = "0" Then cmdjlr2.Tag = "1"
cmdjlr2.Caption = "RST Jalur2" Else
cmdjlr2.Tag = "0"
cmdjlr2.Caption = "Set Jalur2" End If
End Sub
Private Sub cmdjlr3_Click() If cmdjlr3.Tag = "0" Then cmdjlr3.Tag = "1"
cmdjlr3.Caption = "RST Jalur3" Else
cmdjlr3.Tag = "0"
cmdjlr3.Caption = "Set Jalur3" End If
End Sub
Private Sub cmdjlr4_Click() If cmdjlr4.Tag = "0" Then cmdjlr4.Tag = "1"
Lampiran
Else
cmdjlr4.Tag = "0"
cmdjlr4.Caption = "Set Jalur4" End If
End Sub
Private Sub Command1_Click()
'=================== JALUR 1 =================== Dot(1).X = Text1.Text
Dot(1).Y = Text2.Text Dot(2).X = Text3.Text Dot(2).Y = Text4.Text
Dim panjang As Integer Dim lebar As Integer
Dim hitam, putih As Integer
hitam = 0 putih = 0
Text17.Text = ""
panjang = Abs(Dot(1).X - Dot(2).X) lebar = Abs(Dot(1).Y - Dot(2).Y)
Lampiran
Text17.Text = (putih / (hitam + putih)) * 100 If Val(Text17.Text) < 30 Then
Text22.Text = "3 Detik"
ElseIf Val(Text17.Text) >= 30 And Val(Text17.Text) < 60 Then Text22.Text = "6 detik"
ElseIf Val(Text17.Text) >= 60 Then Text22.Text = "9 detik"
End If
'=================== JALUR 2 =================== Dot(1).X = Text5.Text
Dot(1).Y = Text6.Text Dot(2).X = Text7.Text Dot(2).Y = Text8.Text
hitam = 0 putih = 0
Text18.Text = ""
panjang = Abs(Dot(1).X - Dot(2).X) lebar = Abs(Dot(1).Y - Dot(2).Y)
Lampiran
Text23.Text = "3 Detik"
ElseIf Val(Text18.Text) >= 30 And Val(Text18.Text) < 60 Then Text23.Text = "6 detik"
ElseIf Val(Text18.Text) >= 60 Then Text23.Text = "9 detik"
End If
'=================== JALUR 3 =================== Dot(1).X = Text9.Text
Dot(1).Y = Text10.Text Dot(2).X = Text11.Text Dot(2).Y = Text12.Text
hitam = 0 putih = 0
Text19.Text = ""
panjang = Abs(Dot(1).X - Dot(2).X) lebar = Abs(Dot(1).Y - Dot(2).Y)
For i = Dot(1).X To Dot(2).X If Val(Text19.Text) < 30 Then
Text24.Text = "3 Detik"
Lampiran
Text24.Text = "6 detik"
ElseIf Val(Text19.Text) >= 60 Then Text24.Text = "9 detik"
End If
'=================== JALUR 4 =================== Dot(1).X = Text13.Text
Dot(1).Y = Text14.Text Dot(2).X = Text15.Text Dot(2).Y = Text16.Text
hitam = 0 putih = 0
Text20.Text = ""
panjang = Abs(Dot(1).X - Dot(2).X) lebar = Abs(Dot(1).Y - Dot(2).Y)
For i = Dot(1).X To Dot(2).X If Val(Text20.Text) < 30 Then
Text25.Text = "3 Detik"
ElseIf Val(Text20.Text) >= 30 And Val(Text20.Text) < 60 Then Text25.Text = "6 detik"
Lampiran
Text25.Text = "9 detik" End If
End Sub
Private Sub Command2_Click() Call TWAIN_LogFile(1) Call TWAIN_SetHideUI(1) Call TWAIN_SetIndicators(0)
If TWAIN_OpenSource("USB PC Camera (SN9C102P)") <> 0 Then Call TWAIN_SetPixelType(2)
Call TWAIN_SetXferCount(1) Call TWAIN_SetAutoScan(0) ' If you can't use Me.hwnd, pass 0:
Call TWAIN_AcquireToFilename(Me.hwnd, "C:\image.bmp") End If
If TWAIN_LastErrorCode() <> 0 Then
Call TWAIN_ReportLastError("Unable to scan.") End If
Image1.Picture = LoadPicture("c:\image.bmp") Picture1.Picture = Image1.Picture
End Sub
Private Sub Command5_Click() 'JALUR 1
P1 = Val(Text17.Text)
If P1 < 30 Then
MSComm1.Output = "Z" 'AKTIFKAN PILIHAN MODE 1 While MSComm1.InBufferCount = 0
Text21.Text = " " Wend
Text21.Text = MSComm1.Input For ZZ = 1 To 1000000: Next ZZ MSComm1.Output = "A"
While MSComm1.InBufferCount = 0 Text21.Text = " "
Wend
Text21.Text = MSComm1.Input For ZZ = 1 To 1000000: Next ZZ
ElseIf (P1 > 30) And (P1 < 60) Then MSComm1.Output = "B"
While MSComm1.InBufferCount = 0 Text21.Text = " "
Wend
Lampiran
ElseIf P1 > 60 Then MSComm1.Output = "C"
While MSComm1.InBufferCount = 0 Text21.Text = " "
Wend
Text21.Text = MSComm1.Input For ZZ = 1 To 1000000: Next ZZ End If
'JALUR 2
P2 = Val(Text18.Text)
If P2 < 30 Then
MSComm1.Output = "Z" 'AKTIFKAN PILIHAN MODE 1 While MSComm1.InBufferCount = 0
Text21.Text = " " Wend
Text21.Text = MSComm1.Input For ZZ = 1 To 1000000: Next ZZ MSComm1.Output = "D"
While MSComm1.InBufferCount = 0 Text21.Text = " "
Wend
Text21.Text = MSComm1.Input For ZZ = 1 To 1000000: Next ZZ
ElseIf (P2 > 30) And (P2 < 60) Then MSComm1.Output = "E"
While MSComm1.InBufferCount = 0 Text21.Text = " "
Wend
Text21.Text = MSComm1.Input For ZZ = 1 To 1000000: Next ZZ
ElseIf P2 > 60 Then MSComm1.Output = "F"
While MSComm1.InBufferCount = 0 Text21.Text = " "
Wend
Text21.Text = MSComm1.Input For ZZ = 1 To 1000000: Next ZZ End If
'JALUR 3
Lampiran
MSComm1.Output = "Z" 'AKTIFKAN PILIHAN MODE 1 While MSComm1.InBufferCount = 0
Text21.Text = " " Wend
Text21.Text = MSComm1.Input For ZZ = 1 To 1000000: Next ZZ MSComm1.Output = "G"
While MSComm1.InBufferCount = 0 Text21.Text = " "
Wend
Text21.Text = MSComm1.Input For ZZ = 1 To 1000000: Next ZZ
ElseIf (P3 > 30) And (P3 < 60) Then MSComm1.Output = "H"
While MSComm1.InBufferCount = 0 Text21.Text = " "
Wend
Text21.Text = MSComm1.Input For ZZ = 1 To 1000000: Next ZZ
ElseIf P3 > 60 Then MSComm1.Output = "I"
While MSComm1.InBufferCount = 0 Text21.Text = " "
Wend
Text21.Text = MSComm1.Input For ZZ = 1 To 1000000: Next ZZ End If
'JALUR 4
P4 = Val(Text20.Text)
If P4 < 30 Then
MSComm1.Output = "J"
While MSComm1.InBufferCount = 0 Text21.Text = " "
Wend
Text21.Text = MSComm1.Input For ZZ = 1 To 1000000: Next ZZ
ElseIf (P4 > 30) And (P4 < 60) Then
MSComm1.Output = "Z" 'AKTIFKAN PILIHAN MODE 1 While MSComm1.InBufferCount = 0
Text21.Text = " " Wend
Lampiran
For ZZ = 1 To 1000000: Next ZZ
MSComm1.Output = "K"
While MSComm1.InBufferCount = 0 Text21.Text = " "
Wend
Text21.Text = MSComm1.Input For ZZ = 1 To 1000000: Next ZZ
ElseIf P4 > 60 Then
MSComm1.Output = "Z" 'AKTIFKAN PILIHAN MODE 1 While MSComm1.InBufferCount = 0
Text21.Text = " " Wend
Text21.Text = MSComm1.Input For ZZ = 1 To 1000000: Next ZZ MSComm1.Output = "L"
While MSComm1.InBufferCount = 0 Text21.Text = " "
Wend
Text21.Text = MSComm1.Input For ZZ = 1 To 1000000: Next ZZ End If
End Sub
Private Sub Form_Load() MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1" MSComm1.InputLen = 0
MSComm1.PortOpen = True End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call MouseDown buffx = X buffy = Y
Picture1.CurrentX = buffx Picture1.CurrentY = buffy
'jalur satu
If cmdjlr1.Tag = "2" Then x2 = buffx
y2 = buffy
Lampiran
Text4.Text = y2
cmdjlr1.Caption = "Set Jalur1" x3 = x2
y3 = y1 x4 = x1 y4 = y2 End If
If cmdjlr1.Tag = "1" Then x1 = buffx
If cmdjlr2.Tag = "2" Then x6 = buffx
y6 = buffy
cmdjlr2.Tag = "0" Text7.Text = x6 Text8.Text = y6
cmdjlr2.Caption = "Set Jalur2" x7 = x6
y7 = y5 x8 = x5 y8 = y6 End If
If cmdjlr2.Tag = "1" Then x5 = buffx
If cmdjlr3.Tag = "2" Then x10 = buffx
y10 = buffy cmdjlr3.Tag = "0" Text11.Text = x10 Text12.Text = y10
Lampiran
y11 = y9 x12 = x9 y12 = y10 End If
If cmdjlr3.Tag = "1" Then x9 = buffx
If cmdjlr4.Tag = "2" Then x14 = buffx
y14 = buffy cmdjlr4.Tag = "0" Text15.Text = x14 Text16.Text = y14
cmdjlr4.Caption = "Set Jalur4" x15 = x14
y15 = y13 x16 = x13 y16 = y14 End If
If cmdjlr4.Tag = "1" Then x13 = buffx
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim buffx As Integer, buffy As Integer
If writelet = True Then
Lampiran
Label1.Caption = buffx Label2.Caption = buffy
End If End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
writelet = False End Sub
Private Sub Command3_Click() End
End Sub
Private Sub Timer1_Timer() Call Command2_Click End Sub
Private Sub Timer2_Timer() Call Command1_Click End Sub
Lampiran
Modules :
1. EZTwain.bas 2. Module.bas
Public Type Node X As Integer Y As Integer End Type
Public Dot(1 To 2) As Node
Public writelet As Boolean Public Sub MouseDown()
LAMPIRAN B
Lampiran
Gambar B.1 Maket Tampak Atas
Lampiran
LAMPIRAN C
Datasheet
ATMega8535
C-1
LAMPIRAN D
PENGUJIAN 1
PENGUJIAN 2
PENGUJIAN 3
PENGUJIAN 4
PENGUJIAN 6
PENGUJIAN 7
PENGUJIAN 8
PENGUJIAN 10
PENGUJIAN 11
PENGUJIAN 12
PENGUJIAN 14
PENGUJIAN 15
PENGUJIAN 16
PENGUJIAN 18
PENGUJIAN 19
PENGUJIAN 20
PENGUJIAN 22
PENGUJIAN 23
PENGUJIAN 24
PENGUJIAN 26
LAMPIRAN E
EZTwain Pro User Guide
E-1
TW AI N _ LogFile
void TWAIN_LogFile(int fLog);
EZTw ain can w rit e a quit e det ailed log of it s act iv it y , including ev ery TWAI N call it m ak es and t he result . Log out put goes t o c:\ e z t w a in .log. You can use TWAI N_Set LogFolder t o dir ect t he log file t o anot her dir ect or y.
TWAI N_LogFile( 0) close log file and t urn off logging
TWAI N_LogFile( 1) open log file ( if not already ) and st art logging.
I f logging is already t urned on, TWAI N_LogFile( 1) flushes t he logfile t o disk so pr ior out put w on’t be lost in a subsequent cr ash.
TW AI N _ Se t H ide UI / TW AI N _ Ge t H ide UI void TWAIN_SetHideUI(int fHide);
int TWAIN_GetHideUI(void);
These funct ions cont r ol t he 'hide sour ce user int er face' flag. This flag is t he basic acquisit ion param et ers y our self – see Negot iat ing Scanning
Par am et er s . See also: HasCont r ollableUI
TW AI N _ Se t I n dica t or s
int TWAIN_SetIndicators(BOOL bVisible)
Tell t he source t o show ( hide) progress indicat ors during acquisit ion.
TW AI N _ Ope n Sou r ce
int TWAIN_OpenSource(LPCSTR pzName); Opens t he Sour ce w it h t he given nam e.
int TWAIN_SetPixelType(int nPixType);
Try t o set t he current pix el t y pe for acquisit ion.
The sour ce m ay select t his pixel t ype, but don't assum e it w ill. This funct ion should be used in place of t he older
TW AI N _ Se t X fe r Cou n t
int TWAIN_SetXferCount(int nXfers);
Tell t he Source t he num ber of im ages t he applicat ion w ill accept . nXfer s = - 1 m eans any num ber ( t he default , w hen a device is opened.) Ret ur ns: 1 for success, 0 for failur e.
TW AI N _ Se t Au t oSca n
int TWAIN_SetAutoScan(int fYes);
( Tr y t o) t urn on/ off scan- ahead ( CAP_AUTOSCAN) . Ret urns TRUE( 1) if successful, FALSE( 0) ot her w ise.
This is an opt ional feat ur e suppor t ed by som e ADF scanner s. When enabled, t he scanner w ill scan pages before t hey are request ed, buffering t hem in t he scanner or host PC. When disabled, t he scanner w ill not feed and scan a page unt il t he applicat ion asks for it . Used t o achieve m axim um t hr oughput on ADF scanner s. N ot e : A few high- speed scanner s ( e.g. Kodak i200) have t his capabilit y per m anent ly on – such scanners alway s scan all pages in t he feeder once t hey st ar t .
TW AI N _ Acqu ir e ToFile n a m e
int TWAIN_AcquireToFilename(HWND hwndApp, LPCSTR pszFile); Acquire an im age and sav e it t o a file. I f t he filenam e cont ains a st andar d
ErrCode = TWAIN_AcquireToFilename(0, “”);
TW AI N _ La st Er r or Code
int TWAIN_LastErrorCode(void);
Ret ur n t he m ost r ecent EZTw ain error code, one of t he EZTEC_ codes – See t he EZTw ain declarat ion file for your program m ing language, or refer t o ezt w ain.h.
TW AI N _ Re por t La st Er r or
void TWAIN_ReportLastError(LPCSTR pzMsg);
Lik e TWAI N_ErrorBox , but if som e det ails are av ailable fr om TWAI N about t he last failure, t hey are included in t he m essage box . This funct ion uses
BAB I
PENDAHULUAN
Bab ini membahas mengenai latar belakang, identifikasi masalah, tujuan, pembatasan masalah, dan sistematika pembahasan Tugas Akhir.
I.1 Latar Belakang
Kemacetan lalu lintas di kota-kota besar, merupakan masalah dalam kelancaran transportasi. Kerugian yang disebabkan oleh kemacetan lalu lintas tidak sedikit antara lain : waktu produktif menjadi hilang, bahan bakar terbuang secara percuma, bertambahnya polusi udara, sehingga mempengaruhi kesehatan maupun psikologis manusia. Terutama pada persimpangan jalan sering kali terjadi kemacetan, kekacauan dan kecelakaan lalu lintas yang disebabkan pengaturan lampu lalu lintas yang tidak baik. Hal ini disebabkan karena antrian kendaraan pada suatu persimpangan dapat berpengaruh terhadap persimpangan lain yang ada disekitarnya.
Penentuan lamanya lampu lalu lintas di suatu tempat pada umumnya berdasarkan metode survei dan studi kelayakan. Seiring dengan berjalannya waktu dan semakin meningkatnya jumlah kendaraan di jalan raya, hasil survei tersebut sudah tidak cocok untuk diterapkan lagi. Untuk mengatasi hal ini dibutuhkan pengaturan lampu lalu lintas yang dapat disesuaikan berdasarkan distribusi kepadatan.
Dengan menggunakan kamera dapat dipantau jumlah kendaraan yang mengantri di lampu merah, di setiap persimpangan jalan melalui pengolahan citra sehingga dapat ditentukan jalur mana yang lebih padat. Berdasarkan hasil pantauan ini, dapat diatur lama penyalaan lampu lalu lintas.
Bab I Pendahuluan 2
I.2 Identifikasi Masalah
Bagaimana mengatur lampu lalu lintas otomatis menggunakan kamera berdasarkan distribusi kepadatan ?
I.3 Tujuan
Tujuan Tugas Akhir ini adalah membuat simulasi pengaturan lampu lalu lintas otomatis berdasarkan distribusi kepadatan.
I.4 Pembatasan Masalah
Pembatasan masalah dalam Tugas Akhir ini sebagai berikut:
1. Kamera mendeteksi jumlah kendaraan yang berada di dalam area yang telah ditentukan.
2. Jalan dalam keadaan normal, misal : tidak ada kecelakaan. 3. Letak kamera berada diatas maket.
4. Kamera yang di gunakan hanya satu buah, yaitu webcam. 5. Luas maket (60 X 60) cm 2.
6. Jarak antara kamera dengan maket telah ditentukan terlebih dahulu. 7. Citra mobil tampak atas berwarna putih setelah dikonversi ke citra biner. 8. Kepadatan daerah tengah persimpangan jalan pada maket diabaikan.
I.5 Sistematika Pembahasan
Sistematika pembahasan Tugas Akhir ini disusun menjadi lima bab, yaitu sebagai berikut :
• Bab I : Pendahuluan
Bab ini membahas tentang latar belakang, identifikasi masalah, tujuan, pembatasan masalah, serta sistematika pembahasan.
• Bab II : Dasar Teori
Bab I Pendahuluan 3
• Bab III : Perancangan dan Realisasi
Bab ini membahas tentang perancangan dan realisasi rangkaian lampu lalu lintas, mikrokontroler dan pembuatan perangkat lunak tampilan data dengan Visual Basic 6.0.
• Bab IV : Data Pengamatan dan Analisa
Bab ini membahas pengamatan, pengujian, dan analisa data dari perangkat keras dan perangkat lunak yang telah dirancang dan direalisasikan.
• Bab V : Kesimpulan dan Saran
BAB V
KESIMPULAN DAN SARAN
V.1 Kesimpulan
Berdasarkan hasil pengujian pada Tugas Akhir ini maka dapat disimpulkan beberapa hal sebagai berikut:
1. Sistem yang dirancang dan direalisasi berupa simulasi pengaturan lampu lalu lintas otomatis menggunakan kamera berdasarkan distribusi kepadatan berhasil direalisasikan.
2. Pengujian yang dilakukan sebanyak 33 kali dalam kondisi cahaya yang cukup menunjukkan tingkat keberhasilan 100 %, sesuai dengan rancangan yaitu apabila K < 30 % lama penyalaan lampu hijau 3 detik, K >= 30 % dan K < 60 % lama penyalaan lampu hijau 6 detik, K >= 60 % lama penyalaan lampu hijau 9 detik.
V.2 Saran
Setelah mengevaluasi Tugas Akhir ini, penulis berharap Tugas Akhir ini dapat dikembangkan lebih lanjut dengan beberapa saran sebagai berikut:
1. Untuk mendapatkan hasil gambar yang lebih baik untuk diolah, sebaiknya dilakukan proses normalisasi intensitas dari gambar yang ditangkap melalui kamera.
2. Jika akan diimplementasikan pada keadaan sebenarnya, perlu dipertimbangkan dalam pemasangan jarak antara kamera, komputer dan mikro (misal digunakan W-LAN).
DAFTAR PUSTAKA
1. Achmad Basuki, Jozua F.Palandi, Fatchurrochman, Pengolahan Citra Digital Menggunakan Visual Basic, Graha Ilmu, Yogyakarta, 2005.
2. Retna Prasetia, Catur Edi Widodo, Teori dan Praktek Interfacing Port Paralel dan Port Serial Komputer dengan Visual Basic 6.0, Andi, Yogyakarta, 2004.
3. Tamin, Ofyar Z, Perencanaan & Pemodelan Transportasi : contoh soal dan aplikasi, Edisi kesatu, ITB, Bandung, 2003.
4. Triyana Ika, Proyek Akhir D3, Sistem Kontrol Lampu Lalu Lintas Otomatis Dengan Menggunakan Kamera Berdasarkan Distribusi Kepadatan, Jurusan Teknik Elektronika, PENS, 2007.
5. Wardhana, Lingga, Belajar Sendiri Mikrokontroler AVR seri ATMega 8535, Edisi pertama, Andi, Yogyakarta, 2006.
6. http://www.taltech.com/TALtech_web/resources/index.html, 23 November 2007.
7. http://datasheets.maxim-ic.com/en/ds/MAX220-MAX249.pdf, 25 Oktober 2007.
8. http://www.atmel.com/dyn/resources/prod_documents/doc25025.pdf 25 Oktober 2007.