HALÛK BAYRAM & AHMET FARUK UĞUR
ORTEM ELEKTRONİK - TUBITAK Marmara Araştırma Merkezi / GEBZE
2001-07-27
konu ile ilgili linkler:
konu ile ilgili kitap:
Mikroişlemciler ve 8051 Ailesi
Dr. Halûk Gümüşkaya
ALFA Yayınları
SMART KARTLI GÜVENLİK SİSTEMİ
Bu uygulamada kullanıcı bir tuş takımı aracılığı ile mikrokontrolörle iletişim kurmaktadır. Kullanıcı, arabirim aracılığı ile şifresini girmektedir ya da şifre değiştirmek isteğini kontrolöre bildirebilmektedir. Kontrolör tuş takımından okuduğu kodların anlamlarını çözerek kullanıcının isteği doğrultusunda gerekli işlemleri yerine getirebilmektedir. Tablo -1 de projenin gerçeklenmesi için gerekli olan malzeme tablosu verilmiştir.
Adet
Parça Tanım1 Kondansatör 10 mikroF Resetleme işleminde
2 Kondansatör 33pf Osilatör kondansatörleri
1 Kristal , 11.0592 Mhz Osilatör kristal
1 AT89C2051 Atmel MCU
3 LED
3 Direnç ,10K Tuş takimi pull-up dirençleri
1 Direnç ,10K Reset direnci
1 Sıra direnç, 8x10K Port-1 pull-up dirençleri
2 Direnç ,10K Port3.0 ve Port3.1 pull-up
1 Transistör ,BC337 Not kapısı
1 Direnç , 120K Not kapısı için
1 Direnç , 3.3K Not kapısı için
1 Smart kart okuyucu
1 Seri EEPROM, 93C46
1 4x3 tuş takimi Kullanıcı arabirimi
Tablo-1. Proje malzeme tablosu
Mikrokontrolöre yapılan bağlantılar:
Kullanılan osilatörün bağlantı şekli:
1. Kullanıcı Arabirimi (Tuş Takımı)
Tuş takımı matris biçiminde yerleştirilmiş olan tuşlardan oluşur. Smart kartli güvenlik sistemin uygulamasinda kullanilan tuş takimi 4 x 3 lük bir matris biçimindedir.
Yıldız Tuşu (*) : Kullanıcıların şifre değiştirme işlemlerinde, Yetkili kullanıcının smart kart iptal etme ve yeni smart kart oluşturma işlemlerinde kullanilir.
Diyez Tuşu (#) : Bu tuş sadece kullanicilarin sisteme şifrelerini girmelerinde kullanilir.
Tuş takiminin taranmasi işleminde, satirlara (0111), (1011), (1101) ve (1110) degerleri gönderilir. Sütunlar pull-up dirençleri vasitasiyla lojik 1 seviyesindedir. Tarama işlemindeki dört bit şunu saglar: 1.bit (LSB) 4 nolu satira , 4.bit (MSB) 1 nolu satira ve 2 ve 3 . inci bitlerde sirasiyla 3 ve 2 nolu satirlara gönderilir. Tarama işlemi sirasinda herhangi bir tuşa basilmasi durumda ilgili sütün lojik 0 seviyesinde digerleri ise lojik 1 seviyesinde kalacaktir. Eger hiç bir tuşa basilmamiş ise bu 4 satirin bagli oldugu kapilardan lojik 1 degeri okunur.
2. Seri EEPROM (FM93C46)
Sisteme kayıtlı olan tüm kullanıcılar dahili seri eeprom (93C46) da tutulmaktadır. Hafıza kapasitesi 256 byte dır. 93C46 ‘nın pin yapısı aşağıdaki gibidir.
FM93C46 nın komut seti:
Tüm işlemlerden önce WEN gerçekleştirilmelidir. Zamanlama diyagrami aşagidadir:
Yazdığımız programdaki WEN alt programı aşağıdadır:
EE_EWEN: CLR SK
MOV R2,EEPROM_SECIMI
CJNE R2, #001h, HARICI2
SETB CS_D
JMP ASAGI2
HARICI2: SETB CS_S
ASAGI2: MOV A,#00000001b ; Start bit
CALL SEND_EE ; Start biti gönderiliyor
MOV A,#00110000b ; Wen OpCode
CALL SEND_EE ; WEN opcode gönderiliyo
MOV R2,EEPROM_SECIMI
CJNE R2, #001h, HARICI3
CLR CS_D
JMP ASAGI3
HARICI3: CLR CS_S
ASAGI3: CLR DIO
RET
Okuma işleminin zaman diyagramı:
Buradaki işlemde ilk önce start biti ve opcode ile okunacak adresi gönderiliyor. Daha sonra 93C46 nin DO ucundan dummy biti verinin yollanmaya başlanacagi sinyalinden sonra 16 bitlik veri gönderilir. Yazdigimiz programdaki seri eeprom okuma alt programi şöyledir:
EE_READ:
CLR SK
MOV R2,EEPROM_SECIMI
CJNE R2, #001h, HARICI8
SETB CS_D
JMP ASAGI8
HARICI8: SETB CS_S
ASAGI8: MOV A,#00000001b ; start
CALL SEND_EE
MOV A,#10000000b ; Read OpCode
ORL A,EEPROM_ADRES ; Adresi al
CALL SEND_EE
SETB DIO
JB DIO,$ ; 0 okuyana kadar bekle ( dummy biti )
CALL REC_EE
MOV R0, EEPROMDAN_GELEN_VERI_H
MOV @R0, A ; D15...D8
CALL REC_EE
MOV R0, EEPROMDAN_GELEN_VERI_L
MOV @R0, A ; D7...D0
MOV R2,EEPROM_SECIMI
CJNE R2, #001h, HARICI9
CLR CS_D
JMP ASAGI9
HARICI9: CLR CS_S
ASAGI9:
CLR DIO
RET
Yazma işleminin zaman diyagrami:
Buradaki işlemde ilk önce start biti ve opcode ile yazilacak adres gönderiliyor. Daha sonra yazilcak 16 bitlik veri gönderilir. Yazma işleminin bittigini anlamak için DO ucu lojik sifir seviyesine düşer ve lojik bir seviyesine çikar.Yazdigimiz programdaki seri eeprom a yazma alt programi şöyledir:
EE_WRITE: CLR SK
MOV R2,EEPROM_SECIMI
CJNE R2, #001h, HARICI4
SETB CS_D
JMP ASAGI4
HARICI4: SETB CS_S
ASAGI4:
MOV A,#00000001b ; Start
CALL SEND_EE
MOV A,#01000000b ; Write OpCode
ORL A,EEPROM_ADRES ; Adresi al
CALL SEND_EE
MOV A,EEPROM_YAZ_VERI_H ; YAZILACAK VERİNİN YÜKSEK BYTE
CALL SEND_EE
MOV A,EEPROM_YAZ_VERI_L ; YAZILACAK VERİNİN DÜŞÜK BYTE
CALL SEND_EE
SETB DIO
MOV R2,EEPROM_SECIMI
CJNE R2, #001h, HARICI5
CLR CS_D
JMP ASAGI5
HARICI5: CLR CS_S
ASAGI5:
NOP
MOV R2,EEPROM_SECIMI
CJNE R2, #001h, HARICI6
SETB CS_D
JMP ASAGI6
HARICI6: SETB CS_S
ASAGI6:
NOP
NOP
NOP
JNB DIO,$ ; 1 okuyana kadar bekle
MOV R2,EEPROM_SECIMI
CJNE R2, #001h, HARICI7
CLR CS_D
JMP ASAGI7
HARICI7: CLR CS_S
ASAGI7:
CLR DIO
RET
FM93C46 ’nın hafıza haritası:
000H adresi : parametere bilgisi
Buranın en düşük biti tuş takımının parametresidir. En küçük değerlikli bit sıfır ise tuş takımının kullanılmaz. Eğer bir ise tuş takımının aktiftir..
001H-005H adresi : boş alan
006H adresi : Sistem numarası
Her bir mikrokontrolör sistemi için farklı bir numara verilir.
007H adresi : Sisteme kayıtlı kullanıcı sayısı tutulur. Kullanıcı sayısına yetkili kullanıcı dahil değildir.
008H adresi : :adresinden itibaren kullanıcı kayıtları gelmektedir. Yetkili kullanıcının id_no su 0001’ dir. Normal kullanıcılar 0002 nodan itibaren başlar. Kullanıcı kayıt içeriği:
ID_NO............. : Sisteme kayıtlı her smart kart için farklıdır.
SIFRE ............. : Şifre kriptolanmiş olarak saklanir.
GUVEN_PAR.. : Kart kopyalamalarına önlem olarak yapılmıştır.
Smart kart içeriği:
000H adresinden itibaren veriler yazılmaktadır.
1) ID_NO............. : Sisteme kayıtlı her smart kart için farklıdır.
2) SIFRE ............. : Şifre kriptolanmiş olarak saklanir.
3) GUVEN_PAR.. : Kart kopyalamalarına önlem olarak yapılmıştır.
4) SISTEM_NO.... : Sistem numarası
Sistemin İşleyişi:
1-) Sistemde başlangiçta kirmizi led yanar.
2-) Smart kart, okuyucuya yerleştirildikten sonra içerigi dahili seri eeprom ile karşilaştirilir. Karşilaştirma sonucu dogru ise parametre bilgisi bölümünden tuş takiminin aktif olup olmadigi kontrol edilir. Yanliş ise uyari verir.
3-) Tuş takimi iptal edilmiş ise belli bir miktar röle aktif olur ve sonra yeşil led yanar.
4-) Smart kart 3 saniye içerisinde alınmadığı takdirde ikaz vererek kullanıcının kartını unutması engellenmiştir.
5-) Kart çıkarıldığında sistem tekrar başa döner. Kırmızı led yanar.
6-) Tuş takimi aktif ise kullanicidan 4 haneli şifresi girilmesi ve artindan diyez tuşuna basilmasi beklenmektedir.
7-) Şifre girilip diyeze basildiktan sonra şifre kontrol edilir. Yanliş ise tekrar girilmesi istenir. Dogru girildiginde, röle aktif olup yeşil led yanar. 3 sn içerisinde kart alinmaz ise uyari verir. Kart alindiginda kirmizi led yanar. Yeşil led söner.
6-) Bu aşamalar esnasinda kartin yerinden çikarilmasi durumda sistem uyari vererek başlangica dönecektir.
Sistemin Diğer Fonksiyonları
1-) Şifre Degiştirme :
Kullanıcı kartını okuyucuya yerleştirdikten sonra 4 haneli şifresini girdikten sonra üç kere sıfır tuşuna ve yıldız tuşuna basar. Şifreyi ve opcode doğru olarak girmiş ise yeni şifre girilmesinin hazır olduğunu belirten bir ikaz verir. Yeni şifre girilip yıldız tuşuna basılır. Ve tekrar yeni şifre girilip yıldız tuşuna basılır. Girilen şifreler uyumlu ise yeşil ışık yanar ve kartın alınması beklenir. Kart 3 sn içerisinde alınmaz ise ikaz verir.
2-) Kart İptal Etme :
Kart iptal etme işlemi sadece tek bir kart ile yapilabilir. Her bir sistemde bir tane yetkili kart olmaktadir. Yetkili kart takildiktan sonra şifre girilir. Ve ardindan üç kere sifir tuşuna ve sonra yildiz tuşuna basilir. Girilen şifre ve opcode dogru ise iptal edilecek id_no girilmesi beklenir. id_no girilip yildiz tuşuna basilirsa tuş iptal olur ve yeşil led yanar. Artik o kart artik sisteme giremez.
3-) Kart Oluşturma :
Kart iptal etme işleminde de oldugu gibi , kart oluşturma işleminde de yetkili kart kullanilir. Yetkili kart takildiktan sonra şifre girilir. Ve ardindan iki kere sifir tuşuna , bir kere bir tuşuna ve sonra yildiz tuşuna basilir. Girilen şifre ve opcode dogru ise yeşil işik yanar ve yetkili kartin çikarilip yeni bir kartin takilmasini bekler. Yetkili kart çikarildiginda yeşil işik söner ve kirmizi işik yanar. Yeni kart takildiginda yeşil işik yanar ve artik kart oluşturulmuştur. Oluşturulan yeni kartın şifresi 1111 dir.