趙 鵬
(西昌衛星發射中心,四川 西昌 615000)
基于開源硬件的門禁控制系統
趙 鵬
(西昌衛星發射中心,四川 西昌 615000)
本文設計了一種基于開源硬件的門禁控制系統。該系統以開源硬件arduino控制板為控制芯片,將IC卡門禁讀卡器讀取的IC卡號,通過以太網板卡發送到信息中心服務器進行權限判斷,并利用arduino控制板實現門磁的控制。采用開源硬件raspberry pi實現門禁數據的顯示。測試證明本系統成本低、功耗低、擴展性好,運行穩定可靠。
門禁;arduino;raspberry pi; 開源硬件
門禁控制系統是采用現代電子與信息技術,在建筑物內外的出入口實現對人或者物的進出實施放行、拒絕、記錄和報警等操作的一種電子化系統,適用于智能化小區、銀行、倉庫等各種場合。隨著網絡化進程的深入,門禁控制器產品逐步由傳統型向網絡型門禁系統轉變,通過局域網實現控制中心服務器與前端控制器的互聯互通,通過終端可以隨時查看人員進出的刷卡記錄,同時可以實現前臺和門禁的遠程控制[1-3]。門禁控制器不僅僅完成門禁功能,同時具有區域人數統計、遠程控制、防盜報警等功能。
本文采用開源硬件實現了一套門禁控制和顯示系統,用于擴展目前部署的信息化系統的功能,可以無縫連接到已經部署的系統。該系統門禁控制部分采用了當前比較流行的arduino開源硬件,門衛顯示終端采用了開源硬件raspberry pi。
Arduino是一款開源電子原型平臺,采用ATmega328微處理器,具有6個模擬輸入接口,采用10bit的解析度,具有14個數字輸入/輸出管腳,可以由程序自定義為輸入或者輸出。arduino的硬件原理圖、電路圖、IDE軟件及核心庫文件均是開源的,在開源協議范圍里可以任意修改原始設計及相應的代碼。arduino在本文中實現門禁控制器的功能,利用arduino的硬件串口和軟件串口接收門禁控制器發送的 IC卡卡號等數據以實現對門磁電源的控制[2]。
Rasberry pi搭載ARM架構的處理器、運行性能和智能手機相仿,體積只有信用卡的大小,預裝linux操作系統。在接口方面,raspberry pi提供了USB接口、以太網接口、SD卡接口、HDMI接口等。HDMI可以實現視頻輸出功能。本文采用 raspberry pi從控制中心服務器獲取相關的門禁進出數據,進行圖形化顯示。
門禁系統包括門禁讀卡器、門禁控制器、門禁電源、顯示終端以及后臺服務器。該系統部署在已經完成的信息化管理系統中,因此需要該門禁控制系統具有較強的兼容性,可以方便的接入當前的信息管理系統。
門禁讀卡器采用工業標準的wiegand 34協議讀取IC卡卡號,wiegand接口是門禁系統讀卡器的標準接口,目前市場上的大多數讀卡器(包括指紋機、掌紋儀等)都提供了該接口,Wiegand的信號通過 2條數據線實現將卡號通過數據線發送到門禁控制器[6]。
門禁控制器收到IC卡號后,將數據傳送到控制中心服務器,判斷該卡號對應人員的權限,然后將相關數據發送到門禁控制器,門禁控制器控制門禁電源實現門磁的控制。本文采用開源硬件 arduino控制器的硬件串口和軟件串口獲取IC卡卡號,實現該門禁控制器。
顯示終端部署在門衛,圖形化直觀的顯示人員和車輛的進出信息。本文采用raspberry pi實現該功能,采用http技術,基于browser/server結構進行數據交換。所有的系統參數可以下載到前端的arduino控制器,同時還可以將參數上傳到控制主機。
門禁控制器采用arduino實現,通過arduino單片機獲取門禁讀卡器傳來的IC卡卡號,然后將該卡號通過以太網板卡,用http post的方式,將IC卡號發送到控制中心服務器,中心控制服務器做出相應的判斷后,返回一個 httpresponse的結果,arduino控制器根據收到的數據控制相應的門磁設備、LED顯示設備[8]?;玖鞒倘鐖D1所示。
Arduino控制器獲取數據后通過 http發送請求的方式將相關的 IC卡號等數據發送到控制中心服務器,實現代碼如下。
void openDoor(){
digitalWrite(MC_PIN,LOW);
delay(500);
digitalWrite(MC_PIN,HIGH);}
void getInput(){
memset(&icNo,0,sizeof(icNo));

圖1 門禁控制流程Fig.1 Access controller process
if(Serial.available()>0){
buffer[4]='0'; //進營區
delay(100);
for(byte i=0;i<4;i++){
sprintf(&icNo[i*2],"%02X",Serial.read());
} }
if(cyqSerial.available()>0){
buffer[4]='1'; //出營區
delay(100);
for(byte i=0;i<4;i++){
sprintf(&icNo[i*2],"%02X", cyq-Serial.read());
} }}
void httpRequest() {
client.stop();
client.flush();
memset(retCmd,0,sizeof(retCmd));
if (client.connect(server, 8080)>0) {
Serial.println("connecting...");
client.print("GET /menJinV2/?data=");
client.print(buffer);
client.println(" HTTP/1.1");
client.print("Host: ");
client.println(Ethernet.localIP());
client.println(); }
else {
Serial.println("connection failed"); }
if(client.connected()){
if(client.find("TXYT")){
client.readBytesUntil('E',retCmd,4);
Serial.println(retCmd);
if(retCmd[0]=='0'){yuyin(VOICE_WXK);}else
{
if(retCmd[2]=='1'){
openDoor();
if(retCmd[1]=='0'){
yuyin(VOICE_YXJR);
}else if(retCmd[1]=='1'){
yuyin(VOICE_YXTX); }
}else if(retCmd[2]=='0'){
yuyin(VOICE_JZWC); } }
}else{
Serial.println("get data from web server error"); } }
client.stop();
client.flush();
}
void loop() // run over and over
{
getInput();
if(strlen(icNo)>0){
for(byte i=0;i<8;i=i+2){
buffer[11-i]=icNo[i];
buffer[11-i+1]=icNo[i+1];
}
Serial.println(buffer);
memset(icNo,0,sizeof(icNo));
httpRequest(); } }
門禁顯示終端部署在門衛處,用圖形的方式直觀顯示人員進出和車輛進出記錄。門禁顯示終端采用了開源硬件raspberry pi的實現方式。raspberry pi采用了linux,本文在raspberry pi中部署了一個小型的web服務,如果系統如果產生了人員進出營區或者車輛進出營區的記錄,控制中心服務器向顯示終端發送http post請求,同時將相關的數據作為post數據的參數,發送到顯示終端,以實時顯示門衛的人員和車輛進出信息[10-12]。顯示終端的界面如下圖所示。

