基于手機的網(wǎng)絡(luò)化安全考勤、門禁系統(tǒng)的設(shè)計與實現(xiàn),軟硬件協(xié)同
1 前言
門禁系統(tǒng)是最近幾年才在國內(nèi)廣泛應(yīng)用的又一高科技安全設(shè)施之一,現(xiàn)已成為現(xiàn)代建筑的智能化標志之一。在越來越注重商業(yè)情報和安全的今天,對進出一些重要機關(guān)、科研實驗室、檔案館、以及關(guān)系到國計民生的公用事業(yè)單位的控制中心、民航機場等場所的工作人員,給予進出授權(quán)控制。這些都使得門禁系統(tǒng)的作用和功能得到進一步擴展和提升。
隨著社會電子化智能程度的深入,市面上出現(xiàn)了不同種類的門禁及考勤系統(tǒng)[1][2]:密碼門禁系統(tǒng),刷卡門禁系統(tǒng),生物識別門禁系統(tǒng)。
密碼門禁系統(tǒng):通過輸入密碼,系統(tǒng)判斷密碼正確就驅(qū)動電鎖,打開門放行。它的優(yōu)點:只需記住密碼,無需攜帶其他介質(zhì)。成本最低。缺點:速度慢,輸入密碼一般需要好幾秒中,如果進出的人員過多,需要排隊。如果輸入錯誤,還需重新輸入,耗時更長。安全性差,旁邊的人容易通過手勢記住別人的密碼,密碼容易忘記或者泄露。
刷卡門禁系統(tǒng):根據(jù)卡的種類又分為接觸卡門禁系統(tǒng)(磁條卡條碼卡)和非接觸卡(又叫感應(yīng)卡射頻卡)門禁系統(tǒng)。接觸卡門禁系統(tǒng)由于接觸而是的卡片容易磨損,使用次數(shù)不多,卡片容易損壞等,使用的范圍已經(jīng)越來越少了。非接觸IC卡,由于其耐用性性價比好讀取速度快安全性高等優(yōu)勢是當前門禁系統(tǒng)的主流。但是人員出入都需要隨身攜帶專用的IC卡,否則無法出入,這也給現(xiàn)代快節(jié)奏的生活帶來了一些不便。
生物識別門禁系統(tǒng):根據(jù)人體生物特征的不同而識別身份的門禁系統(tǒng)。常見的有:指紋門禁系統(tǒng)(每個人的指紋紋路特征存在差異性),掌型儀門禁系統(tǒng)(每個人的手掌的骨骼形狀存在差異性)虹膜門禁系統(tǒng)(每個人的視網(wǎng)膜通過光學掃描存在差異性)人像識別門禁系統(tǒng)(每個人的五官特征和位置不同)等。生物識別門禁系統(tǒng)的優(yōu)點是:無需攜帶卡片等介質(zhì),重復的幾率少,不容易被復制,安全性高。缺點是:成本高。由于生物識別需要比對很多參數(shù)特征,比對速度慢,不利于人員人數(shù)過多的場合。人體的生物特征會隨著環(huán)境和時間的變化而變化,因此容易產(chǎn)生拒識率(明明是這個人,但是他的生物特征變了,而認為不是本人),例如:指紋由于季節(jié)和干濕度不同而不同,掌型和人像由于年齡的增長而改變,虹膜由于眼部患病而改變等。所以,生物識別門禁系統(tǒng)雖然先進和安全,但是由于他的成本高,應(yīng)用的范圍有限,不是當前門禁系統(tǒng)的主流。
由于以上各種考勤系統(tǒng)都存在各自的缺陷,使得在使用上述考勤技術(shù)的時候會給用戶帶來諸多不便。現(xiàn)在由于具有Wi-Fi功能的手機已日趨普及,因此如果在公司或小區(qū)等場合使用帶有Wi-Fi功能的手機進行人員的出入登記管理將更加方便。用戶不需要任何額外的設(shè)備,只需要一部具有Wi-Fi功能的手機即可,不僅使用方便,還將大大降低整個系統(tǒng)的部署成本。
手機中Wi-Fi模塊的MAC地址具有唯一性,因此可用于考勤系統(tǒng),實現(xiàn)人員身份的識別,而且無需使用其他特殊的設(shè)備。另外,考勤機與遠程服務(wù)器端連接時,如果沒有一些相應(yīng)的安全措施,就容易受到攻擊而傳輸錯誤、偽裝的信息。本項目以PIC32 Ethernet Starter KIT為基礎(chǔ),擴充嵌入式Wi-Fi模塊,獲取手機Wi-Fi發(fā)送過來的身份認證信息,采用AES安全算法進行加密,實現(xiàn)操作簡單、安全可靠的網(wǎng)絡(luò)化身份認證門禁系統(tǒng)。
2相關(guān)技術(shù)和原理
2.1相關(guān)技術(shù)
2.1.1無線局域網(wǎng)WLAN
無線局域網(wǎng)WLAN是通過無線設(shè)備將兩臺或多臺計算機連接在一起構(gòu)成的網(wǎng)絡(luò)。最早起源于1970夏威夷大學的ALOHA網(wǎng)絡(luò),它是一個雙向星型拓撲,整個系統(tǒng)由分布于四個島嶼上的7臺計算機之間通過無線的方式與中央計算機連接在一起進行通訊。1997年發(fā)布了第一個版本,1999年加了兩個補充版本802.11a/b,隨后工業(yè)界成立了Wi-Fi聯(lián)盟,致力于解決符合802.11標準的產(chǎn)品的生產(chǎn)和設(shè)備兼容性問題。
無線局域網(wǎng)具有如下特點:
♦使用方便:由于沒有線纜的限制,用戶可以在網(wǎng)絡(luò)資源附近的便利場所訪問這些資源,如家庭、辦公室等場所。
♦移動性好:隨著越來越多的地方開通無線網(wǎng),用戶甚至可以在工作場所之外隨意接入Internet。如:咖啡廳等地方即可便利的通過無線網(wǎng)接入Internet。
♦部署靈活:與有線網(wǎng)絡(luò)相比,無線網(wǎng)絡(luò)不需要布線,因此不會受到周圍環(huán)境的影響。
♦擴展性好:在原有網(wǎng)絡(luò)基礎(chǔ)之上,通過添加AP即可擴展網(wǎng)絡(luò)。而有線網(wǎng)絡(luò)除了添加交換機等設(shè)備外,還要額外布線,不僅成本提高,而且靈活性差。
♦安全:使用共享密鑰加密機制WEP(有線等效加密),WPA、WPA2(Wi-Fi)網(wǎng)絡(luò)安全存?。┑燃用軝C制。
無線局域網(wǎng)的網(wǎng)絡(luò)類型有:點到點(Ad-hoc)、橋接和分布式三種。
♦點到點:點到點網(wǎng)絡(luò)允許無線設(shè)備互相直接通訊。在通訊范圍內(nèi)的無線設(shè)備可以互相被發(fā)現(xiàn)并且可以不通過AP直接通訊。這種通訊類型廣泛應(yīng)用于兩臺計算機,它們不需要通過網(wǎng)絡(luò)來完成通訊。ad-hoc網(wǎng)絡(luò)就是這種網(wǎng)絡(luò)。
♦橋接:橋連接不同類型的網(wǎng)絡(luò),無線以太網(wǎng)橋可以連接有線以太網(wǎng)和無線網(wǎng)絡(luò),而橋則充當無線局域網(wǎng)的連接點。
♦無線分布式系統(tǒng):當很難通過線纜在一個網(wǎng)絡(luò)中將所有訪問點都連接在一起的時候,可以用AP作為中繼器。
2.1.2 Wi-Fi
Wi-Fi[3]是目前最成功的無線局域網(wǎng)(WLAN)系統(tǒng),它基于IEEE802.11技術(shù)標準,通過近幾年的快速發(fā)展,基礎(chǔ)架構(gòu)設(shè)施已經(jīng)比較完善,無線接入熱點(AP)覆蓋已經(jīng)很廣,價格也很便宜。這樣的系統(tǒng)可通過個人權(quán)限接入無線互連網(wǎng),并訪問本地網(wǎng)絡(luò)中的其他系統(tǒng),比如其他計算機,共享打印機和其他類似設(shè)備。通常,WLAN的帶寬和傳輸延遲比許多其他類型的用戶互聯(lián)網(wǎng)連接(如ADSL、GPRS和3G)要好得多,因為WLAN既提供訪問互聯(lián)網(wǎng)服務(wù),也提供本地通信服務(wù)。Wi-Fi在許多場合訪問速度更多是受到共享連接和用戶人數(shù)的限制,而非技術(shù)本身。Wi-Fi的突出優(yōu)勢是傳輸帶寬、技術(shù)成熟度、開放的網(wǎng)絡(luò)協(xié)議,以及基礎(chǔ)接入產(chǎn)品、設(shè)施的完備和廣泛覆蓋。
2.1.3 AES加密
由于現(xiàn)實生活的實際需要及計算機技術(shù)的進步,密碼學有了突飛猛進的發(fā)展密碼學研究領(lǐng)域出現(xiàn)了許多新的課題新的方向。例如,在分組密碼領(lǐng)域,DES已無法滿足高保密性的要求。美國已征集并選定了Rijndael算法作為新的高級加密標準AES (AdvancedEncryptionStandard)。與3DES相比,AES[4]的安全性更高,算法實現(xiàn)更加靈活、簡單。繼美國征集AES結(jié)束之后,歐洲也開始進行名為NESSIE的密碼大計劃,其中候選算法中比較著名的兩個算法就是IDEA算法和Camellia算法,目前,對這兩個算法的研究也僅次AES算法。AES是基于分組的加解密算法,即每次要加密/解密的數(shù)據(jù)塊大小必須是16字節(jié),算法中大量使用移位操作。
AES算法相關(guān)概念
分組密碼是對稱密碼體制的發(fā)展趨勢。分組密碼算法通常由密鑰擴展算法和加密(解密)算法兩部分組成。密鑰擴展算法將b字節(jié)用戶主密鑰擴展成r個子密鑰。加密算法由一個密碼學上的弱函數(shù)f與r個子密鑰迭代r次組成。抵御已知明文的差分和線性攻擊,可變長密鑰和分組是AES的設(shè)計要點。
AES算法結(jié)構(gòu)
AES加密算法主要由4個變換構(gòu)成:字節(jié)代換(Byte—Sub)、行移位變換(ShiftRow)、列混淆變換(MixColumn)以及輪密鑰加變換(AddRoundKey),其算法結(jié)構(gòu)如圖1所示。圖1中InvByteSub、InvShiftRow和InvMixColumn分別表示ByteSub、ShiftRow、和MixColumn的逆變換。
圖1 AES加密解密結(jié)構(gòu)圖
加密輪變換
AES加密數(shù)據(jù)塊大小最大是256bit,但是密鑰大小在理論上沒有上限。AES加密有很多輪的重復和變換。大致步驟如下:1、密鑰擴展(KeyExpansion),2、初始輪(Initial Round),3、重復輪(Rounds),每一輪又包括:SubBytes、ShiftRows、MixColumns、AddRoundKey,4、最終輪(Final Round),最終輪沒有MixColumns。AES加密算法的主體是其實就是加密輪變換,下面依次對以上4個子變換進行分析。
1、ByteSub變換
ByteSub變換對State中的每個字節(jié)進行S盒代替變換,變換由兩步構(gòu)成:
(1)求State中各字節(jié)的乘法逆。
(2)對(1)所得的結(jié)果做仿射變換y=f(x)。
2、ShiftRow變換
ShiftRow變換將State中的行按不同的偏移量循環(huán)移位。偏移量以字節(jié)為單位,第一行不變,第二行循環(huán)左移1個字節(jié),第三行循環(huán)左移兩個字節(jié),第四行循環(huán)左移3個字節(jié)。
3、MixColumn變換
MixColumn變換是對狀態(tài)中各列的混淆變換。在MixCollm1變換中,把一個State的列看作一個32位數(shù)據(jù),然后對其進行矩陣乘法變換sj(x)=c(x)·Sj(x),其中c(x)=03x3+01x2+01x+02。
4、AddROundKev變換
AddRoundKey變換將State中的每個字節(jié)與本輪子密鑰中對應(yīng)的字節(jié)相異或.所得結(jié)果即為State的AddRoundKey變換值。加密輪函數(shù)可用偽C代碼表示為:
Round(State,Roundkey[i])
{
ByteSub(State);
ShiftRow(State);
MixColumn(State);
AddROundKey(State,Roundkey[i]);
}
2.2系統(tǒng)原理
本系統(tǒng)在PIC32 Ethernet Starter KIT硬件基礎(chǔ)上,擴充一個嵌入式Wi-Fi模塊,構(gòu)成本地客戶端,由PC機作為服務(wù)器端。當手機打開WLAN掃描時,即可把唯一的MAC地址發(fā)送給客戶端,客戶端把MAC地址信息用AES算法進行加密,再將加密后的信息通過Ethernet接口發(fā)送給遠程服務(wù)器,由服務(wù)器對信息進行解密、識別、匹配,并做出相應(yīng)處理和應(yīng)答。
圖2系統(tǒng)原理圖
圖3系統(tǒng)模型圖
3硬件設(shè)計
3.1 PIC32 Ethernet Starter KIT簡介
PIC32 Ethernet Starter Kit[5]是一個非常簡單易用,低成本的用于體驗PIC3210/100Ethernet等功能的開發(fā)工具。PIC32可提供工作頻率80MHz的32位MIPS處理器內(nèi)核、512KB的編程FLASH、32KB的RAM內(nèi)存以及眾多的外圍設(shè)備。這些設(shè)備包括USB控制器、定時器/計數(shù)器、串口控制器、A/D轉(zhuǎn)換器以及更多的設(shè)備。該板具有大量的I/O接口和電源選項,其中也包括USB電源。它同時還具有與Microchip MPLAB開發(fā)軟件相兼容的內(nèi)置編程、調(diào)試、下載電路。Cerebot32MX4擁有九個DigilentPmod™外圍模塊連接器??蛇B接的DigilentPmod包括H-bridge驅(qū)動、模數(shù)和數(shù)模轉(zhuǎn)換器、蜂鳴器、滑動開關(guān)、按鍵開關(guān)、LED指示燈、以及易于連接的轉(zhuǎn)換器。
PIC32 Ethernet Starter Kit實物圖如下圖4:
圖4 PIC32 Ethernet Starter Kit實物圖
3.2 380模塊簡介
EMW-380-C[6]是一款多功能串口轉(zhuǎn)Wi-Fi模塊,它內(nèi)部集成了TCP/IP協(xié)議棧和Wi-Fi通訊模塊驅(qū)動,可用于串口與Wi-Fi無線網(wǎng)絡(luò)之間的數(shù)據(jù)傳輸,可方便的為串口設(shè)備增加無線網(wǎng)絡(luò)接口??捎糜诖谠O(shè)備與PC機之間,或者多個串口設(shè)備之間的遠程通信。
外觀機械尺寸如下圖5。
圖5 EMW-380-C引腳排列頂視圖
EMW-380-C實物圖如下圖6。
圖6 EMW-380-C實物圖
表1接線說明
No. | FUN. | No. | FUN. |
J2 | 天線接線柱 | J3 | NG(暫時不使用) |
模塊上有兩個LED燈用來直觀地指示模塊當前的狀態(tài)。可以在配制模式下通過命令來獲得模塊當前的狀態(tài)。LED功能如下表2.
表2 EMW-380-C LED指示燈狀態(tài)
名稱 | 顏色 | 含義 | 功能 |
D1 | 紅色 | Wi-Fi成功連接指示燈 | |
D2 | 綠色 | 系統(tǒng)初始化成功指示燈 | 常亮:模塊初始化正常,正常工作; 常暗:模塊未初始化,或處于休眠狀態(tài)。 |
表3 EMW-380-C引腳功能
J1引腳 | 功能 | 說明 | J2引腳 | 功能 | 說明 |
1 | Wakeup(IN) | WAKE_UP引腳如果產(chǎn)生下降沿使模塊進入休眠狀態(tài),上升沿使模塊進入正常工 作狀態(tài),模塊對該引腳有去噪功能,避免非正常信號的干擾。 | 1 | UART_RTS(OUT) | UART接收準備信號,低電平有效 |
2 | /RESET(IN) | 將該引腳拉低1μs,可以重新初始化模塊 | 2 | UART_CTS(IN) | UART允許發(fā)送信號,低電平有效 |
3 | STATUS(IN) | STATUS用來設(shè)置模塊的工作狀態(tài)。 | 3 | UART_RXD(IN) | UART數(shù)據(jù)輸入 |
4 | /INT(OUT) | HOST端可以通過查詢EMW-380-C的/INT引腳來確定初始化是否完成。當模塊加電 后,/INT會保持為高,當初始化完成后,/INT會被拉低,此后設(shè)備即可向 EMW-380-C發(fā)送命令并進行相關(guān)操作了。在EMW-380-C中/INT引腳沒有其他功能。 | 4 | UART_TXD(OUT) | UART數(shù)據(jù)輸出 |
5 | GND | 模塊接地 | 5 | GND | |
6 | NC | 未定義,用戶無須連接 | 6 | NC | |
7 | NC | 7 | NC | ||
8 | NC | 8 | NC | ||
9 | NC | 9 | NC | ||
10 | NC | 10 | VDD | 模塊電源輸入 |
注意:
(1)UART連接包括:UART_TXD,UART_RXD,UART_RTS和UART_CTS。
(2)最簡單應(yīng)用中只需要連接電源和UART_TXD、UART_RXD。
(3)建議連接UART_RTS和UART_CTS來使能UART的硬件流控制。這樣,網(wǎng)絡(luò)阻塞時,模塊可以對嵌入式設(shè)備發(fā)送給UART接口的數(shù)據(jù)流量進行自動控制。
3.3典型硬件連接與引腳說明
圖7 典型UART連接圖
系統(tǒng)是通過EMW-380-C Wi-Fi模塊實現(xiàn)了系統(tǒng)的WLAN功能的。EMW-380-C Wi-Fi模塊是一個軟硬件高度封裝的嵌入式Wi-Fi(802.11b/g)應(yīng)用模塊。硬件模塊由ARM處理器和Wi-Fi射頻芯片組成,軟件集成了Wi-Fi、TCP/IP、UDP、DHCP等網(wǎng)絡(luò)協(xié)議。模塊提供一個UART/SPI串行接口與主MCU相連,在本系統(tǒng)中,即PIC32 Ethernet Starter KIT通過UART與該模塊相連(如圖7)。并由一個簡單的API命令集來實現(xiàn)網(wǎng)絡(luò)控制和基于802.3幀格式的鏈路層數(shù)據(jù)服務(wù)。模塊支持AP和Ad-Hoc工作模式,并支持RF信道自動選擇和WEP加密,適合各種小系統(tǒng)的標準Wi-Fi接入。EMW-380-C Wi-Fi模塊具有TCP Server, TCP Client,UDP,UDP廣播等多種工作模式,支持Web配置方式,方便用戶靈活設(shè)定相關(guān)配置參數(shù)。
該模塊有兩種工作狀態(tài):配置模式和數(shù)據(jù)透明傳輸模式。在配置模式下,可以使用EMSP通訊協(xié)議來對模塊進行操作,配置,簡單測試收發(fā)數(shù)據(jù)等。模塊的一切工作都處于EMSP命令的控制之下。在數(shù)據(jù)透明傳輸模式下,模塊將通過UART把接收到的數(shù)據(jù)封裝成TCP/UDP數(shù)據(jù)包發(fā)送到遠端,同時也可以將接收到的遠端TCP/UDP數(shù)據(jù)包的數(shù)據(jù)負載通過UART發(fā)送給嵌入式設(shè)備。
3.4硬件PCB圖
從圖8中可以看出,在本系統(tǒng)設(shè)計中,PIC32 Ethernet Starter KIT與EMW-380-C模塊間的UART只連接了基本的兩根線:UART-RXD和UART-TXD。用的是PIC32 Ethernet Starter KIT上的UART1,還有一根RB4連接到該模塊的STATUS引腳上。作為該模塊的狀態(tài)檢測線。
圖8考勤系統(tǒng)客戶端硬件PCB圖
3.5硬件實物圖
從圖9中可以看出,左側(cè)為PIC32 Ethernet Starter KIT實物圖,右側(cè)為擴展的EMW-380-C Wi-Fi模塊。
圖9考勤系統(tǒng)客戶端硬件實物圖
4軟件設(shè)計
本系統(tǒng)的整個設(shè)計包括下位機軟件設(shè)計和上位機軟件設(shè)計。下位機主要結(jié)合了EMW-380-C Wi-Fi模塊中的Wi-Fi技術(shù),以及Microchip TCP/IP棧。而上位機主要結(jié)合了TCP/IP的socket編程以及對數(shù)據(jù)庫的操作。
4.1下位機軟件設(shè)計
圖10 考勤系統(tǒng)客戶端下位機軟件設(shè)計
整個下位機的系統(tǒng)設(shè)計如上圖。首先是對PIC32 Ethernet Starter KIT進行時鐘配置,必要外設(shè)的配置(定時器,按鈕,LED等)。Microchip TCP/IP棧通過處理物理網(wǎng)絡(luò)端口與應(yīng)用程序之間交互,為用戶提供了一些基本的嵌入式網(wǎng)絡(luò)應(yīng)用基礎(chǔ)。包括很多用于應(yīng)用程的通用模塊,像HTTP(web服務(wù)),STMP(發(fā)郵件),SNMP(提供狀態(tài)和控制),Telnet,TFTP,串口到以太網(wǎng)等。此外,該棧包含了輕量級高性能的TCP和UDP層實現(xiàn),并且支持IP,ICMP,DHCP,ARP和DNS。而本系統(tǒng)中使用了TCP/IP這部分功能。由于PIC32 Ethernet Starter KIT板子上豐富的資源,我們通過以太網(wǎng),將PIC32 Ethernet Starter KIT和EMW-380-C Wi-Fi模塊組成的考勤系統(tǒng)作為一個客戶端。而遠程的上位機作為服務(wù)器端。當初始化完系統(tǒng)的基本外設(shè)后,就要啟動EMW-380-C Wi-Fi模塊的Wi-Fi功能(見一下內(nèi)容的詳細介紹)。當考勤系統(tǒng)客戶端連接到上位機的服務(wù)器之后,那么他們之間就可以正常通訊了。
在本系統(tǒng)設(shè)計中EMW-380-C Wi-Fi模塊提供通用UART讀寫功能和EMSP協(xié)議的處理功能,來實現(xiàn)與PIC32 Ethernet Starter KIT的通訊。EMSP協(xié)議是一個與底層無關(guān)的通訊協(xié)議,只要EMW-380-C Wi-Fi模塊與PIC32 Ethernet Starter KIT在硬件上連接好之后,利用EMSP協(xié)議提供的簡單命令集就可以相互通訊了。PIC32 Ethernet Starter KIT發(fā)送給EMW-380-C Wi-Fi模塊的數(shù)據(jù)包格式如下表4。格式中包含一個協(xié)議頭(8個字節(jié))和數(shù)據(jù)段(不定長,最大256個字節(jié))。并且EMW-380-C Wi-Fi模塊響應(yīng)PIC32 Ethernet Starter KIT之后,發(fā)送給PIC32 Ethernet Starter KIT的數(shù)據(jù)包格式也是按照表4中的格式。
表4 EMSP數(shù)據(jù)包格式
headofprotocol | datafield | ||||
command | length | result | headchecksum | data | datachecksum |
從表4中也可以看出,所有請求和應(yīng)答都進行了校驗和計算,從而保證了數(shù)據(jù)交換的完整性和可靠性。整個EMSP協(xié)議包含12條命令,來完成模塊的控制、網(wǎng)絡(luò)控制和網(wǎng)絡(luò)通訊。
EMSP_CMD_RESET:對模塊進行復位操作。
EMSP_CMD_GET_CONFIG:獲取模塊中的配置信息,包括TCP/IP和Wi-Fi配置信息。
EMSP_CMD_SET_CONFIG:設(shè)置模塊參數(shù)。
EMSP_CMD_SCAN_AP:獲取模塊可識別范圍內(nèi)的AP。
EMSP_CMD_START:啟動模塊的Wi-Fi連接和TCP鏈接。
EMSP_CMD_SEND_DATA:通過模塊向網(wǎng)絡(luò)上發(fā)送數(shù)據(jù)。
EMSP_CMD_RECV_DATA:通過模塊從網(wǎng)絡(luò)上接收數(shù)據(jù)。
EMSP_CMD_GET_STATUS:讀取模塊在透明數(shù)據(jù)傳輸模式的網(wǎng)絡(luò)狀態(tài)。包括TCP的狀態(tài)和Wi-Fi的工作狀態(tài)。
EMSP_CMD_GET_VER:獲取模塊版本號,包括硬件版本和固件版本。
EMSP_CMD_GET_MF_INFO:獲取模塊的生產(chǎn)廠家信息。
EMSP_CMD_GET_RF_POWER:獲取模塊無線收發(fā)功率。
EMSP_CMD_SET_PF_POWER:設(shè)置模塊發(fā)射無線功率。
配置模式下命令的發(fā)送與響應(yīng)實現(xiàn)如下:
按照表4的數(shù)據(jù)包格式,組裝成一個完整的命令之后,把命令數(shù)據(jù)放入sendbuf緩沖區(qū)中,len是發(fā)送的數(shù)據(jù)包長度。 UART_send_buf(sendbuf,len); DelayMs (1500);//responsehasadelay if(cmdcode==EMSP_CMD_SCAN_AP) DelayMs (1500); if(cmdcode==EMSP_CMD_SET_CONFIG) DelayMs (1000); returnrecv_cmd();->recvlen=UART_receive_buf(recvbuf); 在recv_cmd()函數(shù)中調(diào)用UART_receive_buf函數(shù),將接收到的響應(yīng)數(shù)據(jù)包放入recvbuf中,recvlen是響應(yīng)數(shù)據(jù)包的長度。之后對響應(yīng)數(shù)據(jù)包做進一步的處理。 |
從實現(xiàn)上來說,EMSP協(xié)議中各命令的功能不同,處理時所需要的時間也是不同的。因此每條發(fā)送的命令等待響應(yīng)所需的延遲也是不同的。
EMSP接口函數(shù)庫
EMSP協(xié)議接口函數(shù)庫提供了一系列API函數(shù),通過調(diào)用這些函數(shù)可以輕松地在各種嵌入式設(shè)備上實現(xiàn)對EMW-380-C Wi-Fi模塊的控制和參數(shù)配置。我們將這些接口函數(shù)庫添加到我們的工程中,如下圖11為工程中的文件目錄結(jié)構(gòu)。
圖11 工程目錄結(jié)構(gòu)
EMSP接口函數(shù)庫由標準C編寫而成,由以下三個C語言文件及其對應(yīng)的頭文件構(gòu)成。
1.em380c_hal.c
該代碼實現(xiàn)了EMW-380-C模塊和嵌入式設(shè)備之間的硬件接口。
2.EMSP.c
該代碼實現(xiàn)了EMSP命令的協(xié)議處理。
3.EMSP_API.c
該代碼可用于操控模塊的API函數(shù),用戶只需要調(diào)用這些函數(shù),就可以對模塊實現(xiàn)配置和操作。
啟動Wi-Fi模塊,建立Ad-hoc網(wǎng)絡(luò)
根據(jù)自己的硬件環(huán)境實現(xiàn)以上EMSP接口函數(shù)庫。就可以很容易地使用這些接口函數(shù)了。要完成啟動Wi-Fi模塊,建立Ad-hoc網(wǎng)絡(luò)這部分功能,首先要配置EMW-380-C與PIC32 Ethernet Starter KIT板子間的接口,即UART的配置。EMW-380-C的UART默認配置為:波特率:115200,數(shù)據(jù)位:8位,停止位:1位,奇偶校驗:無,硬件流控:無。所以可以調(diào)用EMSP_API.c文件中的EM380C_Init()函數(shù)對EMW-380-C模塊進行UART的配置。當硬件接口配置完成后,可以給EMW-380-C模塊發(fā)送一個EMSP_CMD_GET_VER命令,來測試配置是否成功。成功后將從while循環(huán)中跳出來。接著給EMW-380-C模塊發(fā)送EMSP_CMD_START命令來啟動模塊。如果想改變EMW-380-C Wi-Fi的一些基本參數(shù),可以通過給該模塊發(fā)送EMSP_CMD_SET_CONFIG命令。在本系統(tǒng)中,我們的模塊的基本網(wǎng)絡(luò)參數(shù)如下:
Wi-Fi Mode:Ad-hoc
Transfer Protocol:TCP
SSID:Microchip
無加密
IP address:192.168.1.5
Net Mask:255.255.255.0
Port Number:8080
通過以太網(wǎng)連接到server
這部分的功能主要用到TCP/IP協(xié)議棧的一些API函數(shù)。在本系統(tǒng)設(shè)計中,我們通過按鈕SW1來觸發(fā)該功能。該功能的實現(xiàn)主要在GenericTCPClient()函數(shù)中。當按鈕SW1被按下后,考勤系統(tǒng)客戶端進入SM_HOME狀態(tài),通過調(diào)用TCPOpen函數(shù)來建立與遠程服務(wù)器間的socket連接,在本系統(tǒng)中,服務(wù)器開啟的偵聽端口為3000。
客戶端與server端的通訊
當考勤系統(tǒng)客戶端與服務(wù)器成功建立連接之后,考勤系統(tǒng)客戶端進入SM_SOCKET_OBTAINED狀態(tài)。而考勤系統(tǒng)客戶端的EMW-380-C Wi-Fi模塊在UDP 67端口進行偵聽,當手機給EMW-380-C Wi-Fi模塊發(fā)送DHCP請求時,EMW-380-C Wi-Fi模塊就可以獲取該手機的MAC地址。EMW-380-C Wi-Fi模塊將獲取的手機MAC地址通過UART將其主動發(fā)送給PIC32 Ethernet Starter KIT。比如PIC32 Ethernet Starter KIT收到如下信息:30 00 10 00 01 00 BE FF 00 1D 0F 31 7E 17 72 9A,則前8字節(jié)是MAC地址信息的頭部,接著的6字節(jié)是MAC地址,最后兩字節(jié)表示檢驗和。此時PIC32 Ethernet Starter KIT在SM_SOCKET_OBTAINED狀態(tài)下將對這16字節(jié)數(shù)據(jù)進行AES加密,然后將這經(jīng)過加密的16字節(jié)數(shù)據(jù)發(fā)送給遠程的服務(wù)器端。一個應(yīng)用場景為:上班時,只要與考勤系統(tǒng)客戶端建立Ad-hoc點對點連接,然后考勤系統(tǒng)客戶端給服務(wù)器發(fā)送經(jīng)過加密的MAC地址信息,當服務(wù)器端接收到這些加密的信息后,對加密信息進行相應(yīng)的解密,提取出MAC地址,從而進行身份認證進入公司。下班時,除了與考勤系統(tǒng)客戶端建立Ad-hoc點對點連接之外,還要按下考勤系統(tǒng)客戶端上的SW2按鈕,這樣考勤系統(tǒng)客戶端給服務(wù)器發(fā)送了手機的MAC地址和下班的標識信息。這樣可以區(qū)別此時是上班還是下班。
4.2上位機軟件設(shè)計
4.2.1數(shù)據(jù)庫設(shè)計
為了演示方便,本系統(tǒng)采用ACCESS2007數(shù)據(jù)庫,建立Mobile_acces_control_system數(shù)據(jù)庫,里面建有兩張表Presonnel_Info和RecordList,用來保存公司人員信息。
Presonnel_Info表保存公司人員的姓名和其手機WI-FI模塊中的MAC地址(主鍵),如表5。該表主要是由管理人員錄入人員的這兩項基本信息。
表5 Presonnel_Info表
Mac_Addr | 文本 |
Staff_Name | 文本 |
RecordList保留每天公司工作人員的上班出入時間記錄,系統(tǒng)會先查找Presonnel_Info表來核查你的身份信息,若在Presonnel_Info表中有你的基本信息,系統(tǒng)會主動為你添加你每天的上下班時間記錄信息,如表6。
表6 RecordList表
ID | 自動編號 |
Mac_Addr | 文本 |
Staff_Name | 文本 |
In_Time | 文本 |
Out_Time | 文本 |
4.2.2應(yīng)用程序設(shè)計
主要流程概述:應(yīng)用程序作為服務(wù)器端,首先應(yīng)用程序開啟服務(wù)器程序(端口設(shè)為3000),用線程實現(xiàn)等待客戶端的連接,可以接受多個客戶端請求。若有客戶端連接上,檢查傳送來的數(shù)據(jù)包是否合法;利用AES算法對經(jīng)過加密的身份認證信息進行解密,合法則提取出MAC地址,通過MAC地址到數(shù)據(jù)庫中查找該人員是否為公司人員;若是公司人員則通過數(shù)據(jù)包信息判斷是進入還是出去,記錄其出入時間信息。數(shù)據(jù)庫中只保留人員每天的一次上下班記錄,若有重復會給出提示,你已經(jīng)有出或入記錄信息。在顯示窗口會實時顯示每個人員的出入記錄。上位機流程如下圖12。
圖12上位機服務(wù)器處理流程
如下圖13為我們的PC端服務(wù)器界面。當有客戶端與我們的服務(wù)器端成功建立TCP連接之后,界面的左下角就會顯示“客戶端連接上”。該服務(wù)器端可以顯示人員的出入記錄。如果只想顯示當天的出入記錄,則只要點擊“顯示當天記錄”即可。如果有非公司的人員想要進入公司,由于該人員的手機MAC地址并沒有在我們的數(shù)據(jù)庫中進行登記,所以將不會通過服務(wù)器端的身份認證,從而不會為該人員開門。
圖13 服務(wù)器端界面
評論