VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV AUTOMATIZACE A MĚŘÍCÍ TECHNIKY FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF CONTROL AND INSTRUMENTATION
PŘÍSTUPOVÝ TERMINÁL PRO KARTY TYPU MIFARE ACCESS TERMINAL FOR THE MIFARE CARDS TYPE
BAKALÁŘSKÁ PRÁCE BACHELOR’S THESIS
AUTOR PRÁCE
ONDŘEJ KUBÍČEK
AUTHOR
VEDOUCÍ PRÁCE SUPERVISOR
BRNO 2008
Ing. ZDENĚK BRADÁČ, Ph.D.
Anotace: Tato bakalářská práce se zabývá návrhem zapojení a programového vybavení pro aplikaci mikroprocesorem řízeného přístupového terminálu založeného na standartu Mifare. Kromě samotné technologie Mifare je v první části práce představena technologie RFID z níž technologie Mifare vychází. Uvedena je její stručná historie, využití a princip činnosti. Dále práce obsahuje vlastní popis řešení hardwarové a softwarové části návrhu mikroprocesorem řízeného přístupového terminálu, jehož zkonstruování a naprogramování bylo hlavním cílem této práce. Podrobněji popsané jsou i některé pro aplikaci klíčové prvky.
Klíčová
slova:
AXA020MF,
Bezkontaktní
mikrokontrolér MC9S08GT60, RFID
identifikace,
FTDI,
Mifare,
Annotation This work deals with the design and integration software for the application of microprocessor-driven access terminal based on standard Mifare. In addition, the technology Mifare is the first part of the work presented RFID technology which is based on Mifare technology. Introduce its brief history, use and principle. Further work includes a description of their own solutions to hardware and software parts of the proposal microprocessor-driven access terminal, which construct and programming was the main objective of this work. In more details are described some of the key elements of the application.
Keywords: AXA020MF, Contactless Identification, FTDI, Microcontroller MC9S08GT60, Mifare, RFID
Bibliografická citace KUBÍČEK, Ondřej. Přístupový terminál pro karty typu Mifare. Brno: Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií, 2008. 51 s., 6 příloh. Ing, Zdeněk Bradáč Ph.D.
Prohlášení „Prohlašuji, že svou diplomovou práci na téma "Přístupový terminál pro karty typu Mifare" jsem vypracoval samostatně pod vedením vedoucího diplomové práce a s použitím odborné literatury a dalších informačních zdrojů, které jsou všechny citovány v práci a uvedeny v seznamu literatury na konci práce. Jako autor uvedené diplomové práce dále prohlašuji, že v souvislosti s vytvořením této diplomové práce jsem neporušil autorská práva třetích osob, zejména jsem nezasáhl nedovoleným způsobem do cizích autorských práv osobnostních a jsem si plně vědom následků porušení ustanovení § 11 a následujících autorského zákona č. 121/2000 Sb., včetně možných trestněprávních důsledků vyplývajících z ustanovení § 152 trestního zákona č. 140/1961 Sb.“
V Brně dne :
Podpis:
Poděkování
Děkuji tímto ……………………………….…….. za cenné připomínky a rady při vypracování diplomové práce.
V Brně dne :
Podpis:
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
OBSAH 1. ÚVOD .................................................................................................................9 2. ÚVOD DO TECHNOLOGIE RFID ..............................................................10 2.1 Historie identifikace pomocí rádiových vln....................................................10 2.2 Princip činnosti ...............................................................................................11 2.2.1 Pasivní tag.....................................................................................................12 2.2.2 Aktivní tag ....................................................................................................12 2.3 Využití technologie a výhledy do budoucna...................................................13 3. MIFARE...........................................................................................................15 3.1 Mifare IC S50 .................................................................................................16 3.1.1 Základní charakteristika karet IC S50 ..........................................................16 3.1.2 Organizace paměti ........................................................................................16 3.1.3 Proces identifikace........................................................................................17 3.1.4 Příznaky přístupu ..........................................................................................18 4. CHARAKTERISTIKA TERMINÁLU .........................................................20 4.1.1 Konstrukční uspořádání ................................................................................20 5. POPIS ZAPOJENÍ ..........................................................................................22 5.1 Napájení ..........................................................................................................22 5.2 Řídící část........................................................................................................24 5.2.1 Základní charakteristika mikrokontroléru ....................................................25 5.2.2 Přehled portů mikrokontroléru a s nimi souvisejících integrovaných periferních modulů ..........................................................................................................25 5.3 Připojení klávesnice ........................................................................................26 5.4 Zapojení obvodu AXA020MF pro čtení dat z karet .......................................27 5.5 Připojení obvodu FT232R pro komunikaci s PC ............................................29 5.6 Připojení LCD displeje ...................................................................................30 6. POPIS PROGRAMOVÉHO VYBAVENÍ....................................................33 6.1 Program mikrokontroléru................................................................................33 6.1.1 Inicializace a popis v aplikaci použitých registrů.........................................33 6.1.2 Obsah nekonečné smyčky.............................................................................39 6.1.3 Komunikační protokol čtečky Mifare...........................................................40
5
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
6.1.4 Přehled funkcí používaných v programu mikrokontroléru...........................41 6.2 Popis programu v PC ......................................................................................42 6.2.1 Datové položky struktury uživatel................................................................42 6.2.2 Třída CListCtrl..............................................................................................43 6.2.3 Popis uživatelského rozhraní ........................................................................44 7. ZÁVĚR .............................................................................................................48 8. LITERATURA ................................................................................................49
6
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
SEZNAM OBRÁZKŮ Obrázek 2-1 Ukázka RFID Smart label [3] ............................................................... 13 Obrázek 2-2 schéma principu přenosu u Mifare i RFID [7] ..................................... 14 Obrázek 3-1 Schéma uspořádání paměti karet IC S50 [7] ........................................ 17 Obrázek 5-1 Zapojení napájecí části ......................................................................... 22 Obrázek 5-2 Ochrana proti přetížení......................................................................... 23 Obrázek 5-3 Připojení klávesnice .............................................................................. 27 Obrázek 5-4 Připojení Mifare čtečky AXA020MF..................................................... 28 Obrázek 5-5 Připojení obvodu FT232R pro komunikaci s PC .................................. 29 Obrázek 5-6 Znaková sada řadiče HD44780 [18] .................................................... 31 Obrázek 6-1 Uživatelské rozhranní............................................................................ 45 Obrázek 8-1 Schéma zapojení.................................................................................... 53 Obrázek 8-2 Deska plošných spojů(vrchní část)........................................................ 54 Obrázek 8-3 Deska plošných spojů (spodní část) ...................................................... 55 Obrázek 8-4 Osazovací schéma (vrchní strana) ........................................................ 56 Obrázek 8-5 Osazovací schéma (spodní strana)........................................................ 57
SEZNAM TABULEK Tabulka 3-1 Práva pro operaci se zavaděčem [10]................................................... 18 Tabulka 3-2 Práva pro operace s daty [10]............................................................... 19 Tabulka 5-1 Popis vývodů displeje CM200400 [17] ................................................. 30 Tabulka 5-2 Přehled operací [17] ............................................................................. 32 Tabulka 6-1 Registr KB1SC [12]............................................................................... 34 Tabulka 6-2 Registr SCI1S1 [12]............................................................................... 36 Tabulka 6-3 Registr SCI1C2 [12] .............................................................................. 37 Tabulka 6-4 Registr TPM1SC [12] ............................................................................ 37 Tabulka 6-5 Možná nastavení dělícího poměru prescaleru [12]............................... 38 Tabulka 6-6 Ukázka komunikačního protokolu [14] ................................................. 40
7
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
SEZNAM ZKRATEK A/D
Analog to Digital converter
ASCII
American Standard Code for Information Interchange
BDC
Background Debug Controller
BDM
Background Debug Modulle
COM
Computer Output Microfilm
EEPROM
Electronic Erasable and Programmable Read Only Memory
GND
GrouND
IFF
Identify Friend or Foe
IIC
Inter Integrated Circuit
IRQ
Interrupt ReQuest
ISM
Industry Science and Medical
KBI
KeyBoard Interrupt
LCD
Liquid Crystal Display
LED
Light Emitting Diode
PC
Personal Computer
PWM
Pulse Width Modulation
RAM
Random Access Memory
RFID
Radio Frequency IDentification
RXD
Receive Data
SCI
Seriál Communication Interface
SPI
Serial Peripheral Interface
TPM
Timer/PwM
TXD
Transmitt Data
UART
Universal Asynchronous ReceiverTransmitter
USB
Universal Serial Bus
8
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
1.
ÚVOD
Cílem této práce je navržení hardwarového a softwarového řešení pro mikroprocesorem řízený přístupový terminál pracující s kartami
založenými na
standardu Mifare. Tento standart, používaný pro bezkontaktní rádiovou identifikaci, v poslední době nachází čím dál větší uplatnění hlavně v aplikacích s vyššími nároky na bezpečnost. Úkolem terminálu je rozhodnout na základě dat získaných od uživatele o povolení, případně zamítnutí přístupu pro tohoto uživatele. Data od uživatele mají podobu identifikačního čísla získaného z přístupové Mifare karty nebo případně i podobu hesla zadaného z připojené číselné klávesnice. Nastavitelné je vyžádání dat z obou zdrojů pro vybrané uživatele. Zda byl přístup povolen nebo zamítnut se zobrazí na LCD displeji, kromě této indikace výsledku identifikace je pak k terminálu připojeno relé, jež slouží jako simulace zámku dveří. Pokud je přístup povolen na displeji se zobrazí například „Přístup povolen“ a relé na určitý časový okamžik sepne. Na PC, k němuž bude terminál připojitelný, bude realizován parametrizační software pro terminál. Tímto softwarem bude možné terminálu nastavit nové uživatele, kterým bude po prokázání se zadaným identifikačním číslem nebo heslem povolen přístup. Z tohoto softwaru by rovněž mělo být možné nastavit dodatečná data k zapsání na kartu.
9
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
2.
ÚVOD DO TECHNOLOGIE RFID
RFID (Radio Frequency Identification), je další generací identifikátorů navržených pro (původně) identifikaci zboží, která navazuje na technologii čárových kódů. Jedná se o moderní technologii využívající radiových vln. RFID se dočkalo masivnějšího využití z důvodu potřeby získání technologie, která umožní identifikovat a získat informace o objektu na větší vzdálenost bez přímé viditelnosti a poskytnout získané informace okamžitě k dalšímu zpracování. Zpočátku technologii bránila v rozsáhlejším komerčním využití její finanční náročnost. V poslední době však cena za tag výrazně poklesla a očekává se, že se zlepšujícími se postupy výroby bude cena dále klesat. RFID tag, tak bude brzy možné umístit do každého výrobku, kde to bude považováno za vhodné a urychlí to proces identifikace. Navzdory těmto faktům se neočekává přímé vytlačení zastaralejších technologií identifikace, jako například technologie čárových kódů, technologií RFID. Tyto technologie se budou spíše navzájem doplňovat a nejvýhodněji se jeví využití kombinace obou. 2.1
HISTORIE IDENTIFIKACE POMOCÍ RÁDIOVÝCH VLN
Prvopočátky technologie RFID se nacházejí v dobách 2. světové války, kdy obě strany používající radar, byli postaveny před problém, jak rozlišit vlastní letadla od letadel nepřátelských. Britové vynalezli systém pojmenovaný IFF (Identify Friend or Foe), první zařízení, jež by se dalo považovat za RFID identifikační systém. Do každého svého letadla nainstalovali vysílač, který po zachycení signálu z radaru, začal odesílat odpověď jež byla zachycena základnou na zemi. Na tomto principu fungují aktivní RFID tagy v zásadě dodnes (vyšlou odpověď po zachycení signálu od čtecího zařízení)[1]. Během 50. a 60.let se vědci snažili najít způsob jak technologii využít pro vzdálenou identifikaci objektů. Některé společnosti zatím začali uvádět do praxe bezpečnostní zařízení, jež rozlišovala, zda za dané zboží bylo zaplaceno či nikoli. Pokud nebyl tag ve zboží deaktivován u pokladny, byl zaznamenán bezpečnostním rámem u východu. Tato technologie se používá dodnes. O první patent, na zařízení využívající RFID technologi, zažádal v roce 1973 Mario W. Cardullo. Jednalo se o
10
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
aktivní tag s přepisovatelnou pamětí. Ve stejný rok Charles Walton získal patent na systém bezkontaktního odemykání dveří za pomoci přenositelného zařízení, jež odesílalo odpověď po detekci radiového signálu vyslaného čtečkou umístěnou na dveřích[2]. Na rozvoji RFID technologie pracovala také americká vláda. Vědecká laboratoř z Los Alamo pracovala na projektu vyvinutí systému pro sledování pohybu radioaktivního materiálu. Výsledný koncept zahrnoval radiový transpondér umístěný v každém barelu a čtečky umístěné na kontrolních bodech. Pokud se barel ocitl v dosahu čtečky, tak ta zaznamenala jeho sériové číslo. Po opuštění laboratoří Los Alamo založila skupina zaměstnanců vlastní společnost. Vývojem systému pro automatické placení mýtného, které pracovalo v podstatě na stejném principu jako systém pro sledování barelů s radioaktivním materiálem, se dočkala technologie většího průniku do komerční sféry[2]. 2.2
PRINCIP ČINNOSTI
Pro RFID identifikaci jsou klíčové dva prvky, čtečka a tag. Čtečka je zařízením pro vysílání signálu tagům a příjmání signálu od tagů. Tag je označení pro nosič, ten je nejčastěji plastový o různých velikostech, obsahující samotný elektronický čip. Kromě čipu tag ještě zpravidla obsahuje smyčku vodiče, jež slouží jako anténa, případně baterii. Proces identifikace pak probíhá mezi těmito dvěma prvky. Tag odešle čtečce své unikátní identifikační číslo a ta ho předá k dalšímu zpracování. Identifikace pak proběhne porovnáním identifikačního čísla z tagu, z čísly v paměti nadřazeného systému, příslušejícím jednotlivým identifikovaným objektům. Každý čip v sobě obsahuje pro každý čip unikátní 96-bitové identifikační číslo a zpravidla i několik kilobyte paměti, v nichž mohou být uloženy dodatečné informace o identifikovaném objektu (kde byl vyroben, jak má být skladován apod.). Hodnota identifikačního čísla je nastavena při výrobě a nelze ji nijak změnit. K přenosu informace dochází pomocí radiových vln. Využívají se frekvence 125kHz, 134kHz a 13,56Mhz. V některých státech se používají i další frekvence např. 868MHz (Amerika) a 915MHz (Evropa)[3]. K přenosu dat se využívá amplitudové modulace, tag sám pak pouze přijatou nosnou vlnu s různou intenzitou odráží, čímž mění její
11
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
amplitudu[4]. Rozdělování identifikačních čísel výrobcům je prováděno centrálně v jednotlivých řadách. 96 bitové číslo má nabídnout dostatečný prostor pro 268 miliónů výrobců, z nichž každý může vyrábět 16 miliónů výrobků a pro každý výrobek je k dispozici 68 miliard čísel[3]. Tagy se dělí podle toho, zda-li jsou aktivní nebo pasivní. 2.2.1 Pasivní tag Skládá se ze samotného čipu a smyčky vodiče tvořící anténu. Účelem antény je vysílání a příjmání informací a vzhledem k tomu, že pasivní tag neobsahuje žádný vlastní trvalý zdroj elektrické energie, slouží i jako zdroj napájení. V případě kontaktu s tagem je čtečkou vyslán elektromagnetický signál o frekvenci, která odpovídá rezonanční frekvenci antény tagu. Signál je využit k dočasnému napájení tagu. Přijatou energií se nabíjejí vnitřní kondenzátory a dočasně slouží jako baterie. Po této události se elektronika obsažená v tagu probudí. Vyhodnotí čtečkou vyslaná data a odešle zpět čtečce identifikační číslo, případně další informace obsažené v paměti tagu[4]. 2.2.2 Aktivní tag Tento druh tagu je plně napájen z vlastní integrované baterie. Není tak závislý na energii dodávané čtečkou a může vysílat, případně příjmat nezávisle na ní. Vysílání tak může například nastat v závislosti na nějaké události. Z výrobního hlediska je tento druh tagu dražší a výrobně náročnější, proto se využívá méně často. Má mnohem větší dosah než pasivní tag, je schopen komunikovat se čtečkou až na vzdálenosti desítek metrů[4].
Kromě pasivních a aktivních tagů, jež se objevují nejčastěji, existují ještě polopasivní (či poloaktivní) tagy. Ty již sice obsahují zdroj energie v podobě baterie, ta však slouží pouze k napájení elektronických obvodů, u nichž je nezbytné, aby pracovali přestože nenastal kontakt se čtečkou. Komunikace pak opět čerpá energii ze signálu vyslaného čtečkou[4].
12
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
2.3
VYUŽITÍ TECHNOLOGIE A VÝHLEDY DO BUDOUCNA
Nejčastější využití technologie RFID nachází v logistice při sledování a rozlišování materiálu ve skladech, ve výrobě a při přepravě. RFID čtečky umožňují identifikovat několik desítek až stovek objektů za sekundu a tím proces identifikace výrobku velmi urychlují v porovnání se zastaralejšími metodami. Cena tagu v dnešní době stále není natolik příznivá, aby se vyplatilo vkládat RFID tag do každého výrobku. RFID se tak hlavně vkládá do kontejnerů, palet a výrobků, u nichž výrobní náklady několikanásobně převyšují cenu tagu[5]. V blízké době se, díky zlepšující se technologii výroby a tím pádem klesajícím cenám za tag, očekává výraznější používání tagů ve výrobcích, kde by to dříve bylo značně neekonomické[6]. Zejména v potravinářské oblasti, kde vzhledem k reguli Evropké unie platné od roku 2005, vzniká výrobcům povinnost zavést metodiku, díky které musí být jimi vyrobený produkt zpětně vyhledatelný[6]. Musí být možné zjistit původ výrobku, suroviny z nichž je složen i jeho dosavadní cestu na místo určení( kde byl překládán, balen apod.). Za tímto účelem se využívají speciální etikety, takzvané RFID Smart Labels [6] viz.obrázek níže.
Obrázek 2-1 Ukázka RFID Smart label [3] Vzhledem k tomu že pro získání údajů z RFID tagu je zapotřebí k tomu určené čtečky, jež nemusí být vždy k dispozici, mají tyto etikety vrchní stranu potištěnu údaji v podobě klasicky čitelného textu, nebo běžně rozšířeného čárového kódu[6]. Díky tomu tyto etikety lze využít v koncových prodejnách při styku výrobku se zákazníkem, ten si základní údaje z této etikety může prostě přečíst. Pro prodejce, nebo případnou kontrolu, jsou pak určeny hlavně údaje uložené v RFID
13
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
čipu etikety (jak má být výrobek skladován, doba trvanlivosti atd.). V případě RFID Smart Labels dochází k symbióze mezi technologií RFID a staršími metodami identifikace. Tyto metody se vzájemně doplňují a nelze říct, že by RFID mohlo v této oblasti zcela nahradit například klasickou vizuální identifikaci. Dalšími významnými oblastmi použití pro RFID jsou ID karty pro přístup do objektů, v tiketních systémech pro přístup na stadiony nebo kulturní akce, značkování zvířat, nebo implementace do pasů. Mnoho měst pak využívá RFID technologii pro platby za služby hromadné dopravy[1]. Současným trendem a velkým příslibem do budoucna je využití technologie RFID pro senzory. Ty mohou být použity pro monitorování teploty, vlhkosti případně chemického složení. Jako RFID senzor může sloužit, z důvodu potřeby vysílat nezávisle na kontaktu se čtečkou, pouze aktivní tag[4]. RFID senzory mohou být v provedení miniaturního tagu, svou velikostí se blížící klasickým identifikačním tagům, nebo ve velkém provedení, kdy měřící přístroj využívá RFID čistě jako nástroj komunikace[4]. RFID senzory nacházejí uplatnění ve farmaceutických a potravinářských provozech. Zde je nutné monitorovat vliv okolního prostředí na produkty a RFID senzory se vzhledem k malým rozměrům (např. jako etiketa výrobku) a vysoké flexibilitě k těmto účelům velmi hodí.
Obrázek 2-2 schéma principu přenosu u Mifare i RFID [7]
14
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
3.
MIFARE
Poprvé byla tato technologie představena firmou Mikron v roce 1994. Mifare je založeno na technologii RFID a princip její činnosti je stejný jako v případě RFID, až na pár níže zmíněných vylepšení. V současné době patří Mifare firmě Phillips. Na celém světe se dodnes prodalo přes 5 miliónů čteček a 500 miliónů čipových karet[8]. Výhodou Mifare standartu oproti klasickému RFID je, kromě podstatně větší velikosti paměti, vyšší úroveň zabezpečení. Veškerá komunikace probíhající mezi čtečkou a kartou se šifruje. Navíc pro jakoukoli operaci s daty, která jsou na kartě uložena, je potřeba prokázat znalost některého z 6-bytových klíčů na kartě uložených. Mifare je proto předurčeno k použití v oblastech s vyššími nároky na bezpečnost, jako například kontrola docházky na pracoviště, platba za služby a podobné. Na rozdíl od RFID Mifare tagy obsahují pouze 32-bitové identifikační číslo. Pro přenos dat se využívá frekvence 13.56MHz, jež přísluší do volného ISM pásma[9]. V současnosti Phillips nabízí tyto čtyři typy: • Mifare Classic • Mifare DESFire • Mifare ProX • Mifare Ultralight Karty Mifare Classic a Ultralight se hodí v podstatě pouze k uchovávání dat. Mohou mít několik kB paměti, v případě verze Ultralight pouze 512 Bytů a to navíc bez jakékoli ochrany. Tyto karty jsou levné a díky tomu velmi rozšířené. Karty DESFire a ProX nabízejí povětšinou silnější ochranu a větší velikost paměti pro uchovávaná data. Jejich hlavní výhodou je však vyspělejší výpočetní jednotka, jež je schopná vykonávat složitější operace v závislosti na použitém software. Tyto karty tak mohou sami vykonávat určité operace zpracování dat[8].
15
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
3.1
MIFARE IC S50
Vzhledem k tomu, že přístupový terminál, jejž popisuje tato práce, využívá Mifare karty pouze pro čtení sériového čísla z karet, postačí karty specifikace Mifare Classic. Konkrétně se jedná o typ Mifare IC S50. 3.1.1 Základní charakteristika karet IC S50 • Komunikační rozhraní odpovídající normě ISO/IEC14443A což zahrnuje: Bezkontaktní přenos dat Žádný vlastní zdroj elektrické energie Frekvence přenosové vlny 13.56 MHz Rychlost přenosu dat 106 kbit/s Antikolizní mechanizmus Kontrolu přenesených dat pomocí paritního bitu, bitového součtu a 16bitového CRC. • Šifrovaný přenost dat mezi čtečkou a kartou. • EEPROM paměť o velikosti 1 kB, rozdělená do sektorů s možností různých přístupových klíčů pro každý sektor. • Až 100 000 přepsání paměti. • Umožňuje operace zápis dat na kartu a čtení dat z karty, inkrementace a dekrementace hodnoty na kartě uložené. 3.1.2 Organizace paměti Karta obsahuje 1kB EEPROM paměti, který je rozdělen do šestnácti sektorů, z nichž každý má čtyři 16-bytové bloky. Celkem karta obsahuje 1024 bytů paměti. První blok (značí se blok 0) prvního sektoru (značí se sektor 0) se nazývá tovární blok. Je nastaven při výrobě a je chráněn proti zápisu. V prvních čtyřech bytech je uloženo unikátní 32-bitové identifikační číslo. Pátý byte slouží jako kontrolní. Zbylých jedenáct bytů tohoto sektoru pak obsahuje tovární data[10]. Každý čtvrtý blok (značený blok 3) sektoru se pak nazývá zavaděč sektoru. Obsahuje dva 6-bytové klíče A a B a tři přístupové byty, pro každý blok sektoru jeden, které specifikují jaké operace mohou být s daty prováděny. Devátý byte může obsahovat uživatelská data. Klíč B je nepovinný a jemu vyhrazených šest bytů tak
16
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
může obsahovat uživatelská data. Každý sektor má vlastní hodnoty klíčů A a B, opravňující k přístupu k datům sektoru. Díky tomu jsou od sebe jednotlivé sektory kryptograficky odděleny a karta může být použita pro vícero aplikací, kdy každá má prostředky pro přístup k jiným sektorům. Všechny zbylé bloky pak je možno využít pro ukládání řetězců, případně jako čítače libovolných jednotek. Ve výsledku je tak v sektorech jedna až patnáct pro uložení dat k dispozici 49 až 55 bytů pro každý sektor v závislosti na tom, jestli je použit klíč B. Pouze v prvním sektoru ,označeném sektor 0 obsahujícím tovární blok , je k dispozici pro data jen 33 až 39 bytů. Ve výsledku je tak k dispozici pro data na kartě 864 bytů[10]. Obrázek 3-1 zobrazuje celkové schéma organizace paměti.
Obrázek 3-1 Schéma uspořádání paměti karet IC S50 [7]
3.1.3 Proces identifikace Komunikace začíná po probuzení karty z klidové stavu odpovědí na volání čtečky. Ta ho vyslala všem kartám v dosahu. Poté dojde k průběhu antikolizní smyčky, tou je karta vybavena, aby v případě, že je v dosahu více karet, mohla navázat komunikaci pouze s jednou z nich. Karty které nejsou vybrány se vrací do
17
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
stavu spánku a čekají až s nimi čtečka naváže kontakt. Pokud je karta vybrána, vrací čtečce odpověď na vybrání, v případě karty IC S50 to je kód 08h, který specifikuje typ karty[10]. Poté dojde k procesu ověření pravosti. Aby se čtečka dostala ke konkrétnímu bloku dat, musí prokázat znalost klíče k příslušnému sektoru. Proces ověřování probíhá ve třech krocích. Jakákoliv operace s daty je povolena až po úspěšném proběhnutí tohoto ověřovacího procesu. V prvním kroku čtečka pošle žádost k přístupu ke konkrétnímu sektoru a vybere jemu odpovídající klíč. Karta si přečte klíč a přístupová práva ze zavaděče. Poté odešle čtečce náhodné číslo. V druhém kroku čtečka vytvoří odpověď za pomoci klíče a zaslaného čísla, tu připojí k vlastnímu náhodnému číslu a odešle kartě. Ve třetím kroku karta odpověď od čtečky ověří porovnáním, zda náhodné číslo, které vyslala v prvním kroku, je obsaženo v odpovědi čtečky. Pokud ano, pak vytvoří novou odpověď pro čtečku, v níž je opět obsaženo náhodné číslo z prvního kroku i náhodné číslo, jež odeslala čtečka v druhém kroku. Ta přijatou zprávu opět ověří na základě porovnání, zda odpověď obsahuje obě náhodná čísla. Po úspěšném proběhnutí tohoto procesu, je možno provádět žádané operace s daty[11]. 3.1.4 Příznaky přístupu Příznaky přístupu jsou pro každý sektor uloženy v sedmém, osmém a devátém bytu jeho zavaděče. Jsou tvořeny třemi bity, které jsou pro každý blok uloženy v invertovaném i neinvertovaném tvaru. V tabulce 3-1 je zobrazeno, který klíč musí být použit pro přístup k zavaděči v závislosti na nastavení přístupových bitů. AB znamená, že je možno použít libovolný z klíčů A nebo B[10].
Tabulka 3-1 Práva pro operaci se zavaděčem [10]
18
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
Tabulka 3-2 znázorňuje znalostí jakého klíče se musí čtečka prokázat, aby jí byli umožněny příslušné operace s datovým sektorem v závislosti na nastavení přístupových bitů.
Tabulka 3-2 Práva pro operace s daty [10]
19
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
4.
CHARAKTERISTIKA TERMINÁLU
Přístupový terminál využívá spolupráce dvou zařízení a to PC a navrženého zapojení přístupového terminálu. Přičemž samotný přístupový terminál slouží pouze jako brána zajišťující interakci s uživatelem. Databáze uživatelů, kteří mají povolení k přístupu i programové části vyhodnocující zda přístup povolit, či zamítnout se nacházejí v PC. Interakce s uživatelem probíhá následujícím způsobem. V základním stavu je na displeji vypsán nápis „Přiložte kartu“ a terminál čeká na přiložení karty od uživatele. Pokud je karta přiložena terminál přečte sériové číslo a pošle ho do PC. Program jež PC obsahuje pak porovná toto sériové číslo s čísly uloženými ve své databázi uživatelů. Sériové číslo každé karty může být v databázi uloženo samozřejmě pouze jednou. Databáze uživatele dělí na dva typy. Na uživatele bez hesla a s heslem. Pokud dojde ke shodě sériového čísla z přiložené karty s číslem v databázi a toto čísla přísluší uživateli bez hesla, pak dojde neprodleně k povolení přístupu. Pokud dojde ke shodě a jedná se o uživatele s heslem, v tom případě si terminál vyžádá zadání osmimístného přístupového hesla, skrze k terminálu připojenou klávesnici. Při zadávání hesla se displej přepne do módu, kdy po stisku klávesy klávesnice zobrazuje jí příslušející numerický znak. Tlačítko klávesnice ´*´ slouží pro mazání posledního na displeji viditelného znaku a tlačítko ´#´ pro potvrzení, stiskem tohoto tlačítka terminál zašle heslo počítači. Zadat je možné i více znaků než osm, ale pouze prvních osm je posláno počítači. Až ve chvíli, kdy se i toto zadané heslo shoduje s uloženým heslem pro daného uživatele, dojde k povolení přístupu. Povolení přístupu má tu podobu, že se na dobu pěti vteřin na displeji zobrazí nápis „Přístup povolen“ a na stejnou dobu se sepne relé simulující zámek u dveří. V případě zamítnutí přístupu se na dobu pěti vteřin na displeji objeví nápis „Přístup zamítnut“. Po dobu, kdy terminál signalizuje povolení, či zamítnutí přístupu nemá smysl přikládat kartu ke čtečce, neboť sériové číslo z ní nebude načteno. 4.1.1 Konstrukční uspořádání Celé zapojení terminálu je realizováno na oboustranné desce plošných spojů s prokovenými otvory. Deska má rozměry 100x80 mm. Realizována byla v programu Eagle verze 4.16r2. Výkres obou stran desky, osazovací plán i seznam použitých
20
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
součástek jsou přítomny v příloze. Z důvodu větší flexibility, než při pevném propojení s deskou plošných spojů, jsou modul LCD displeje a klávesnice k desce plošných spojů připojeny pomocí kabelů. Stejným způsobem byli k desce připojeny i konektor pro USB a obvod pro komunikaci s Mifare kartami AXA020MF. V jejich případě se však již nejedná o původní záměr. Konektor pro USB je tímto způsobem připojen z důvodu chyby při návrhu, kdy došlo k prohození vývodů pro napájení a k prohození vývodů datových vývodů USBDP a USBDM. V případě obvodu AXA020MF pak došlo vlivem nestandartní vzdálenosti mezi vývody obvodu, ke špatnému navržení rozmístění otvorů na desce, čili obvod do desky nezapadl a musel být připojen jinak. Deska terminálu byla navržena pro připojení dvanácti tlačítkové klávesnice, kterou se však v maticovém provedení nepodařilo sehnat. K terminálu je proto připojena klávesnice šestnácti tlačítková, přičemž poslední sloupec této klávesnice není připojen.
21
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
5.
POPIS ZAPOJENÍ
5.1
NAPÁJENÍ
Zařízení je zkonstruováno na napájení stejnosměrným stabilizovaným napětím o hodnotě 12V. O transformaci této hodnoty na hodnotu potřebnou pro napájení elektronických prvků obsažených v zařízení se starají dva stabilizátory.
Obrázek 5-1 Zapojení napájecí části Napájecí větev o napětí 3.3V zajišťuje stabilizátor LF33CV. Tato hodnota napětí je v zapojení potřeba v podstatě jenom pro napájení mikrokontroléru MC9S08GT60. LF33CV je tak zatěžován pouze proudem potřebným pro správnou činnost tohoto obvodu. V katalogovém listu pro MC9S08GT60 se uvádí jako maximální hodnota odebíraného proudu 80 mA. Ze známé hodnoty vstupního napětí a proudu stabilizátorem lze vypočítat výkon, jež se ztrácí na stabilizátoru P = (U N − U S ) × I = (12V − 3.3V ) × 80mA ≈ 0.7W
(Rovnice 5-1)
Ve skutečnosti však v případě této aplikace nenastala situace, kdy by mikroprocesor odebíral více nežli 20mA. Napájecí napětí o hodnotě 5V pak zajišťuje stabilizátor 7805. Tento stabilizátor napájí FTDI obvod FT232RL o odběru 15mA. Dále pak Mifare čtečku,
22
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
jež dle katalogového listu odebírá 60mA, LCD displej s odběrem 2mA (pokud není zapojeno podsvícení) a tři LED diody přičemž každá z nich odebírá 2mA. Stabilizátor by tak měl být zatížen výkonem: P = (U N − U S ) × ( I FT + I MIF + I LCD + 3 × I LED ) = = (12V − 5V ) × (15mA + 60mA + 2mA + 6mA) ≈ 0.58W
(Rovnice 5-2)
Ani jeden ze stabilizátorů není vystaven přílišnému zatížení a tak není potřeba připojení žádného druhu přídavného chlazení. Pokud by LCD displej měl připojené podsvícení bylo by třeba ještě připočíst k zátěži stabilizátoru 7805 proud 250 mA. V tomto případě by se již na stabilizátoru ztrácel výkon 2,3 W a bylo by potřeba k tomuto stabilizátoru připojit přídavné chlazení. Oba stabilizátory k sobě mají připojeny přídavné kondenzátory pro filtraci rušení z napájení. Při připojení napájení je třeba dbát na správnou polaritu napájecích vývodů. Zařízení nemá žádnou ochranu proti přepólování ani proti zkratu. V případě, že by ochrana proti přepólování, případně proti zničení nadměrnou hodnotou protékajícího proudu byla požadována, bylo by potřeba k napájecím svorkám připojit diodu a pojistku. Při současném stavu zařízení by postačovala pojistka na 0,25A. V případě připojení podsvícení LCD displeje by se musel proud pojistky zvýšit na 0,5A. Jak by vypadalo případné zapojení přídavné pojistky a diody je vidět na následujícím obrázku.
Obrázek 5-2 Ochrana proti přetížení Přímo na stabilizované napájecí napětí 12V je připojeno relé sloužící jako simulace zámku u dveří.. Kdyby napájecí napětí mělo jinou hodnotu, není zaručena správná funkce relé. Pokud by relé nebylo používáno pak by postačovalo napájecí napětí o minimální hodnotě 6V. Naopak napájecí napětí nesmí překročit hodnotu
23
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
16V, jelikož filtrační kondenzátory C9 a C11 mají uvedenu jako maximální hodnotu připojitelného napětí právě 16V. 5.2
ŘÍDÍCÍ ČÁST
Činnost
celého
zapojení
je
řízena
8-bitovým
mikrokontrolérem
MC9S08GT60 od firmy Freescale. Tento obvod ovládá LCD displej, vyhodnocuje stisknutí tlačítek na klávesnici, vyhodnocuje zda povolit či zamítnout přístup a stará se o komunikaci s PC a Mifare čtečkou. V plné 64 vývodové verzi obvod obsahuje sedm portů, každý s osmi vývody nastavitelnými buď jako vstupně/výstupní nebo pro obsluhu některé z v mikrokontroléru integrovaných periferií, pokud je příslušný vývod s danou periferií sdílen. V zapojení byla použita 44 vývodová verze v SMD provedení. U této verze 20 vstupně/výstupních vývodů není vyvedeno z pouzdra mikrokontroléru[12]. Pro každý vstupně/výstupní vývod je v pouzdru k dispozici zdvihací rezistor, který lze softwarově aktivovat či deaktivovat. V základním stavu jsou všechny vstupně/výstupní vývody nastaveny jako vstupy s odpojenými zdvihacími rezistory. Pro potřeby programování a ladění programu je v mikrokontroléru k dispozici integrované rozhraní BDC. Toto rozhraní využívá z úsporných důvodů jediný vývod mikrokontroléru. Konkrétně vývod označený PTG0. V zapojení je tento vývod připojen k BDM konektoru určenému pro připojení programátoru. Aby bylo možné přes toto rozhraní program mikrokontroléru programovat a ladit, je nutné mikrokontrolér uvést do ladícího módu. To lze udělat připojení resetovacího vývodu na zem po dobu 5 ms a současnému přivedení úrovně log. 0 na vývod PTG0 po dobu 10 ms[12]. O tyto činnosti se zvládne postarat sám programátor. Z tohoto důvodu je vývod reset připojen k BDM konektoru. Programátor automaticky vyvolá reset během každého procesu přeprogramování mikrokontroléru. K BDM konektoru je dále připojeno napájecí napětí a zem mikrokontroléru. Pro případné potřeby manuálního resetu je resetovací vývod kromě BDM konektoru připojen přes DIPový přepínač na zem. V pouzdře mikrokontroléru je tento vývod připojen přes zdvihací rezistor na napájecí napětí. Tímto je zajištěno
24
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
zabránění nedefinovanému stavu na tomto vývodu za předpokladu, že vývod není přes přepínač připojen k zemi nebo není připojen programátor. 5.2.1 Základní charakteristika mikrokontroléru • 8-bitový, založen na jádře HCS08 • 60kB programovatelné paměti Flash • 4kB paměti RAM • Frekvence až 40MHz • Integrované programovací a ladící rozhraní BDC • Podpora energii šetřících módů 5.2.2 Přehled portů mikrokontroléru a s nimi souvisejících integrovaných periferních modulů PTA: Port A je sdílen s modulem KBI pro vyvolání přerušení z až osmi externích zdrojů. Všech osm vývodů tohoto portu je nezávisle na sobě nastavitelných buď pro vstupně/výstupní funkci nebo pro obsluhu modulu KBI. PTB: Port B je sdílen s 10-bitovým, osmi kanálovým A/D převodníkem. Všech osm vývodů tohoto portu je nezávisle na sobě nastavitelných buď pro vstupně/výstupní funkci nebo pro obsluhu A/D převodníku. PTC: Port C je sdílen s jedním z modulů pro sériovou asynchronní komunikaci UART (SCI1) ten má na vývodech PTC0 a PTC1 vývody sloužící jako RXD, TXD. Kromě rozhraní UART má port C vyvedeny dva vývody modulu IIC pro komunikaci s dalšími zařízeními. PTD: Port D je sdílen se dvěma, na sobě nezávislými moduly 16-bitových časovačů. V plné 64 vývodové verzi obvodu MC9S08GT60 je první modul časovače tříkanálový a druhý pětikanálový. V případě v zapojení použité 44vývodové verze jsou pro každý modul časovače k dispozici pouze dva kanály. PTE: Port E je s dílen z druhým modulem pro sériovou komunikaci UART(SCI2), na vývodech PTE0, PTE1 jsou vyvedeny TXD a RXD. Další čtyři vývody tohoto portu jsou sdíleny s SPI modulem pro vysokorychlostní sériovou komunikaci.
25
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií
26
Vysoké učení technické v Brně
PTG: Vývody PTG1 a PTG2 slouží pro případné připojení oscilátoru jako externího zdroje hodinového signálu. Pokud k nim oscilátor není připojen mohou sloužit jako vstupně/výstupní. Pin PTG0 je sdílen s modulem BDM pro ladění a programovaní mikrokontroléru.
K mikroprocesoru není připojen žádný zdroj externího hodinového signálu, čímž by se dalo dosáhnout pracovní frekvence až 40MHz. Využito je původního nastavení s interním oscilátorem nastaveným na frekvenci 243kHz a sběrnice mikroprocesoru pracuje na kmitočtu 4MHz. Pomocí vývodu PTC4 mikrokontroléru se spíná relé simulující zámek dveří. Toto relé se spíná v případě povolení přístupu. Spínání se provádí pomocí tranzistoru T3 Rezistory R8 a R9 jsou zvoleny tak, aby tranzistor pracoval ve spínacím režimu. Vzhledem k tomu, že relé je na 5 V a na přechodu tranzistoru emitor-kolektor ve spínacím režimu je minimální napětí, byl do kolektorové větve tranzistoru zařazen odpor R6, pro zajištění proudu 10mA, které relé potřebuje pro správnou činnost. 5.3
PŘIPOJENÍ KLÁVESNICE
Pro případné dodatečné ověření povolení k přístupu, pokud nestačí pouze číslo karty, je k terminálu připojena maticová klávesnice s dvanácti aktivními tlačítky. Maticová klávesnice se vyznačuje tím, že při stisku tlačítka dojde k vodivému
propojení
vodiče
reprezentujícího
příslušný
řádek
s vodičem
reprezentujícím příslušný sloupec[13]. K připojení dvanácti tlačítek je tak potřeba sedm vývodů mikrokontroléru. K vývodům PTA0-PTA3, nastaveným jako výstupy, jsou připojeny řádky klávesnice a k vývodům PTA4-PTA7, nastaveným pro obsluhu vnitřního modulu KBI, jsou pak připojeny sloupce. Každý sloupec klávesnice je dále připojen přes zdvihací rezistor o hodnotě 10kΩ k napájecímu napětí mikrokontroléru o hodnotě 3,3V. Tímto způsobem je na vývodech mikrokontroléru připojených ke sloupcům klávesnice udržováno napětí o hodnotě log. 1. Stisk jednotlivých tlačítek, tak lze vyhodnotit způsobem, kdy se na jednotlivé řádky z mikrokontroléru přivádí napětí o úrovni log. 0 zatímco ostatní řádky jsou drženy v úrovni log. 1. Pokud dojde ke stisku tlačítka a na řádek příslušného tlačítka je připojena log. 0, tak se vlivem
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
vodivého spojení daného řádku s daným sloupcem objeví hodnota log 0. i na vodiči sloupce. To se vyhodnotí mikrokontrolérem. Zapojení je zobrazeno na obrázku níže.
Obrázek 5-3 Připojení klávesnice 5.4
ZAPOJENÍ OBVODU AXA020MF PRO ČTENÍ DAT Z KARET
Pro vlastní čtení dat z karet, na jejichž základě bude terminál rozhodovat o povolení či zamítnutí přístupu se stará obvod AXA020MF od firmy Elatec. Tento obvod pracuje s kartami standartu Mifare, konkrétně s kartami typu A, což zahrnuje typy karet IC S50, IC S70 a Ultralight. Kromě čtení sériového čísla je tento obvod schopen i číst data z paměti karty nebo do ní data zapisovat. Dále v textu bude tento obvod již nazýván pouze jako čtečka. Tato čtečka byla vybrána hlavně z toho důvodu, že již obsahuje v sobě integrovanou anténu pro komunikaci s kartami a není třeba návrh žádné antény externí. Interní anténa má dosah kolem 3cm, což v případě tohoto terminálu postačí. Další výhodou této čtečky je její snadné ovládání. Komunikace probíhá přes implementované rozhraní UART, jímž jsou přes vývod RXD příjmány příkazy od mikrokontroléru a přes vývod TXD jsou mikrokontroléru zasílána data z karty. Rychlost komunikace přes toto rozhraní je nastavitelná od 2400 baudů/s až po 57 600 baudů/s[14].
27
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
K mikrokontroléru je čtečka připojena přes vývody PTC0 a PTC1, na nichž jsou připojeny vývody TXD2, RXD2 druhého modulu UART pro asynchronní sériovou komunikaci. Jelikož mikrokontrolér a čtečka pracují na jiné úrovni napětí, bylo potřeba tyto úrovně přizpůsobit. Mezi vývod TXD čtečky a RXD2 mikrokontroléru je zařazen napěťový dělič tvořený odpory R7 a R13. Díky těmto rezistorům je výstupní napětí čtečky sníženo na hodnotu přijatelnou pro mikrokontrolér dle vzorce: U=
R13 8k 2 × U MIF = × 5V ≈ 3,2V R 7 + R13 4 k 7 + 8k 2
(Rovnice 5-3)
Mezi vývod RXD čtečky a TXD2 mikrokontroléru je zařazen tranzistor T2. Tento tranzistor zvyšuje hodnotu napětí na výstupu mikrokontroléru z 3V na 5V. Tranzistor je v zapojení se společnou bází, přičemž rezistory R16,R17 jsou voleny tak, aby tranzistor pracoval ve spínacím režimu. Tento způsob zapojení byl převzat z[15]. Vývod 7 označený FS (Format Selector) čtečky je potřeba připojit na zem, což zajistí, že čtečka bude pracovat s daty v ASCII formátu. K vývodu 10 značeném LED byla přes tranzistor připojena LED dioda za účelem vizuální indikace, že došlo k navázání komunikace s kartou. Zapojení čtečky je na následujícím obrázku.
Obrázek 5-4 Připojení Mifare čtečky AXA020MF
28
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
5.5
PŘIPOJENÍ OBVODU FT232R PRO KOMUNIKACI S PC
Pro komunikaci terminálu s PC bylo vybráno rozhraní USB. Další možnosti jako například RS-232 byli zavrhnuty zejména z důvodu jejich čím dál řidšího výskytu na dnešních nových PC. Pro konverzi rozhranní USB, jež je na straně PC na rozhraní UART na straně mikrokontroléru se stará obvod FT-232R od firmy FTDI. Hodnoty odporů R1, R2 jsou převzaty z katalogového listu obvodu. Vývod VCCIO obvodu FT232R je připojen na napětí 3,3V. Tento způsob připojení zajišťuje, že vývody RXD, TXD převodníku budou pracovat na napěťové úrovni 3,3V. Díky tomu není potřeba mezi převodník a mikrokontrolér zařadit žádný přídavný prvek pro konverzi napětí mezi těmito dvěma obvody. LED diody připojené na vývody CBUS0 a CBUS1 jsou připojeny pro indikaci probíhající komunikace s PC. Odpory R3 a R4 mají v katalogovém listu hodnotu 270R[16]. Při použití odporů této velikosti by diodami protékal proud 15mA, což je vzhledem k použitému typu diod příliš. Použité diody jsou pro hodnotu proudu 2mA, z tohoto důvodu byli hodnoty odporů přepočítány na 1k2. Schéma připojení je na obrázku níže
Obrázek 5-5 Připojení obvodu FT232R pro komunikaci s PC
29
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
5.6
PŘIPOJENÍ LCD DISPLEJE
LCD displej je k mikrokontroléru připojen pro vizuální zobrazení, zda byl přístup povolen nebo zamítnut. Zvolen byl znakový LCD displej CM200400 od firmy DataImage s řadičem HD44780. Displej má čtyři řádky po dvaceti znacích, takže umožňuje zobrazit současně osmdesát znaků. Tento typ byl vybrán hlavně díky faktu, že za signál. hodoty log 1. považuje napětí do hodnoty 2,7 V. To je důležité z toho důvodu, že mikrokontrolér jímž je LCD displej ovládán, poskytuje na svém výstupu hodnotu log. 1 o napětí 2,8 V. V případě využití jiného LCD displeje, který by na vstupu vyžadoval vyšší hodnoty napětí, by bylo potřeba mezi mikrokontrolér a LCD displej připojit dodatečné součástky pro zvýšení napěťové úrovně na vstupu LCD displeje. Displej je zapojen v osmivodičovém zapojení, takže pro data přenášená do displeje je potřeba osm vývodů mikrokontroléru. Další možný způsob zapojení, by bylo čtyřvodičové připojení, kdy by se posílali jednotlivé poloviny datových bytů zvlášť. Čtyřvodičový způsob byl zavrhnut z důvodu větší složitosti[13]. Číslo Symbol Funkce 1 VSS GND, 0V 2 VDD Napájení +5V 3 VEE Regulace jasu displeje 4 RS Zda vstup jsou data, nebo instrukce 5 R/W čtení/zápis 6 E Platnost dat 7 DB0 Data 8 DB1 9 DB2 10 DB3 11 DB4 12 DB5 13 DB6 14 DB7 15 LED A LED anoda. Napájení podsvícení 16 LED K LED katoda. GND Tabulka 5-1 Popis vývodů displeje CM200400 [17] Na vývod VDD je připojeno napájecí napětí 5 V. Vývod Vee LCD displeje je připojen na jezdec 10 kΩového potenciometru. Změnou polohy jezdce tohoto
30
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
potenciometru, lze plynule regulovat jas LCD displeje. Vývod RS slouží k rozlišení, zda na datových vodičích jsou instrukce nebo data. Pokud se na tomto vstupu objeví log. 1 pak je signál na datových vodičích interpretován jako data. Pokud se objeví log. 0 pak je interpretován jako instrukce. Vzhledem k tomu, že z displeje není třeba číst, byl vývod R/W připojen na zem, což znamená trvalé nastavení displeje na zápis. Vývod E pak slouží pro potvrzení platnosti dat, resp. ovlivňuje převzetí dat. Datové vývody LCD displeje jsou připojeny k portu B mikrokontroléru. Podsvícení LCD displeje pak z důvodu velké energetické náročnosti zůstalo nepřipojeno. Znaková sada displeje je na obrázku 9.6. Kromě základní anglické sady jsou k dispozici v horní polovině paměti některé speciální znaky. Kód pro přístup k těmto znakům odpovídá ACII kódování.
Obrázek 5-6 Znaková sada řadiče HD44780 [18] Řadič obsahuje následující jednoduchý instrukční soubor poskytující následující operace s displejem. 1) Smazání displeje a nastavení kurzoru na počátek.
31
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
2) Nastavení kurzoru na počátek. 3) Nastavení, zda a kterým směrem se má kurzor displeje posunovat, posunutí se projeví při zápisu na displej. I/D=0 posun vlevo, I/D=1 posun vpravo, S=0 posuv textu ne, S=1 posuv textu ano. 4) D=1 zapnutí displeje, C=1 zapnutí kurzoru, B=1 zapnutí blikání kurzoru. 5) Posun, S/C=0 posune kurzor, S/C=1 posune text, R/L=0 vlevo, R/L=1 vpravo 6) Inicializace displeje ovlivňuje počet datových vodičů, počet řádků a font. DL=0 čtyřvodičový mód, DL=1 osmivodičový mód, N=0 jednořádkový displej, N=1 dvouřádkový displej, F=0 font 5x8, F=1 font 5x10 7) Přepnutí na zápis do CGRAM. Udává adresu na kterou se budou zapisovat uživatelem vytvořené znaky. 8) Přepnutí na zápis do DDRAM, to umožňuje nastavení kurzoru na zvolenou pozici. 9) Zápsání dat do CGRAM nebo DDRAM cislo 1 2 3 4 5 6 7 8 9
RS 0 0 0 0 0 0 0 0 1
DB7 0 0 0 0 0 0 0 0 0
DB6 0 0 0 0 0 0 0 1
DB5 0 0 0 0 0 1 1
DB4 0 0 0 0 0 DL
DB3 DB2 DB1 0 0 0 0 0 1 0 1 I/D 1 D C S/C R/L x N F x Adresa v CGRAM Adresa v DDRAM Data k zápisu
DB0 1 x S B x x
Cas 1,64 ms 1,64 ms 40 µs 40 µs 40 µs 40 µs 40 µs 40 µs 40 µs
Tabulka 5-2 Přehled operací [17] První řádek začíná v DDRAM adresou 0x00. Adresa konce řádku se pak získá jako součet adresy počátku řádku a čísla udávajícího počet znaků řádku, což je v případě tohoto displeje 0x13. První řádek tedy končí na adrese 0x13. Druhý řádek pak začíná na adrese 0x40, třetí na adrese 0x14 a čtvrtý na adrese 0x54.
32
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií
33
Vysoké učení technické v Brně
6.
POPIS PROGRAMOVÉHO VYBAVENÍ
Pro potřeby tohoto terminálu bylo potřeba vytvořit dva programy. Jeden pro mikrokontrolér
ovládající
zapojení
samotného
přístupového
terminálu
komunikujícího s kartami a druhý pro PC, jež slouží k udržování databáze uživatelů a rozhodování o povolení přístupu. 6.1
PROGRAM MIKROKONTROLÉRU
Program mikrokontroléru byl napsán v jazyce C pomocí vývojového prostředí Codewarrior, jež je dodáváno přímo firmou Freescale, od níž pochází i použitý mikrokontrolér. Program sestává z hlavní funkce main a několika funkcí, jež jsou volány v případě, že nastane určitá událost. Funkce main sestává z inicializačních operací, jež nastavují registry mikrokontroléru na požadované hodnoty a jsou provedeny pouze jednou po spuštění terminálu a nekonečné smyčky cyklu for(;;) v níž jsou prováděny operace nezbytné pro činnost terminálu. V inicializací je také provedeno základní nastavení LCD displeje, nastaví se velikost fontu, 8-bitový operační mód, tzn. pro přenos dat je využito všech osm datových vodičů dále se nastaví inkrementace adresy a posuv kurzoru při zápisu do DDRAM . 6.1.1 Inicializace a popis v aplikaci použitých registrů Inicializace se týká registrů, které náleží příslušným v zapojení použitým portům a několika pomocných proměnných. Pro potřeby přístupového terminálu jsou využívány periferní moduly KBI pro vyvolání přerušení od klávesnice, oba moduly časovačů a oba moduly pro asynchronní sériovou komunikaci UART. Dále je využito několika vývodů nastavených jako obyčejné vstupně/výstupní vývody pro ovládání relé (port C) a LCD displeje (port B). K registrům mikrokontroléru se v programu, díky hlavičkovému souboru s makry, v nichž jsou definovány adresy a symbolické názvy registrů, přistupuje přímo skrze označení registrů uvedené v dokumentaci.
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií
34
Vysoké učení technické v Brně
Pro každý port jsou základní registry nesoucí označení PTnDD, PTnPE a PTnD. Vzhledem k tomu,že každý port má osm vývodů, obsahuje každý z registrů osm bitů. Pro každý vývod jeden. Registry mají následující význam. Registr PTnDD slouží k určení, zda daný registr má být nastaven jako vstup nebo jako výstup. Pokud je daný bit tohoto registru nastaven na 1, pak vývod s tímto bitem související je nastaven jako výstup. Pokud je daný bit nastaven na 0 je s ním související vývod nastaven jako vstup. Registr PTnPE slouží k nastavení, zda u daného vývodu mají být aktivovány v pouzdře integrované zdvihací rezistory. Pokud je bit příslušející danému vývodu nastaven na 1 jsou zdvihací rezistory aktivovány, pokud na 0 jsou vypnuty. Je třeba podotknout, že nastavení tohoto registru má smysl pouze za situace, kdy dané vývody jsou nastaveny jako vstupy. Čtením registru PTnD pak lze získat hodnoty logických signálů, jenž se vyskytují na vývodech daného portu. Za situace, kdy je některý z vývodů portu nastaven jako výstup, lze zápisem do příslušného bitu registru PTnD nastavit logickou úroveň signálu tohoto vývodu. Pokud je vývod nastaven jako vstup, nemá zápis do jemu příslušejícího bitu registru PTnD smysl, avšak čtením tohoto bitu lze získat úroveň signálu k vývodu připojenou. Za písmenko n je potřeba doplnit číslo příslušného portu, takže například pro port A jsou příslušné registry označeny jako PTAD, PTAPE, PTADD. K jednotlivým bitům se přistupuje zkombinováním označení příslušného registru s příslušným číslem vývodu, které je v rozmezí 0-7. Takže k bitu registru PTAD pro vývod PTA0 se přistupuje skrze označení PTAD_PTAD0. Další důležité registry jichž se inicializace týká, souvisejí s použitými periferními moduly.
Modul pro externí přerušení KBI využívá dvou registrů. Registru KB1SC a registru KB1PE. Význam jednotlivých bitů registru KB1SC je následující. bit 7
6
5
4
3
2
1
bit 0
KBEDG7
KBEDG6
KBEDG5
KBEDG4
KBF
KBACK
KBIE
KBIMOD
Tabulka 6-1 Registr KB1SC [12]
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií
35
Vysoké učení technické v Brně
Bity označené jako KBEDGn určují, zda přerušení vyvolá vzestupná nebo sestupná hrana signálu přiváděná na některý ze vstupů modulu PTA7-PTA4. Pokud je bit nastaven na 0, pak se vyvolá přerušení, pokud se na příslušném vývodu objeví sestupná hrana. Pokud je bit nastaven na 1, pak přerušení vyvolá vzestupná hrana. V programu mikrokontroléru jsou tyto bity nastaveny na 0, jelikož vzhledem k zapojení dojde při stisku tlačítka vždy k sestupné hraně. Bit KBF, určený pouze pro čtení, je nastaven pokud je na některém ze vstupů detekována hrana. V případě vstupů PTA0-PTA3 se KBF nastaví vždy při detekci sestupné hrany. V případě PTA7-PTA4 lze o tom, která hrana má KBF nastavit, rozhodnout bity KBEDGn. Bit KBACK slouží k vynulování bitu KBF. Vynulování se provede tím, že se bit KBACK nastaví na 1. Dokud není bit KBF vynulován nelze detekovat další hranu signálu, proto se v programu do KBACK zapíše co nejdříve po zjištění,že KBF bylo nastaveno.
Nevýhodou
brzkého
nulování
je
však
náchylnost
klávesnice
k mechanickým zákmitům, které se při stisku projeví tak, že je vyhodnoceno jako by tlačítko bylo stisknuto dvakrát. Tento problém se týká i této aplikace a dosud nebyl uspokojivě vyřešen. Bit KBIE rozhoduje, zda při nastavení bitu KBF má být vyvoláno přerušení. Pokud je nastaven na 0, přerušení není vyvoláno a nastavení KBF je potřeba vyhodnotit v programu (tzv. polling). Tato aplikace přerušení pro obsluhu modulu KBI využívá, čili bit je nastaven na 1. Bitem KBIMOD lze pak určit, zda nastavení bitu KBF má reagovat pouze na hrany signálu nebo i na logickou úroveň signálu. V této aplikaci je bit nastaven na 0, čili KBF reaguje pouze na hrany signálu. Registr KB1PE určuje, které vývody portu A přísluší modulu přerušení a které jsou nastaveny jako klasické vstupně/výstupní vývody.
Moduly pro asynchronní sériovou komunikaci SCI1 a SCI2 jsou v programu inicializovány oba. Popis důležitých registrů bude proveden na rozhranní SCI1. Registry modulu SCI2 jsou identické, liší se pouze číselné označení registrů. Odesílání a příjmání dat probíhá prostřednictvím 8-bitových registrů SCI1D. Pokud chceme odeslat nějaký byte, provede se to tak, že tento byte zapíšeme do
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií
36
Vysoké učení technické v Brně
registru SCI1D. Pokud modul naopak nějaká data přijme, lze je získat přečtením registru SCI1D. Rychlost, jakou bude komunikace přes SCI1 rozhraní probíhat, určují registry SCI1BDH a SCI1BDL. V těchto registrech je uloženo 13-bitové číslo, přičemž v registru SCI1BDL je uloženo spodních osm bitů tohoto čísla a v registru SCI1BDH horních pět bitů. Požadovanou hodnotu tohoto registru je možné vypočítat dle vzorce obsahregistru =
busclock baudrate × 16
(Rovnice 6-1)
[12]
Hodnota busclock(hodinový kmitočet sběrnice) je v případě, kdy se v tomto ohledu neprováděla žádná nastavení, 4 MHz, což je výchozí nastavená rychlost pro tento typ mikrokontroléru. Rychlost komunikace, ve vzorci pod proměnou baudrate, je 9600 baudů/s. Požadovaná hodnota, kterou je potřeba do registrů zapsat, vyjde po dosazení do vzorce rovna 26. Registr SCI1BDL je tedy nastaven na hodnotu 26 (0x1A hexadecimálně) a registr SCI1BDH na hodnotu 0 (0x00 hexadecimálně). Registr SCI1S1 je stavovým registrem, jehož jednotlivé bity jsou nastavovány v závislosti na činnosti modulu. Tento registr lze pouze číst. bit 7 TDRE
6 TC
5 RDRF
4 IDLE
3 OR
2 NF
1 FE
bit 0 PF
Tabulka 6-2 Registr SCI1S1 [12] Bit TDRE je nastavený na 1 pokud ve frontě k odeslání nečekají žádné bity a tudíž je možné zapisovat do registru SCI1D. Registr TC se nastaví na 1 pokud je dokončena operace odesílání dat skrze vývod TXD1. Pokud je v tomto registru nastavena 0, pak právě probíhá odesílání dat. Bit RDRF se nastaví pokud mikrokontrolér zaregistruje nějaká jemu zaslaná data. Tento bit je vynulován pokud je programem přečten registr SCI1S1 s nastaveným bitem RDRF a jsou přečtena přijatá data z registru SCI1D. Bit OR se nastaví pokud byte v příjmacím registru je přepsán nově příchozím bytem, přičemž předchozí byte nebyl z tohoto registru dosud přečten. Ostatní bity souvisejí s chybami parity a šumu a v aplikaci se jimi nebylo zabýváno. Dalšími důležitými registry modulu SCI1 jsou registry SCI1C1 a SCI1C2. Registr SCI1C1 nastavuje, zda v jednom datovém rámci bude přeneseno 8-9 bitů a
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií
37
Vysoké učení technické v Brně
zda bude použita parita. V tomto případě, kdy se parita nepoužívá a přenáší se vždy 8 bitů, jsou všechny bity tohoto registru nastaveny na 0. Registr SCI1C2 slouží k povolení přerušení, jež jsou volány v závislosti na událostech modulu.
bit 7 TIE
6 TCIE
5 RIE
4 ILIE
3 TE
2 RE
1 RWU
bit 0 SBK
Tabulka 6-3 Registr SCI1C2 [12] Bity TIE až RIE povolují vyvolání přerušení. Pokud se bit TIE nastaví na 1, je vyvoláno přerušení v případě, že bit TDRE byl nastaven na 1. Bitem TCIE nastaveným na 1 se povolí vyvolání přerušení, pokud byl bit TC nastaven na 1. Stejným případem je bit RIE, jímž se povolí vyvolání přerušení v případě bitu RDRF nastaveným na 1. V této aplikaci jsou všechny tyto registry nastaveny na 0. Nejdůležitějšími bity tohoto registru jsou bity TE a RE, jimiž se vývody TXD1 a RXD1 přepínají mezi funkcemi vstupně/výstupních vývodů a vývodů modulu SCI1. Pokud jsou oba bity nastaveny na 1, tak vývod TXD1 slouží k vysílaní dat a vývod RXD1 k příjmání dat. Komunikační modul SCI2 je nastaven stejně jako modul SCI1.
V případě modulů časovačů TPM jsou důležité registry TPMnMOD a TPMnSC. Popis bude opět ukázán pouze na jednom modulu a to na modulu TPM1. Časovač funguje na principu, kdy čítač při každém zaznamenaném impulsu hodinového signálu, inkrementuje svoji hodnotu a v případě, že hodnota čítače překročí přednastavenou hodnotu, nastaví se stavový bit. Registr TPM1SC slouží pro signalizaci stavu přetečení a pro nastavení parametrů časovače. bit 7 TOF
6 TOIE
5 CPWMS
4 CLKSB
3 CLKSA
2 PS2
1 PS1
bit 0 PS0
Tabulka 6-4 Registr TPM1SC [12] Bit TOF je stavový bit, který se nastaví v případě, že hodnota čítače překročí hodnotu uloženou v registru TPM1MOD. Pro vynulování tohoto bitu je potřeba
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
přečíst registr a přepsat hodnotu tohoto bitu na 0. Bitem TOIE lze povolit vyvolání přerušení, pokud dojde k přetečení časovače. V případě této aplikace byl nastaven na 0. Bity CLKSB a CLKSA nastavují zdroj hodinového signálu pro čítač časovače. V případě, že jsou oba bity nastaveny na 0, modul časovače je vypnutý. V této práci bit CLKSB byl nastaven na 0 a bit CLKSA na 1. Tímto nastavením se jako zdroj hodinového signálu vybere hodinový kmitočet sběrnice. Bity PS2-PS0 se nastavuje dělící poměr děličky kmitočtu (prescaleru) časovače. Vybírat lze z následujících hodnot PS2 0 0 0 0 1 1 1 1
PS1 0 0 1 1 0 0 1 1
PS0 0 1 0 1 0 1 0 1
Dělící poměr 1 2 4 8 16 32 64 128
Tabulka 6-5 Možná nastavení dělícího poměru prescaleru [12] Registr TPM1MOD obsahuje hodnotu, po jejímž dosažení začne čítač čítat opět od nuly a zároveň nastaví příslušný bit signalizující přetečení. Doba, která uběhne mezi dvěma událostmi přetečení časovače tedy závisí na nastavení třech prvků obvodu časovače, na frekvenci zdroje hodinového signálu pro modul časovače, na nastavení prescaleru a na hodnotě uložené v modulo registru. Tuto dobu lze vypočítat dle vzorce t=
Modulo × Pr escaler [12] busclk
(Rovnice 6-2)
V této aplikaci je od modulu TPM1 požadováno, aby doba mezi přetečeními
časovače činila 0.25 s. Vždy po uplynutí této doby je čtečce Mifare karet zaslána žádost o přečtení sériového čísla karty. Za tohoto stavu kdy hodnoty busclk a doba t jsou dané,je nutné určit hodnoty modulo registru a dělící poměr prescaleru. Hodnotu pro prescaler lze zvolit, přičemž se vybírá taková hodnota, aby obsah modulo registru měl z důvodu co největší přesnosti co nejvyšší hodnotu. Maximem je 65535. Bity určující dělící poměr prescaleru byli nastaveny na hodnotu 16 a použitý
38
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
hodinový kmitočet má frekvenci 4Mhz. Z těchto hodnot lze vypočítat nastavení modulo registru
mod ulo =
t × f SOURCE 0.25 × 4 × 10 6 = = 62500 [12] prescaler 16
(Rovnice 6-3)
Modul TPM2 byl nastaven tak, aby k přetečení docházelo vždy ve vteřinových intervalech. Hodnota uložená v modulo registru tohoto modulu je opět 62500. Stejné jako v případě modulu TPM1 je i nastavení bitů CLKSA a CLKSB. Liší se nastavením dělícího poměru prescaleru, ten u modulu TPM2 má dělící poměr roven 64. 6.1.2 Obsah nekonečné smyčky Nekonečnou smyčku v níž probíhají všechny důležité činnosti aplikace, tvoří cyklus for(;;). Tento zápis cyklu zajišťuje, že nedojde k ukončující podmínce, která by cyklus přerušila. V každém cyklu této smyčky se mění nastavení výstupů připojených k jednotlivým řádkům klávesnice. Na jednom z těchto výstupů je vždy hodnota log. 0, zatímco na zbylých třech log. 1. Dále se v této smyčce vyhodnocují stavové bity modulů časovačů a modulů asynchronní sériové komunikace. Tento systém vyhodnocení přijetí znaků a přetečení časovačů je použit místo přerušení. Komunikace mezi PC a terminálem probíhá přes modul SCI1. Do PC jsou data zaslána vždy ve chvíli,kdy bylo z Mifare čtečky přijato korektní sériové číslo. Samotné povolení či zamítnutí přístupu pak terminál provede na základě znaku přijatého od PC. Tyto znaky symbolizují dané operace. Znaky a jejich význam je následující. ‚<‘ - tento znak PC zasílá v případě nekorektního tvaru obdrženého sériového čísla a terminál po jeho obdržení zašle sériové číslo znovu. ‚>‘ - tento znak PC zasílá v případě nekorektního tvaru obdrženého přístupového hesla a terminál po jeho obdržení toto heslo zašle znovu. ‚^‘ – tento znak PC zašle v případě, že z doručených dat vyhodnotí povolení přístupu. Program pak volá funkci „povolen( )“, která provede příslušné operace. ‘#’ – tento znak PC zašle v případě, že z doručených dat vyhodnotí zamítnutí přístupu. Program pak volá funkci „zamitnut( )“, která provede příslušné operace.
39
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií
40
Vysoké učení technické v Brně
‘?’ – tento znak PC zašle v případě, že po obdržení sériového čísla je po uživateli vyžadováno ještě zadání přístupového hesla z klávesnice. V tomto případě program volá funkci „vyzadejheslo( )“, která LCD displej přepne do módu kdy je připraven zobrazovat znaky stisknuté na klávesnici. Ve smyčce se dále nacházejí podmínky vyhodnocující, zda došlo k přerušení od časovačů. V případě detekce přetečení časovače TPM2,k němuž dochází každou vteřinu, se inkrementuje proměnná pojmenovaná allow, přičemž ve chvíli, kdy dosáhne určité hodnoty se vynuluje. V programu tento postup slouží k získání intervalu dlouhého 5 vteřin, během něhož je na displeji zobrazen nápis informující o povolení či zamítnutí přístupu. Časovač TPM2 je po většinu času deaktivovaný, k jeho aktivaci dochází ve funkcích „povolen ( )“, „zamitnut ( )“ ty jsou popsány v následující kapitole. V případě přerušení od modulu časovače TPM1, který nastává každou čtvrtinu vteřiny, terminál posílá Mifare čtečce příkaz pro přečtení sériového čísla(komunikace s mifare čtečkou probíhá přes komunikační modul SCI2). Pokud ke čtečce není karta přiložena, terminál vrátí sekvenci šesti znaků o velikosti jedno bytu, informujících o tom, že sériové číslo nebylo možno přečíst. Pokud ke čtečce je přiložena karta, pak čtečka vrátí sekvenci deseti znaků, v nichž se nachází i 32-bitové sériové číslo karty. Právě na základě tohoto čísla terminál vyhodnocuje povolení přístupu. Daty přijatými od čtečky se plní řetězec pojmenovaný sernumber ve chvíli, kdy se do tohoto řetězce zapíše 10 znaků, odešlou se tyto data do PC a proměnná, jež udává, do kterého bytu řetězce zapisovat, se nastaví na počátek řetězce, aby po příštím dotazu na čtečku přijatá data přepsala data stará, přijatá v předchozím cyklu. 6.1.3 Komunikační protokol čtečky Mifare Se čtečkou je potřeba komunikovat dle výrobcem daného komunikačního protokolu. Jeho struktura je uvedena na příkladu vyžádání si sériového čísla přiložené karty.
STX 0x02
Adress 0x01
CMD 0x12
Length 0x00
Data
BCC 0x11
Tabulka 6-6 Ukázka komunikačního protokolu [14]
ETX 0x03
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
Každý prvek tohoto protokolu má velikost 1 byte. Jejich význam je následující. STX – Tento znak nabývá hodnoty 0x02 a zpráva pro čtečku jím vždy začíná. Adress – adresa zařízení, tento prvek protokolu implicitně nabývá hodnoty 0x01. CMD – tento znak udává požadovanou operaci, jíž má čtečka provést, v tomto případě nabývá hodnoty pro čtení sériového čísla, což je 0x12 Length – délka dat související s požadovanou operací, v případě, že daná operace žádná data nevyžaduje, jako je tomu v tomto případě nabývá tento znak hodnoty 0x00. Data – v tomto znaku, případně v těchto znacích, se zašlou data příslušející dané operaci. V případě čtení sériového čísla karty, jsou tyto znaky vynechány. U jiných operací jako například zápis do paměti karty, by byli datové znaky vyžadovány. Jednalo by se o samotná data určená k zápisu. BCC – v tomto znaku je zaslán výsledek logické operace XOR ze všech předcházejících znaků od STX po data. ETX – Celou komunikaci uzavírá, nabývá vždy hodnoty 0x03
V případě tohoto terminálu je využívána pouze operace čtení identifikačního čísla z karty, který má označení 0x12. Dalšími možnými operacemi jež čtečka poskytuje jsou, vrácení typu identifikační karty (zda se jedná o typ S50 nebo S70 apod.), čtení z paměti karty, zápis dat do paměti karty, inkrementace či dekrementace hodnoty paměti. Data, která čtečka vrátí jako odpověď na vykonání příkazu se řídí stejným protokolem. Jako první jsou zaslány znaky 0x02 a 0x01, následuje znak zda operace proběhla úspěšně, pokud ano má tento znak hodnotu 0x00. Pak následuje délka dat,v případě úspěšného vrácení sériového čísla karty je to hodnota 0x04. Poté jsou zaslány samotná data, výsledek operace XOR ze všech předchozí znaků a nakonec ukončovací znak ETC. 6.1.4 Přehled funkcí používaných v programu mikrokontroléru void posliznaky( ) - pošle PC obsah řetězce,v němž jsou uložena data obdržená z Mifare karty.
41
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
void posliheslo( ) - pošle PC obsah řetězce,v němž je uloženo poslední heslo zadané skrze klávesnici terminálu. void vyzadejheslo( ) – nastaví LCD displej do stavu , kdy čeká na zadání hesla skrze připojenou klávesnici. To znamená, že se povolí přerušení od klávesnice, na spodní řádek displeje se vypíší pokyny pro užívání klávesnice a kurzor displeje se nastaví na pozici 0x00, čili do levého horního rohu. void priloz ( ) - tato funkce na displej vypíše nápis „Prilozte kartu“. void povolen ( ) - tato funkce je volána za předpokladu, že terminál obdržel od PC znak pro povolení přístupu. Funkce vypíše na displej nápis „Vstup povolen“ a zároveň sepne relé představující zámek dveří. void zamitnut ( ) - tato funkce je volána za předpokladu, že terminál obdržel od PC znak pro zamítnutí přístupu. Funkce vypíše na displej nápis „Vstup zamitnut“. void posunlcd (int number )- přesune kurzor displeje na definovanou pozici, jež je předána parametrem number. void delay( ) – funkce realizujicí krátké časové zpoždění. Zpoždění je tvořeno cyklem for o tisíci iterací. 6.2
POPIS PROGRAMU V PC
Software pro PC byl napsán ve vývojovém prostředí Visual Studio 2005. Jedná se o na dialogu založenou aplikaci. Tento software obsahuje jednak programové části, které na základě dat získaných od terminálu vyhodnotí zda povolit, či nepovolit přístup a jednak dialogové rozhraní pro zadávání a editaci báze uživatelů, jimž je povolen přístup. Tuto bázi uživatelů tvoří třída pojmenovaná CUzivList. Třída spravuje lineárně vázaný seznam, do nějž jsou ukládány položky jednotlivých uživatelů tvořené strukturou pojmenovanou uzivatel. V datových položkách struktury uzivatel jsou obsaženy všechny důležité informace pro vyhodnocení přístupu. Za chodu terminálu program datové položky a metody třídy CUzivList využívá k vyhodnocování přístupu. 6.2.1 Datové položky struktury uživatel CString Name :
pro uložení jména uživatele.
CString Pristupcislo : pro uložení sériového čísla karty, které je povolen přístup
42
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
CString Password : ukládá heslo, jež musí uživatel zadat skrze klávesnici terminálu, aby mu byl umožněn přístup. CString Casy : ukládá historii přístupů pro daného uživatele. Při každém povolení přístupu pro daného uživatele je do této položky uložen čas a datum,kdy k této události došlo. int odhod, dohod : v těchto proměnných je uloženo časové rozmezí hodin, během nichž bude danému uživateli povolen přístup. V těchto položkách mohou být hodnoty v rozmezí 0 až 23, přičemž hodnota v odhod nesmí být vyšší než hodnota v dohod. int odmins, domins : v těchto proměnných jsou uloženy minuty pro časové rozmezí, v němž bude danému uživateli povolen přístup. V těchto položkách mohou být hodnoty v rozmezí 0 až 59, přičemž hodnota v odmins nesmí být vyšší než hodnota v domins za předpokladu, že proměnné odhod a dohod nabývají stejné hodnoty. bool omezeni : tato položka nabývá hodnoty false pokud je ve všech položkách odhod, dohod, odmins a domins uložena nula. V tomto případě pro daného uživatele není žádné omezení dané časovým ohraničením, kdy je mu povolen přístup. Pokud nějáké časové omezení je nastaveno tato položka nabývá hodnoty true. bool heslo : tato položka je nastavena na true pokud po daném uživateli je pro povolení přístupu vyžadováno zadání hesla z klávesnice. V případě, že se daný uživatel musí prokázat pouze sériovým číslem karty nabývá tato položka hodnoty false. uzivatel* point : ukazatel na následující prvek lineárně vázaného seznamu. 6.2.2 Třída CListCtrl int ItemNumber : počet uživatelů obsažených ve třídě uzivatel* First : ukazatel na první položku lineárně vázaného seznamu. uzivatel* last : ukazatel na poslední položku lineárně vázaného seznamu.
void AddItem(uzivatel& predav) : tato metoda přidá do seznamu strukturu uživatel předanou jí parametrem predav.
43
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
void DeleteItem(int number) : vymaže ze seznamu strukturu, která se v seznamu nachází na pozici předané pořadovým číslem v parametru number. int Compare(CString string) : postupně porovnává sériové číslo předané parametrem string se sériovými čísly jednotlivých prvků seznamu. V případě shody vrátí pořadové číslo prvku, pro který ke shodě došlo a zároveň do položky casy tohoto prvku zapíše čas, kdy ke shodě došlo. int Used(CString str) : zjistí, zda sériové číslo předané parametrem str se již nachází v seznamu, pokud ano vrátí pořadové číslo tohoto prvku, pokud ne vrátí 0. int ReturnItemNumber() : vrátí počet uživatelů uložených v seznamu. Uzivatel* VratUziv(int number) : vrátí ukazatel na položku danou pořadovým číslem v parametru number. bool Passwcomp(int number, CString string) : porovná heslo zadané z klávesnice předané v parametru string, s heslem uloženým v položce, která je dána parametrem number. Vychází se z předpokladu, že pořadové číslo number bylo získáno při předešlém porovnání sériových čísel. CString IntToStr(int number) : převede integrovou hodnotu na CString. bool hes(int number): pokud položka daná pořadovým číslem má nastaveno vyžádání hesla, vrátí true, pokud ne vrátí false.
6.2.3 Popis uživatelského rozhraní Interakce programu s uživatelem probíhá pomocí dialogového okna,na němž jsou umístěny prvky potřebné pro tvorbu a údržbu databáze uživatelů a nastavení terminálu. Okno tak zobrazuje nabídku, několik tlačítek a tabulku, v níž se zobrazuje databáze uživatelů. Přičemž program umožňuje přidávání, editaci a mazání jednotlivých uživatelů. Dále umožňuje nastavení parametrů sériové komunikace se zapojením terminálu. A kromě toho ještě uchovává historii přístupů pro jednotlivé
44
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
uživatele. Databázi uživatelů je také možno uložit nebo nahrát z pevného disku. Rozhraní je vidět na obrázku 6-1.
Obrázek 6-1 Uživatelské rozhranní Tlačítka „Otevrit“ a „Zavrit“ slouží pro navázání spojení se zapojením terminálu. Tlačítko Konec ukončí aplikaci. Při stisku tlačítka „Přidat“ se zobrazí dialogové okno s prvky, do nichž se zapisují informace o daném uživateli. Vyplnit je možno jméno, sériové číslo karty příslušející danému uživateli, přičemž každé sériové číslo může být v databázi obsaženo pouze jednou. Pomocí zaškrtávacího políčka lze zvolit, zda pro daného uživatele bude požadováno zadání hesla z klávesnice. Pole pro vyplnění osmi místného hesla se zpřístupní až po zatržení tohoto pole. Dále tento dialog obsahuje čtyři pole pro vyplnění časového rozmezí, ve kterém bude uživateli umožněn přístup. Pokud všechna tato pole pro vyplnění času zůstanou nastavena na nulu, pak pro daného uživatele neplatí žádné časové omezení. Povinně je nutné vyplnit pouze pole
45
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
pro zadání sériového čísla karty a pole pro uživatelské heslo (jen když je zaškrtnuté příslušné zaškrtávací políčko). Ve chvíli, kdy je toto dialogové okno otevřeno a ke čtečce se přiloží karta, tak se číslo přečtené z této karty samo zobrazí v poli pro vyplnění sériového čísla. Toto usnadnění je implementováno z důvodu, aby obsluha nemusela zapisovat každé sériové číslo zvlášť. Je třeba podotknout, že po vyplnění sériového čísla do příslušného pole, již nedojde k porovnání s ostatními čísli v databázi. Jinak řečeno při práci s tímto dialogovým oknem aplikace nevyhodnocuje povolení či zamítnutí přístupu. Spodní polovina dialogového okna obsahuje tabulku, v níž jsou vypsáni jednotlivý uživatelé a jejich údaje. V tabulce se zobrazuje jméno uživatele, sériové číslo jeho karty, dále se zobrazuje informace, zda se po daném uživateli požaduje zadání hesla z klávesnice a pak časové rozmezí, v němž dojde k povolení přístupu. Pokud uživatel označí některou z položek tabulky a klikne na ni pravým tlačítkem myši, dojde k zobrazení roletkového menu. V tomto menu se nacházejí položky pojmenované
„Edituj“, “Smaz“ a „Vypis casy“. Zvolením položky „Edituj“ se
zobrazí dialogové okno stejné jako v případě přidávání uživatele do databáze, ovšem tentokrát s již předvyplněnými kolonkami daného uživatele. V tomto okně je poté možné informace o daném uživateli upravovat. Při zvolení položky „Smaz“ dojde ke smazání zvoleného uživatele z databáze a při zvolení položky „Vypis casy“ se zobrazí dialogové okno,v němž je vypsána historie přístupů pro daného uživatele. Tato historie má podobu času a data ,kdy k přístupu došlo. V kolonce v levém horním rohu dialogového okna se zobrazují data přijatá od zapojení terminálu. Zobrazuje se celý formát zprávy se sériovým číslem přijatý od Mifare čtečky a celý formát zprávy se zadaným uživatelským heslem. V nabídce dialogového okna jsou k dispozici dvě položky. Po rozkliknutí položky Soubor se zobrazí podnabídka, obsahující položky „Otevrit“, „Ulozit“ a „Konec“. Položky „Otevrit“ a „Ulozit“ slouží k načtení a uložení databáze uživatelů na a z pevného disku. Databáze uživatelů se ukládá do textové souboru s příponou txt. V tomto souboru je uložena v podobě prostého textového řetězce, ve kterém jednotlivé položky od sebe jsou odděleny znaky ‘$‘. V případě nepřítomnosti některého prvku (například v historii přístupů ještě není uložen žádný čas přístupu)
46
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
se na jeho místě nachází znak ‘!‘. Je třeba mít na paměti, že při otevření databáze z pevného disku se aktuální používaná databáze sama neuloží a data budou ztracena. Stejný případ platí pro zavření aplikace, kdy se rovněž před zavřením neprovede automatické uložení aktuální používané databáze. Položka „Konec“ dle očekávání slouží k ukončení aplikace. Po rozkliknutí druhé položky nabídky označené nastavení se zobrazí podnabídka obsahující pouze jedinou položku pojmenovanou „Nastav com“. Při zvolení této položky se zobrazí dialogové okna v němž je možné nastavit parametry sériové komunikace. Nastavit je možné rychlost komunikace, zda a jaká má být použita parita( sudá, lichá, nebo žádná) a comport k němuž bude terminál připojen. Vzhledem k tomu, že terminál je ve skutečnosti připojen přes FTDI a tím pádem přes rozhranní USB, je nutné v počítači na němž běží program, mít nainstalované ovladače od firmy FTDI vytvářející virtuální comport. Část programu obsluhující sériovou komunikaci běží v odděleném vlákně od zbytku aplikace a při její tvorbě bylo použito následujících zdrojů[19][20]. Počet uživatelů jež je možno uložit do databáze není implicitně nijak omezen. Teoretické omezení se nachází pouze ve velikosti paměti a pak v proměnné ve které je uložen počet uložených uživatelů. Ta je typu int (čili má rozsah 2 31 ). Prakticky však databáze vzhledem k použitému způsobu vyhodnocování a ukládání dat, není příliš vhodná pro spravování příliš mnoha uživatelů. Při příliš velké databázi by docházelo k přílišným prodlevám terminálu.
47
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
7.
ZÁVĚR
V této práci byl popsán návrh zapojení a softwarové řešení mikroprocesorem řízeného přístupového terminálu pracujícího s kartami založenými na standartu Mifare. V současném stavu terminál umožňuje rozhodnutí o zamítnutí nebo povolení přístupu na základě z karty získaného sériového čísla, které se zasílá PC a v něm porovnává s čísly uloženými v databázi. Z dalších podmínek, na nichž povolení přístupu závisí, lze nastavit určité časové rozmezí, v němž bude přístup povolen nebo zadání přídavného přístupového hesla skrze k terminálu připojenou klávesnici. Aby se využilo výhod, které Mifare technologie nabízí, což se týká hlavně vyšší úrovně zabezpečení, by bylo potřeba vyhodnocení přístupu provádět i na základě dat zapsaných v některém z přístupovými klíči chráněných paměťových bloků a ne pouze z volně přístupného sériového čísla karty. Čtení dat z a zápis dat do paměťových bloků chráněných před neoprávněným přístupem však z časových důvodů nebylo realizováno. Z možných vylepšení se, kromě zápisu a čtení z paměti karty, nabízí odstranění závislosti terminálu na propojení s PC, na němž běží program vyhodnocující přístup a je v něm obsažena i databáze uživatelů. Jedním z přístupů jak toho dosáhnout by bylo dovybavení navrženého zapojení terminálu sekundárním zdrojem napájení, který by zapojení poskytoval elektrickou energii i po odpojení primárního zdroje napájení. V tomto případě by bylo možné nejnutnější data o uživatelích uchovávat přímo v paměti mikrokontroléru řídícího terminálu, čímž by již nic nebránilo vyhodnocování přístupu přímo v terminálu. Další možností by bylo připojení přídavné paměti EEPROM pro uchování databáze uživatelů i po odpojení primárního zdroje napětí. V případě těchto řešení by bylo pravděpodobně nutné k mikrokontroléru připojit oscilátor, pro získání zdroje přesného hodinového kmitočtu, z důvodu realizace hodin reálného času, bez kterých by se vyhodnocení v závislosti na čase patrně neobešlo.
48
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
8. [1]
LITERATURA
Radio frequency identification [online]. 2003- , poslední aktualizace 19.May.2008 [cit. 2008-04-18]. Dostupný z WWW:
.
[2]
The History of RFID Technology [online]. 2002-2008 [cit. 2008-04-21]. Dostupný z WWW: .
[3]
RFID [online]. 2006- , poslední aktualizace 2.4.2008 [cit. 2008-05-12]. Dostupný z WWW: .
[4]
VOJÁČEK, Antonín. RFID senzory-současná situace [online]. 29.9.2007 [cit.18.4.2008]. Dostupný z WWW .
[5]
RFID Business Applications [online]. 2002-2008 [cit. 2008-04-29]. Dostupný z WWW
[6]
VOJÁČEK, Antonín. RFID Smart Label a RFID vs. čárkový kód [online]. 16.12.2007 [cit.12.5.2008]. Dostupný z WWW
[7]
SIMMER, David. Networks using MiFARE cards as the transport medium. [s.l.], 2007. 64 s. Jesus College. Vedoucí dizertační práce Dr J. Fawcett. Dostupný z WWW: .
[8]
Mifare [online]. 2004-, poslední aktualizace 28.April.2008 [cit. 2008-04-20]. Dostupný z WWW .
[9]
KLÍMA, Vlastimil, ROSA, Tomáš. Bezkontaktní karty Mifare. Crypto-World [online]. 2007, IX, č. 2 [cit. 2008-04-24]. Dostupný z WWW: .
[10]
MF1ICS50 : Functional specification. Datasheet [online]. 2007 [cit. 2008-0428]. Dostupný z WWW:
49
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
. [11]
Mifare standard card IC : MF1 IC S50. Datasheet [online]. 1998 rev 4.0[cit. 2008-04-28]. Dostupný z WWW
[12]
MC9S08GT60A Datasheet [online]. 2004 rev. 2.3 [cit.02.2008]. Dostupný z WWW .
[13]
HANKOVEC, D. DH Servis [online]. 2002-2008 , poslední aktualizace 6.10.2007 [cit. 2008-04-22]. Dostupný z WWW: .
[14]
AXA020MF read/write module user manual. Datasheet [online]. 1.2.2005 [cit. 2008-05-08]
[15]
PATOČKA, Miroslav, VOREL, Pavel. Řídící elektronika – aktivní obvody : 2.díl [online]. 2004 [cit. 2008-04-20]. Dostupný z WWW .
[16]
FT232R USB UART I.C. Datasheet version 1.02 [online]. 2005, poslední aktualizace 7.12.2005 [cit. 2008-05-02]. Dostupný z WWW: .
[17]
CM200400SFAYA-02 Datasheet [online]. 17.3.2007 [cit. 2007-05-05]. Dostupný z WWW .
[18]
OUWEHAND, Peter. How to control a HD44780-based character-LCD [online]. 1995-2005, poslední aktualizace 20.9.2005. [cit. 2008-05-14]. Dostupný z WWW .
[19]
KONCHAT. Creating a seriál communication on win32 [online]. 2002. poslední aktualizace 20 Oct 2002 [cit. 2008-04-14]. Dostupný z WWW
50
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně
[20]
DE KLEIN, Ramon. Serial library for C++ [online]. 2001, poslední aktualizace 12 Nov 2003 [cit. 2008.04.15]. Dostupný z WWW .
51
SEZNAM PŘÍLOH Příloha 1
Schéma zapojení
Příloha 2
Výkres desky plošných spojů (vrchní část)
Příloha 3
Výkres desky plošných spojů (spodní část)
Příloha 4
Osazovací schéma (vrchní část)
Příloha 5
Osazovací schéma (spodní část)
Příloha 6
Seznam součástek
Příloha 1
Obrázek 8-1 Schéma zapojení
Příloha 2
Obrázek 8-2 Deska plošných spojů(vrchní část)
Příloha 3
Obrázek 8-3 Deska plošných spojů (spodní část)
Příloha 4
Obrázek 8-4 Osazovací schéma (vrchní strana)
Příloha 5
Obrázek 8-5 Osazovací schéma (spodní strana)
Příloha 6 Označení
Hodnota
Pouzdro
R1,R7
4k7
1206
R2,R10,R11,R12
10k
1206
R3,R4,R8
1k2
1206
R5
33k
1206
R6
680R
1206
R9
620R
1206
R13
8k2
1206
R15
1k5
1206
R16
5k6
1206
R17
62k
1206
R19
10k
Rezistory
Kondenzátory C1,C2,C3,C4,C7
100n
1206
C6,C9,C10,C11
10M
SMD-A
BC848
SOT23
1N4148
SOD80
IC1
FT232R
SOP28
IC4
AXA020MF
IC5
MC9S08GT60
QP44
IC2
LF33CV
TO220
IC3
7805CV
TO220
Tranzistory T1,T2,T3 Diody D1 Integrované obvody
Stabilizátory
Další Relé
RR1A05-500
LCD displej
CM200400
Klávesnice
F-KV16KEY
USB konektor
USB1X90B PCB
PN61729
S1
DIP 2x
SD4-01