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