呂中興++黃艷++閔惠芳
摘要:隨著現(xiàn)今安保系統(tǒng)智能化趨勢不斷地發(fā)展,門禁系統(tǒng)的智能化要求也迫在眉睫。為實(shí)現(xiàn)門禁系統(tǒng)的智能化,本文提出了一套針對于門禁系統(tǒng)以MIFARE卡為識別對象,基于PIC16F877單片機(jī)的非接觸式IC卡讀卡器的設(shè)計(jì)方案。首先,該方案以PIC單片機(jī)為控制核心構(gòu)成主控模塊,MFRC500專用芯片為讀寫模塊。其次,RS485通信電路構(gòu)成通信轉(zhuǎn)換模塊,與PC機(jī)構(gòu)成管理系統(tǒng);LCD顯示電路和矩陣鍵盤電路構(gòu)成人機(jī)接口模塊,實(shí)現(xiàn)人機(jī)交互;7805穩(wěn)壓電路構(gòu)成電源模塊,提供芯片穩(wěn)定直流電源。最后,該方案經(jīng)實(shí)際電路測試顯示,能實(shí)現(xiàn)對MIFARE卡進(jìn)行識別讀寫操作,對門進(jìn)行開關(guān)操作,并能與PC管理機(jī)形成可靠的數(shù)據(jù)庫,同時(shí)能對待通過人員進(jìn)行身份核實(shí)。
關(guān)鍵詞:非接觸式IC卡讀卡器 PIC單片機(jī) 智能化的門禁系統(tǒng) MFRC500
中圖分類號:TN409 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2014)12-0138-03
非接觸式IC卡,由IC芯片、感應(yīng)天線組成,封裝在一個標(biāo)準(zhǔn)的PVC卡片內(nèi),芯片及天線無任何外露部分。是世界上最近幾年發(fā)展起來的新技術(shù),它成功地將射頻識別技術(shù)和IC卡技術(shù)結(jié)合起來,解決了無源(卡中無電源)和免接觸這兩個難題,是電子器件領(lǐng)域的一大突破??ㄆ谝欢ň嚯x范圍靠近讀寫器表面,通過無線電波的傳遞來完成數(shù)據(jù)的讀寫操作[1]。由于非接觸式IC卡具有安全性、智能性、較大存儲容量、更好的應(yīng)用環(huán)境適應(yīng)性、讀寫設(shè)備簡單和操作速度快等優(yōu)點(diǎn),其技術(shù)發(fā)展十分迅速,應(yīng)用領(lǐng)域愈加廣泛,特別是在學(xué)校一卡通、門禁、公交等場合。非接觸式IC卡技術(shù)的這些特點(diǎn)恰好適用于門禁系統(tǒng)的智能化,故將非接觸式IC卡技術(shù)運(yùn)用于門禁系統(tǒng)中。而非接觸式IC卡技術(shù)的關(guān)鍵是對非接觸式IC卡讀卡器的設(shè)計(jì),所以本文圍繞對門禁系統(tǒng)中非接觸式IC卡讀卡器的設(shè)計(jì)展開,簡要介紹其工作原理,詳細(xì)描述硬件設(shè)計(jì)和軟件設(shè)計(jì)。該讀卡器系統(tǒng)包含單片機(jī)芯片PIC16F877、讀寫芯片MFRC500、穩(wěn)壓芯片7805和通信芯片MAX491等常用芯片,這些芯片的一般性保證了系統(tǒng)二次開發(fā)的可行性。該方案能夠穩(wěn)定實(shí)現(xiàn)預(yù)期的門禁功能,且易于制作、成本較低。除此之外,可以通過改變外圍電路,滿足其他多種自動識別系統(tǒng)。
1 系統(tǒng)組成
通用讀卡器功能較為簡單,通過執(zhí)行上位PC機(jī)的命令,對卡片進(jìn)行簡單的讀寫操作。故這類讀卡器的系統(tǒng)組成也較為簡單,由主控制單片機(jī)、通訊芯片、讀卡芯片、終端驗(yàn)證這四部分組成。
而門禁讀卡器是專用讀卡器,是通用讀卡器的一種擴(kuò)展運(yùn)用,是門禁控制系統(tǒng)中十分關(guān)鍵的組成部分,它的功能就是對待通過人員進(jìn)行身份核實(shí),從而決定各重要場所出入的大門的開關(guān)。每個被門禁讀卡器所控制的門上都安裝有電子鎖,門禁讀卡器就是通過給輸出繼電器發(fā)送信號來控制電子鎖對重要場所的門進(jìn)行開關(guān)。當(dāng)用戶需要通過門禁讀卡器控制的大門時(shí),需要通過讀卡器對所持卡片的信息核實(shí)才可以通過大門,或者采用直接輸入密碼的方式出入。
該門禁讀卡器系統(tǒng)以PIC16F877控制模塊、MFRC500讀寫模塊為核心,RS485通信模塊、存儲模塊、時(shí)鐘模塊、天線模塊、電源模塊、人機(jī)接口模塊(LCD顯示電路和矩陣鍵盤電路)和蜂鳴器報(bào)警模塊等組成輔助模塊,系統(tǒng)組成框圖如圖1所示[2]。讀寫器與非接觸式IC卡的數(shù)據(jù)交換,通過在射頻場中天線線圈之間的耦合,建立無線鏈接完成。
2 工作原理
本設(shè)計(jì)方案采用的非接觸式IC卡是MIFARE1 IC射頻卡,以Philips公司的S50系列芯片為核心,并采用了國際上常用的ISO14443 TYPE A非接觸式接口標(biāo)準(zhǔn)[1]。S50上內(nèi)建有8K存儲容量的E2PROM并劃分為16個扇區(qū),每個扇區(qū)劃分為4個數(shù)據(jù)存儲塊,每塊16個字節(jié),以塊為存取單位,每個扇區(qū)可由多種方式的密碼管理。每張射頻卡都有唯一的序列號,字節(jié)數(shù)為32位[1]。除此之外,該系列芯片具有防沖突機(jī)制,支持多卡操作。其主要電路包括RF射頻接口電路和數(shù)字電路這兩部分,其功能框圖如圖2所示。片內(nèi)無源,工作的電源能量由IC卡讀卡器天線發(fā)射無線載波信號,耦合到卡片上的天線而產(chǎn)生。
當(dāng)MIFARE卡進(jìn)入讀卡器的射頻場時(shí),單片機(jī)PIC16F877發(fā)出請求,通過對讀寫模塊中MFRC500芯片特殊內(nèi)存寄存器的讀寫來控制讀寫模塊與MIFARE卡建立連接,進(jìn)行讀寫操作。MFRC500 實(shí)際上是PIC16F877與射頻卡之間進(jìn)行信息交換的“中間人”。任何卡片上數(shù)據(jù)讀寫均須通過MFRC500來傳遞。傳送不同類型的指令給MFRC500,就能實(shí)現(xiàn)對MFRC500的控制。讀卡器發(fā)給卡的數(shù)據(jù)信息在調(diào)制前采用的是米勒編碼,而卡發(fā)給讀卡器的數(shù)據(jù)信息采用的是曼切斯特編碼[7]。
3 系統(tǒng)硬件設(shè)計(jì)
3.1 控制芯片的選擇
此讀卡器系統(tǒng)選擇的控制芯片為Microchip公司的PIC16FXX系列中的PIC16F877芯片。由Microchip公司推出的PIC16FXX系列單片機(jī),采用了精簡指令集RISC結(jié)構(gòu),具有高速度、低功耗、低電壓、大電流LCD驅(qū)動能力等優(yōu)點(diǎn)。其次,這個系列的單片機(jī)采用的是雙總線結(jié)構(gòu),也稱為哈佛結(jié)構(gòu)。這種結(jié)構(gòu)將程序總線和數(shù)據(jù)總線分開,使得取指令和取數(shù)據(jù)同時(shí)進(jìn)行。由于哈佛結(jié)構(gòu)將指令空間和數(shù)據(jù)空間分開,使得單片機(jī)能在取指令的同時(shí)執(zhí)行另一條指令,從而實(shí)現(xiàn)流水作業(yè)[3]。
相比之下,PIC單片機(jī)芯片要優(yōu)于MCS-51單片機(jī)芯片,可體現(xiàn)在如下三個方面[3]:
(1)總線結(jié)構(gòu)。MCS-51單片機(jī)的總線結(jié)構(gòu)是馮-諾依曼型,計(jì)算機(jī)在同一個存儲空間取指令和數(shù)據(jù),兩者不能同時(shí)進(jìn)行;而PIC單片機(jī)的總線結(jié)構(gòu)是哈佛結(jié)構(gòu),指令空間和數(shù)據(jù)空間是完全分開的,一個用于指令,一個用于數(shù)據(jù),由于可以對程序和數(shù)據(jù)同時(shí)進(jìn)行訪問,所以提高了數(shù)據(jù)吞吐率。PIC單片機(jī)的程序和數(shù)據(jù)總線可以采用不同的寬度。數(shù)據(jù)總線是8位,但指令總線分別為12、14、16位。(2)流水線結(jié)構(gòu)。 MCS-51單片機(jī)的取指和執(zhí)行采用單指令流水線結(jié)構(gòu),兩種操作不能同時(shí)進(jìn)行;而PIC單片機(jī)的取指和執(zhí)行采用雙指令流水線結(jié)構(gòu),也就是可以同時(shí)進(jìn)行取指和執(zhí)行兩種操作。(3)寄存器組。 PIC單片機(jī)的所有寄存器,包括I/O口、定時(shí)器和程序計(jì)數(shù)器等都采用RAM結(jié)構(gòu)形式,而且都只需要一個指令周期就可以完成訪問和操作;而MCS-51單片機(jī)需要兩個或兩個以上的周期才能改變寄存器的內(nèi)容。
綜上所述,PIC16F877單片機(jī)運(yùn)行處理效率高、數(shù)據(jù)吞吐率大,故本設(shè)計(jì)方案選擇了PIC16F877芯片作為主控制芯片。
3.2 MFRC500模塊
MFRC500是應(yīng)用于13.56MHZ非接觸式通信中高集成讀卡系列,內(nèi)嵌ISO14443協(xié)議解釋器,它支持ISO14443中TYPEA通信標(biāo)準(zhǔn),支持使用MIFARE高波特率的非接觸式通信。該讀卡芯片內(nèi)部結(jié)構(gòu)由并行微控制器接口、雙向FIFO緩沖區(qū)、中斷、數(shù)據(jù)處理單元、狀態(tài)控制單元、安全和密碼控制單元、模擬電路接口及天線接口組成;MFRC500外部接口則包括數(shù)據(jù)總線、地址總線、控制總線、電源等[4]。MFRC500的并行微控制器接口自動檢測連接的8位并行接口的類型[5]。它包含了一個雙向FIFO緩沖區(qū)和一個可配置的中斷輸出,這樣就連接各種單片機(jī)提供了很大的靈活性。數(shù)據(jù)處理部分執(zhí)行數(shù)據(jù)的并行—串行轉(zhuǎn)換。狀態(tài)和控制部分允許對器件進(jìn)行配置以使性能調(diào)節(jié)到最佳狀態(tài)。模擬電路包含一個具有非常低阻抗橋驅(qū)動器輸出的發(fā)送部分,這得最大操作距離可達(dá)10cm,接收器可以檢測到非常弱的應(yīng)答信號[6]。
3.3 電源模塊
該讀卡器系統(tǒng)內(nèi)所有芯片的工作電壓均為 5V,而讀卡器是通過電源插頭直接接入電壓為220V、頻率為50HZ的市電,故該系統(tǒng)需要一個降壓穩(wěn)壓電路為芯片提供穩(wěn)定在5V的直流電。在仔細(xì)考慮后,決定采用常用的降壓穩(wěn)壓電路7805電路。該電路結(jié)構(gòu)簡單,易于實(shí)現(xiàn),成本較低,且功能較為穩(wěn)定,故非常符合讀卡器系統(tǒng)的要求。由于具體電路比較常見,這里不再贅述。當(dāng)所需電流超過穩(wěn)壓器標(biāo)定值時(shí),可采用外接功率管的方法來進(jìn)行擴(kuò)流。
3.4 單片機(jī)與MFRC500模塊接口電路
PIC16F877單片機(jī)與MFRC500模塊的數(shù)據(jù)通信是通過SPI三線串行總線實(shí)現(xiàn)的,其中三線分別為片選線SS ,時(shí)鐘線SCLK和數(shù)據(jù)線SDATA ,SS和SDATA是雙向的,而SCLK是單向的。時(shí)鐘只能由主控制器PIC16F877單片機(jī)產(chǎn)生;SS為數(shù)據(jù)發(fā)送使能,若一方有數(shù)據(jù)要發(fā)送給另一方,則該方控制SS線為低電平,并在發(fā)送結(jié)束后將該線置高電平,接受方不得控制該線,雙方必須遵守通信協(xié)議,不得同時(shí)控制該線;SDATA為數(shù)據(jù)線,由數(shù)據(jù)發(fā)送端控制,數(shù)據(jù)接受端必須釋放該線。該線在一次傳輸開始時(shí)還同時(shí)為數(shù)據(jù)接受端的響應(yīng)信號。
通信的起始者是PIC16F877單片機(jī),應(yīng)答者是MFRC500讀寫模塊。完整的通信過程應(yīng)該是,先由單片機(jī)向讀寫模塊發(fā)送控制和數(shù)據(jù)信號,讀寫模塊執(zhí)行完單片機(jī)所要求的命令后,將命令執(zhí)行的狀態(tài)和響應(yīng)數(shù)據(jù)反饋給單片機(jī)。開始通信前,單片機(jī)和讀寫模塊必須都處于空閑狀態(tài)。讀寫模塊的RST接外部PIC16F877的I/O口,這樣在讀寫模塊出現(xiàn)異常時(shí)可由單片機(jī)強(qiáng)制復(fù)位。之后,單片機(jī)向SS控制線發(fā)送下降沿信號,等待讀寫模塊在SDATA數(shù)據(jù)線上的響應(yīng)。若在規(guī)定時(shí)間內(nèi)SDATA數(shù)據(jù)線未響應(yīng),則單片機(jī)終止本次傳輸,將錯誤代碼返回給主程序,由主程序進(jìn)行錯誤處理。若SDATA數(shù)據(jù)線正確響應(yīng),則單片機(jī)可將命令和數(shù)據(jù)發(fā)送至讀寫模塊。PIC16F877等待讀寫模塊發(fā)回的狀態(tài)和響應(yīng)數(shù)據(jù),若在規(guī)定時(shí)間內(nèi)未響應(yīng),則終止本次傳輸,且向主程序報(bào)告錯誤。若SS控制線信號正確響應(yīng),則單片機(jī)可接收狀態(tài)和數(shù)據(jù)[7]。
3.5 人機(jī)交互模塊
該人機(jī)交互模塊包括LCD顯示和矩陣鍵盤電路,通過讀卡器的識別功能達(dá)到對IC卡進(jìn)行讀寫和系統(tǒng)設(shè)置的功能,使得能自動識別待通過人員的身份并進(jìn)行對重要場所門的開關(guān)操作。LCD采用ACM1602A芯片,基控制器大部分為HD44780,1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫和常用的符號,能有效顯示人員信息和反饋?zhàn)x卡信息。鍵盤電路由2*8的矩陣鍵盤所構(gòu)成,該矩陣鍵盤直接插接在電路主板上的一個10針擴(kuò)展插槽上[8]。
3.6 通信模塊
PIC單片機(jī)與PC上位機(jī)進(jìn)行數(shù)據(jù)交換時(shí),采用RS485串行通信,通信接口采用RS485總線。電路設(shè)計(jì)時(shí)采用MAX491芯片將單片機(jī)的串口數(shù)據(jù)轉(zhuǎn)換為RS485信號輸出。
4 系統(tǒng)軟件設(shè)計(jì)
由于C語言具有編程效率高、軟件調(diào)試直觀、維護(hù)升級方便、程序重復(fù)利用率高和程序跨平臺移植性高,所以本設(shè)計(jì)方案采用C語言來進(jìn)行軟件開發(fā)。該系統(tǒng)軟件設(shè)計(jì)是在MPLAB IDE開發(fā)環(huán)境中進(jìn)行開發(fā),可以分為兩個部分:對MFRC500讀寫模塊應(yīng)用程序的開發(fā)和對讀卡器其他輔助電路的應(yīng)用程序開發(fā)[9]。前者包括:主控程序、PIC單片機(jī)初始化程序、讀卡器核心模塊MFRC500子程序、防沖突子程序和數(shù)據(jù)塊操作子程序等;后者包括:LCD顯示子程序、鍵盤驅(qū)動子程序和蜂鳴器驅(qū)動子程序等。門禁讀卡器的軟件設(shè)計(jì)流程,見圖3。門禁讀卡器的軟件設(shè)計(jì)需要依據(jù)其工作處理的過程,具體步驟如下所述。讀卡器系統(tǒng)啟動后,先對單片機(jī)和MFRC500讀寫芯片進(jìn)行初始化處理,初始化主要目的是清空芯片中各種標(biāo)志位和數(shù)據(jù)寄存器,防止之前的數(shù)據(jù)對以后判斷產(chǎn)生影響,打開PIC單片機(jī)中斷。初始化后,讀取時(shí)鐘芯片第一個RAM空間內(nèi)的數(shù)據(jù)。判斷讀卡器系統(tǒng)內(nèi)的日志信息是否己經(jīng)存滿,如果存滿,就與上位機(jī)進(jìn)行遠(yuǎn)程通信,發(fā)送錯誤信息,請求上位機(jī)提取所有日志信息。提取完成后,清空RAM中的所有數(shù)據(jù)信息,然后開始正常工作。如果RAM中的數(shù)據(jù)未存滿,讀卡器則等待卡片。當(dāng)有MIFARE卡進(jìn)入讀卡器的射頻范圍,關(guān)閉PIC單片機(jī)中斷,這使得讀卡器在工作時(shí)不接收上位機(jī)的任何指令。關(guān)閉中斷后便開始通過PSAM卡和該卡片鑒權(quán),如果不通過則在LCD顯示屏上顯示相應(yīng)的錯誤信息。通過讀取卡片的序列號和帶通過人員的信息,檢查卡片是否在黑名單中。如果在,則在液晶顯示屏上顯示相應(yīng)的錯誤信息;如果不在,蜂鳴器長響一聲后開門并將所有信息存在存儲模塊中,將時(shí)鐘芯片內(nèi)的日志數(shù)量加l。
5 結(jié)語
本文提出并驗(yàn)證了一種針對門禁系統(tǒng)、基于PIC單片機(jī)的非接觸式IC卡讀卡器的設(shè)計(jì)方案,能實(shí)現(xiàn)對待通過人員的身份識別,對大門進(jìn)行自動開關(guān),性能穩(wěn)定可靠。除此之外,制作較為簡單,成本較低。但是在應(yīng)用中,還有可改進(jìn)之處,例如:讀寫芯片可改為采用遵守ISO14443 TYPE B標(biāo)準(zhǔn)的MFRC531芯片,這樣可以提高通信效率、更易于實(shí)現(xiàn)軟件編碼、形成電路更簡單。
參考文獻(xiàn)
[1]陳大才,王卓人譯.KlausFinkenzeller.射頻識別(RFID)技術(shù)[M].北京:電子工業(yè)出版社,2001.
[2]莫德舉,吳剛.通用非接觸式IC卡讀卡器的開發(fā)[J].儀器儀表學(xué)報(bào),2006(23):936-939.
[3]丁躍軍,來清民,劉建華,吳清榮.PIC單片機(jī)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社,2005.
[4]陳沖,趙升,謝文彬,高猛.基于無線通信的非接觸式IC卡讀卡器設(shè)計(jì)[J].溫州大學(xué)學(xué)報(bào),2011(32):18-24.
[5]張俊杰,喬宜正.非接觸式IC卡讀寫模塊的應(yīng)用開發(fā)[J].世界電子元器件,2004(12):44-46.
[6]王愛英.智能卡技術(shù)[M].北京:清華大學(xué)出版社,2000.
[7]李淑琴,陳林,范蟠果.射頻識別非接觸式IC卡讀卡器的設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2007(3):378-380.
[8]許珊,王鳳桐,徐霽堂.基于非接觸式IC卡讀卡器研究[J].中國校外教育,2014(2):163.
[9]嚴(yán)雄武,梁楚樵.MIFARE非接觸式IC卡讀卡器的設(shè)計(jì)構(gòu)架研究[J].武漢理工大學(xué)學(xué)報(bào),2002(26):85-87.