Minggu, 22 Juli 2012

Simulation Drug Stocks RFID-based



Assalamu’alaikum mas & mbak bro……. wuaduh….. lama g posting ni…. buanyak  tugas kuliah soalnya…hehehe, ni saya share tugas-tugas kuliah enyong yo……… monggo……..semoga bermanfaat,,, :D
A.    PENDAHULUAN
RFID (Radio Frequency Identification)
Ada beberapa tipe dari RFID card antara lain yaitu RFID card dapat bersifat aktif atau pasif. RFID card yang pasif tidak memiliki catu daya sendiri. Dengan hanya menggunakan catu daya yang ada pada antena yang disebabkan oleh adanya frekuensi radio scanning yang masuk, telah cukup untuk memberi kekuatan yang cukup bagi RFID card untuk mengirimkan respon balik. Sehubungan dengan catu daya dan biaya, maka respon dari suatu RFID card yang pasif biasanya hanya berupa nomor-nomor identitas atau ID saja.
Dengan tidak adanya catu daya pada kartu RFID card yang pasif maka akan menyebabkan semakin kecil ukuran dari RFID card yang akan dibuat. Beberapa RFID komersial yang saat ini telah beredar dipasaran ada yang dapat diletakan di bawah kulit. Pada tahun 2005 tercatat bahwa RFID card terkecil berukuran 0,4 mm x 0,4 mm dan lebih tipis daripada selembar kertas. Dengan ukuran seperti itu maka secara praktis benda tersebut tidak akan terlihat oleh mata. RFID card yang pasif ini memiliki jarak jangkauan yang berbeda mulai dari 10 mm sampai dengan 6 meter.
RFID card yang aktif, disisi lain harus memiliki catu daya sendiri dan memiliki jarak jangkauan yang lebih jauh. Memori yang dimilikinya juga lebih besar sehingga dapat menampung berbagai macam informasi didalamnya. Ukuran terkecil dari RFID card yang aktif ada yang sebesar koin. Jarak jangkauan dari RFID card yang aktif ini dapat sampai 10 meter dan dengan umur baterai yang dapat mencapai beberapa tahun lamanya.
Ada empat macam RFID card yang sering digunakan bila dikategorikan berdasarkan frekuensi radio, yaitu :
·      Low frequency card (antara 125 ke 134 kHz)
·      High frequency card (13.56 MHz)
·      UHF card (868 sampai 956 MHz)
·      Microwave card (2.45 GHz)
UHF card tidak dapat digunakan secara global, karena tidak sesuai peraturan global yang mengatur penggunaanya. RFID Low frequecy card banyak digunakan untuk identifikasi pada binatang, keylock pada mobil dan juga sistem anti pencurian. Binatang peliharaan seringkali ditempeli dengan chip yang kecil sehingga mereka dapat dikembalikan pada pemiliknya jika hilang. Di Amerika serikat, RFID yang digunakan ada dua yaitu 125 kHz (standar aslinya) dan 134.5 kHz (yang merupakan standar internasional).
RFID High-frequency card sering digunakan pada perpustakaan atau toko buku, akses kontrol pada gedung, pelacakan pada bagasi pesawat terbang dan apparel item tracking, serta mengganti keberadaan kartu magnetik sebelumnya. Lencana ini hanya perlu dipegang dalam suatu jarak tertentu dan readernya langsung dapat mengenali siapa pemegang lencana tersebut. Kartu kredit American Express Blue saat ini telah mengandung RFID card dengan high-frequency.

 
Gambar 1. Reader RFID
B.  RANGKAIAN

Skematik Sistem Minimum ATMega16



Skematik Rangkaian RFID ID-12
            
                          

C.  PERALATAN DAN BAHAN
Untuk Rangkaian RFID:
1.      RFID Tag                                             2 buah
2.      RFID reader                                         1 reader
3.      Buzzer                                                  1 buah
4.      Led                                                       1 buah            
5.      Resistor 1 Kohm dan 100 ohm             4 buah
6.      Transistor  2n3904                                1 buah
7.      PCB Matrix                                          1 buah
8.      Konektor Serial                                     1 buah
9.      Kabel jumper                                        secukupnya

D. TAHAP-TAHAP  KERJA 
     1.      Perancangan dan Pembuatan Rangkaian (Pekan Pertama)
     2.      Pemrograman Sistem (Pekan kedua dan Ketiga)
     3.      Pengujian system (Pekan Keempat)

E. PRINSIP KERJA DAN PROGRESS
Cara kerja dari alat ini yaitu sangat sederhana, intinya adalah sebuah obyek akan dideteksi keberadaannya menggunakan rfid. Tiap-tiap obyek memiliki kode yang unik sehingga satu dengan yang lainnya tak mungkin sama. Stok di dalam rak dapat diketahui dengan cara menghitung jumlah obyek yang terdeteksi. Sedangkan untuk mengetahui kadaluarsa yaitu dengan cara mencocokkan data tanggal yang ada pada masing-masing ID.
Rangkaian di atas berfungsi untuk memeriksa data dari tag rfid yang digunakan. Cara kerjanya yaitu buka hyperterminal : Start à All Programs àAccessories à Communications à Hyperterminal, dengan pengaturan: Bits Per Second 9600, Data Bits 8, Parity None, Stop Bits 1, dan Flow Control None.
Apabila tag RFID didekatkan, LED akan menyala dan buzzer akan berbunyi. Kemudian data tag akan muncul di layar hyperterminal. Pada percobaan yang dilakukan yaitu buzzer dan LED telah aktif saat tag RFID didekatkan ke reader, dan data identitas yang ada pada RFID tag terlihat pada hyperterminal.
Dalam kasus ini di misalkan kapasitas maksimal dari rak obat adalah 3. Dalam hal ini rak tidak boleh dibiarkan kosong, sehingga apabila jumlah obat dalam rak menunjukan satu maka itu dianggap minimum dan tidak bisa berkurang lagi. Setiap obat yang keluar atau masuk akan terdeteksi oleh rfid.  Untuk jumlah yang tersedia di rak obat di tampilkan di lcd secara realtime.
    

