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

圖1 門(mén)禁控制流程Fig.1 Access controller process
if(Serial.available()>0){
buffer[4]='0'; //進(jìn)營(yíng)區(qū)
delay(100);
for(byte i=0;i<4;i++){
sprintf(&icNo[i*2],"%02X",Serial.read());
} }
if(cyqSerial.available()>0){
buffer[4]='1'; //出營(yíng)區(qū)
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(); } }
門(mén)禁顯示終端部署在門(mén)衛(wèi)處,用圖形的方式直觀(guān)顯示人員進(jìn)出和車(chē)輛進(jìn)出記錄。門(mén)禁顯示終端采用了開(kāi)源硬件raspberry pi的實(shí)現(xiàn)方式。raspberry pi采用了linux,本文在raspberry pi中部署了一個(gè)小型的web服務(wù),如果系統(tǒng)如果產(chǎn)生了人員進(jìn)出營(yíng)區(qū)或者車(chē)輛進(jìn)出營(yíng)區(qū)的記錄,控制中心服務(wù)器向顯示終端發(fā)送http post請(qǐng)求,同時(shí)將相關(guān)的數(shù)據(jù)作為post數(shù)據(jù)的參數(shù),發(fā)送到顯示終端,以實(shí)時(shí)顯示門(mén)衛(wèi)的人員和車(chē)輛進(jìn)出信息[10-12]。顯示終端的界面如下圖所示。

圖2 門(mén)禁顯示Fig.2 Access controller info
本文實(shí)現(xiàn)的基于開(kāi)源硬件的門(mén)禁控制系統(tǒng),結(jié)合了網(wǎng)絡(luò)技術(shù)、開(kāi)源技術(shù)、數(shù)據(jù)庫(kù)技術(shù),實(shí)現(xiàn)了跨平臺(tái)無(wú)需客戶(hù)端軟件的工作模式,為組建跨地域、大規(guī)模門(mén)禁管理系統(tǒng)提供了可能。本系統(tǒng)經(jīng)過(guò)測(cè)試,運(yùn)行良好,具有比較好的可維護(hù)性和擴(kuò)展性,可以方便接入現(xiàn)有的信息控制系統(tǒng)。隨著支撐環(huán)境的不斷升級(jí),本系統(tǒng)也要進(jìn)一步加強(qiáng)和完善,并達(dá)到一個(gè)理想的水平。
[1] 劉雍. 基于S3C6410 的嵌入式Web視頻仿真門(mén)禁系統(tǒng)設(shè)計(jì)[J]. 軟件, 2013, 34(2): 4-6.
[2] 鄭祿, 常佳. 基于Arduino與Python的實(shí)驗(yàn)室聯(lián)動(dòng)門(mén)禁報(bào)警系統(tǒng)設(shè)計(jì)[J]. 軟件導(dǎo)刊, 2017, 16(01): 76-77.
[3] 柯資穎. 嵌入式門(mén)禁系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn)[D]. 西安電子科技大學(xué), 2008.
[4] 張?chǎng)H, 陳美伊, 李壯, 等. 基于單片機(jī)的家庭智能火災(zāi)報(bào)警系統(tǒng)的設(shè)計(jì)[J]. 軟件,2014, 35(4): 87-89, 96.
[5] 王瑩, 王曉麗. 基于物聯(lián)網(wǎng)技術(shù)的智能門(mén)禁系統(tǒng)的設(shè)計(jì)與研究[J]. 吉林建筑大學(xué)學(xué)報(bào), 2017, 34(01): 83-86+92.
[6] 黃鶴松, 劉容良, 郭恒蘭, 魏國(guó)招. 一種基于CPU卡的門(mén)禁系統(tǒng)的設(shè)計(jì)[J]. 電子技術(shù)應(yīng)用, 2017, 43(01): 137-140+ 144.
[7] 瞿小玲, 王潔. RFID在智能門(mén)禁系統(tǒng)中的應(yīng)用[J]. 黑龍江科技信息, 2011, (21): 32-33.
[8] 張?chǎng)H, 陳美伊, 李壯, 等. 基于單片機(jī)的家庭智能火災(zāi)報(bào)警系統(tǒng)的設(shè)計(jì)[J]. 軟件, 2014, 35(4): 87-89, 96.
[9] 原巍春. 基于RFID技術(shù)的門(mén)禁系統(tǒng)的研究和設(shè)計(jì)[D]. 哈爾濱工業(yè)大學(xué), 2015.
[10] 嚴(yán)士超, 果莉, 李明, 房俊龍, 張繼成. 基于泛在網(wǎng)技術(shù)的實(shí)驗(yàn)室智能門(mén)禁考勤管理系統(tǒng)的研究[J]. 實(shí)驗(yàn)技術(shù)與管理, 2014, 31(05): 162-163+170.
[11] 廖云升. 生產(chǎn)區(qū)門(mén)禁系統(tǒng)技術(shù)方案淺談[J]. 科技資訊,2013, (13): 14+16.
[12] 瞿小玲, 王潔. RFID在智能門(mén)禁系統(tǒng)中的應(yīng)用[J]. 黑龍江科技信息, 2011, (21): 32-33.
[13] 馬文科. 基于ARM的指紋識(shí)別門(mén)禁系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].湖南大學(xué), 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
本文著錄格式:趙鵬. 基于開(kāi)源硬件的門(mén)禁控制系統(tǒng)[J]. 軟件,2017,38(12):267-269
趙鵬(1986-),男,工程師,網(wǎng)絡(luò)管理。