基于 RFID 的小區(qū)門禁管理系統(tǒng)設(shè)計與實現(xiàn)
引 言
由于安全問題越來越突出,人們對社區(qū)安保措施的要求也不斷提高,許多社區(qū)、寫字樓、校園等公共區(qū)域已廣泛應(yīng)用各類門禁系統(tǒng) [1]。目前使用最為普遍的智能門禁系統(tǒng)分別是密碼式門禁系統(tǒng)、刷卡式門禁系統(tǒng)與采用生物識別技術(shù)的門禁系統(tǒng)三種。密碼式門禁系統(tǒng)安全性較差,容易造成密碼泄露 ;生物識別技術(shù)的門禁系統(tǒng)一般采用指紋、人臉及虹膜等人體特征作為識別手段,不可復制性與唯一性決定了其安全性,但其價格昂貴,不利于大量部署。射頻識別技術(shù)(Radio Frequency Identification ,RFID)是一種非接觸式自動識別技術(shù),通過射頻信息識別目標對象并獲取相關(guān)數(shù)據(jù)。隨著RFID 技術(shù)的發(fā)展,非接觸式 IC 卡門禁系統(tǒng)由于其技術(shù)成熟、價格低廉、使用方便等優(yōu)良特性已成為住宅、企業(yè)等安防系統(tǒng)的重要組成部分 [2-3]。
無線射頻識別技術(shù)在計算機技術(shù)、通信技術(shù)及機械電子技術(shù)迅猛發(fā)展的過程中快速成長,其安全便捷、成本低廉、故障率低等優(yōu)點在當今門禁系統(tǒng)中得到了廣泛應(yīng)用 [4]。本文基于 51 單片機與 RFID 研究并設(shè)計一套小區(qū)門禁系統(tǒng),實現(xiàn)在小區(qū)出入口門禁進行 RFID 識別獲取住戶身份信息,通過與數(shù)據(jù)庫已有的居民信息進行比對,進行高效、安全的社區(qū)管理。
1 系統(tǒng)整體設(shè)計
本文設(shè)計的門禁管理系統(tǒng)包括由控制器、讀卡器、電控鎖、LCD 液晶顯示等模塊組成的控制器與門禁管理程序兩部分。其中,門禁控制器是系統(tǒng)的核心單元,由微處理器與外圍電路組成,微處理器 STC89C52RC 是宏晶科技公司生產(chǎn)的一種低功耗、高性能的 8 位處理器,具有 8 KB FLASH 和512 B RAM,32 個 I/O 端口 [5]。射頻讀卡器模塊采用 NXP 公司生產(chǎn)的 MF RC522 模塊,該芯片具有高度集成的非接觸式(13.56 MHz)低功耗讀寫功能,在無需其他電路的情況下可通過內(nèi)部發(fā)送器部分驅(qū)動讀寫器天線在 ISO 14443A/ MIFARE 卡與應(yīng)答機之間通信,支持 SPI,UART,I2C 三種不同的接口與微處理器通信 [6],本文設(shè)計使用 SPI 接口與單片機通信。LCD 液晶顯示模塊為 J12864 模塊,是一款低電壓低功耗的中文漢字圖形點陣液晶顯示器,可用來顯示漢字與圖形,分辨率為 128×64,內(nèi)有 8 192 個 16×16 點陣中文漢字,價格低廉,同時顯示效果滿足設(shè)計要求。門禁管理系統(tǒng)通過串口與控制器通信,開發(fā)環(huán)境為微軟 Visual Studio 2013,用戶界面使用 C# 編程語言的 WinForm 窗體框架,用戶數(shù)據(jù)存儲采用輕量級關(guān)系型數(shù)據(jù)庫系統(tǒng) SQLite 即可滿足要求 [7]。系統(tǒng)整體結(jié)構(gòu)如圖 1 所示。
圖 1 系統(tǒng)整體結(jié)構(gòu)框圖
本文門禁管理系統(tǒng)可有效解決日常門禁使用過程中用戶信息管理不夠直觀的缺點,實現(xiàn)快速、高效、準確的社區(qū)安全管理,主要實現(xiàn)以下功能 :
(1)門禁管理,通過 RFID 技術(shù)綁定用戶身份信息到電子標簽上,當用戶刷卡時與后臺數(shù)據(jù)庫連接識別身份信息, 開啟小區(qū)門禁 ;
(2)用戶數(shù)據(jù)管理,可對用戶信息進行增加、刪除、修改、查找,對于新入住的居民可以添加讀寫卡號與用戶信息, 刪除已搬離社區(qū)的居民信息,修改居民可能更換的信息,查找用戶的相關(guān)信息 ;
(3)開關(guān)門動作,在沒有刷卡開門的動作下,可直接按下手動開關(guān)鍵實現(xiàn)開門 ;
(4)報警動作,當用戶卡號沒有在后臺數(shù)據(jù)庫查詢到時,門無法開啟,并且通過蜂鳴器進行報警。
2 系統(tǒng)實現(xiàn)
本文系統(tǒng)軟件部分包括單片機控制器程序與門禁管理程序。單片機控制器程序?qū)崿F(xiàn)對硬件電路的控制,包括 RFID 讀卡識別、串口通信、LCD 顯示、聲光提醒等功能。門禁管理程序主要完成用戶信息管理、存儲以及與單片機通信等功能。
2.1 控制器程序?qū)崿F(xiàn)
控制器程序是單片機控制系統(tǒng)程序,使用 C 語言進行編程設(shè)計,開發(fā)平臺為主流的單片機開發(fā)軟件 Keil C51,該軟件提供了包括 C 編譯器、宏匯編、鏈接器、庫管理及功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)框架 [8]。RFID 卡號就像每個人的身份證號一樣具有唯一性,并且固化在芯片中無法被修改,當住戶刷卡時,門禁控制器讀取 RFID 卡號并利用串口通信將卡號上傳至管理軟件,管理軟件查詢用戶數(shù)據(jù)庫中是否有對應(yīng)的卡號綁定的居民信息,若存在則返回確認數(shù)據(jù)以開啟小區(qū)門禁并提示正常出入,不存在則拒絕開啟門禁并在液晶顯示屏上提示用戶卡無效以及蜂鳴器報警。當用戶離開小區(qū)時無需刷卡只需通過按下手動開關(guān)鍵即可實現(xiàn)開門,具體工作流程如圖 2 所示。
2.2 門禁管理程序?qū)崿F(xiàn)
門禁管理程序采用 C# 編程語言的 WinForm 窗體用戶界面應(yīng)用程序,其開發(fā)平臺為微軟公司推出的最流行的Windows 平臺應(yīng)用程序開發(fā)環(huán)境 Visual Studio 2013。上位機主要實現(xiàn)用戶信息與 RFID 卡號綁定以及存儲、查詢、管理功能,詳細功能包括以下三個部分 :
(1)用戶交互界面設(shè)計 ;
(2)串口通信,實現(xiàn)與單片機進行數(shù)據(jù)收發(fā)操作 ;
(3)數(shù)據(jù)庫操作,用戶信息增加、刪除、修改、查詢。界面設(shè)計采用 WinFom 可視化設(shè)計器設(shè)計, 使用 .Net Framework框架提供的豐富類庫與控件布局。本文設(shè)計中使用的控件有 Label,TextBox,Button,PictureBox,RadioButton, ComboBox 等控件,主界面如圖 3 所示。主界面包括門禁管理功能、人員管理、人員添加、遠程開門。門禁管理功能可設(shè)置門禁時間以及控制器串口通信參數(shù) ;當用戶刷卡時人員管理功能顯示從數(shù)據(jù)庫中查詢出來的用戶信息 ;人員添加功能實現(xiàn)添加新人員門禁權(quán)限,同時將該卡與人員信息綁定存放到數(shù)據(jù)庫中,需要保存的信息包括姓名、卡號、性別、年齡、民族、手機號碼、籍貫、住址、身份證號等。
圖 3 門禁管理程序主界面
串口通信使用 C#的串口控件 SerialPort控件, 端口號由硬件識別結(jié)果確定, 波特率為 9600bit/s, 數(shù)據(jù)位為 8位,檢驗位為 None,停止位默認設(shè)置為 1。串口打開通過 SerialPort.Open()函數(shù)實現(xiàn),打開后即可進行正常的數(shù)據(jù)收發(fā) [9]。串口發(fā)送數(shù)據(jù)通過 SerialPort.Write(byte[]data, intstart,intlength)函數(shù)實現(xiàn),其中 data是一個待發(fā)送數(shù)據(jù)的字節(jié)數(shù)組,start 是數(shù)據(jù)數(shù)組發(fā)送的起始位置,一般為 0, length是發(fā)送的數(shù)據(jù)長度。串口異步接收數(shù)據(jù),使用串口控件 SerailPort的 DataReceived事件處理函數(shù)進行接收,當單片機發(fā)送數(shù)據(jù)至管理程序時自動處理數(shù)據(jù)接收,串口配置主要實現(xiàn)代碼如下。
2.3 通信協(xié)議實現(xiàn)
門禁系統(tǒng)管理軟件與單片機程序通過串口進行通信,串口通信的特點是一個字符接著一個字符進行傳輸,并且傳輸字符時總是以起始位開始,以停止位結(jié)束,字符之間沒有固定的時間間隔要求,因此雙方必須共同遵循同一套通信協(xié)議才能保證數(shù)據(jù)傳輸完整正確 [10]。本文通信需要實現(xiàn)控制器用戶卡號上傳與管理軟件查詢結(jié)果返回的功能。通信協(xié)議主要包括數(shù)據(jù)幀頭、數(shù)據(jù)長度、命令類型、設(shè)備號、數(shù)據(jù)正文、CRC 校驗。數(shù)據(jù)幀結(jié)構(gòu)如圖 4 所示。
圖 4 通信協(xié)議數(shù)據(jù)幀結(jié)構(gòu)
控制器單片機通過硬件串口設(shè)備收發(fā)數(shù)據(jù),門禁系統(tǒng)管理軟件通過 SerialPort 類調(diào)用硬件設(shè)備收發(fā)數(shù)據(jù)。為保障數(shù)據(jù)正確傳輸,程序設(shè)計時需要實現(xiàn)數(shù)據(jù)檢驗與重發(fā)機制。接收串口數(shù)據(jù)較為復雜,結(jié)合串口協(xié)議分析需要解決的問題為 :緩存串口收到的所有數(shù)據(jù) ;找到一條完整數(shù)據(jù)幀 ;分析數(shù)據(jù)幀的命令內(nèi)容 ;將分析出的命令通知上層應(yīng)用。緩存接收所有數(shù)據(jù)最高效的方法是利用 C# 中的 List〈B〉結(jié)構(gòu),該結(jié)構(gòu)能夠方便地實現(xiàn)數(shù)據(jù)元素的增、刪、改操作,因此利用SerialPort 類的 DataReceived 增加接收事件將串口接收數(shù)據(jù)全部放入 List〈B〉結(jié)構(gòu)后再分析。找出一條完整的數(shù)據(jù)幀,首先在緩存的數(shù)據(jù)中找到幀頭,找到后檢測后面一個字節(jié)的數(shù)據(jù)長度,然后計算緩存剩下的數(shù)據(jù)是否足夠,數(shù)據(jù)不夠就停止分析以減少時間消耗,如果剩余數(shù)據(jù)大于數(shù)據(jù)長度,計算出數(shù)據(jù)幀CRC 校驗碼并與緩存數(shù)據(jù)中的CRC 校驗碼對比, 如果校驗碼一致說明數(shù)據(jù)幀傳輸正確,解析幀內(nèi)容并通知上層應(yīng)用處理,否則丟棄掉該幀等待重發(fā)。
3 結(jié) 語
門禁系統(tǒng)已經(jīng)是現(xiàn)代安保設(shè)施的一個重要環(huán)節(jié),也是社區(qū)、辦公、商場領(lǐng)域智能化與數(shù)字化管理的重要應(yīng)用之一。本文設(shè)計的小區(qū)門禁管理系統(tǒng)采用自動射頻識別技術(shù),其方案成本低,使用便捷,技術(shù)成熟,滿足小區(qū)管理現(xiàn)代化、智能化、易用性的要求,通過 RFID 即可實現(xiàn)全區(qū)域出入人員的有效管理,是現(xiàn)代社會智能化的一個重要應(yīng)用。