i
ABSTRAK
Perkembangan teknologi pada saat ini menuntut dalam segala hal, terciptanya suatu sistem yang cepat dan dilakukan secara otomatis. Salah satu aplikasi yang membutuhkan perkembangan teknologi yang cepat dan otomatis adalah proses pemeriksaan barang dengan teknik pengkodean baris atau barcode. Tujuan dari tugas akhir ini adalah memberikan fondasi perancangan suatu sistem pemeriksaan barang di supermarket berbasis mikrokontroler.
Dalam aplikasi barcode ini digunakan MMC (Multi Media Card) sebagai media penyimpan data yang berisi data-data keterangan yang diolah dengan menggunakan mikrokontroler. Hardware yang dibutuhkan adalah scanner barcode, MMC untuk menyimpan data, dan mikrokontroler dengan tipe ATMega16.
Scanner barcode memindai kode barang dari label data yang ada di barang. Lalu kode barang tersebut dibandingkan dengan data yang ada di MMC (Multi Media Card). Jika detail barang yang bersangkutan ada di dalam MMC, maka LCD akan menampilkan nama barang beserta harganya. Jika detail barang yang bersangkutan tidak ada di dalam MMC, maka LCD akan menampilkan “Tidak Ada Data”.
Keseluruhan mekanisme diatas dikendalikan oleh mikrokontroler yang telah diprogram untuk menulis dan membaca detail barang yang telah dipindai oleh scanner barcode. Mikrokontroler yang digunakan adalah mikrokontroler AVR ATMega16 dari keluarga ATMEL.
ii
ABSTRACT
Technological growth at the moment claim in all matter, creation of a system which is quick and conducted automatically. One of the application requiring technological growth which is quick and automatic is a process of automatic goods inspection with a system of code of line or barcode . The purpose of this final assignment is to give the foundation of engineering of a system goods inspection in supermarket based on the microcontroller.
This barcode application is using MMC (Multi Media Card) as a data storing media containing data processed by using microcontroller. Hardwares required are barcode scanner, MMC for data storing, and type ATMega16 microcontroller.
Barcode scanner scans the barcode from data label on the goods. Then the goods code is compared to the data that exist in the MMC ( Multi Media Card). If there is the goods detail in the MMC, then the LCD will show the goods name and its price. If there is no goods detail in the MMC, then the LCD will show "Tidak Ada Data" (No Data).
Overall mechanism above is controlled by microcontroller which has been programmed to write and read the goods detail which have been scanned by barcode scanner. Microcontroller used is AVR microcontroller, ATMega16 from ATMEL.
II.4 Komunikasi MMC dengan Mikrokontroler ATMega16 8
II.5 Sekilas Tentang Barcode 9
II.6 Jenis-jenis Barcode 10
II.6.1 Barcode Jenis Code 39/3 of 9 10
II.6.2 Jenis-jenis Pembaca Barcode 12
II.7 Komunikasi Scanner Barcode dengan Mikrokontroler ATMega16 13
BAB II I PERANCANGAN HARDWARE DAN SOFTWARE 16
iv
III.2 Perancangan Hardware 16
III.2.1 Scanner Barcode 17
III.2.2 Skematik Rangkaian Scanner Barcode 17
III.2.3 Mikrokontroler ATMega16 18
III.2.4 Konfigurasi Pin-pin ATMega16 18
III.2.5 MMC (Multi Media Card) 20
III.2.6 Konfigurasi Pin-pin MMC 20
III.2.7 Konfigurasi Rangkaian Secara Keseluruhan 21
III.3 Perancangan Software 22
IV.1 Barang Yang Digunakan Dalam Percobaan 29
v
BAB V KESIMPULAN DAN SARAN 44
V.1 Kesimpulan 44
V.2 Saran 44
DAFTAR PUSTAKA 45
LAMPIRAN A LISTING PROGRAM A-1
vi
DAFTAR TABEL
Tabel II.1 Definisi Mode 5
Tabel II.2 Karakter Dan Nilai Barcode Code 39 11
Tabel II.3 Jenis-jenis Pembaca Barcode 13
vii
DAFTAR GAMBAR
Gambar II.1 Partisi Array MMC 4
Gambar II.2 Format Transfer Data 5
Gambar II.3 Blok Diagram Fungsional ATMega16 7
Gambar II.4 Struktur Barcode Code 39 12
Gambar II.5 Alat-alat Pendukung Barcode 13
Gambar III.1 Blok Diagram Aplikasi Alat Pengecek Barang 13 Gambar III.2 Skematik Rangkaian Scanner Barcode 17
Gambar III.3 Pin-pin ATMega16 19
Gambar III.15 Flowchart Program Aplikasi Alat Pengecek Barang 28
viii
Gambar IV.10 Tampilan LCD Barang Pertama, ”Susu Ultra” 35 Gambar IV.11 Penekanan tombol push button 1/reset 36 Gambar IV.12 Input Barang Kedua, ”Kacang Garuda” 37
Gambar IV.13 Penekanan tombol push button 2 37
Gambar IV.14 Tampilan LCD Barang Kedua, ”Kacang Garuda” 38 Gambar IV.15 Penekanan tombol push button 1/reset 38
Gambar IV.16 Input Barang Ketiga, ”OREO” 39
Gambar IV.17 Penekanan tombol push button 2 40
LAMPIRAN A
LISTING PROGRAM
Di bawah ini adalah Listing Program Aplikasi Alar Pengecek Harga:
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#include <stdlib.h>
#include <spi.h>
unsigned char mystring[]="Ultra Milk Rp 3800 Kacang Garuda Rp 1500 Kue Bollu Rp
1000 Biskuit Oreo Rp 1000";
unsigned char tampung[40];
unsigned char tampung2[40];
unsigned char tampung3[40];
unsigned char sector[512];
void nodata(void);
void lihatdata(void);
char Command(char befF, unsigned int AdrH, unsigned int AdrL, char befH ) ;
int writeramtommc(void);
int sendmmc(void);
int i,a,aa,b,bb,j,c,z;
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
}
#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
// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;
// USART Receiver interrupt service routine
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)
{
#define _ALTERNATE_GETCHAR_
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
// USART Transmitter buffer
#define TX_BUFFER_SIZE 8
// 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;
// Standard Input/Output functions
#include <stdio.h>
interrupt [SPI_STC] void spi_isr(void)
{
unsigned char data;
data=SPDR;
// Place your code here
}
// 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=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=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=0 State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0xB0;
// 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
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;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, Even Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 38400
UCSRA=0x00;
UCSRB=0xD8;
UCSRC=0xA6;
UBRRH=0x00;
UBRRL=0x0B;
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 1843.200 kHz
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0xD0;
// Clear the SPI interrupt flag
#asm
in r30,spsr
in r30,spdr
#endasm
// LCD module initialization
lcd_init(16);
// Global enable interrupts
tampung3[j] = sector[j+bb];
sprintf(tampung2,"tidak ada data");
lcd_puts(tampung2);
sprintf(tampung2,"lihat data");
lcd_puts(tampung2);
}
char Command(char befF, unsigned int AdrH, unsigned int AdrL, char befH )
{ // sends a command to the MMC
spi(0xFF);
spi(befF);
spi((unsigned int)(AdrH >> 8));
spi((unsigned int)AdrH);
spi((unsigned int)(AdrL >> 8));
spi((unsigned int)AdrL);
spi(befH);
return spi(0xFF); // return the last received character
}
int writeramtommc(void)//write ram sector to mmc
{
int i;
// 512 byte-write-mode
if (Command(0x58,0,512,0xFF) !=0) {
return 1;
while(spi(0xFF) != (char)0xFF);
return 0;
}
int sendmmc(void)//send 512 bytes from the mmc and save it to buffer variable
{
int i;
// 512 byte-read-mode
return 1;
}
// wait for 0xFE - start of any transmission
// ATT: typecast (char)0xFE is a must!
while(spi(0xFF) != (char)0xFE);
for(i=0; i < 512; i++) {
UDR = spi(0xFF); // send character
sector[i] = UDR;
}
// at the end, send 2 dummy bytes
spi(0xFF); // actually this returns the CRC/checksum byte
spi(0xFF);
return 0;
LAMPIRAN B
TABEL KODE BARCODE DAN FOTO ALAT
Tampilan Barcode CODE39
1
BAB I
PENDAHULUAN
I.1 Latar Belakang Masalah
Salah satu penggunaan barcode dilakukan untuk membantu proses
pemeriksaan barang secara otomatis pada kasir di supermarket. Tetapi dalam
laporan Tugas Akhir ini, dibuat aplikasi barcode sebagai alat pengecek barang
yang tidak hanya digunakan di kasir, tetapi juga untuk memfasilitasi bagi setiap
konsumen di supermarket. Keuntungan dari pemfasilitasan alat pengecek barang
pada setiap konsumen antara lain dapat memudahkan konsumen dalam berbelanja,
serta meningkatkan suasana belanja yang lebih tertib dan nyaman.
Barcode digambarkan dalam bentuk baris hitam tebal dan tipis yang
disusun berderet sejajar horisontal. Untuk membantu pembacaan secara manual
dicantumkan juga angka-angka dibawah barcode tersebut. Angka-angka tersebut
mendasari pola barcode yang tercantum. Ukuran dari barcode tersebut dapat
diperbesar ataupun diperkecil dari ukuran nominalnya tanpa tergantung dari mesin
yang membaca.
Dalam aplikasi barcode ini digunakan MMC (Multi media card) sebagai
penyimpan data yang berisi keterangan berupa nama-nama barang beserta
harganya dengan menggunakan mikrokontroler. Hardware yang dibutuhkan
adalah scanner barcode, MMC untuk menyimpan data barang, dan
mikrokontroler dengan tipe ATMega16.
I.2 Identifikasi Masalah
1. Bagaimana mendesain Hardware dan Software mikrokontroler untuk
mengenal kode barang yang digunakan dalam barcode ?
2. Bagaimana menginput data ke dalam MMC yang dapat diakses oleh
2
I.3 Tujuan
1. Mendesain Hardware dan software mikrokontroler untuk mengenal kode
barang yang digunakan dalam barcode.
2. Menginput data ke dalam MMC yang dapat diakses oleh mikrokontroler.
I.4 Pembatasan Masalah
1. Alat yang dibuat menggunakan mikrokontroler ATMega16.
2. Sebagai penyimpan data digunakan MMC.
3. Input menggunakan Scanner Barcode.
I.5 Sistematika Penulisan
Laporan tugas akhir ini disusun dengan urutan sebagai berikut:
BAB I : PENDAHULUAN
BAB I berisi hal-hal yang dapat memberikan gambaran mengenai
tugas akhir ini diawali dengan latar belakang, identifikasi masalah,
tujuan, pembatasan masalah dan sistematika penulisan.
BAB II : LANDASAN TEORI
BAB II berisi pembahasan bahan-bahan teori yang berkaitan dengan
latar belakang masalah, sebagai acuan untuk membuat laporan.
BAB III : PERANCANGAN HARDWARE DAN SOFTWARE
BAB III berisi pembahasan perancangan hardware dan software yang
telah dibuat.
BAB IV : DATA PENGAMATAN
BAB IV berisi data pengamatan dari pengujian hardware dan software
yang telah dibuat.
BAB V : KESIMPULAN DAN SARAN
BAB V berisi kesimpulan tugas akhir ini serta saran – saran untuk
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
1. Dari hasil percobaan, kode barcode barang sudah dapat diproses oleh
mikrokontroler untuk dibaca dan dibandingkan dengan Data yang
tersimpan di MMC untuk ditampilkan dilayar LCD. Hal ini
memungkinkan Perancangan hardware dan software dari TA yang
berjudul “Aplikasi Alat Pengecek Barang Menggunakan MMC (Multi
Media Card) dan Scanner Barcode Berbasis Mikrokontroler” sudah
dapat direalisasikan.
2. Proses penginputan data dari mikrokontroler ke MMC dengan
menggunakan software bahasa C dan tools CV AVR sudah berhasil
dilakukan, dan siap untuk dipanggil oleh mikrokontroler pada saat
aplikasi alat dijalankan.
5.2 Saran
1. Agar lebih banyak daya tampung memori yang dapat dipakai untuk
aplikasi TA ini, maka disarankan menggunakan MMC yang lebih
besar lagi kapasitas memorinya.
2. Agar lebih efisien, pada perancangan alat sebaiknya penekanan
tombol push button dapat dihilangkan, untuk lebih memudahkan
dalam penggunaan aplikasi alat pengecek barang.
DAFTAR PUSTAKA
1. Applied Barcode, 2000, Barcodes, Barcodes and Barcoding Systems,
www.appliedbarcode.co.uk/, Juni 2006.
2. Pratomo, Andi, “Panduan Praktis Pemrograman AVR Mikrokontroler”, Andi,
Yogyakarta, 2005.
3. Prestiliano, Jasson, “Strategi Bahasa Assembler”, Gava Media, Yogyakarta,
2005.
4. Setiawan, Sulhan, “Mudah Dan Menyenangkan Belajar Mikrokontroler”,
Andi, Yogyakarta, 2006.
5. Wardhana, Lingga, “Belajar Sendiri Mikrokontroler AVR Seri ATMega8535
Simulasi, Hardware, dan Aplikasi”, Andi, Yogyakarta, 2006.
6. http://www.assembler.com, Juni 2006.
7. http://www.atmel.com, Juni 2006.
8. http://www.epanorama.net, November 2006.