圖2 門禁顯示Fig.2 Access controller info
本文實現的基于開源硬件的門禁控制系統,結合了網絡技術、開源技術、數據庫技術,實現了跨平臺無需客戶端軟件的工作模式,為組建跨地域、大規模門禁管理系統提供了可能。本系統經過測試,運行良好,具有比較好的可維護性和擴展性,可以方便接入現有的信息控制系統。隨著支撐環境的不斷升級,本系統也要進一步加強和完善,并達到一個理想的水平。
[1] 劉雍. 基于S3C6410 的嵌入式Web視頻仿真門禁系統設計[J]. 軟件, 2013, 34(2): 4-6.
[2] 鄭祿, 常佳. 基于Arduino與Python的實驗室聯動門禁報警系統設計[J]. 軟件導刊, 2017, 16(01): 76-77.
[3] 柯資穎. 嵌入式門禁系統軟件的設計與實現[D]. 西安電子科技大學, 2008.
[4] 張鯤, 陳美伊, 李壯, 等. 基于單片機的家庭智能火災報警系統的設計[J]. 軟件,2014, 35(4): 87-89, 96.
[5] 王瑩, 王曉麗. 基于物聯網技術的智能門禁系統的設計與研究[J]. 吉林建筑大學學報, 2017, 34(01): 83-86+92.
[6] 黃鶴松, 劉容良, 郭恒蘭, 魏國招. 一種基于CPU卡的門禁系統的設計[J]. 電子技術應用, 2017, 43(01): 137-140+ 144.
[7] 瞿小玲, 王潔. RFID在智能門禁系統中的應用[J]. 黑龍江科技信息, 2011, (21): 32-33.
[8] 張鯤, 陳美伊, 李壯, 等. 基于單片機的家庭智能火災報警系統的設計[J]. 軟件, 2014, 35(4): 87-89, 96.
[9] 原巍春. 基于RFID技術的門禁系統的研究和設計[D]. 哈爾濱工業大學, 2015.
[10] 嚴士超, 果莉, 李明, 房俊龍, 張繼成. 基于泛在網技術的實驗室智能門禁考勤管理系統的研究[J]. 實驗技術與管理, 2014, 31(05): 162-163+170.
[11] 廖云升. 生產區門禁系統技術方案淺談[J]. 科技資訊,2013, (13): 14+16.
[12] 瞿小玲, 王潔. RFID在智能門禁系統中的應用[J]. 黑龍江科技信息, 2011, (21): 32-33.
[13] 馬文科. 基于ARM的指紋識別門禁系統的設計與實現[D].湖南大學, 2009.
Design of Door Access System Based on Open Source Hardware
ZHAO Peng
(Xichang Statlite Launch Center, Sichuan Xichang, 615000)
The paper introduce a door access control system based on open source hardware. The system uses the open source hardware Arduino control board as the control chip, the IC number readed by IC reader, through the Ethernet shhied sent to the information center server and Judgment authority, To control the Arduino board to control the door open. Using open source hardware raspberry pi to realize the display of access control data. Test shows that the system is low cost, low power consumption, good scalability, stable and reliable operation.
Access control; Arduino; Raspberry pi; Open source hardware
TP29
A
10.3969/j.issn.1003-6970.2017.12.053
本文著錄格式:趙鵬. 基于開源硬件的門禁控制系統[J]. 軟件,2017,38(12):267-269
趙鵬(1986-),男,工程師,網絡管理。