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