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