Interface barcode ke mikrokontroler AVR atmega.

Barcode Scanner banyak digunakan di toko-toko retail untuk men-scan barang barang yang akan dibayar pembeli di kasir atau digunakan di perpustakaan untuk mempercepat petugas mendaftar buku-buku yang akan dipinjam. Dengan adanya alat ini semuanya menjadi cepat dan mudah, karena setiap jenis barang memiliki kode barcode sendiri yang unik sehingga bisa dikelompokkan dengan mudah. Seperti halnya keyboard dan mouse , terdapat banyak macam tipe barcode scanner berdasarkan jenis komunikasinya, misalnya barcode scanner serial, PS/2, dan USB. Pada proyek kali ini barcode scanner PS/2 yang akan digunakan, sehingga penanganannya sama dengan keyboard PS/2. Komunikasi PS/2 adalah komunikasi serial asinkronous yang menggunakan 2 kabel yaitu data
dan clock.
Namun jangan salah sangka, serial sinkronous disini bukanlah protokol I2C(eis to see atau twi, atau apalah). konektor yang digunakan yaitu mini Din female. barcode scanner disini akan digunakan sebagai validator apakah seseorang berhak menggunakan peralatan tersebut atau tidak, jadi siapa orang yang memiliki kartu dengan nomor barcode yang sesuai berhak menggunakannya. Dan untuk mengetahui apakah ada orang yang menggunakan scan barcode tersebut, data hasil scanning dikirim melalui SMS ke nomor tertentu. Ide awal proyek ini bukan dari saya sendiri, namun dari orang lain , sehingga seberapa efektif alat akan berguna, saya sendiri meragukannya :-) . mikrokontroler yang digunakan yaitu avr Atmega32(sebenarnya terlalu berlebihan, dapat digunakan tipe lain) dari Atmel. PORTD.2 digunakan untuk clock, dan data di PORTD.7. PORTD.2 difungsikan sebagai pin untuk interupt eksternal, sedangkan PORTD.7 sebagai input biasa. berikut koneksinya :

offground1

Resistor pull-up yang digunakan sebesar 10 kOhm. Timing diagram dari data yang akan ditangkap adalah sebagai berikut :

offground21(seperti halnya untuk keyboard PS/2)

Fungsi utama pengambilan data ada di rutin interupt eksternal :

interrupt [EXT_INT0] void ext_int0_isr(void)

{

static unsigned char data;

if (!edge)

{

if(bitcount < 11 && bitcount > 2) // 1=start,8 bit //data,1=parity =1 stop bit //,Bit 3 to 10 is data. Parity bit,

{ // start and stop bits tidak masuk

data = (data >> 1);

if(PIND & 8)

data = data | 0×80; // ‘1′

}

if(bitcount==11)

{

mycount++;

}

MCUCR = 3;

edge = 1;

}

else {

MCUCR = 2;

edge = 0;

if(–bitcount == 0) // All bits received

{

decode(data);

bitcount = 11;

}

}

}

rutin rutin yang lain adalah untuk men-decode byte-byte yang masuk menjadi karakter ASCII, melalui sebuah look-up tabel. Untuk keperluan pengiriman SMS, digunakan handphone Siemes M45, dengan koneksi serial RS232. PDU yang dikirim disini tidak berubah-ubah(static) sehingga tidak perlu membuat generator PDU sendiri, cukup copy paste dari PDU generator yang sudah ada, misalnya http://www.rednaxela.net/pdu.php . Gambar alat :

offground3

file proyek ini sebenarnya sudah lama bercokol di HD ku (kira-kira sejak 2007, August), saya posting semoga berguna. (listing dengan bahasa C, IDE Code VisionAVR).

Download Code

Referensi : Atmel Application Notes

7 comments so far

  1. agus whd on

    mas mau tanya gimana kalau IC nya di ganti dengan IC AVR atmega 8535 .bisa tak mas .matur suwun

  2. oth3rside on

    bisa saja, namun ngepress. program diatas membutuhkan 1/4 dari program memori atmega32==>8kb, pdhal atmega8535 memiliki program memori 8kb.

  3. mif_rakyat_jelata on

    gmn klo ICnya diganti 7805 saja mas?bisa tak?

    kikikikkk….
    piss,prop :D

  4. oth3rside on

    diganti Resistor ae Mip murah……
    hahahaha :-D

  5. lynch on

    Mas, mohon bantuannya dong…
    Saya lagi ngerjain tugas akhir, dan yang saya kerjain berhubungan dengan barcode scanner sama uC ATmega. Bisa pilihin program mana aja yang digunain intuk interfacing BS dng uC ga, punya Mas kan ada pake SMS nya jga? Saya dah download program Mas, tapi ga ngerti, mana yang dipake buat interfacing BS dng uC aja. Maklum pemula di uC AVR. Tolong dikirimin ke email saya y Mas. Makasih banget Mas.

    mailto:fireboltattack@yahoo.com

    project file terdiri dari.c dan .h simpan dalam 1 folder lallu buka projectnya di CodeVision avr
    kb.c ->main program
    lut.c->tabel look-up untuk karakter barcode/keyboard
    pstu.c-> yang handle pengambilan karakter dari barcode/keyboard
    smoga mmbantu…

  6. CJ DW on

    mas klo bs diposting sekalian skematik rangkaiannya..atau boleh dikirim ke email saya: njlaboet@gmail.com.

    trus nanyajuga.. scanner barcode di sini tu menscan berapa bit dari kode warna gelap terang yg biasa discan..
    Mohon juga dijelaskan prinsip pembacaan kode sampai pengolahan di mikro nya dlm tampilan LCD.

    Thanks.

  7. oth3rside on

    @cj dw
    rangkaian nya cuma sperti yang diatas(line clock-data,di pull-up)
    data yang dikeluarkan barcode project ini 8-bit yang dikirim secara serial sinkron
    penulisan LCD nya menggunakan library codevision
    pembacaan,dll->bisa di pelajari di source code yang bisa di donlot diats :-)


Leave a reply