Till KTH:s startsida Till KTH:s startsida

Visa version

Version skapad av William Sandqvist 2015-03-28 22:20

Visa < föregående | nästa >
Jämför < föregående | nästa >

Smartcard utrustningen

Laborera med SmartCard

pdf SmartCardLab.pdf

GoldCard = PIC16F84

smartcardcontact.gif     goldcard.gif

GoldCard är ett blankt SmartCard som är bestyckat med en picprocessor 16F84A ( och ett extra flash-minne ).
En typisk tillämpning för ett sådant SmartCard kan vara som medlemskort i en förening eller klubb. Korten kan tex. programmeras att ge tillträde till olika lokaler eller resurser, vissa dagar, eller för en viss tid eller för ett antal gånger. Bara fantasin sätter gränserna.
Samma teknik används i bankernas kort, men då gäller naturligtvis helt andra krav på säkerhet. ( De har en "secure" processor som inte avslöjar vilken kod den kör - alla instruktioner förbrukar exakt samma ström. Man kan inte heller komma åt att studera chippet eftersom ett nät av processorns "ledningstrådar" omsluter det som en "brynja".  )

smartcard.gif
Kopplingsschema för ett GoldCard med PIC16F84A och ett Flash-minne 24LC16. Som framgår av kopplingsschemat kan man bara nå Flash-minnet via processorn, det är inte anslutet till någon kontaktyta.


Programmering av SmartCard

Vill man programmera ett GoldCard, behöver man en SmartCard hållare/kontakt med en anslutningskabel för icp02-kretsprogrammeraren. Använd skruvmejseln för att försiktigt bända loss programmerar-kontakten från kopplingsdäcket för att ansluta den till SmartCard-hållaren. Planera ditt arbete så att Du inte behöver flytta icp02-kretsprogrammeraren mellan utrustningarna allt för ofta.
Observera att det är processorn 16F84A som sitter i SmartCardet. Välj Check Communication under Tools menyn i PICKit2-programmet varje gång Du byter mellan processorerna så kommer programmet att identifiera rätt processor.

Includefilen 16F84A.h kan kopieras från kompilatormappen ... PK2proj\Cc5c\16F84A.h om den inte redan finns bland de andra filerna i din arbetsmappWork. ( kan även laddas ned här  h.gif16F84A.h )

Smartcardhållare med PICKit2-kontakt

icp02v2small.gif cardprogrammerx.jpg  goldcardx.gif

Till labutrustningen hör två SmartCard, de är från början programmerade med programmet  smartkey.c, ( smartkey.hex ).

smartkey.c (  hex.gif  smartkey.hex )


Labuppkoppling med SmartCard-läsare

smartcardbreakout.gif

Breakoutboard


Labuppkoppling med SmartCard-läsare och seriekommunikation med PICKit2 UART Tool. Seriekommunikationsledningarna har kopplats ihop med en diodgrind till en kommunikations-mixer. OBSERVERA hur kristalloscillatorns enda skarpa hörn orienterats på kopplingsdäcket.

Eftersom SmartCard'et inte har någon egen kristall måste man tillföra klockpulser utifrån. Det sker enklast med en färdig 4 MHz kristalloscillator.
Ett SmartCard har åtta kontaktytor, men i praktiken har man som användare bara tillgång till en enda pinne C7 (RB7). De övriga kontaktytorna används som matningsspänning, jord, reset, och klockpulser.

Kopplings-schema

  • who is it?   -   me, please open

Labutrustningen består av en PIC16F690, "låset", och ett 16F84A SmartCard (Gold Card), "nyckeln". Med nyckeln öppnar man låset = tänder lysdioden. Lås och nyckel kommunicerar med varandra genom seriekommunikation, två dioder bildar en eller-funktion för kommunikationen, en com-mixer. Med den kan man "följa" kommunikationen mellan lås och nyckel med PICKit2 Uart Tool, och om inte nyckeln svarar alls (felvänt kort), kan man själv skriva rätt svar med datorns tangentbord.
Detta gör det möjligt att felsöka systemet.

PIC 16F690 på kopplingsdäcket är från början programmerat med programmet smartlock.c ( smartlock.c ).

smartlock.c ( smartlock.hex )

Det går att direkt prova låset med de två nycklarna, och att följa kommunikationen med UART Tool. Man kan också själv skriva nyckelns fras  me, please open.


Uppgifter

Med utrustningen går det att göra många olika uppgifter som illustrerar varierande användningsområden. Det finns även möjlighet att koppla till ytterligare komponenter om man så önskar. Nedan listas några idéer, men Du har säkert själv en ändå bättre idé.

  • Låset ska öppna för två olika egna "nycklar", fraser, men inte för andra kort.
  • Varje gång låset öppnat ska kortet räkna ned en variabel i "icke flyktiga minnet". När variabeln nått 0 nekas tillträde.
  • Kommunikationen mellan lås och nyckel ska vara krypterad. Varje gång är det olika frågefras från låset och olika svarsfras från nyckeln.
  • Man kan klara sig utan klockoscillatorn till SmartCardet!
    Låset, PIC16F690 har en pinne CLOCKOUT där fclk/4 kan finnas tillgänglig. För att använda den klocksignalen måste man naturligtvis även höja processorns egen klockfrekvens fyra gånger, och sedan ta hänsyn till detta i programmet. Det gäller seriekommunikation och delay-funktioner, och AD-omvandlaren (om den används).
    - Kanske en utmaning?

Teman

  • Stugbyn. Nyckeln är laddad med giltighetsdatum och låser bara upp vid rätt dagar.
  • Bilpoolen. Låset registrerar körtid (= hur länge nyckeln sitter i). Lagrar detta i ickeflyktiga minnet.
  • Orienteringstävlingen. Stämpla (icke flyktiga minnet) nyckeln med de "kontroller" som besökts.
  • Lösenorden. Kortet innehåller dina lösenord. Ge kortets lösenord, sedan ange en siffra och kortet sänder ut motsvarande av dina lösenord.


Programexempel för 16F690
password_bb.c     countdown_bb.c    

Hur genererar man slumptal?

Programexempel för 16F84A SmartCard
cardhello.c     cardmemo.c     cardCntDn.c    


Var köper man SmartCard?

Hansa elektronik