RFID okuma ve kimlik kontrollü giriş sistemi

Başlatan . Kağan, 18 Mart 2014, 11:31:49

. Kağan

  Merhaba arkadaşlar. RFID çip kimlik sistemlerine uzun zamandır ilgi duyuyorum fakat modüler bir kit bulamamıştım. İnternette gezerken http://www.priority1design.com.au/ sitesinde bir okuyucu buldum ve USB özellikli olanından Avustralya dan bir tane getirttim. Bu cihazın üzerinde http://www.priority1design.com.au/rfidread-mrw.pdf  pdf sini verdiğim modüler kit var. Bu kiti kullanarak bir röleyi kontrol etmek ve okutturulan kimlikleri kullanarak kapı açmak isterdim. Fakat programlama bilgim buna yeterli değil sanırım. RX TX uçlarından veri okuma, bu verileri PIC ile okuma ve PIC'e yazma konusunda bana yardım edermisiniz.

Şimdiden teşekkürler.

Mucit23

Usart ile haberleşeceksin. Usart haberleşme işini yerine oturttur ondan sonra aldığın modül ile konuşmaya çalış. Burada swordfish için yazılmış bir örnek var.
http://digital-diy.com/swordfish-example/169-swordfish-module-rfidbas-em4100.html
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

. Kağan

Merhaba Mucit;

Bir forumda http://www.picproje.org/index.php?topic=37985.0 bu konu üzerinde çalışmışsınız ve yazışmışsınız. Kullandığınız modül benimkine benzermi. Biraz daha açıklarmısınız konuyu.

Ben programcı değilim. PIC te komutları öğrenerek birşeyler yapmaya çalışıyorum. UART haberleşmenin sadece adını duydum. Sizin çalışmanızdan paylaşım yaparak yardımcı olursanız sevinirim.

Mucit23

Benim kullandığım modül Petmak firmasının ürettiği modüllerdendi. Yaptığım çalışma ticari olduğu için kod vermem mümkün değil ama mantık hepsinde aynı. Birçoğu Usart ile haberleşiyor. Fakat sadece kopyala yapıştır mantığıyla fazla bir ilerleme kaydetmeniz ne yazıkki mümkün değil. Emin olunki işin derinlerine inmeniz gerekiyor. En ilk başta Usart haberleşmesi hakkında temel seviyede bilgi edinerek işe başlamalısınız. Ardından RFID kartların hafıza yapısını öğrenmeniz işlerinizi çok kolaylaştırır. Daha sonra EM4100 isimli çipin manualini alıp kodlamanızı yapacaksınız.

İlla kod istiyorsanız  en son verdiğim linkte swordfish için kütüphane verilmiş. Ayrıca EM4100 çipinin protokolü hakkında bilgide verilmiş.
http://digital-diy.com/swordfish-example/169-swordfish-module-rfidbas-em4100.html
Swordfish basic tabanlı bir dil. Eğer orada verilen kütüphaneyi kullanacak olursanız yapmanız gereken tek şey oradaki kodları PicBasicde derlenecek şekilde elden geçirmek.

İlk başta dediğim gibi Usart kısmını halledin. Forumda Ete hocanın örnekleri var.  Çalışmalara başlayın takıldığınız yerlerde yardımcı oluruz. 
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

mesut25

araştırma yaparken bu konu hakkında güzel bir örnek buldum ve paylaşmak istedim

CMCON = 7   DEFINE OSC 4 'Set oscillator in MHzDEFINE LCD_DREG PORTB  'define port to LCDDEFINE LCD_DBIT 4      'RB4 RB5 RB6 RB7 displayDEFINE LCD_RSREG PORTA 'RS on portaDEFINE LCD_RSBIT 0     'RS on porta.0DEFINE LCD_EREG PORTA  'Enable on portaDEFINE LCD_EBIT 1      'Numero Enable  porta.1DEFINE LCD_BITS 4      ' DEFINE LCD_LINES 2     'lines 2 PAUSE 200                                   ' Stop 200msLCDOUT $FE,1                              'clearLcdout $FE,1,4                                ' -----[ Variables ]-------------------------------------------------------buf     VAR Byte(12)' RFID bytes buffertagNum VAR Byte ' from EEPROM tableidx     VAR Byte ' tag byte indexchar VAR Byte ' character from table' -----[ EEPROM Data ]-----------------------------------------------------Tag1 DATA "450052B6BC1A"Tag2 DATA "450052F2EB0A"' -----[ Initialization ]--------------------------------------------------HIGH portb.1 ' turn off RFID reader portb.1 is the reciever portLOW portb.2     ' lock the door!Low portb.3     ' Turn off LED' -----[ Program Code ]----------------------------------------------------Main:LOW portb.1     ' activate the readerSERIN2  portb.1, 396, [WAIT($0A)] ' STR buf\12] ' wait for hdr + IDHIGH portb.1 ' deactivate readerCheck_List:  FOR tagNum = 1 to 2 ' scan through known tags    FOR idx = 0 TO 11 ' scan bytes in tag    READ (((tagNum-1) * 12) + idx), char ' get tag data from table    IF (char <> buf(idx)) THEN Bad_Char ' compare tag to table    NEXT    GOTO Tag_Found   ' all bytes match!Bad_Char:       ' try next tag  NEXTBad_Tag:  tagNum = 0  FREQOUT porta.3, 1000 */ $100, 115 */ $100 ' groan  PAUSE 1000  GOTO MainTag_Found:IF tagNum = 1 then displayName1IF tagNum = 2 then displayName2GOTO MaindisplayName1:lcdout $FE, 1,"NAME for tag 1"    'assuming your display is on porta.0 @ 9600 baudpause 500                                      'Pause ,5 sec then clear displaygoto open_doordisplayName2:lcdout $FE, 1,"Name for tag 2"    'assuming your display is on porta.0 @ 9600 baudpause 500                                        'Pause ,5 sec then clear displaygoto open_dooropen_door:  HIGH portb.2 ' remove latch  High portb.3 ' Light LED  FREQOUT porta.2, 2000 */ $100, 880 */$100 ' beep  LOW portb.2 ' restore latch  Low portb.3 ' LED OFF  GOTO Main
                                                  http://www.picbasic.co.uk/forum/showthread.php?t=6963&page=2

