金鑫,朱金濤,朱中旭
(湖北文理學(xué)院物理與電子工程學(xué)院,湖北襄陽,441053)
隨著電子信息與計(jì)算機(jī)技術(shù),特別是RFID等技術(shù)的發(fā)展,電子門鎖的應(yīng)用越來越廣泛;這些電子門鎖應(yīng)用便捷、安全性較高[1][2]。部分電子門鎖僅核對卡信息并控制門鎖開關(guān),而很少存儲用戶開啟門鎖的時(shí)間。同時(shí),還有部分電子門鎖不提供聯(lián)網(wǎng)功能,其數(shù)據(jù)無法共享,使得整個(gè)門禁系統(tǒng)的管理也受到局限。
門禁系統(tǒng)利用門禁控制器,將分散的電子門鎖聯(lián)網(wǎng),為建筑物內(nèi)的各類通道口提供安全的智能門禁功能。這種系統(tǒng)不僅可以利用人員身份卡對出入口進(jìn)行控制,還可以記錄出入時(shí)間以實(shí)現(xiàn)更多管理服務(wù)[3]。
目前門禁系統(tǒng)中常用的門禁控制器,多是由PC機(jī)或者工控機(jī)來實(shí)現(xiàn),功能較為強(qiáng)大、同時(shí)價(jià)格較高。本文討論了一種基于STM32的、提供簡單Web服務(wù)的、低成本的嵌入式門禁控制器。
本文設(shè)計(jì)的門禁控制器,采用STM32F407微處理器為核心,利用LAN8720A作為PHY芯片提供以太網(wǎng)接入功能,利用MAX3486提供485總線訪問功能,實(shí)現(xiàn)了網(wǎng)絡(luò)化門禁管理??刂破鞑捎幂p量級的LWIP網(wǎng)絡(luò)協(xié)議棧提供TCP/IP服務(wù),采用HTML語言,設(shè)計(jì)了門禁信息查詢平臺的交互頁面,并采用SSI技術(shù)以提供服務(wù)器的信息交互[4]。系統(tǒng)主要功能模塊結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)主要模塊結(jié)構(gòu)圖
控制器利用485模塊,輪詢485總線上的電子門鎖,利用以太網(wǎng)模塊,輪詢局域網(wǎng)內(nèi)的電子門鎖,以驗(yàn)證各個(gè)電子門鎖的正常在線;同時(shí),各門鎖的開門信息可以通過總線或者網(wǎng)絡(luò)發(fā)送至門禁控制器。作為PHY芯片, LAN8720A模塊的原理圖如圖2所示。
圖2 LAN8720A模塊原理圖
為保存這些門禁信息,控制器在SD卡中實(shí)現(xiàn)了FatFs文件系統(tǒng)。SD模塊的原理圖如圖3所示。
圖3 SD模塊原理圖
系統(tǒng)在初始化完畢后,利用中斷完成各項(xiàng)功能。主要功能模塊初始化過程如圖4所示。
圖4 主要功能模塊初始化過程圖
為安全起見,門禁控制器設(shè)計(jì)為僅采集各電子門鎖的在線信息、開門信息等,并不控制各門鎖的開關(guān)操作??紤]到應(yīng)用的兼容性,門禁控制器支持485總線通信與以太網(wǎng)局域網(wǎng)通信。
在具體實(shí)現(xiàn)中,控制器記錄的電子門鎖動作時(shí)間設(shè)計(jì)為該信息到達(dá)控制器的時(shí)間??紤]到485總線為半雙工工作方式,為了保證輪詢的正常進(jìn)行,輪詢期間電子門鎖不能主動上傳開關(guān)信息。為了保證電子門鎖的實(shí)際動作時(shí)間與控制器對該動作的記錄時(shí)間的誤差可控,輪詢時(shí)間需盡量短。為此,系統(tǒng)采用自定義通信協(xié)議數(shù)據(jù)格式,如圖5所示。
圖5 門禁通信協(xié)議數(shù)據(jù)格式
其中,各域均為1個(gè)字節(jié)長。頭域?yàn)锳AH,表示數(shù)據(jù)開始。類型域?yàn)?、1、2、3,分別表示在線輪詢電子門鎖、電子門鎖信息上報(bào)、控制器命令下發(fā)、上位機(jī)信息查詢等,其中命令下發(fā)的實(shí)現(xiàn)涉及安全,部分電子門鎖不支持。尾域?yàn)?5H,表示數(shù)據(jù)結(jié)束。
當(dāng)類型域?yàn)?時(shí),表示在線輪詢;地址域?yàn)楸惠喸兊碾娮娱T鎖地址,信息域?yàn)樵撾娮娱T鎖的當(dāng)前狀態(tài)。當(dāng)類型域?yàn)?時(shí),表示信息上報(bào);地址域表示發(fā)送信息的電子門鎖地址,信息域表示開啟門鎖的用戶編號。為保證安全,信息上報(bào)時(shí)用戶卡號并不會發(fā)送給門禁控制器,發(fā)送的是該用戶在本門鎖中的用戶編號。
通過修改配置,可以設(shè)定門禁控制器的輪詢時(shí)間間隔,如設(shè)定為1分鐘輪詢一次。在每一輪的輪詢中,首先進(jìn)行的是對485總線上的電子門鎖的輪詢,然后是對以太網(wǎng)上的電子門鎖的輪詢。輪詢時(shí)通訊方式為主從應(yīng)答,門鎖處于等待接收狀態(tài),不發(fā)送通訊數(shù)據(jù),接收數(shù)據(jù)并進(jìn)行處理;當(dāng)收到控制器發(fā)送的對本地址的通信后,返回一幀應(yīng)答數(shù)據(jù);當(dāng)收到控制器發(fā)送的對非本地址的通信后,拋棄該數(shù)據(jù)。被輪詢的門鎖對輪詢進(jìn)行回應(yīng),控制器收到回應(yīng)后輪詢下一門鎖;當(dāng)控制器輪詢超時(shí)后將不回應(yīng)的門鎖視為不在線,并輪詢下一門鎖。
485總線通訊設(shè)置如下:采用異步串行通訊,半雙工方式。速率9600(4800)bps,1位起始位,1位停止位,8位數(shù)據(jù)位,無校驗(yàn)位,lsb在前。輪詢超時(shí)為發(fā)送時(shí)間的4倍時(shí)間。當(dāng)速率為9600bps時(shí),在不多于32部門鎖的情況下,485總線輪詢總時(shí)間不超過1秒。
當(dāng)485總線、以太網(wǎng)均輪詢完畢后,各電子門鎖可以實(shí)時(shí)上報(bào)發(fā)生的開門信息,也可以上報(bào)在輪詢周期內(nèi)未上報(bào)的開門信息,控制器需對收到的信息進(jìn)行回應(yīng)。當(dāng)485總線上的電子門鎖上報(bào)發(fā)生的開門信息時(shí),其余門鎖檢測到后,在發(fā)送時(shí)間的5倍時(shí)間內(nèi)禁止上報(bào)信息,以防產(chǎn)生沖突。若兩門鎖同時(shí)發(fā)送各自的上報(bào)信息,總線上將產(chǎn)生沖突,其余門鎖檢測到?jīng)_突后,在發(fā)送時(shí)間的5倍時(shí)間內(nèi)禁止上報(bào)信息,以防擴(kuò)大沖突;控制器因校驗(yàn)錯(cuò)誤,將不回應(yīng);發(fā)生沖突的門鎖在超時(shí)時(shí)間內(nèi)未收到控制器回應(yīng),將隨機(jī)延遲一段時(shí)間并再次發(fā)送其上報(bào)信息。
門禁控制器利用LWIP網(wǎng)絡(luò)協(xié)議棧提供TCP/IP網(wǎng)絡(luò)服務(wù),從支持TCP/IP的電子門鎖中獲取門禁信息;上位機(jī)從控制器中讀取其存儲的門禁信息,讀取當(dāng)前的門鎖狀態(tài)??刂破鲀?nèi)建WebServer,提供簡單的Web頁面訪問服務(wù),操作人員可以通過瀏覽器登錄控制器并獲取各門鎖狀態(tài)與門禁信息。
在完成LAN8720A驅(qū)動程序移植、LWIP協(xié)議棧移植之后,系統(tǒng)采用HTML語言編寫web網(wǎng)頁,利用makefsdata.exe生成fsdata.c文件、編譯鏈接進(jìn)系統(tǒng)程序;并采用SSI技術(shù)通過Httpd_cgi_ssi.c文件中的函數(shù)來實(shí)現(xiàn)與網(wǎng)頁的數(shù)據(jù)交互。
本文以STM32F407微處理器為核心,設(shè)計(jì)了一款低成本的門禁控制器,該控制器可以通過485總線、以太網(wǎng)與各個(gè)電子門鎖進(jìn)行通信,獲取門鎖狀態(tài)和開門信息。系統(tǒng)移植了LWIP網(wǎng)絡(luò)協(xié)議棧,采用HTML語言設(shè)計(jì)了網(wǎng)頁,并利用SSI技術(shù)實(shí)現(xiàn)了與網(wǎng)頁的信息交互。該門禁控制器與電子門鎖構(gòu)成的門禁系統(tǒng)具有穩(wěn)定性較好、安全性較強(qiáng)、便于二次開發(fā)等特點(diǎn),能夠支持上位機(jī)進(jìn)行更多功能擴(kuò)展。