Pembatasan Pembelian dan Pengaturan Harga BBM Subsidi Menggunakan Smart Card.
Universtasi Kristen Maranatha
i
Pengaturan Harga Dan Pembatasan Pembelian BBM Subsidi Menggunakan
Smart Card
Rhendy Widjaja / 0522088
Kamp Melati Gg Sijarak no 1 Cirebon 45134 Telp 081809712426
Email : r_endychn@yahoo.com
Jurusan Teknik Elektro, Fakultas Teknik , Universitas Kristen Maranatha
Jl. Prof.Drg.Surya Sumantri 65, Bandung 40164, Indonesia
ABSTRAK
Dewasa ini perkembangan teknologi smart card sangatlah berkembang
dengan cepat. Teknologi ini sudah diterapkan pada berbagai aplikasi identifikasi
dan pembayaran. Smart card memiliki kelebihan dibandingkan kartu lainnya yaitu
memiliki memori yang dapat menyimpan data. Oleh karena itu teknologi smart
card dapat diterapkan dalam aplikasi penyaluran subsidi BBM, yaitu sebagai kartu
identitas dari setiap penerima subsidi.
Dalam tugas akhir ini penulis membuat suatu perangkat yang dapat
membatasi pembelian dan mengatur harga BBM dengan menggunakan kartu
smart card sebagai kartu identitas dan sebuah panel control pengisian BBM
subsidi yang digunakan sebagai alat transaksi pembelian BBM subsidi yang terdiri
dari smart card reader, keypad, LCD, LED dan mikrokontroler. Proses pengisian
disimulasikan dengan lampu LED yang menyala.
Dari hasil perancangan, realisasi dan pengujian, alat ini dapat bekerja
dengan baik. Smart card dapat dipergunakan sebagai kartu identitas penerima
subsidi, sehingga dapat dilakukan pengaturan harga dan pembatasan pembelian
BBM subsidi.
(2)
Universtasi Kristen Maranatha
ii
Kata kunci : smart card, BBM (bahan bakar minyak)
Purchasing Restriction And Price Governing Of Subsidy Petroleum With Smart
Card
Rhendy Widjaja / 0522088
Kamp Melati Gg Sijarak no 1 Cirebon 45134 Telp 081809712426
Email : r_endychn@yahoo.com
Electrical Engineering, Technic Faculty, Maranatha Christian University
Jl. Prof.Drg.Surya Sumantri 65, Bandung 40164, Indonesia
ABSTRACT
These days development of technology smart card hardly growing swiftly.
This technology have been applied at various the application of identifications and
payment. Smart card has excess compared to other card is having memory which
menyimpan data can. Therefore technology smart applicable card in the
application of channeling of subsidy BBM, that is as identity card from every
subsidy receiver.
In this final assignment writer makes a peripheral which can limit
purchasing and arranges the price of BBM by using card smart card as identity
card and a panel control admission filling of BBM subsidy applied as a means of
transaction of purchasing of BBM subsidy consisted of by smart card reader, key
pad, LCD, LED and microcontroller. Admission filling process is simulation with
lamp LED on.
From result of scheme, realization and assaying, this device can work
carefully. Smart card can be utilized as subsidy receiver identity card, causing can
be done governing of the price and restriction of purchasing of BBM subsidy.
(3)
Universtasi Kristen Maranatha
iii
DAFTAR ISI
LEMBAR PENGESAHAN
SURAT PERNYATAAN
ABSTRAK
………...…
ABSTRACT
………..… ….
KATA PENGANTAR
………....
DAFTAR ISI
………...
DAFTAR TABEL
………...
DAFTAR GAMBAR
………...
i
ii
iii
v
viii
x
BAB I. PENDAHULUAN
I.1 Latar Belakang………
I.2 Identifikasi Masalah.…….…..……….……….…….………..…
..
I.3 Tujuan..………
...
I.4 Pembatasan Masalah..………
.
I. 5 Spesifikasi
Alat………
..
I.6 Sistematika Penulisan………...
.
1
1
2
2
2
2
BAB II. LANDASAN TEORI
II.1 RFID (Radio Frequency Identification)
………
II.1.2 Jenis Kartu RFID………
II.1.2.1 Kartu Pasif………..
II.1.2.2
Kartu Aktif………..
II.1.2.3 Kartu Semipasif………...
II.1.3 Transmisi Energi RFID pasif
……….
II.2 Mifare IC MF1 IC S50
……….……….
II.2.1 Chip MF1 IC S50
………..……….
II.2.2 Prinsip Komunikasi………
II.2.2.1 Proses
Identifikasi dan Seleksi………
II.2.2.1.1 Request Standard/All
………
II.2.2.1.2 Anticollision loop
……….
II.2.2.1.3 Select Card
………...
4
4
4
4
5
5
5
6
8
9
9
9
9
(4)
Universtasi Kristen Maranatha
iv
II.2.2.2 Proses Authentication/ 3 Pass Authentication.
II.2.2.3 Proses Operasi Memori………...
II.2.3
Organisasi Memori………...………..
II.2.3.1 Sektor Trailer……….…………..
II.2.3.2 Manufacture Block………..
II.2.3.3 Blok data……….
II.2.4 Kondisi Akses………...………….
II.2.4.1 Kondisi Akses Blok Sector Trailer………….
II.2.4.2 Kondis
i Akses Blok Data………..………….
II.3 ACM 120S-
SM………..………
II.3.1 Spesifikasi ACM 120S-
SM………..…………..
II.3.2 Konfigurasi Pin ACM 120S-
SM…………..…………..
II.4 Protokol Komunikasi……….………
II.4.1 Protokol Binary………...
II.4.2 Reset
……….…………...
II.4.3 Select
/Pilih………..…..………..
II.4.4 Login
……….…………..
II.4.5 Read
/Baca……….………..
II.4.6 Write
/Tulis………....………….
II.4.7 Increment
………..………..
II.4.8 Decrement
………..
II.5 Mikrokontroler AVR AT-
Mega16………..………..
II.5.1 Fitur AT-
Mega16……….………...
II.5.2 Konfigurasi Pin AT-
Mega16…………..……..………..
II.5.3 Blok Diagram AT-
Mega16………..………...
II.5.4 Arsitektur Mikrokontroler AVR RISC………...
II.5.5 Peta Memori AVR AT-M
ega16……….…………
II.5.5.1 Memori Program…………..………
II.5.5.2 Memori Data………....
...
II.5.5.3 Memori Data EEPROM………..
9
10
10
11
12
12
13
14
15
16
17
17
19
19
21
21
22
23
25
28
29
29
29
31
33
33
34
35
35
36
(5)
Universtasi Kristen Maranatha
v
BAB III. PERANCANGAN DAN REALISASI
III.1 Cara Kerja……….………...
III.2 Perancangan Peran
gkat Keras (Hardware)………...
III.2.1 Koneksi Mikrokontroler dengan Smart Card Reader
…
III.2.2 Koneksi Mikrokontroler dengan Keypad………..
III.2.3
Koneksi Mikrokontroler dengan LCD………..
III.2.4
Koneksi Mikrokontroler dengan LED……..………….
III.3 Perancangan Perangkat Lunak……….
III.3.1 Program Utama……….…………
III.3.2 Setting Waktu………
III.3.3 Deteksi Kartu……….
III.3.4 Proses Baca dan Update………
38
39
39
40
42
43
43
43
46
47
48
BAB IV. PENGUJIAN ALAT
IV.1 Pengujian Setting Waktu……….………….
IV.2 Pengujian Tampilan Waktu dan Selamat Datang……...……….
IV.3 Pengujian Deteksi Kartu, Proses Baca dan
Update……….
IV.4 Pengujian Pengisian A1……….…………..
IV.5 Pengujian Pengisian A2……….…...
...
IV.6 Pengujian Pengisian A3……….…...
...
IV.7 Pengujian Pengisian A4……….…………..
IV.8 Pengujian Pengisian Rupiah……….…………
IV.9 Pengujian Pengisian Liter……….………...
IV.10 Kesalahan Memasukkan Kode………..
IV.11 Proses Pengisian……….………
50
53
54
56
57
59
61
62
64
66
66
BAB V. PENUTUP
V.1 Kesimpulan………
V.2
Saran………...
...
67
67
LAMPIRAN A : LISTING PROGRAM
LAMPIRAN B : FOTO ALAT
(6)
Universtasi Kristen Maranatha
vi
DAFTAR TABEL
Tabel II.1 Deskripsi dari Blok Diagram Chip MF1 IC S50………...
Tabel II.2 Konfigurasi Akses
Bit………...………
Tabel II.3 Konfigurasi Akses Bit Untuk Kondisi Akses Blok Sektor Trailer
…
Tabel II.4 Konfigurasi Akses Bit Untuk Kondisi Akses Blok Sektor Trailer
…
Tabel II.5 Spesifikasi ACM 120S-
SM……….………..
Tabel II.6 Fungsi Pin J1……….………
Tabel II.7 Fungsi Pin J3……….………
Tabel II.8 Fungsi Pin J6……….
Tabel II.9 Fungsi Pin J7……….………
Tabel II.10 Protokol Binary Frame yang Dikirim……….
Tabel II.11 Deskripsi Protokol Binary……….………….
Tabel II.12 Instruction Set……….
Tabel II.13 Kode Instruksi Reset yang Dikirim……….………
Tabel II.14 Kode Instruksi Select/Pilih yang Dikirim………...
...
Tabel II.15 Kode Instruksi Select/Pilih yang Diterima……….………
Tabel II.16 Kode Instruksi yang Diterima Jika Tidak Ada Kartu……….
Tabel II.17 Kode Instruksi Login yang Dikirim………
Tabel II.18 Kode Instruksi Login yang Diterima………..
Tabel II.19 Kode Instruksi Baca Blok Kartu yang Dikirim………..
Tabel II.20 Kode Instruksi Baca Blok Kartu yang Diterima……….
Tabel II.21 Kode Instruksi Baca Gagal yang Diterima
………….……….
Tabel II.22 Kode Instruksi Baca Nilai Blok Kartu yang Dikirim………..
Tabel II.23 Kode Instruksi Baca Nilai Blok Kartu yang Diter
ima………
Tabel II.24 Kode Instruksi Baca EEPROM Card Reader
yang Dikirim……..
Tabel II.25 Kode Instruksi Baca EEPROM Card Reader yang Diterima
…….
Tabel II.26 Kode Instruksi Tulis Blok Kartu yang Dikirim………….………..
Tabel II.27 Kode Instruksi Tulis Blok Kartu
Berhasil yang Diterima………..
Tabel II.28 Kode Instruksi Tulis Gagal yang Diterima……….…………
Tabel II.29 Kode Instruksi Tulis Nilai Blok Kartu yang Dikirim……….
7
14
15
16
17
18
18
19
19
20
20
21
21
22
22
22
23
23
23
24
24
24
24
25
25
26
26
26
27
(7)
Universtasi Kristen Maranatha
vii
Tabel II.30 Kode Instruksi Tulis Nilai Blok Kartu Berhasil yang Dikirim
…...
Tabel II.31 Kode Instruksi Tulis EEPROM Card Reader yang Dikirim
……..
Tabel II.32 Kode Instruksi Tulis EEPROM Card Reader
Berhasil yang Diterima……….……….
Tabel II.33 Kode Instruksi Penambahan yang dikirim
………..
Tabel II.34 Kode Instruksi Penambahan/Pengurangan Berhasil yang Diterima
Tabel II.35 Kode Instruksi Penambahan/Pengurangan Gagal yang Diterima...
Tabel II.36 Kode Instruksi Pengurangan yang dikirim
………..
Tabel II.37 Fungsi Khusus Port B
……….………….
Tabel II.38 Fungsi Khusus Port C
……….……...
Tabel II.39 Fungsi Khusus Port D
………..………..
Tabel II.40 Pengalamatan Register I/O
……….………...
Tabel III.1 Pengoperasian Keypad
……….…
...
Tabel III.2 Fungsi Pin LCD
………..……….
Tabel III.3 Kode Proses Pengisian
………..…………...
Tabel III.4 Pembagian Peta Memor Kartu
……….…………
Tabel IV.1 Pengujian Pengisian A1
………..……….
Tabel IV.2 Pengujian Pengisian A2
………...
Tabel IV.3 Pengujian Pengisian A3
………...
Tabel IV.4 Pengujian Pengisian A4
………..……….
Tabel IV.5 Pengujian Pengisian Rupiah
……….………..
Tabel IV.6 Pengujian Pengisian
Liter………
27
27
28
28
28
29
29
31
32
32
36
41
42
44
49
57
59
60
62
64
65
(8)
Universtasi Kristen Maranatha
viii
DAFTAR GAMBAR
Gambar II.1 Proses Transmisi Energi
………..
Gambar II.2 Deskripsi Komunikasi Smart Card dengan Card Reader
…..
...
Gambar II.3 Blok Diagram Chip MF1 IC S50
………...…...
Gambar II.4 Transaksi Sekuensial Data
……….………..
Gambar II.5 Organisasi Memori
………..
Gambar II.6 Blok Sektor Trailer
………..
Gambar II.7 Blok Buatan Pabrik
………..………
Gambar II.8 Akses Memori
………...………...
Gambar II.9 Blok Nilai
………..…….……….
Gambar II.10 Format Akses Bit
………..……….
Gambar II.11 Perangkat ACM 120S-SM
……….
Gambar II.12 Papan Circuit ACM 120S-SM
………..
Gambar II.13 konfigurasi kaki (pin) AT-Mega16
……….………..
Gambar II.14 Blok Diagram AT-Mega16
………..………..
Gambar II.15 Arsitektur Mikrokontroler AVR RISC
………..
Gambar II.16 Peta Memori Program AVR AT-Mega16
……….
Gambar II.17 Peta Memori Data AVR AT-Mega16
………..……..
Gambar III.1 Blok Diagram Sistem Perancangan
………...
Gambar III.2 Blok Diagram Perancangan Perangkat Keras
………
Gambar III.3 Skematik Rangkaian Mikrokontroler dengan Card Reader
…..
Gambar III.4 Skematik Mikrokontroler dengan Keypad
……….
Gambar III.5 Skematik Keypad
………
Gambar III.6 Skematik Mikrokontroler dengan LCD
………..
Gambar III.7 Skematik Mikrokontroler dengan LED
………..
Gambar III.8 Flowchart Program Utama
……….
Gambar III.9 Proses Setting Waktu
………..
Gambar III.10 Proses Deteksi Kartu
……….
Gambar III.11 Proses Baca dan Update
………
Gambar IV.1 Tampilan Setting Jam dan Menit
………..………..
Gambar IV.2 Memasukkan Nilai Jam dan Menit Benar
……….……….
5
6
7
8
11
12
12
13
13
14
16
18
31
33
34
35
36
38
39
40
40
41
42
43
46
47
48
49
50
50
(9)
Universtasi Kristen Maranatha
ix
Gambar IV.3 Memasukkan Nilai Jam dan Menit Salah
……….……….
Gambar IV.4 Respon Memasukkan Nilai Jam dan Menit Salah
…….………
Gambar IV.5 Tampilan Setting Tanggal, Bulan dan Tahun
……….
Gambar IV.6 Memasukkan Nilai Tanggal, Bulan dan Tahun Benar
………...
Gambar IV.7 Memasukkan Nilai Tanggal, Bulan dan Tahun Salah
…………
Gambar IV.7 Tampilan Waktu dan Selamat Datang
……….…………..
Gambar IV.8 Tampilan LCD Tidak Update...
Gambar IV.9 Tampilan LCD Update...
Gambar IV.10 Tampilan Nomor Plat, Harga dan Batasan...
Gambar IV.11 Tampilan Pembacaan dan Update Gagal...
Gambar IV.12 Tampilan Sebelum Pengisian A1
……….
Gambar IV.13 Tampilan Kode Pengisian A1
………....
...
Gambar IV.14 Tampilan Setelah Pengisian A1
………..………..
Gambar IV.15 Tampilan Sebelum Pengisian A2
………....
...
Gambar IV.16 Tampilan Kode Pengisian A2
………...
Gambar IV.17 Tampilan Transaksi Gagal
………
Gambar IV.18 Tampilan Sebelum Pengisian A3
……….
Gambar IV.19 Tampilan Kode Pengisian A3
……….……..
Gambar IV.20 Tampilan Sesudah Pengisian A3
……….……….
Gambar IV.21 Tampilan Sebelum Pengisian A4
……….
Gambar IV.22 Tampilan Kode Pengisian A4
………..
Gambar IV.23 Tampilan Sesudah Pengisian A4
………..………
Gambar IV.24 Tampilan Sebelum Pengisian Rupiah
………....
...
Gambar IV.25 Tampilan Kode Pengisian Rupiah
………
Gambar IV.26 Tampilan Sesudah Pengisian Rupiah
………...
Gambar IV.27 Tampilan Sebelum Pengisian Liter
………..
Gambar IV.28 Tampilan Kode Pengisian Liter
………
Gambar IV.29 Tampilan Sesudah Pengisian Liter
……….……..
Gambar IV.30 Tampilan Kode Salah
………..…….
Gambar IV.31 Tampilan Proses Pengisian
……….…………..
51
51
52
52
53
53
54
54
55
55
56
56
57
58
58
58
59
60
60
61
61
62
63
63
63
64
65
65
66
66
(10)
(11)
Universitas Kristen Maranatha
LAMPIRAN A
LISTING PROGRAM
(12)
Universitas Kristen Maranatha
/***************************************************** 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 : 5/13/2008
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 <mega16.h>
#include <delay.h> #include <exor.h> #include <stdlib.h>
// Alphanumeric LCD Module functions #asm
.equ __lcd_port=0x15 ;PORTC #endasm
#include <lcd.h> //global variabel
unsigned long kdetik,rdetik,rmenit,rjam,rtanggal,rbulan,rtahun,cadangan,vv;
unsigned char cdetik[10],cmenit[10],cjam[10],ctanggal[10],cbulan[10],ctahun[10];//,clt[10],crp[10];
// Timer 2 output compare interrupt service routine interrupt [TIM2_COMP] void timer2_comp_isr(void) {
// Place your code here
TCNT2=0;// jika sudah match set awal lagi if(++kdetik==8920)
{
if(++rdetik==60) {rdetik=0; lcd_clear();
if(++rmenit==60) {rmenit=0; lcd_clear(); if(++rjam==24) {rjam=0; lcd_clear(); rtanggal=rtanggal+1;
if(rtanggal==31 && rbulan==1) { rtanggal=0;
rbulan=rbulan + 1; }
if(rtanggal==28 && rbulan==2 && rtahun%4!=0) { rbulan=rbulan + 1;
}
if(rtanggal==29 && rbulan==2 && rtahun %4==0) { rbulan=rbulan + 1;
}
if(rtanggal==31 && rbulan==3) { rbulan=rbulan + 1;
}
if(rtanggal==30 && rbulan==4) { rbulan=rbulan + 1;
(13)
Universitas Kristen Maranatha
if(rtanggal==31 && rbulan==5) { rbulan=rbulan + 1;
}
if(rtanggal==30 && rbulan==6) { rbulan=rbulan + 1;
}
if(rtanggal==31 && rbulan==7) { rbulan=rbulan + 1;
}
if(rtanggal==31 && rbulan==8) { rbulan=rbulan + 1;
}
if(rtanggal==30 && rbulan==9) { rbulan=rbulan + 1;
}
if(rtanggal==31 && rbulan==10) { rbulan=rbulan + 1;
}
if(rtanggal==30 && rbulan==11) { rbulan=rbulan + 1;
}
if(rtanggal==31 && rbulan==12) { rtahun=rtahun + 1;
rbulan=0; } } } } kdetik=0; itoa(rdetik,cdetik); itoa(rmenit,cmenit); itoa(rjam,cjam); itoa(rtanggal,ctanggal); itoa(rbulan,cbulan); itoa(rtahun,ctahun); if(rtanggal<10) {
Write_SC[0]=0x30; Write_SC[1]=ctanggal[0]; }
else
{Write_SC[0]=ctanggal[0]; Write_SC[1]=ctanggal[1]; }
if(rbulan<10) {
Write_SC[2]=0x30; Write_SC[3]=cbulan[0]; }
else {
Write_SC[2]=cbulan[0]; Write_SC[3]=cbulan[1]; }
Write_SC[4]=ctahun[0]; Write_SC[5]=ctahun[1]; Write_SC[6]= ctahun[2]; Write_SC[7]= ctahun[3]; Write_SC[8]=0x00; Write_SC[9]=0x00; Write_SC[10]=0x00; Write_SC[11]=0x00; Write_SC[12]=0x00; Write_SC[13]=0x00; Write_SC[14]=0x00; Write_SC[15]=0x00;
} }
(14)
Universitas Kristen Maranatha
// Standard Input/Output functions #include <stdio.h>
// Declare your global variables here
unsigned char TEMP1,TEMP2,TEMP3,TEMP4[9];//,TEMP7,TEMP8;
// unsigned char TEMP9,TEMP10,TEMP11,TEMP12,TEMP13,TEMP14,TEMP15,TEMP16; int i,x,y,tp;
unsigned long lt,rp,tahun2,tanggal2,bulan2;
unsigned char blok4[15],blok6[15];
unsigned char input[8],harga[5];//,liter[5],rupiha[7]; unsigned long a;//,b,c,d;
void main(void) {
// Declare your local variables here // 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=0x03; // 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;
// 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;
(15)
Universitas Kristen Maranatha
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=0x02; TCNT2=0x00; OCR2=0x96;
// External Interrupt(s) initialization // INT0: Off
// INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x80;
// 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;
// LCD module initialization lcd_init(16);
//global enable interupts #asm ("sei")
while (1) {
// Place your code here // program utama TEMP4[1]='0'; TEMP4[2]='0'; TEMP4[3]='0'; TEMP4[4]='0'; y=0;
seting: x=1; do
{TEMP1=scan_keypad();
if(TEMP1!=' '&&TEMP1!='D') {
TEMP4[x]=TEMP1; x=x+1;
delay_ms(300); };
(16)
Universitas Kristen Maranatha
for(i=0;i<100;i++) { lcd_gotoxy(0,0); lcd_putsf(" "); lcd_gotoxy(5,0); lcd_putsf("HH:MM"); lcd_gotoxy(5,1); lcd_putchar(TEMP4[1]); lcd_putchar(TEMP4[2]); lcd_putsf(":");
lcd_putchar(TEMP4[3]); lcd_putchar(TEMP4[4]); };
y=y+1; if(y==1000) {lcd_clear(); y=0;}; if(x==1)
{for(i=0;i<300;i++) {
lcd_gotoxy(5,1); lcd_putsf("_"); };
}; if(x==2)
{for(i=0;i<300;i++) {
lcd_gotoxy(6,1); lcd_putsf("_"); };
}; if(x==3)
{for(i=0;i<300;i++) {
lcd_gotoxy(8,1); lcd_putsf("_"); };
}; if(x==4)
{for(i=0;i<300;i++) {
lcd_gotoxy(9,1); lcd_putsf("_"); };
}; if(x==5) x=1; }
while(TEMP1!='D'); lcd_clear();
rjam=TEMP4[1]-0x30; rjam=rjam*10+TEMP4[2]-0x30; rmenit=TEMP4[3]-0x30;
rmenit=rmenit*10+TEMP4[4]-0x30; if(rjam>23 || rmenit>59)
{lcd_gotoxy(0,0); lcd_putsf("Input salah"); lcd_gotoxy(0,1);
lcd_putsf("masukan ulang"); delay_ms(2000);
lcd_clear(); goto seting; };
TEMP4[1]='0'; TEMP4[2]='0'; TEMP4[3]='0'; TEMP4[4]='0'; TEMP4[5]='0'; TEMP4[6]='0'; TEMP4[7]='0'; TEMP4[8]='0';
(17)
Universitas Kristen Maranatha
y=0; seting1: x=1; do
{TEMP1=scan_keypad();
if(TEMP1!=' '&&TEMP1!='D') {
TEMP4[x]=TEMP1; x=x+1;
delay_ms(300); };
for(i=0;i<100;i++) { lcd_gotoxy(0,0); lcd_putsf(" "); lcd_gotoxy(3,0);
lcd_putsf("DD/MM/YYYY"); lcd_gotoxy(3,1);
lcd_putchar(TEMP4[1]); lcd_putchar(TEMP4[2]); lcd_putsf("/");
lcd_putchar(TEMP4[3]); lcd_putchar(TEMP4[4]); lcd_putsf("/");
lcd_putchar(TEMP4[5]); lcd_putchar(TEMP4[6]); lcd_putchar(TEMP4[7]); lcd_putchar(TEMP4[8]); };
y=y+1; if(y==1000) {lcd_clear(); y=0;}; if(x==1)
{for(i=0;i<300;i++) {
lcd_gotoxy(3,1); lcd_putsf("_"); };
}; if(x==2)
{for(i=0;i<300;i++) {
lcd_gotoxy(4,1); lcd_putsf("_"); };
}; if(x==3)
{for(i=0;i<300;i++) {
lcd_gotoxy(6,1); lcd_putsf("_"); };
}; if(x==4)
{for(i=0;i<300;i++) {
lcd_gotoxy(7,1); lcd_putsf("_"); };
}; if(x==5) {for(i=0;i<300;i++) {
lcd_gotoxy(9,1); lcd_putsf("_"); };
}; if(x==6)
(18)
Universitas Kristen Maranatha
{for(i=0;i<300;i++) {
lcd_gotoxy(10,1); lcd_putsf("_"); };
}; if(x==7) {for(i=0;i<300;i++) {
lcd_gotoxy(11,1); lcd_putsf("_"); };
}; if(x==8) {for(i=0;i<300;i++) {
lcd_gotoxy(12,1); lcd_putsf("_"); };
}; if(x==9) x=1; }
while(TEMP1!='D'); lcd_clear();
rtanggal=TEMP4[1]-0x30;
rtanggal=rtanggal*10+TEMP4[2]-0x30; rbulan=TEMP4[3]-0x30;
rbulan=rbulan*10+TEMP4[4]-0x30; cadangan=TEMP4[5]-0x30; rtahun=cadangan*1000; cadangan=TEMP4[6]-0x30; rtahun=rtahun+(cadangan*100); cadangan=TEMP4[7]-0x30; rtahun=rtahun+(cadangan*10); rtahun=rtahun+TEMP4[8]-0x30;
if((rtanggal>31 && rbulan==1)||(rtanggal>28 && rbulan==2 && rtahun%4!=0)|| (rtanggal>29 && rbulan==2 && rtahun %4==0) || (rtanggal>31 && rbulan==3)|| (rtanggal>30 && rbulan==4)||(rtanggal>31 && rbulan==5)||(rtanggal>30 && rbulan==6)|| (rtanggal>31 && rbulan==7)|| (rtanggal>31 && rbulan==8) || (rtanggal>30 && rbulan==9)|| (rtanggal>31 && rbulan==10)|| (rtanggal>30 && rbulan==11)||(rtanggal>31 && rbulan==12)|| (rbulan>12||rbulan==0||rtanggal==0)
)
{lcd_gotoxy(0,0); lcd_putsf("Input salah"); lcd_gotoxy(0,1);
lcd_putsf("masukan ulang"); delay_ms(2000);
lcd_clear(); goto seting1; }; Start:
for(i=1;i<100;i++) { lcd_gotoxy(9,0); lcd_putsf(":"); lcd_gotoxy(10,0); lcd_puts(cdetik); lcd_gotoxy(6,0); lcd_putsf(":"); lcd_gotoxy(7,0); lcd_puts(cmenit); lcd_gotoxy(4,0); lcd_puts(cjam); lcd_gotoxy(1,1); lcd_puts(ctanggal); lcd_gotoxy(3,1); lcd_putsf("/"); lcd_gotoxy(4,1);
(19)
Universitas Kristen Maranatha
lcd_puts(cbulan); lcd_gotoxy(6,1); lcd_putsf("/"); lcd_gotoxy(7,1); lcd_puts(ctahun); TEMP1=''; TEMP2='';
TEMP1=SCR_select(); TEMP2=SCR_login(1); if(TEMP1==4 && TEMP2=='L') goto read;
} lcd_clear(); for(i=1;i<100;i++) {
lcd_gotoxy(0,0);
lcd_putsf("selamat datang"); lcd_gotoxy(0,1);
lcd_putsf("di PT PERTAMINA"); TEMP1='';
TEMP2='';
TEMP1=SCR_select(); TEMP2=SCR_login(1);
if(TEMP1==4 && TEMP2=='L') goto read;
} lcd_clear();
goto Start; read:
TEMP1=SCR_read_block(0x04); blok4[0]=READ_SC[0]; blok4[1]=READ_SC[1]; blok4[2]=READ_SC[2]; blok4[3]=READ_SC[3]; blok4[4]=READ_SC[4]; blok4[5]=READ_SC[5]; blok4[6]=READ_SC[6]; blok4[7]=READ_SC[7]; blok4[8]=READ_SC[8]; blok4[9]=READ_SC[9]; blok4[10]=READ_SC[10]; blok4[11]=READ_SC[11]; blok4[12]=READ_SC[12]; TEMP3=SCR_read_block(0x06); blok6[0]=READ_SC[0]; blok6[1]=READ_SC[1]; blok6[2]=READ_SC[2]; blok6[3]=READ_SC[3]; blok6[4]=READ_SC[4]; blok6[5]=READ_SC[5]; blok6[6]=READ_SC[6]; blok6[7]=READ_SC[7]; TEMP2=SCR_read_value(0x05); lcd_clear();
if(TEMP1=='S'&&TEMP2=='S'&&TEMP3=='S') {
goto read1; } else
{lcd_gotoxy(0,0);
lcd_putsf("maaf pembacaan "); lcd_gotoxy(0,1);
lcd_putsf("gagal"); delay_ms(2000); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf("silakan coba "); lcd_gotoxy(0,1);
(20)
Universitas Kristen Maranatha
lcd_putsf("lagi"); delay_ms(2000); lcd_clear(); goto Start; }; read1:
//cek tanggal dan update
tanggal2=(kov_hextobin(blok6[0])*10)+kov_hextobin(blok6[1]); bulan2=(kov_hextobin(blok6[2])*10)+kov_hextobin(blok6[3]);
tahun2=(kov_hextobin(blok6[4])*1000)+(kov_hextobin(blok6[5])*100)+(kov_hextobin(blok6[6])*10)+kov_hextobin(blok 6[7]);
if(rtanggal-tanggal2>=1 && rtanggal-tanggal2<32 &&rbulan-bulan2==0 && rtahun-tahun2==0) { //update tanggal dan write smartcard
do {
SCR_write_value(0x05,1000); }
while(value!=1000); do
{
TEMP1=SCR_write_block(0x06);
}
while(TEMP1!='S');
lcd_gotoxy(0,0);
lcd_putsf("sedang membaca "); delay_ms(1000);
lcd_clear(); }
else if(rtahun-tahun2>=1) {
do {
SCR_write_value(0x05,1000); }
while(value!=1000); do
{
TEMP1=SCR_write_block(0x06);
}
while(TEMP1!='S');
lcd_gotoxy(0,0);
lcd_putsf("sedang membaca "); delay_ms(1000);
lcd_clear(); }
else if(rbulan-bulan2>=1 && rbulan-bulan2<13 &&rtahun-tahun2==0) {
do {
SCR_write_value(0x05,1000); }
while(value!=1000); do
{
TEMP1=SCR_write_block(0x06);
}
while(TEMP1!='S');
lcd_gotoxy(0,0);
(21)
Universitas Kristen Maranatha
delay_ms(1000); lcd_clear(); }
else {
lcd_gotoxy(0,0);
lcd_putsf(" tidak update "); delay_ms(1000);
lcd_clear(); //tidak terjadi apa-apa };
// tampilkan data ke LCD do{
lcd_gotoxy(0,0); lcd_putchar(blok4[0]); lcd_gotoxy(1,0); lcd_putchar(blok4[1]); lcd_gotoxy(2,0); lcd_putchar(blok4[2]); lcd_gotoxy(3,0); lcd_putchar(blok4[3]); lcd_gotoxy(4,0); lcd_putchar(blok4[4]); lcd_gotoxy(5,0); lcd_putchar(blok4[5]); lcd_gotoxy(6,0); lcd_putchar(blok4[6]); lcd_gotoxy(7,0); lcd_putchar(blok4[7]); lcd_gotoxy(8,0); lcd_putchar(blok4[8]);
lcd_gotoxy(0,1); lcd_putchar(blok4[9]); lcd_gotoxy(1,1); lcd_putchar(blok4[10]); lcd_gotoxy(2,1); lcd_putchar(blok4[11]); lcd_gotoxy(3,1); lcd_putchar(blok4[12]);
lcd_putsf("/lt si ");
lcd_gotoxy(11,1); vv=value;
TEMP1=value/1000; lcd_putchar(TEMP1+0x30); lcd_gotoxy(12,1);
value=(value % 1000); TEMP1=value/100; lcd_putchar(TEMP1+0x30); lcd_gotoxy(13,1);
lcd_putchar(','); lcd_gotoxy(14,1); value=(value % 100); TEMP1=value/10;
lcd_putchar(TEMP1+0x30); lcd_gotoxy(15,1);
value=(value % 10); TEMP1=value;
lcd_putchar(TEMP1+0x30); value=vv;
TEMP2=scan_keypad(); }
while(TEMP2!='D');
lcd_clear(); delay_ms(500); // melakukan transaksi
(22)
Universitas Kristen Maranatha
x=0; TEMP1=''; harga[0]=blok4[9]; harga[1]=blok4[10]; harga[2]=blok4[11]; harga[3]=blok4[12];
a=(kov_hextobin(harga[0])*1000)+(kov_hextobin(harga[1])*100)+(kov_hextobin(harga[2])*10)+kov_hextobin(harga[3]); input[1]=' ';
input[2]=' '; input[3]=' '; input[4]=' '; input[5]=' '; input[6]=' '; do
{ do
{TEMP1=scan_keypad(); delay_ms(100);
lcd_gotoxy(x,0); lcd_putchar(TEMP1); }
while(TEMP1==' ');
lcd_gotoxy(x,0); lcd_putchar(TEMP1); delay_ms(400); input[x]=TEMP1; input1[x]=TEMP1; x=x+1;
}
while(TEMP1!='D');
lt=0;
if(input[0]=='D') { lcd_clear(); goto Exit; }
else if(input[0]=='A' && input[1]=='1' && input[2]=='D') { lt=200;
rp=2*a; tp=1; }
else if(input[0]=='A' && input[1]=='2' && input[2]=='D') {lt=1000;
rp=10*a; tp=2; }
else if(input[0]=='A' && input[1]=='3' && input[2]=='D') {
rp=10000; lt=10000*100/a; tp=3;
}
else if(input[0]=='A' && input[1]=='4' && input[2]=='D') { rp=50000;
lt=50000*100/a; tp=4;
}
else if(input[0]=='*' && input[1]!='A' && input[1]!='B'&& input[1]!='C' && input[2]!='A' && input[2]!='B'&& input[2]!='C'
) {
if(x==3 && input[2]=='D') { lt=kov_hextobin(input[1])*100; rp=lt*a/100;
tp=51; }
else if(x==4 && input[3]=='D')
(23)
Universitas Kristen Maranatha
rp=lt*a/100; tp=52; } else {
goto salah; };
}
else if(input[0]=='#'&& input[1]!='A' && input[1]!='B'&& input[1]!='C' && input[2]!='A' && input[2]!='B'&& input[2]!='C'
&& input[3]!='A' && input[3]!='B'&& input[3]!='C' && input[4]!='A' && input[4]!='B'&& input[4]!='C' && input[5]!='A' && input[5]!='B'&& input[5]!='C' && input[6]!='A' && input[6]!='B'&& input[6]!='C'
) {
if(x==6 && input[5]=='D') {
rp=(kov_hextobin(input[1])*1000)+(kov_hextobin(input[2])*100)+(kov_hextobin(input[3])*10)+kov_hextobin(input[4]);
lt=rp*100/a; tp=61; }
else if(x==7 && input[6]=='D') {
rp=(kov_hextobin(input[1])*10000)+(kov_hextobin(input[2])*1000)+(kov_hextobin(input[3])*100)+(kov_hextobin(input[ 4])*10)+(kov_hextobin(input[5]));
lt=rp*100/a; tp=62; } else if(x==8) {
rp=(kov_hextobin(input[1])*100000)+(kov_hextobin(input[2])*10000)+(kov_hextobin(input[3])*1000)+(kov_hextobin(in put[4])*100)+(kov_hextobin(input[5])*10)+(kov_hextobin(input[6]));
lt=rp*100/a; tp=63; } else {
goto salah; };
} else { salah:
lcd_gotoxy(0,0);
lcd_putsf("maaf kode salah"); delay_ms(2000);
lcd_clear(); goto Exit; }; do
{lcd_gotoxy(0,0); lcd_putsf("taruh kartu "); TEMP1=SCR_select(); TEMP2=SCR_login(1);
TEMP3=SCR_read_value(0x05); }
while(TEMP1!=4 && TEMP2!='L' && TEMP3!='S'); lcd_clear();
if(value>=lt) {
SCR_dec(0x05,lt); // tampilan harga dan liter
(24)
Universitas Kristen Maranatha
if(tp==1) {lcd_gotoxy(0,0); lcd_putsf("2 lt"); a=a*2; lcd_gotoxy(0,1); lcd_putsf("Rp "); kov_longtolcd1(a); };
if(tp==2) {lcd_gotoxy(0,0); lcd_putsf("10 lt"); a=a*10; lcd_gotoxy(0,1); lcd_putsf("Rp "); kov_longtolcd1(a); };
if(tp==3) { lcd_gotoxy(0,0); a=100*10000/a; kov_longtolcd2(a);
if(val3==2) {lcd_putchar('0'); lcd_putchar(',');
lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); };
if(val3==3)
{lcd_putchar(nilai1[0]+0x30); lcd_putchar(',');
lcd_putchar(nilai1[1]+0x30); lcd_putchar(nilai1[2]+0x30); };
if(val3==4)
{lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); lcd_putchar(',');
lcd_putchar(nilai1[2]+0x30); lcd_putchar(nilai1[3]+0x30); };
lcd_putsf(" lt"); lcd_gotoxy(0,1); lcd_putsf("Rp 10000");
}; if(tp==4) { lcd_gotoxy(0,0); a=100*50000/a; kov_longtolcd2(a);
if(val3==2) {lcd_putchar('0'); lcd_putchar(',');
lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); };
if(val3==3)
{lcd_putchar(nilai1[0]+0x30); lcd_putchar(',');
lcd_putchar(nilai1[1]+0x30); lcd_putchar(nilai1[2]+0x30); };
(25)
Universitas Kristen Maranatha
if(val3==4)
{lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); lcd_putchar(',');
lcd_putchar(nilai1[2]+0x30); lcd_putchar(nilai1[3]+0x30); };
lcd_putsf(" lt"); lcd_gotoxy(0,1); lcd_putsf("Rp 50000");
}; if(tp==51) {lcd_gotoxy(0,0); lcd_putchar(input1[1]); lcd_putsf(" lt");
a=a*kov_hextobin(input1[1]); lcd_gotoxy(0,1);
lcd_putsf("Rp "); kov_longtolcd1(a); };
if(tp==52) {lcd_gotoxy(0,0); lcd_putchar(input1[1]); lcd_putchar(input1[2]); lcd_putsf(" lt");
a=a*((kov_hextobin(input1[1])*10) + kov_hextobin(input1[2]) ); lcd_gotoxy(0,1);
lcd_putsf("Rp "); kov_longtolcd1(a); }; if(tp==61)
{ lcd_gotoxy(0,0);
a=100*((kov_hextobin(input1[1])*1000)
+(kov_hextobin(input1[2])*100)+(kov_hextobin(input1[3])*10)+ (kov_hextobin(input1[4])*1))/a;
kov_longtolcd2(a);
if(val3==2) {lcd_putchar('0'); lcd_putchar(',');
lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); };
if(val3==3)
{lcd_putchar(nilai1[0]+0x30); lcd_putchar(',');
lcd_putchar(nilai1[1]+0x30); lcd_putchar(nilai1[2]+0x30); };
if(val3==4)
{lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); lcd_putchar(',');
lcd_putchar(nilai1[2]+0x30); lcd_putchar(nilai1[3]+0x30); };
lcd_putsf(" lt"); lcd_gotoxy(0,1); lcd_putsf("Rp "); lcd_putchar(input1[1]); lcd_putchar(input1[2]); lcd_putchar(input1[3]); lcd_putchar(input1[4]);
(26)
Universitas Kristen Maranatha
}; if(tp==62) { lcd_gotoxy(0,0);
a=100*((kov_hextobin(input1[1])*10000)
+(kov_hextobin(input1[2])*1000)+(kov_hextobin(input1[3])*100)+ (kov_hextobin(input1[4])*10)+(kov_hextobin(input1[5])*1))/a; kov_longtolcd2(a);
if(val3==2) {lcd_putchar('0'); lcd_putchar(',');
lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); };
if(val3==3)
{lcd_putchar(nilai1[0]+0x30); lcd_putchar(',');
lcd_putchar(nilai1[1]+0x30); lcd_putchar(nilai1[2]+0x30); };
if(val3==4)
{lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); lcd_putchar(',');
lcd_putchar(nilai1[2]+0x30); lcd_putchar(nilai1[3]+0x30); };
lcd_putsf(" lt"); lcd_gotoxy(0,1); lcd_putsf("Rp "); lcd_putchar(input1[1]); lcd_putchar(input1[2]); lcd_putchar(input1[3]); lcd_putchar(input1[4]); lcd_putchar(input1[5]); };
if(tp==63) { lcd_gotoxy(0,0);
a=100*((kov_hextobin(input1[1])*100000)
+(kov_hextobin(input1[2])*10000)+(kov_hextobin(input1[3])*1000)+
(kov_hextobin(input1[4])*100)+(kov_hextobin(input1[5])*10)+(kov_hextobin(input1[6])*1))/a; kov_longtolcd2(a);
if(val3==2) {lcd_putchar('0'); lcd_putchar(',');
lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); };
if(val3==3)
{lcd_putchar(nilai1[0]+0x30); lcd_putchar(',');
lcd_putchar(nilai1[1]+0x30); lcd_putchar(nilai1[2]+0x30); };
if(val3==4)
{lcd_putchar(nilai1[0]+0x30); lcd_putchar(nilai1[1]+0x30); lcd_putchar(',');
lcd_putchar(nilai1[2]+0x30); lcd_putchar(nilai1[3]+0x30); };
(27)
Universitas Kristen Maranatha
lcd_gotoxy(0,1); lcd_putsf("Rp "); lcd_putchar(input1[1]); lcd_putchar(input1[2]); lcd_putchar(input1[3]); lcd_putchar(input1[4]); lcd_putchar(input1[5]); lcd_putchar(input1[6]); };
PORTB=0x01; delay_ms(lt*100); PORTB=0x00;
} else
{ lcd_gotoxy(0,0); lcd_putsf("maaf transaksi "); lcd_gotoxy(0,1);
lcd_putsf("gagal "); delay_ms(2000); };
lcd_clear();
Exit: goto Start; #include <lcd.h> #include <delay.h> #include <mega16.h> #include <stdio.h> unsigned char TEMP; char READ_SC[17]; char Write_SC[17]; long val;
long value,bin; long val1,val2,val3; unsigned char nilai1[8]; unsigned long rp1; unsigned char exoreg; unsigned char input1[8]; void SCR_reset(void) {
putchar(0x02); putchar(0x01); putchar(0x01); putchar(0x78); putchar(0x78); putchar(0x03); }
char SCR_select(void) {
putchar(0x02); putchar(0x01); putchar(0x01); putchar(0x73); putchar(0x73); putchar(0x03); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); if (TEMP == 0x01) { TEMP = getchar();
(28)
Universitas Kristen Maranatha
TEMP = getchar(); TEMP = getchar(); return 1; //no card }; if (TEMP == 0x04) {
TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); return 4; //standard milfare };
if (TEMP == 0x07) {
TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); return 7; //ultralight milfare };
if (TEMP == 0x0A) {
TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); return 0; //unknown };
TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); return 'X'; //error }
unsigned int exor(unsigned char xbyte,unsigned char ybyte) {
unsigned char ybyte1; unsigned char ybyte2; ybyte1=(xbyte|ybyte); ybyte2=(xbyte & ybyte); ybyte2=~(ybyte2); return((ybyte1&ybyte2)); }
char SCR_login(int sector) {
putchar(0x02); putchar(0x01); putchar(0x09); putchar(0x6C);
(29)
Universitas Kristen Maranatha
putchar(sector);/*sector*/ putchar(0xbb); putchar(0xff); putchar(0xff); putchar(0xff); putchar(0xff); putchar(0xff); putchar(0xff);
TEMP = exor(0x01,0x09); TEMP = exor(TEMP,0x6C); TEMP = exor(TEMP,sector); TEMP = exor(TEMP,0xbb); TEMP = exor(TEMP,0xff); TEMP = exor(TEMP,0xff); TEMP = exor(TEMP,0xff); TEMP = exor(TEMP,0xff); TEMP = exor(TEMP,0xff); TEMP = exor(TEMP,0xff);
putchar(TEMP); putchar(0x03);
TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); TEMP = getchar();
if (TEMP == 'F') {
TEMP = getchar(); TEMP = getchar(); return 'F'; //Fail };
if (TEMP == 'N') {
TEMP = getchar(); TEMP = getchar(); return 'N'; //No tag };
if (TEMP == 'I') {
TEMP = getchar(); TEMP = getchar(); return 'I'; //Invalid };
if (TEMP == 'E') {
TEMP = getchar(); TEMP = getchar(); return 'I'; //Invalid };
if (TEMP == 'L') {
TEMP = getchar(); TEMP = getchar(); return 'L'; //Invalid };
TEMP = getchar(); TEMP = getchar(); return 'X';
}
char SCR_read_block(unsigned char block) {
(30)
Universitas Kristen Maranatha
putchar(0x01); putchar(0x02); putchar(0x72);
putchar(block);//block = (sec x 4) + block putchar(exor(0x71,block));
putchar(0x03); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); if (TEMP == 0x01) {
TEMP = getchar(); if (TEMP == 'F') {
TEMP = getchar(); TEMP = getchar(); return 'F'; //Fail };
if (TEMP == 'N') {
TEMP = getchar(); TEMP = getchar(); return 'N'; //No tag };
if (TEMP == 'I') {
TEMP = getchar(); TEMP = getchar(); return 'I'; //Invalid };
};
if (TEMP == 0x10) { READ_SC[0] = getchar(); READ_SC[1] = getchar(); READ_SC[2] = getchar(); READ_SC[3] = getchar(); READ_SC[4] = getchar(); READ_SC[5] = getchar(); READ_SC[6] = getchar(); READ_SC[7] = getchar(); READ_SC[8] = getchar(); READ_SC[9] = getchar(); READ_SC[10] = getchar(); READ_SC[11] = getchar(); READ_SC[12] = getchar(); READ_SC[13] = getchar(); READ_SC[14] = getchar(); //READ_SC[15] = TEMP = getchar();
TEMP = getchar(); TEMP = getchar();
return 'S'; };
TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid }
char SCR_write_block(unsigned char block) {
(31)
Universitas Kristen Maranatha
putchar(0x01); putchar(0x12); putchar(0x77);
putchar(block);//block = (sec x 4) + block putchar(Write_SC[0]);
putchar(Write_SC[1]); putchar(Write_SC[2]); putchar(Write_SC[3]); putchar(Write_SC[4]); putchar(Write_SC[5]); putchar(Write_SC[6]); putchar(Write_SC[7]); putchar(Write_SC[8]); putchar(Write_SC[9]); putchar(Write_SC[10]); putchar(Write_SC[11]); putchar(Write_SC[12]); putchar(Write_SC[13]); putchar(Write_SC[14]); putchar(Write_SC[15]); TEMP = exor(0x01,0x12); TEMP = exor(TEMP,0x77); TEMP = exor(TEMP,block); TEMP = exor(TEMP,Write_SC[0]); TEMP = exor(TEMP,Write_SC[1]); TEMP = exor(TEMP,Write_SC[2]); TEMP = exor(TEMP,Write_SC[3]); TEMP = exor(TEMP,Write_SC[4]); TEMP = exor(TEMP,Write_SC[5]); TEMP = exor(TEMP,Write_SC[6]); TEMP = exor(TEMP,Write_SC[7]); TEMP = exor(TEMP,Write_SC[8]); TEMP = exor(TEMP,Write_SC[9]); TEMP = exor(TEMP,Write_SC[10]); TEMP = exor(TEMP,Write_SC[11]); TEMP = exor(TEMP,Write_SC[12]); TEMP = exor(TEMP,Write_SC[13]); TEMP = exor(TEMP,Write_SC[14]); TEMP = exor(TEMP,Write_SC[15]); putchar(TEMP);
putchar(0x03); TEMP = getchar(); TEMP = getchar(); TEMP = getchar();
if (TEMP == 0x01) {
TEMP = getchar(); if (TEMP == 'F') {
TEMP = getchar(); TEMP = getchar(); return 'F'; //Fail };
if (TEMP == 'N') {
TEMP = getchar(); TEMP = getchar(); return 'N'; //No tag };
if (TEMP == 'I') {
TEMP = getchar(); TEMP = getchar();
(32)
Universitas Kristen Maranatha
return 'I'; //Invalid };
};
if (TEMP == 0x10) { READ_SC[0] = getchar(); READ_SC[1] = getchar(); READ_SC[2] = getchar(); READ_SC[3] = getchar(); READ_SC[4] = getchar(); READ_SC[5] = getchar(); READ_SC[6] = getchar(); READ_SC[7] = getchar(); READ_SC[8] = getchar(); READ_SC[9] = getchar(); READ_SC[10] = getchar(); READ_SC[11] = getchar(); READ_SC[12] = getchar(); READ_SC[13] = getchar(); READ_SC[14] = getchar(); //READ_SC[15] = TEMP = getchar();
TEMP = getchar(); TEMP = getchar();
return 'S'; };
TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid }
unsigned long SCR_read_value(unsigned char block) {
putchar(0x02); putchar(0x01); putchar(0x03); putchar(0x72); putchar(0x76);
putchar(block);//block = (sec x 4) + block putchar(exor(0x06,block));
putchar(0x03); TEMP = getchar(); TEMP = getchar(); TEMP = getchar(); if (TEMP == 0x01) {
TEMP = getchar(); if (TEMP == 'F') {
TEMP = getchar(); TEMP = getchar(); return 'F'; //Fail };
if (TEMP == 'N') {
TEMP = getchar(); TEMP = getchar(); return 'N'; //No tag };
if (TEMP == 'I') {
(33)
Universitas Kristen Maranatha
TEMP = getchar(); return 'I'; //Invalid };
};
if (TEMP == 0x04) { value = 0; val=0; val=getchar(); value = (val << 24); val=getchar(); value = value + (val << 16); val=getchar();
value = value + (val << 8); val=getchar();
value = value + val; TEMP = getchar(); TEMP = getchar(); return 'S'; };
TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid }
unsigned long SCR_write_value(unsigned char block,long write_val) {putchar(0x02);
putchar(0x01); putchar(0x07); putchar(0x77); putchar(0x76); putchar(block);
exoreg=exor(0x07 ,block);
TEMP = (write_val >> 24)& 0x00FF; putchar(TEMP);
exoreg=exor(exoreg,TEMP); TEMP = (write_val >> 16)& 0x00FF; putchar(TEMP);
exoreg=exor(exoreg,TEMP); TEMP = (write_val >> 8)& 0x00FF; putchar(TEMP);
exoreg=exor(exoreg,TEMP); TEMP = write_val & 0x00FF; putchar(TEMP);
exoreg=exor(exoreg,TEMP); putchar(exoreg);
putchar(0x03); TEMP = getchar(); TEMP = getchar(); TEMP = getchar();
if (TEMP == 0x01) {
TEMP = getchar(); if (TEMP == 'F') {
TEMP = getchar(); TEMP = getchar(); return 'F'; //Fail };
if (TEMP == 'N') {
TEMP = getchar(); TEMP = getchar();
(34)
Universitas Kristen Maranatha
return 'N'; //No tag };
if (TEMP == 'I') {
TEMP = getchar(); TEMP = getchar(); return 'I'; //Invalid };
if (TEMP == 'X') {
TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid };
};
if (TEMP == 0x04) { value = 0; val=0; val=getchar(); value = val << 24; val=getchar(); value = value + (val << 16); val=getchar();
value = value + (val << 8); val=getchar();
value = value + val; TEMP = getchar(); TEMP = getchar(); return value; };
TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid }
long SCR_dec(char block,long dec_val) {
putchar(0x02); putchar(0x01); putchar(0x06); putchar(0x2D); putchar(block); exoreg=0x2A; exoreg=exor(exoreg,block); TEMP = (dec_val >> 24)& 0x00FF; putchar(TEMP);
exoreg=exor(exoreg,TEMP); TEMP = (dec_val >> 16)& 0x00FF; putchar(TEMP);
exoreg=exor(exoreg,TEMP); TEMP = (dec_val >> 8)& 0x00FF; putchar(TEMP);
exoreg=exor(exoreg,TEMP); TEMP = dec_val & 0x00FF; putchar(TEMP); exoreg=exor(exoreg,TEMP); putchar(exoreg);
putchar(0x03); //answer TEMP = getchar(); TEMP = getchar(); TEMP = getchar();
if (TEMP == 0x01) {
(35)
Universitas Kristen Maranatha
if (TEMP == 'F') {
TEMP = getchar(); TEMP = getchar(); return 'F'; //Fail };
if (TEMP == 'N') {
TEMP = getchar(); TEMP = getchar(); return 'N'; //No tag };
if (TEMP == 'I') {
TEMP = getchar(); TEMP = getchar(); return 'I'; //Invalid };
if (TEMP == 'X') {
TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid };
};
if (TEMP == 0x04) { value = 0; val=0; val=getchar(); value = val << 24; val=getchar(); value = value + (val << 16); val=getchar();
value = value + (val << 8); val=getchar();
value = value + val; TEMP = getchar(); TEMP = getchar(); return value; };
TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid }
long SCR_inc(char block,long inc_val) {
putchar(0x02); putchar(0x01); putchar(0x06); putchar(0x2B); putchar(block); exoreg=0x2E; exoreg=exor(exoreg,block); TEMP = (inc_val >> 24)& 0x00FF; putchar(TEMP);
exoreg=exor(exoreg,TEMP); TEMP = (inc_val >> 16)& 0x00FF; putchar(TEMP);
exoreg=exor(exoreg,TEMP); TEMP = (inc_val >> 8)& 0x00FF; putchar(TEMP);
exoreg=exor(exoreg,TEMP); TEMP = inc_val & 0x00FF; putchar(TEMP); exoreg=exor(exoreg,TEMP);
(36)
Universitas Kristen Maranatha
putchar(exoreg); putchar(0x03); //answer TEMP = getchar(); TEMP = getchar(); TEMP = getchar();
if (TEMP == 0x01) {
TEMP = getchar(); if (TEMP == 'F') {
TEMP = getchar(); TEMP = getchar(); return 'F'; //Fail };
if (TEMP == 'N') {
TEMP = getchar(); TEMP = getchar(); return 'N'; //No tag };
if (TEMP == 'I') {
TEMP = getchar(); TEMP = getchar(); return 'I'; //Invalid };
if (TEMP == 'X') {
TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid };
};
if (TEMP == 0x04) { value = 0; val=0; val=getchar(); value = val << 24; val=getchar(); value = value + (val << 16); val=getchar();
value = value + (val << 8); val=getchar();
value = value + val; TEMP = getchar(); TEMP = getchar(); return value; };
TEMP = getchar(); TEMP = getchar(); return 'X'; //Invalid card }
char scan_keypad(void) {
int scankey; char keypressed =' '; DDRA = 0x0F; PORTA = 0xFE; scankey = PINA&0xf0; switch (scankey)
(37)
Universitas Kristen Maranatha
{
case 0xE0 : keypressed = '1'; break;
case 0xD0 : keypressed = '2'; break;
case 0xB0 : keypressed = '3'; break;
case 0x70 : keypressed = 'A'; break;
} PORTA = 0xFD; delay_ms(10); scankey = PINA&0xf0; switch (scankey) {
case 0xE0 : keypressed = '4'; break;
case 0xD0 : keypressed = '5'; break;
case 0xB0 : keypressed = '6'; break;
case 0x70 : keypressed = 'B'; break;
} PORTA = 0xFB; delay_ms(10); scankey = PINA&0xf0; switch (scankey) {
case 0xE0 : keypressed = '7'; break;
case 0xD0 : keypressed = '8'; break;
case 0xB0 : keypressed = '9'; break;
case 0x70 : keypressed = 'C'; break;
} PORTA = 0xF7; delay_ms(10); scankey = PINA&0xf0; switch (scankey) {
case 0xE0 : keypressed = '*'; break;
case 0xD0 : keypressed = '0'; break;
case 0xB0 : keypressed = '#'; break;
case 0x70 : keypressed = 'D'; break;
}
return keypressed; }
long kov_hextobin(unsigned char hex) { switch(hex)
{case 0x30: bin = 0; break;
case 0x31: bin = 1; break;
case 0x32: bin = 2; break;
case 0x33: bin = 3; break;
case 0x34: bin = 4; break;
case 0x35: bin = 5; break;
case 0x36: bin = 6; break;
(38)
Universitas Kristen Maranatha
case 0x37: bin = 7; break;
case 0x38: bin = 8; break;
case 0x39:bin = 9; break;
}return bin; }
char kov_longtolcd1 (long nilai_a) { val1=100000;
do {
val2=nilai_a/val1; nilai_a =nilai_a % val1; val1=val1/10; }
while(val2==0); lcd_putchar(val2+0x30); do
{
val2=nilai_a/val1; nilai_a =nilai_a % val1; val1=val1/10;
lcd_putchar(val2+0x30);
}
while(val1!=0); return 0; }
char kov_longtolcd2 (long nilai_b) { val1=100000;
val3=1; nilai1[0]=' '; nilai1[1]=' '; nilai1[2]=' '; nilai1[3]=' '; nilai1[4]=' '; nilai1[5]=' '; nilai1[6]=' '; nilai1[7]=' ';
do {
val2=nilai_b/val1; nilai_b =nilai_b % val1; val1=val1/10; }
while(val2==0); nilai1[0]=val2; do
{
val2=nilai_b/val1; nilai_b =nilai_b % val1; val1=val1/10; nilai1[val3]=val2; val3=val3+1; }
while(val1!=0); return 0; }
(39)
Universitas Kristen Maranatha
LAMPIRAN B
FOTO ALAT
(40)
(41)
Universitas Kristen Maranatha
LAMPIRAN C
SKEMATIK ALAT
(42)
U
niv
ersi
tas
K
r
isten
M
a
rana
tha
PB0 (XCK/T0) 1 PB1 (T1) 2 PB2 (AIN0/INT2) 3 PB3 (AIN1/OC0) 4 PB4 (SS) 5 PB5 (MOSI) 6 PB6 (MISO) 7 PB7 (SCK) 8 RESET 9 PD0 (RXD) 14 PD1 (TXD) 15 PD2 (INT0) 16 PD3 (INT1) 17 PD4 (OC1B) 18 PD5 (OC1A) 19 PD6 (ICP) 20 PD7 (OC2) 21 XTAL2 12 XTAL1 13 GND 11 PC0 (SCL) 22 PC1 (SDA) 23 PC2 (TCK) 24 PC3 (TMS) 25 PC4 (TDO) 26 PC5 (TDI) 27 PC6 (TOSC1) 28 PC7 (TOSC2) 29AREF 32 AVCC 30
GND 31 PA7 (ADC7) 33 PA6 (ADC6) 34 PA5 (ADC5) 35 PA4 (ADC4) 36 PA3 (ADC3) 37 PA2 (ADC2) 38 PA1 (ADC1) 39 PA0 (ADC0) 40
VCC 10 ATMEGA16 1 2 3 4 5 6 7 8 Key pad 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 LCD 1 2 3 4 5 6 7 Pin J7 Card Reader VCC 1 2 XTAL 22pF 22pF VCC 1K R? RPot C1+ 1 VDD 2 C1-3 C2+ 4 C2- 5 VEE 6 T2OUT 7 R2IN 8 R2OUT 9 T2IN 10 T1IN 11 R1OUT 12 R1IN 13 T1OUT 14 GND 15 VCC 16 MAX232 LED 1uF 1uF 1uF 1uF VCC VCC R0 4k7 10nF
(43)
1
Pendahuluan
Universitas Kristen Maranatha
BAB I
PENDAHULUAN
I.1
Latar Belakang
Dewasa ini kebutuhan akan pemakaian bahan bakar minyak (BBM) dunia
meningkat dengan cepat tanpa diimbangi oleh sumber penghasil BBM yang
memadai. Hal ini mengakibatkan persediaan BBM dunia menipis sehingga
harga BBM dunia meningkat.
Dalam peningkatan harga BBM dunia sangatlah berpengaruh pada kondisi
ekonomi bangsa Indonesia. Hal ini disebabkan kurangnya persediaan sumber
BBM di Indonesia sehingga pemerintah perlu mengimport BBM dari luar. Jika
pemerintah terus-menerus mengsubsidi harga BBM akibatnya APBN Negara
akan defisit sehingga diperlukan suatu solusi untuk penyaluran subsidi yang
tepat.
Salah satu solusi untuk menyelesaikan masalah penyaluran subsidi
tersebut adalah dengan mengatur harga pembelian BBM bersubsidi yang
disesuaikan dengan harga pajak kendaraan bermotor yang menerima subsidi
BBM. Selain mengatur harga pembelian, jumlah pembelian pun perlu dibatasi
agar tidak disalahgunakan dengan melakukan penimbunan. Solusi ini dapat
direalisasikan dengan menerapkan suatu sistem menggunakan Smart Card
sebagai kartu identitas dalam pembelian BBM. Sehingga pada tugas akhir ini
penulis membuat rancangan setiap pemilik kendaraan yang menerima subsidi
harus memiliki kartu smart card. Kartu tersebut akan digunakan sebagai
pembatas dan pengatur harga dalam pembelian BBM sehingga pada setiap SPBU
bersubsidi terpasang suatu perangkat Smart Card Reader yang dihubungkan pada
suatu panel dan layar LCD yang digunakan untuk membaca batasan dan harga
pembelian BBM.
I.2
Identifikasi Masalah
Bagaimana mengimplementasikan Sistem Pembatasan Pembelian dan
pengaturan harga BBM bersubsidi menggunakan Smart Card?
(44)
2
Pendahuluan
Universitas Kristen Maranatha
I.3
Tujuan
Membuat Sistem Pembatasan Pembelian dan pengaturan harga BBM
bersubsidi menggunakan Smart Card.
I.4
Pembatasan Masalah
Alat yang dibuat tidak dihubungkan ke mesin pengisian BBM
Proses pengisian BBM disimulasikan menggunakan LED
Informasi yang disimpan pada kartu yaitu : no plat, harga pembelian,
batasan pembelian, dan tanggal
I.5
Spesifikasi Alat Yang Digunakan
Mikrokontroler AVR AT-Mega 16
LCD
Keypad
Smart Card MF1Mifare IC MF1 IC S50
Smart Card Reader ACM 120S-SM
LED
Max 232
I.6
Sistematika Penulisan
BAB I
PENDAHULUAN
Bab ini akan membahas mengenai Latar Belakang Masalah,
Identifikasi Masalah, Tujuan Masalah, Batasan Masalah,
Spesifikasi Alat, dan Sistematika Penulisan.
BAB II
LANDASAN TEORI
Bab ini akan menjelaskan tentang teori-teori yang berhubungan
dalam penyusunan laporan ini yaitu meliputi : Teknologi RFID
(Radio Frequency Identification), Smart Card jenis Mifare 1K,
(45)
3
Pendahuluan
Universitas Kristen Maranatha
Card Reader jenis ACM120S-SM , Mikrokontroler AVR
ATmega16, Komunikasi Serial RS232.
BAB III PERANCANGAN DAN REALISASI
Bab ini akan dibahas mengenai perancangan dan realisasi
dalam pembatasan pembelian dan pengaturan harga BBM
dengan Smart Card, baik secara hardware maupun software.
BAB IV
PENGUJIAN ALAT
Bab ini akan membahas mengenai pengujian alat dalam
pembatasan pembelian dan pengaturan harga BBM dengan Smart
Card.
BAB IV
PENUTUP
(46)
Univesitas Kristem Maranatha
67
BAB V
KESIMPULAN DAN SARAN
V.1
Kesimpulan
Dari pembahasan laporan tugas akhir ini, dapat disimpulkan bahwa:
1.
Aplikasi pengaturan harga dan pembatasan pembelian BBM
subsidi dengan menggunakan smart card telah berhasil
direalisasikan.
2.
Dari hasil pengujian diperoleh keberhasilan 100%.
V.2
Saran
Untuk pengembangan selanjutnya, penulis mempunyai beberapa saran
sebagai berikut:
1.
Alat ini dapat dilanjutkan dengan merealisasikan pada mesin
pengisian BBM.
2.
Pada alat ini saat power off maka timer akan reset sehingga
diperlukan setting waktu ulang. Alat ini dapat dipasang RTC (real
time clock) dengan baterai untuk memperbaiki agar tidak
memerlukan proses setting waktu yang berulang-ulang.
3.
Alat ini dapat dikembangkan dengan menggunakan database pada
komputer dan dapat melakukan proses pembayaran.
4.
Selain untuk aplikasi pengaturan harga dan pembatasan pada
BBM, alat ini dapat juga diaplikasikan pada bidang lain seperti :
pembatasan pembelian pupuk subsidi, pembatasan peminjaman
buku pada perpustakaan, dan lain-lain.
(47)
Univesitas Kristem Maranatha
68
DAFTAR PUSTAKA
1.
Andrianto,Heri.2008. Buku Panduan Pelatihan Mikrokontroler AVR
ATMega16. Universitas Kristen Maranatha.
2.
Green,DC.1995. Komunikasi Data. Penerbit Andi yogyakarta
3.
Roddy dan Coolen.1984. Komunikasi Elektronika. Penerbit Erlangga.
4.
Shoji, Shigeki.2002. Buku Pegangan Teknik Telekomunikasi. PT
Pradnya Paramita.
5.
http://en.wikipedia.org/wiki/RFID
6.
http://id.wikipedia.org/wiki/RFID
7.
http://www.acs.com.hk/drivers-manual.php?driver=ACM120S
8.
http://www.acs.com.hk/drivers-manual.php?driver=ACR120
9.
www.circuitcella.com
10.
www.mytutorialcafe.com
(1)
tas K r isten M a rana tha PB0 (XCK/T0) 1 PB1 (T1) 2 PB2 (AIN0/INT2) 3 PB3 (AIN1/OC0) 4 PB4 (SS) 5 PB5 (MOSI) 6 PB6 (MISO) 7 PB7 (SCK) 8 RESET 9 PD0 (RXD) 14 PD1 (TXD) 15 PD2 (INT0) 16 PD3 (INT1) 17 PD4 (OC1B) 18 PD5 (OC1A) 19 PD6 (ICP) 20 PD7 (OC2) 21 XTAL2 12 XTAL1 13 GND 11 PC0 (SCL) 22 PC1 (SDA) 23 PC2 (TCK) 24 PC3 (TMS) 25 PC4 (TDO) 26 PC5 (TDI) 27 PC6 (TOSC1) 28 PC7 (TOSC2) 29
AREF 32 AVCC 30
GND 31 PA7 (ADC7) 33 PA6 (ADC6) 34 PA5 (ADC5) 35 PA4 (ADC4) 36 PA3 (ADC3) 37 PA2 (ADC2) 38 PA1 (ADC1) 39 PA0 (ADC0) 40
VCC 10 ATMEGA16 1 2 3 4 5 6 7 8 Key pad 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 LCD 1 2 3 4 5 6 7 Pin J7 Card Reader VCC 1 2 XTAL 22pF 22pF VCC 1K R? RPot C1+ 1 VDD 2 C1-3 C2+ 4 C2- 5 VEE 6 T2OUT 7 R2IN 8 R2OUT 9 T2IN 10 T1IN 11 R1OUT 12 R1IN 13 T1OUT 14 GND 15 VCC 16 MAX232 1uF 1uF 1uF 1uF VCC VCC R0 4k7 10nF
(2)
1
Pendahuluan
Universitas Kristen Maranatha
BAB I
PENDAHULUAN
I.1 Latar Belakang
Dewasa ini kebutuhan akan pemakaian bahan bakar minyak (BBM) dunia meningkat dengan cepat tanpa diimbangi oleh sumber penghasil BBM yang memadai. Hal ini mengakibatkan persediaan BBM dunia menipis sehingga harga BBM dunia meningkat.
Dalam peningkatan harga BBM dunia sangatlah berpengaruh pada kondisi ekonomi bangsa Indonesia. Hal ini disebabkan kurangnya persediaan sumber BBM di Indonesia sehingga pemerintah perlu mengimport BBM dari luar. Jika pemerintah terus-menerus mengsubsidi harga BBM akibatnya APBN Negara akan defisit sehingga diperlukan suatu solusi untuk penyaluran subsidi yang tepat.
Salah satu solusi untuk menyelesaikan masalah penyaluran subsidi tersebut adalah dengan mengatur harga pembelian BBM bersubsidi yang disesuaikan dengan harga pajak kendaraan bermotor yang menerima subsidi BBM. Selain mengatur harga pembelian, jumlah pembelian pun perlu dibatasi agar tidak disalahgunakan dengan melakukan penimbunan. Solusi ini dapat direalisasikan dengan menerapkan suatu sistem menggunakan Smart Card sebagai kartu identitas dalam pembelian BBM. Sehingga pada tugas akhir ini penulis membuat rancangan setiap pemilik kendaraan yang menerima subsidi harus memiliki kartu smart card. Kartu tersebut akan digunakan sebagai pembatas dan pengatur harga dalam pembelian BBM sehingga pada setiap SPBU bersubsidi terpasang suatu perangkat Smart Card Reader yang dihubungkan pada suatu panel dan layar LCD yang digunakan untuk membaca batasan dan harga pembelian BBM.
I.2 Identifikasi Masalah
Bagaimana mengimplementasikan Sistem Pembatasan Pembelian dan pengaturan harga BBM bersubsidi menggunakan Smart Card?
(3)
Universitas Kristen Maranatha
I.3 Tujuan
Membuat Sistem Pembatasan Pembelian dan pengaturan harga BBM bersubsidi menggunakan Smart Card.
I.4 Pembatasan Masalah
Alat yang dibuat tidak dihubungkan ke mesin pengisian BBM Proses pengisian BBM disimulasikan menggunakan LED
Informasi yang disimpan pada kartu yaitu : no plat, harga pembelian, batasan pembelian, dan tanggal
I.5 Spesifikasi Alat Yang Digunakan
Mikrokontroler AVR AT-Mega 16 LCD
Keypad
Smart Card MF1Mifare IC MF1 IC S50 Smart Card Reader ACM 120S-SM
LED Max 232
I.6 Sistematika Penulisan
BAB I PENDAHULUAN
Bab ini akan membahas mengenai Latar Belakang Masalah, Identifikasi Masalah, Tujuan Masalah, Batasan Masalah, Spesifikasi Alat, dan Sistematika Penulisan.
BAB II LANDASAN TEORI
Bab ini akan menjelaskan tentang teori-teori yang berhubungan dalam penyusunan laporan ini yaitu meliputi : Teknologi RFID (Radio Frequency Identification), Smart Card jenis Mifare 1K,
(4)
3
Pendahuluan
Universitas Kristen Maranatha
Card Reader jenis ACM120S-SM , Mikrokontroler AVR
ATmega16, Komunikasi Serial RS232.
BAB III PERANCANGAN DAN REALISASI
Bab ini akan dibahas mengenai perancangan dan realisasi dalam pembatasan pembelian dan pengaturan harga BBM dengan Smart Card, baik secara hardware maupun software.
BAB IV PENGUJIAN ALAT
Bab ini akan membahas mengenai pengujian alat dalam pembatasan pembelian dan pengaturan harga BBM dengan Smart
Card.
BAB IV PENUTUP
(5)
Univesitas Kristem Maranatha 67
V.1 Kesimpulan
Dari pembahasan laporan tugas akhir ini, dapat disimpulkan bahwa:
1. Aplikasi pengaturan harga dan pembatasan pembelian BBM
subsidi dengan menggunakan smart card telah berhasil direalisasikan.
2. Dari hasil pengujian diperoleh keberhasilan 100%.
V.2Saran
Untuk pengembangan selanjutnya, penulis mempunyai beberapa saran sebagai berikut:
1. Alat ini dapat dilanjutkan dengan merealisasikan pada mesin pengisian BBM.
2. Pada alat ini saat power off maka timer akan reset sehingga diperlukan setting waktu ulang. Alat ini dapat dipasang RTC (real time clock) dengan baterai untuk memperbaiki agar tidak memerlukan proses setting waktu yang berulang-ulang.
3. Alat ini dapat dikembangkan dengan menggunakan database pada komputer dan dapat melakukan proses pembayaran.
4. Selain untuk aplikasi pengaturan harga dan pembatasan pada BBM, alat ini dapat juga diaplikasikan pada bidang lain seperti : pembatasan pembelian pupuk subsidi, pembatasan peminjaman buku pada perpustakaan, dan lain-lain.
(6)
Univesitas Kristem Maranatha 68
DAFTAR PUSTAKA
1. Andrianto,Heri.2008. Buku Panduan Pelatihan Mikrokontroler AVR
ATMega16. Universitas Kristen Maranatha.
2. Green,DC.1995. Komunikasi Data. Penerbit Andi yogyakarta
3. Roddy dan Coolen.1984. Komunikasi Elektronika. Penerbit Erlangga. 4. Shoji, Shigeki.2002. Buku Pegangan Teknik Telekomunikasi. PT
Pradnya Paramita.
5. http://en.wikipedia.org/wiki/RFID
6. http://id.wikipedia.org/wiki/RFID
7. http://www.acs.com.hk/drivers-manual.php?driver=ACM120S
8. http://www.acs.com.hk/drivers-manual.php?driver=ACR120
9. www.circuitcella.com
10.www.mytutorialcafe.com