. Kağan

#5
Merhaba,

Örneğe baktım inceledim. Hatta kodda bazı düzeltmeler yaptım.

. Kağan

Merhaba arkadaşlar,

Sonunda sparkfun dan sipariş ettiğim ID-12La reader geldi. Kodlarıda düzenledim ama aşağıdaki kodlarla kart okunduktan sonra hep yanlış anahtar hatası alıyorum. Acaba anahtar karşılaştıma yada anahtar okuma satırlarında bir yanlışlık mı var.

İncelermisiniz.

Şimdiden teşekkürler.

@ __config _XT_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF & _CP_OFFCMCON = 7  DEFINE OSC 4 'Set oscillator in 4 MHzTRISA=%00000000TRISB=%00000010PORTA=0:PORTB=0DEFINE LCD_DREG PORTB  'define port to LCDDEFINE LCD_DBIT 4      'RB4 RB5 RB6 RB7 to D4 D5 D6 D7 displayDEFINE LCD_RSREG PORTA 'RS BACAĞI portaDEFINE LCD_RSBIT 0     'RS BACAĞI porta.0DEFINE LCD_EREG PORTA  'Enable on portaDEFINE LCD_EBIT 1      'Numero Enable  porta.1DEFINE LCD_BITS 4      ' DEFINE LCD_LINES 2     '2 SATIR PAUSE 200              '200ms BEKLELCDOUT $FE,1           'LCD TEMİZLELcdout $FE,1,4lcdout $FE, 1,"  Copyright 2014"lcdout $FE, $C0,"***********"pause 2000lcdout $FE,1' -----[ Variables ]-------------------------------------------------------buf     VAR byte [12]' RFID bytes buffertagNum VAR Byte ' from EEPROM tableidx     VAR Byte ' tag byte indexchar VAR Byte ' character from table' -----[ EEPROM Data ]-----------------------------------------------------Tag1 DATA  "0002701059"Tag2 DATA  "450052F2EB0E" ' -----[ BAŞLATMA ]--------------------------------------------------high portb.0 ' turn off RFID reader portb.1 is the reciever portLOW portb.2     ' KAPIYI KİLİTLE!Low portb.3     ' LEDİ SÖNDÜR' -----[ PROGRAM KODU ]----------------------------------------------------lcdout $FE,1,"LUTFEN KARTINIZI"lcdout $FE, $C0,"      OKUTUNUZ   "pause 500 Main:high portb.3low portb.0     ' OKUYUCUYU AÇserin2 PORTB.1, 16468, [WAIT($02), str buf\12] ' Read 12 byte from ECO-125 high portb.0 ' OKUYUCUYU KAPATpause 500  '-------------------------------------------------                                Check_List:  FOR tagNum = 1 to 2       ' BİLİNEN KARTLARDAN BİRİNİ ARA    FOR idx = 0 TO 11 ' KARTIN BYTELARINI TARA    READ (((tagNum-1)*11 ) + idx), char ' TABLODAN VERİLERİ AL    IF (char <> buf(idx)) THEN Bad_Char ' VERİLERİ KARŞILAŞTIR    NEXT    GOTO Tag_Found ' TUM BAYTLARI EŞLEŞTİR!Bad_Char: ' DİĞER KARTI DENE  NEXT'-------------------------------------------------------------  Bad_Tag:  tagNum = 0  FREQOUT porta.3, 1000 */ $100, 115 */ $100 ' BUZZER SESİ  lcdout $FE, 1,"YANLIS ANAHTAR"  lcdout $FE, $C0,"TEKRAR DENEYIN"  pause 1000  lcdout $FE,1  GOTO Main'------------------------------------------------------------Tag_Found:IF tagNum = 1 then displayName1IF tagNum = 2 then displayName2GOTO MaindisplayName1:lcdout $FE, 1,"  name_1"    lcdout $FE, $C0, "GIRIS BASARILI"pause 1000       'BEKLE, 5 SN SONRA EKRANI TEMİZLEgoto kapi_acdisplayName2:lcdout $FE, 1,"  name_2"    LCDout $FE, $C0," GIRIS BASARILI"pause    1000    'BEKLE, 5 SN SONRA EKRANI TEMİZLEgoto kapi_ac   ' ETIKETE GİTkapi_ac:  HIGH portb.2      ' KİLİDİ AÇ  pause 500         ' 500 MS BEKLE  LOW portb.2 ' KİLİDİ KAPAT  Low portb.3 ' LEDİ SÖNDÜR  GOTO Main

Powered by EzPortal