E. LAMPIRAN
Program
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date    : 6/28/2012
Author  : diy4n
Company : Taman Hati Shop
Comments:


Chip type               : ATmega16
Program type            : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega16.h>

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>

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

#define obat_masuk PINA.0
#define obat_keluar PINA.1
#define LED_ID1 PORTC.0
#define LED_ID2 PORTC.1


char i;
char k[30];

// USART Receiver buffer
#define RX_BUFFER_SIZE 16
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;

// 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)
      {
      rx_counter=0;
      rx_buffer_overflow=1;
      };
   };
}

#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif

// Standard Input/Output functions
#include <stdio.h>
     
void task_run2()
      {           
       lcd_gotoxy(0,0);lcd_putsf("Data ID");
       lcd_gotoxy(0,1);lcd_puts(rx_buffer);          
       
      // sprintf(k,"ID Tag=%c",rx_buffer,13);
      // puts(k); 
      }     

void task_run()
{     int jml=2;
      lcd_gotoxy(0,0);lcd_putsf("OBAT TERSEDIA");
      lcd_gotoxy(7,1); sprintf(k,"%d",jml,13);lcd_puts(k);
     
      /*
      if(obat_keluar==0){
            if(rx_buffer[12]=='F' || rx_buffer[12]=='5'){
                jml--;
                lcd_gotoxy(1,0);lcd_putsf("OBAT TERSEDIA");
                lcd_gotoxy(7,1); sprintf(k,"%d",jml,13);lcd_puts(k);
            }
      }  
      */
       
        if(rx_buffer[12]=='F')                             {
            if(obat_masuk==0){        
             LED_ID1=0;
             jml++; 
                if(jml==3 && (rx_buffer[12]=='0' || rx_buffer[12]=='3'))
                {      
                     lcd_clear();
                     lcd_gotoxy(0,0);lcd_putsf("RAK PENUH!!!");
                }
                else {
                        lcd_gotoxy(0,0);lcd_putsf("OBAT TERSEDIA");
                        lcd_gotoxy(7,1); sprintf(k,"%d",jml);lcd_puts(k);
                }
            }
          
             if(obat_keluar==0){
             LED_ID1=0;
             jml--; 
                if(jml==1 && (rx_buffer[12]=='0' || rx_buffer[12]=='3'))
                {   
                    lcd_clear();
                    lcd_gotoxy(0,0);lcd_putsf("RAK KOSONG!!!");
                }
                     else{
                        lcd_gotoxy(0,0);lcd_putsf("OBAT TERSEDIA");
                        lcd_gotoxy(7,1); sprintf(k,"%d",jml);lcd_puts(k);
                     }
                }                  
             }  
         
        if(rx_buffer[12]=='5')
        {         
             if(obat_masuk==0){        
             LED_ID2=0;
             jml++; 
                if(jml==3 && (rx_buffer[12]=='0' || rx_buffer[12]=='3'))
                {        
                     lcd_clear(); 
                     lcd_gotoxy(0,0);lcd_putsf("RAK PENUH!!!");
                }
                 else {
                        lcd_gotoxy(0,0);lcd_putsf("OBAT TERSEDIA");
                        lcd_gotoxy(7,1); sprintf(k,"%d",jml);lcd_puts(k);
                    }
             }
               
       
             if(obat_keluar==0){
             LED_ID2=0;
             jml--; 
                if(jml==1 && (rx_buffer[12]=='0' || rx_buffer[12]=='3'))
                {    
                    lcd_clear();
                    lcd_gotoxy(0,0);lcd_putsf("RAK KOSONG!!!");
                }
                    else{
                        lcd_gotoxy(0,0);lcd_putsf("OBAT TERSEDIA");
                        lcd_gotoxy(7,1); sprintf(k,"%d",jml);lcd_puts(k);
                    }
                 }       
           }   
        
}
           
// Timer 1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
// Place your code here
        task_run();
}

// Declare your global variables here

void SCH_init(unsigned int periode)
{
       TCNT1=0;          // reset counter
       OCR1A=(unsigned long) periode*1000/64; // delayms
       TCCR1B=0x0D; //mode ctc
       TIMSK=0x10;
}

void main(void)
{
   
PORTA=0xff;
DDRA=0x00;

PORTB=0x00;
DDRB=0x00;

PORTC=0xff;
DDRC=0xff;

PORTD=0x00;
DDRD=0x00;

SCH_init(10);

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: Off
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x90;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x4D;

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

// LCD module initialization
lcd_init(16);

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


while (1)
      {
      // Place your code here
      i=getchar();
      sprintf(k,"ID Tag=%c",i,16);
      puts(k);
      };
}





1 komentar:

  1. mas bisa minta file skematik nya ,,, kebetulan ane juga punya tugas kuliah ini... mohon bantuanya
    kirim ke vens_id@yahoo.com

    BalasHapus