潘海軍
(湖南科技學(xué)院 電子工程系,湖南 永州 425100)
射頻識別技術(shù)(Radio Frequency Identification,簡稱RFID)是現(xiàn)代信息技術(shù)高速發(fā)展的產(chǎn)物,是一種基于變壓器耦合方式以及電磁反向散射通信原理開發(fā)出來的無線、非接觸方式的自動識別技術(shù)。本文中介紹的非接觸式射頻卡讀寫器是基于單片機(jī)AT89C52與荷蘭Philips公司的嵌入式讀寫芯片MF RC500設(shè)計(jì)開發(fā)的。它能完成對Mifare1卡所有讀寫及控制操作。 Mifare技術(shù)體系,以其性能穩(wěn)定,保密性強(qiáng),讀寫速度快,在全世界射頻卡行業(yè)中占有很大的比例。使用的 Mifare卡信息容量大、安全、不易偽造,擴(kuò)充功能強(qiáng)[1-3]。
MF RC500完全集成了在 13.56 MHz下所有類型的被動非接觸式通信方式和協(xié)議,是高集成讀卡器IC系列中的一員,支持IS014443A所有的層。在非接觸式通信過程中,該讀卡IC利用先進(jìn)的調(diào)制和解調(diào)概念。MF RC500內(nèi)部的發(fā)送器不需要增加有源電路就能直接驅(qū)動近距離的天線(距離最大可達(dá)100mm)。內(nèi)部的接收器提供有效的解調(diào)、解碼電路,作為 IS014443A兼容的應(yīng)答器信號;其數(shù)字部分用于檢測IS014443A幀和錯誤檢測(奇偶&CRC)。此外,MF RC500支持快速CRYPTO1加密算法并用于驗(yàn)證MIFARE的系列產(chǎn)品。它的并行接口可直接連接任何8位微處理器,給讀卡器/的終端設(shè)計(jì)提供了很大的靈活性。
由于MFRC500的高集成度及其獨(dú)有的特性,使得在硬件開發(fā)和軟件設(shè)計(jì)時,必須嚴(yán)格遵循MFRC500的特有工作時序,外部電路應(yīng)嚴(yán)格遵守其特性,并且注意 MF RC500的復(fù)位操作,否則芯片將不工作,甚至被損壞。
基于單片機(jī) AT89C52和Philips 公司的 MF RC500射頻卡讀寫模塊構(gòu)成的門禁系統(tǒng)總體結(jié)構(gòu)框圖如圖1所示。系統(tǒng)工作時,微處理器AT89c52先控制射頻識別讀寫器讀卡,然后單片機(jī)根據(jù)所得數(shù)據(jù)輸出四個開關(guān)量信號(分別控制進(jìn)出的兩個門閥繼電器),開關(guān)量信號經(jīng)過放大后分別去控制門鎖繼電器和讀取門磁信號,同時單片機(jī)和下位PC機(jī)之間進(jìn)行通訊,來獲得指令和傳輸系統(tǒng)狀態(tài)等,最后去操作系統(tǒng)的輔助設(shè)備,如液晶屏、EEPROM等。
圖1 系統(tǒng)的總體結(jié)構(gòu)圖
根據(jù)方案的選擇,門禁系統(tǒng)部分主要以下位PC機(jī)為中心, 向上通過以太網(wǎng)連接到系統(tǒng)控制中心, 向下則通過RS485 與AT89C52相連,通過基于MF RC500芯片的讀卡器對門禁終端進(jìn)行數(shù)據(jù)采集, 并進(jìn)行數(shù)據(jù)處理后, 發(fā)往系統(tǒng)控制中心。系統(tǒng)的軟件結(jié)構(gòu)框圖如圖2 所示。由圖中看出,讀卡程序、串口通信控件和基于以太網(wǎng)的網(wǎng)絡(luò)通信組件非常重要, 正是通過這三個軟件模塊把讀卡器、下位PC機(jī)以及系統(tǒng)控制中心連接起來。其中基于以太網(wǎng)的網(wǎng)絡(luò)通信組件采用了Windows底層的Winsock網(wǎng)絡(luò)通信組件。
圖2 軟件框架圖
在 MF RC500 的函數(shù)庫中, 可直接對符合 ISO14443A 標(biāo)準(zhǔn)的非接觸式卡和感應(yīng)器進(jìn)行如下操作:
void main (void)
{ init ();
M500PcdConfig () ;
PcdReadE2 (8 ,4 , Snr-RC500) ;
M500PcdMfOutSelect (mfout) ;
For (count = 0 ;count < 100 ;count + + )
{ status1 = M500PiccRequest ( PICC-REQALL ,tt1) ;
if (status1 = = MI-OK)
status1 = M500PiccAnticoll (0 , cardserialno) ;
if (status1 = = MI-OK)
status1 = M500PiccSelect (cardserialno ,sak1) ;
if (status1 = = MI-OK)
status1 = M500PiccAuth (PICCAUTHENT1A ,
cardserialno , 1 , 4) ;
if (status1 = = MI-OK)
status1 = M500PiccRead(4 , blockdata) ;
for ( counter2 = 0 ;counter2 < 16 ;counter2 + + )
blockdata[counter2 ]= counter ;
if (status1 = = MI-OK)
status1 = M500PiccWrite ( 4 , blockdata) ;
} }
在基礎(chǔ)數(shù)據(jù)采集和實(shí)時控制系統(tǒng)過程中,單片機(jī)AT89C52通過計(jì)算機(jī)的RS-232接口進(jìn)行命令和數(shù)據(jù)傳送。在直接傳送通信系統(tǒng)中,只要發(fā)送和接收雙方同時準(zhǔn)備好,信號發(fā)送端(TXD)、信號接收端(RXD)和信號地(GND)這 3根線可進(jìn)行通信;若以應(yīng)答方式進(jìn)行數(shù)據(jù)通信,就使用請求發(fā)送(RTS)、清除發(fā)送(CTS)或數(shù)據(jù)終端準(zhǔn)備(DTR)、數(shù)據(jù)裝置準(zhǔn)備(DSR)進(jìn)行硬件握手。在Windows操作系統(tǒng)下,可以很方便地使用Win32通信API函數(shù)來實(shí)現(xiàn)這些硬件的握手以及數(shù)據(jù)的傳送[4]。
為了交互式串行通信,在Windows通信體系中已提供1個改進(jìn)的串行應(yīng)用程序接口SAPI,用來進(jìn)行交互式串行通信。其中串口和其他通信設(shè)備是作為文件進(jìn)行處理的,串口的打開、關(guān)閉、讀取及寫入所用的函數(shù)和操作文件的函數(shù)相同。
1) 打開串口。Windows提供為讀訪問或?qū)懺L問打開串口的CreateFile 函數(shù),當(dāng)成功打開串口后返回該串口句柄,供讀寫串口時使用。
2) 串口打開后,對串口進(jìn)行合適配置。Windows提供得到當(dāng)前串口設(shè)置情況的GetCommState 函數(shù),該函數(shù)接收1個打開端口句柄和1個指向DCB結(jié)構(gòu)的指針,在DCB結(jié)構(gòu)中返回信息,GetCommState函數(shù)利用補(bǔ)充函數(shù)將 DCB 結(jié)構(gòu)中的內(nèi)容寫向串口設(shè)置。
3) 讀寫端口。讀寫端口可以通過查詢、同步 I/O 、異步 I/O( 后臺 I/O) 和事件驅(qū)動 I/O 4 種技術(shù)來實(shí)現(xiàn)。
4) 串口關(guān)閉。通信完成后,串口應(yīng)該利用 CloseHandl e(hComm)函數(shù)關(guān)閉串口,其中hComm為打開的串口句柄。否則,串口始終處于打開狀態(tài),其他應(yīng)用程序就不能打開或使用它。
在編寫下位PC機(jī)與系統(tǒng)控制中心通信的程序時采用了Windows底層的Winsock網(wǎng)絡(luò)通信組件[5-6]。Winsock是一個非常靈活的網(wǎng)絡(luò)通信組件。Winsock的主要屬性和事件方法如下:
1) protocol: 選擇通信協(xié)議,TCP/IP 或 UDP,在此采用TCP/IP。
2) Remotehost: 指明服務(wù)器的IP 地址或計(jì)算機(jī)名稱。
3) Remoteport: 指明服務(wù)器的聆聽通道。
4) Connect: 通過此方法,與服務(wù)器建立相應(yīng)連接。
5) GetData: 通過此方法,接收服務(wù)器的數(shù)據(jù)。
6) Close: 此事件在 Winsock 關(guān)閉或斷開時觸發(fā)。
7) SendData: 通過此方法,向相應(yīng)服務(wù)器發(fā)送數(shù)據(jù)。
Winsock通信組件的工作模型如圖3所示。
圖3 數(shù)據(jù)流Socket客戶/服務(wù)器應(yīng)用程序工作模式
本系統(tǒng)已投入實(shí)際運(yùn)行,穩(wěn)定可靠、實(shí)時性強(qiáng)且充分利用現(xiàn)有網(wǎng)絡(luò),不必重新布線,利用傳統(tǒng)的基于 RS232通信接口的門禁系統(tǒng)快速改造為大范圍分布式遠(yuǎn)程控制門禁系統(tǒng)。該門禁系統(tǒng)的軟件設(shè)計(jì)與開發(fā)使得數(shù)據(jù)采集、處理,數(shù)據(jù)維護(hù),手動更改數(shù)據(jù),對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)查詢,自動生成各種報(bào)表等管理工作變得方便迅捷,對智能門禁系統(tǒng)的推廣有重要意義。系統(tǒng)設(shè)計(jì)開發(fā)過程中充分運(yùn)用了軟硬件協(xié)同設(shè)計(jì)的思想,各部分盡量采用模塊化設(shè)計(jì),可以稍加裁剪改造為適于智能小區(qū)、多校區(qū)圖書館等多種不同場合的分布式遠(yuǎn)程控制智能門禁系統(tǒng)。
[1]胡偉,杜謙.基于IC卡技術(shù)的高安全性門禁系統(tǒng)[J].計(jì)算機(jī)與現(xiàn)代化, 2007, (3):118-120.
[2]Narn-Yih Lee.Intergrating Access Control with User Authentication Using Smart Cards[J].Applied English Department, Southern Taiwan University of Technology, IEEE Transactions on Consumcr Electronics, Vol.46, No.4, NOVEMBER 2000:943-947.
[3]Sanjay E.Sarma, et al.RFID Systems and Security and Privacy Implications[J], CHES 2002, Lecture Notes in Computer Science 2523, 2002: 454–469.
[4]來國軍,徐平.基于以太網(wǎng)技術(shù)的門禁控制系統(tǒng)[J].裝備指揮技術(shù)學(xué)院學(xué)報(bào), 2003,14(5):81-84.
[5]李智芳.非接觸式 IC卡門禁考勤系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì), 2000,21(6):32-34.
[6]陳思功.基于UML的軟硬件協(xié)同設(shè)計(jì)的模型分析方法[J].軟件學(xué)報(bào),2003,14(1):103-109.