王永順 玉士蒙
(北京建筑大學(xué)電氣與信息工程學(xué)院 北京 100044)(建筑大數(shù)據(jù)智能處理方法研究北京市重點(diǎn)實(shí)驗(yàn)室 北京 100044)
隨著共享經(jīng)濟(jì)概念的流行,在線短租行業(yè)越來越被人們接受。信息技術(shù)的進(jìn)步、社會(huì)信用體系的不斷完善、人們多樣化的住宿需求以及大量閑置房源,這些都推動(dòng)了在線短租的發(fā)展[1]。但是現(xiàn)有短租房門鎖存在聯(lián)網(wǎng)困難、不能實(shí)名登記、IC房卡易被復(fù)制等安全性問題。雖然有部分門鎖能夠通過云平臺(tái)進(jìn)行管理,但是成本高昂[2]。與此同時(shí),酒店管理存在入住程序繁瑣,用戶等待時(shí)間長(zhǎng)等問題[3]。
本文設(shè)計(jì)開發(fā)了一款基于云平臺(tái)的智能門鎖系統(tǒng),該智能門鎖系統(tǒng)包括三部分,即門鎖端、云平臺(tái)和手機(jī)端APP。門鎖端嵌入Wi-Fi模塊實(shí)現(xiàn)了與京東微聯(lián)云平臺(tái)的互聯(lián),解決了傳統(tǒng)門鎖不能聯(lián)網(wǎng)的問題。門鎖端嵌入身份證讀取模塊,可讀取用戶身份信息并進(jìn)行注冊(cè)登記,也可通過云平臺(tái)在手機(jī)端APP注冊(cè),從而能夠縮減酒店入住程序,同時(shí)使用身份證作為房卡,降低了房卡被復(fù)制的風(fēng)險(xiǎn)。除身份證識(shí)別外,門鎖端還可利用密碼鍵盤作為輔助開鎖手段,密碼輸入設(shè)置了虛位密碼功能,能夠有效降低用戶的安全風(fēng)險(xiǎn)。云平臺(tái)將手機(jī)端和門鎖端發(fā)送的數(shù)據(jù)包加上時(shí)間戳,用以顯示操作時(shí)間。手機(jī)端能夠?qū)τ脩艉烷T鎖進(jìn)行注冊(cè)和控制,顯示門鎖當(dāng)前及過去狀態(tài)信息。本文中的門鎖端利用STM32F103RCT6單片機(jī)作為主控芯片,單片機(jī)通過無線通信技術(shù)上傳用戶操作信息,保證了用戶數(shù)據(jù)的可查看性。目前常用的無線通信技術(shù)主要有Bluetooth、IEEE802.11a、UWB等[4-5],其中基于IEEE802.11a協(xié)議的Wi-Fi通信具有覆蓋范圍廣(Wi-Fi組網(wǎng))、傳輸速度快、節(jié)省開發(fā)成本等優(yōu)點(diǎn)[6-7],因此本文在技術(shù)上采用Wi-Fi通信。
智能門鎖系統(tǒng)主要由門鎖端、云平臺(tái)和手機(jī)端APP三部分組成。門鎖端主要包括STM32F103RCT6主控單片機(jī)、數(shù)字鍵盤模塊、身份證讀取模塊和Wi-Fi通信模塊,用于進(jìn)行身份認(rèn)證和開/關(guān)鎖控制。云平臺(tái)使用京東微聯(lián),實(shí)現(xiàn)手機(jī)端與門鎖端的通信。用戶在手機(jī)端操作APP,用于注冊(cè)和對(duì)門鎖端進(jìn)行遠(yuǎn)程控制。系統(tǒng)總體結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)及協(xié)議結(jié)構(gòu)圖
在門鎖端主要實(shí)現(xiàn)虛位數(shù)字密碼開鎖、身份證認(rèn)證及開鎖、雙重認(rèn)證開鎖等功能,并可將開鎖相關(guān)信息通過Wi-Fi模塊上傳到京東微聯(lián)。數(shù)字鍵盤融合虛位密碼技術(shù),使用KMP算法實(shí)現(xiàn)虛位密碼輸入,以防被偷窺,同時(shí)具有密碼設(shè)置、修改、刪除等功能。云平臺(tái)主要對(duì)Wi-Fi模塊傳輸來的數(shù)據(jù)加上時(shí)間戳,然后將數(shù)據(jù)傳到手機(jī)端,為用戶提供門鎖實(shí)時(shí)數(shù)據(jù),同時(shí)可將用戶在手機(jī)端的注冊(cè)信息傳輸?shù)介T鎖端。在手機(jī)端主要實(shí)現(xiàn)對(duì)門鎖端的遠(yuǎn)程控制、注冊(cè),并可以顯示門鎖的操作信息,主要包括身份證號(hào)錄入實(shí)現(xiàn)實(shí)名注冊(cè)、對(duì)門鎖的遠(yuǎn)程開關(guān)控制、顯示當(dāng)前門鎖的開關(guān)狀態(tài)、開關(guān)時(shí)間以及相應(yīng)開鎖人身份等。此外,門鎖端的控制電路還具有待機(jī)、喚醒等功能,使電路在低功耗下運(yùn)行。
京東微聯(lián)作為云服務(wù)器,在門鎖聯(lián)網(wǎng)過程中將Wi-Fi模塊按照J(rèn)oyLink協(xié)議傳送來的json格式的數(shù)據(jù)進(jìn)行登記并保存,主要包括身份證號(hào)、輸入密碼和開鎖密碼以及用戶的操作方式等信息。同時(shí)京東微聯(lián)將門鎖狀態(tài)等信息通過網(wǎng)絡(luò)按照J(rèn)oyLink協(xié)議發(fā)送到用戶手機(jī)APP中。
門鎖端單片機(jī)與數(shù)字鍵盤模塊使用IIC協(xié)議通信,與身份證讀取模塊使用USART進(jìn)行通信,與Wi-Fi模塊使用SPI總線進(jìn)行通信。門鎖系統(tǒng)的協(xié)議結(jié)構(gòu)圖如圖1所示。
系統(tǒng)注冊(cè)使用手機(jī)端注冊(cè)和門鎖端注冊(cè)兩種方法。用戶在APP中輸入身份證號(hào),通過云平臺(tái)將數(shù)據(jù)傳輸?shù)介T鎖端進(jìn)行注冊(cè),同時(shí)用戶也能在門鎖端輸入身份證號(hào)進(jìn)行注冊(cè)。用戶可通過注冊(cè)過的身份證進(jìn)行開鎖密碼的設(shè)置,并選擇開鎖認(rèn)證方式。用戶自行注冊(cè)的方式簡(jiǎn)化了短租房和酒店的管理程序,保證了房卡的唯一性。門鎖的注冊(cè)/使用流程如圖2所示。
圖2 注冊(cè)/使用流程圖
京東微聯(lián)作為云平臺(tái),為用戶提供遠(yuǎn)程控制、雙向通信,對(duì)數(shù)據(jù)進(jìn)行登記和存儲(chǔ)[8],對(duì)門鎖狀態(tài)及相關(guān)信息進(jìn)行傳輸,并在數(shù)據(jù)包中加入時(shí)間戳為用戶提供時(shí)間信息。
京東微聯(lián)在系統(tǒng)中承擔(dān)兩項(xiàng)工作:接收Wi-Fi模塊發(fā)送的門鎖信息數(shù)據(jù),對(duì)其進(jìn)行解析、保存,并將其發(fā)送到手機(jī)端,H5交互界面提供信息數(shù)據(jù)的展示;將手機(jī)端發(fā)送的控制命令、身份證和注冊(cè)等信息通過網(wǎng)絡(luò)發(fā)送給門鎖端。
京東微聯(lián)官網(wǎng)提供開發(fā)者平臺(tái),首先需要在平臺(tái)上創(chuàng)建產(chǎn)品,并對(duì)產(chǎn)品信息進(jìn)行完善。之后云平臺(tái)會(huì)給設(shè)備匹配專用的調(diào)試序列號(hào)(UUID),將UUID寫入到Wi-Fi程序中即可實(shí)現(xiàn)虛擬設(shè)備調(diào)試。在虛擬設(shè)備調(diào)試中可對(duì)多種功能參數(shù)進(jìn)行設(shè)置,并對(duì)手機(jī)端進(jìn)行消息推送的設(shè)置。
京東微聯(lián)云平臺(tái)與門鎖及手機(jī)均使用JoyLink協(xié)議通信,且提供了JoyLink協(xié)議的SDK和相關(guān)的技術(shù)文檔及開發(fā)流程,將SDK移植到Wi-Fi模塊中即可實(shí)現(xiàn)與門鎖端的交互。平臺(tái)會(huì)在每次的協(xié)議包中加上時(shí)間戳用以時(shí)間顯示。
手機(jī)端主要提供HTML5交互界面,供用戶查看門鎖狀態(tài)及開鎖記錄,能夠?qū)﹂T鎖狀態(tài)進(jìn)行控制,并可對(duì)身份證號(hào)進(jìn)行注冊(cè)登記。
2.2.1 JoyLink2.0協(xié)議
JoyLink2.0協(xié)議是京東微聯(lián)開放平臺(tái)提供的標(biāo)準(zhǔn)接入?yún)f(xié)議,主要功能包括設(shè)備發(fā)現(xiàn)、feedid、accesskey、localkey寫入、獲取設(shè)備快照,控制設(shè)備等[9]。JoyLink協(xié)議中定義的數(shù)據(jù)格式如表1所示。協(xié)議包頭結(jié)構(gòu)體packet包含的信息如表2所示。
表1 JoyLink數(shù)據(jù)格式
表2 協(xié)議包頭結(jié)構(gòu)體
2.2.2 JoyLink協(xié)議通信
APP從JoyLink SDK協(xié)議中讀取設(shè)備對(duì)應(yīng)的feedID是否在線,若設(shè)備在線就將控制請(qǐng)求提交給SDK,SDK通過UDP協(xié)議透?jìng)鹘o門鎖,門鎖執(zhí)行相應(yīng)動(dòng)作后原路返回通知APP,同時(shí)異步告知云端。設(shè)備上電后會(huì)向云端發(fā)送認(rèn)證請(qǐng)求,云端在驗(yàn)證設(shè)備合法性后,會(huì)隨機(jī)生成一個(gè)設(shè)備與云端生成的對(duì)話密鑰,用于云端與門鎖的通信。門鎖認(rèn)證成功后與云端建立長(zhǎng)連接,之后控制、數(shù)據(jù)上報(bào)等數(shù)據(jù)包體進(jìn)行AES加解密[9]。
2.2.3 HTML5界面開發(fā)
手機(jī)APP前端開發(fā)選用HTML5在京東微聯(lián)APP中生成信息及控制界面,主要實(shí)現(xiàn)注冊(cè)登記、門鎖開關(guān)控制以及開關(guān)記錄功能。手機(jī)端及云平臺(tái)的開發(fā)主要是對(duì)手機(jī)端H5界面和控制邏輯的開發(fā),主要包括HTML5、CSS、JavaScript和vue.js技術(shù)的開發(fā)。界面設(shè)計(jì)以iPhone5為主要設(shè)計(jì)尺寸(640×1 136),左右各留8 px的間距,運(yùn)用柵格原理進(jìn)行設(shè)計(jì)的規(guī)范樣式,每列柵格均按照52 px×52 px為單位的基礎(chǔ)柵格尺寸進(jìn)行。整體布局規(guī)范從上至下依次為:頂部導(dǎo)航欄、狀態(tài)顯示區(qū)、功能控制區(qū)、底部輔助信息區(qū)。
狀態(tài)顯示區(qū)主要呈現(xiàn)設(shè)備當(dāng)前的運(yùn)行狀態(tài)(不可控參數(shù)),可以讓用戶直觀地獲取到設(shè)備運(yùn)行信息。功能控制區(qū)用于放置設(shè)備的控制功能,主要用于身份證號(hào)登記以及門鎖控制,功能控制區(qū)采用卡片方式進(jìn)行布局。
為解決前端界面適配的問題,首先在JavaScript中獲取當(dāng)前設(shè)備的寬度,對(duì)于Internet Explorer、Chrome、Firefox、Opera和Safari等瀏覽器來說,獲取設(shè)備寬度方法為window.innerWidth,但是對(duì)于Internet Explorer 5~8瀏覽器獲取設(shè)備的寬度方法為document.documentElement.clientWidth,所以為了兼容所有瀏覽器,選擇用var clientWidth=document.documentElement.clientWidth‖window.innerWidth來兼容所有的瀏覽器,以獲得瀏覽器寬度來適配設(shè)備。然后根據(jù)設(shè)置的baseWidth和baseFontSize的值,通過rem=Math.floor(clientWidth/baseWidth×baseFontSize)計(jì)算出設(shè)備的rem值。最后根據(jù)獲得的rem值來重置頁面中的控件、字體等大小,以保證頁面在任意設(shè)備中都能正確顯示。H5開發(fā)的界面如圖3所示。
圖3 H5主界面
頁面body部分通過v-show與vue對(duì)象中的pages.index綁定,當(dāng)pages.index為真時(shí),界面顯示正常,當(dāng)pages.index為假時(shí),頁面顯示空白。頁面由三個(gè)div部分組成,最上面的是設(shè)備狀態(tài)顯示區(qū),由一個(gè)image標(biāo)簽組成,圖片像素為640 px×280 px,設(shè)備狀態(tài)顯示部分顯示門鎖的開合狀態(tài),當(dāng)鎖為閉合狀態(tài)時(shí),鎖的顏色為藍(lán)色,否則為紅色。中間的控制部分由左右兩部分組成,在HTML中用兩個(gè)div區(qū)分開,而樣式主要在css中定義。左側(cè)是設(shè)備狀態(tài)文字顯示區(qū),由vue對(duì)象中的變量控制,右側(cè)是vue控件,綁定了命令下發(fā)函數(shù)。在手機(jī)端點(diǎn)擊控件時(shí),根據(jù)手機(jī)界面顯示的狀態(tài),調(diào)用JDSMART.io.controlDevice方法,下發(fā)與現(xiàn)在狀態(tài)相反的命令,同時(shí)也會(huì)根據(jù)返回?cái)?shù)據(jù)來進(jìn)一步更新頁面。最下側(cè)的div部分是日志查詢部分,在此div標(biāo)簽中添加了click事件,點(diǎn)擊該按鈕會(huì)調(diào)用JDSMART.app.openUrl 方法打開使用記錄查詢頁面,調(diào)用JDSMART.io.getWifiHistory方法查詢開門的記錄情況,根據(jù)返回的數(shù)據(jù)將開鎖記錄顯示在新打開的頁面上。
前端的邏輯控制是由JavaScript部分來完成的。首先頁面加載后JDSMART.ready方法會(huì)對(duì)設(shè)備信息進(jìn)行初始化,查詢?cè)O(shè)備的狀態(tài)、獲取設(shè)備快照,根據(jù)得到的信息更新界面。然后設(shè)置4秒的定時(shí)函數(shù),定時(shí)獲取設(shè)備快照,以獲取設(shè)備的狀態(tài)。在設(shè)備控制區(qū)域的組件power通過vue綁定了click事件,當(dāng)用戶在手機(jī)端點(diǎn)擊時(shí),可以實(shí)時(shí)地發(fā)送消息到設(shè)備端,返回值為執(zhí)行的結(jié)果,JavaScript根據(jù)返回的結(jié)果調(diào)用函數(shù)及時(shí)地刷新頁面。
硬件電路部分使用DXP進(jìn)行PCB設(shè)計(jì),通過接插件與接在鎖芯上的接插件相連進(jìn)行控制。門鎖端可由兩種方式供電:干電池供電和外置USB接口供電??刂浦靼逯饕暪馊藱C(jī)交互以及電機(jī)驅(qū)動(dòng)部分。
3.1.1 控制單元及Wi-Fi通信模塊
門鎖端控制單元的核心選擇STM32F103RCT6單片機(jī)。STM32F103RCT6具有13個(gè)多種類型的通信接口,51個(gè)I/O口能夠滿足門鎖控制系統(tǒng)對(duì)外圍設(shè)備的控制需求[10]。Wi-Fi通信模塊采用LHW100A模塊,模塊內(nèi)嵌TCP/IP協(xié)議,能夠與網(wǎng)絡(luò)服務(wù)器進(jìn)行實(shí)時(shí)通信,并且支持高速SPI接口,能夠適應(yīng)Wi-Fi通信模塊與單片機(jī)之間通信的數(shù)據(jù)量。模塊能夠自動(dòng)連接無線網(wǎng)絡(luò),以防在網(wǎng)絡(luò)斷開之后門鎖部分功能失效。
3.1.2 電源模塊及其接口
干電池供電采用4節(jié)干電池通過變壓降到3.3 V,為單片機(jī)以及Wi-Fi通信模塊供電。穩(wěn)壓芯片采用的是AMS1117-5.0和AMS1117-3.3芯片,將4節(jié)電池的6 V電壓分別轉(zhuǎn)換成5 V和3.3 V。穩(wěn)壓電路通過電容濾波,芯片穩(wěn)壓,再接濾波電容,從而得到穩(wěn)定的輸出電壓。6 V轉(zhuǎn)5 V和3.3 V穩(wěn)壓電路如圖4、圖5所示。
圖4 6 V轉(zhuǎn)5 V穩(wěn)壓電路
圖5 6 V轉(zhuǎn)3.3 V穩(wěn)壓電路
本款門鎖在電源模塊加入了USB接口,通過該接口用戶可使用充電寶等供電設(shè)備給門鎖供電,以防止門鎖電量耗盡,導(dǎo)致門鎖不能正常打開。USB供電穩(wěn)壓電路如圖6所示。
圖6 USB供電穩(wěn)壓電路
3.1.3 數(shù)字鍵盤模塊
數(shù)字鍵盤模塊使用IIC接口與單片機(jī)進(jìn)行通信,單片機(jī)采用中斷方式讀取中斷狀態(tài)寄存器,檢查是哪個(gè)按鍵產(chǎn)生中斷。數(shù)字鍵盤采用4× 3數(shù)字鍵盤,數(shù)字鍵盤模塊如圖7所示。圖中‘*’和‘#’分別作為“取消”和“確定”使用;鍵盤主要用于密碼輸入、密碼修改、菜單選擇、系統(tǒng)設(shè)置等,是人機(jī)交互的關(guān)鍵組成部分[11]。
圖7 數(shù)字鍵盤模塊
3.1.4 身份證讀取模塊
身份證讀取模塊采用公安部統(tǒng)一認(rèn)證的身份信息讀取模塊。本設(shè)計(jì)只利用身份證號(hào)來核對(duì)并登記身份信息,門鎖會(huì)將用戶的身份證號(hào)傳輸?shù)皆破脚_(tái)進(jìn)行登記注冊(cè),進(jìn)而對(duì)相關(guān)信息進(jìn)行采集,包括身份證號(hào)、開鎖方式、注冊(cè)時(shí)間以及注冊(cè)有效時(shí)長(zhǎng)等信息。STM32通過串口采用輪詢法來對(duì)身份證讀取模塊進(jìn)行信息采集,模塊收到單片機(jī)的查詢信息會(huì)對(duì)該查詢進(jìn)行回應(yīng)并將身份證號(hào)傳輸給單片機(jī),單片機(jī)對(duì)身份證號(hào)進(jìn)行驗(yàn)證,判斷該身份證的有效性。身份證讀取模塊如圖8所示。
圖8 身份證讀取模塊
3.1.5 控制主板
控制主板上的功能模塊主要包括功能指示燈、蜂鳴器、輸入按鍵、電機(jī)驅(qū)動(dòng)等模塊。在每個(gè)輸入輸出引腳連接光電耦合器進(jìn)行光電隔離,以提高系統(tǒng)的抗干擾能力。電機(jī)驅(qū)動(dòng)電路采用直流電機(jī)驅(qū)動(dòng)芯片MX08,該芯片給鎖芯內(nèi)部的電機(jī)提供驅(qū)動(dòng),電機(jī)驅(qū)動(dòng)電路圖如圖9所示。在接收到開鎖/關(guān)鎖信號(hào)后,電機(jī)正轉(zhuǎn)/反轉(zhuǎn)并帶動(dòng)鎖舌移動(dòng)。鎖舌一端有限位開關(guān),當(dāng)鎖舌移動(dòng)到指定位置后會(huì)觸發(fā)限位開關(guān),電機(jī)停止轉(zhuǎn)動(dòng)。蜂鳴器采用無源蜂鳴器,當(dāng)輸入端有輸入時(shí)會(huì)觸發(fā)蜂鳴器,單片機(jī)使用PWM方波控制無源蜂鳴器發(fā)出聲音,蜂鳴器驅(qū)動(dòng)電路如圖10所示。掉電保護(hù)電路采用法拉電容串接電阻的方法,放電時(shí)間足夠單片機(jī)執(zhí)行緊急存儲(chǔ)的時(shí)間。
圖9 電機(jī)驅(qū)動(dòng)電路
圖10 蜂鳴器驅(qū)動(dòng)電路
單片機(jī)程序開發(fā)是在keil的編程環(huán)境下完成的,包括身份證識(shí)別模塊控制程序、數(shù)字鍵盤控制程序、KMP算法、SPI通信程序以及休眠喚醒、掉電存儲(chǔ)等附屬功能的程序編寫。
3.2.1 身份證識(shí)別模塊
單片機(jī)在上電后對(duì)系統(tǒng)以及各通信模塊接口進(jìn)行初始化并進(jìn)入循環(huán)操作,單片機(jī)通過串口持續(xù)發(fā)出尋卡指令,當(dāng)收到尋卡成功指令后,發(fā)出讀取身份信息指令,身份證識(shí)別模塊將采集到的身份信息統(tǒng)一通過串口傳給單片機(jī)。控制單元在接收到身份信息后對(duì)身份證號(hào)數(shù)據(jù)進(jìn)行篩選,之后進(jìn)行保存并對(duì)比。身份證識(shí)別模塊的信息傳遞工作流程圖如圖11所示。
3.2.2 數(shù)字鍵盤模塊程序開發(fā)
KMP算法是字符串匹配中是最常用的算法之一,同時(shí)也是效率較高的算法[12]。KMP算法的基本思想是當(dāng)一次匹配過程中出現(xiàn)失配時(shí),無需追溯主串指針,而是充分利用已經(jīng)得到的“部分匹配”的結(jié)果將模式向右滑動(dòng)盡可能遠(yuǎn)的一段距離后繼續(xù)比較,從而提高了模式匹配的效率[13]。
數(shù)字鍵盤模塊在上電之后執(zhí)行復(fù)位并進(jìn)行初始化,軟件配置使能觸摸中斷功能,按鍵狀態(tài)發(fā)生變化時(shí)中斷引腳產(chǎn)生中斷信號(hào),此時(shí)單片機(jī)發(fā)送查詢指令查詢中斷狀態(tài)寄存器,判斷按鍵動(dòng)作情況。
門鎖的有效密碼設(shè)置為6位數(shù)字,在按下按鍵后控制單元會(huì)通過數(shù)組將讀取到的按鍵值進(jìn)行保存,當(dāng)讀取到“#”按鍵觸發(fā)時(shí),會(huì)與系統(tǒng)中存儲(chǔ)的密碼進(jìn)行比對(duì)。系統(tǒng)使用了虛位密碼技術(shù),使用KMP算法將用戶輸入的大于等于6位的用戶密碼與系統(tǒng)密碼進(jìn)行逐字符匹配。若系統(tǒng)密碼包含在用戶密碼中,即字符串a(chǎn)包含字符串b,則系統(tǒng)返回匹配結(jié)果為真,驅(qū)動(dòng)電機(jī)開鎖,并通過Wi-Fi模塊上傳門鎖狀態(tài),否則系統(tǒng)會(huì)發(fā)出錯(cuò)誤信號(hào),電機(jī)無動(dòng)作。
數(shù)字鍵盤模塊與控制單元的通信數(shù)據(jù)采用IIC時(shí)序,數(shù)據(jù)類型是12位的按鍵狀態(tài)寄存器的數(shù)據(jù)。數(shù)字鍵盤模塊工作流程如圖12所示。
圖12 數(shù)字鍵盤模塊工作流程圖
3.2.3 掉電信息存儲(chǔ)
在門鎖使用過程中,電池電量耗盡或其他原因而導(dǎo)致系統(tǒng)掉電復(fù)位進(jìn)而導(dǎo)致門鎖不能正常開啟。本文將單片機(jī)的FLASH模擬EEPROM配合掉電保護(hù)電路來進(jìn)行密碼信息以及身份信息的存儲(chǔ)。在門鎖掉電之后掉電保護(hù)電路放電以提供單片機(jī)進(jìn)行緊急存儲(chǔ)的所需電源,在重新上電后系統(tǒng)會(huì)讀取FLASH,將讀取的密碼信息分別重新存儲(chǔ)到相應(yīng)的數(shù)組中。使用單片機(jī)自身的FLASH代替EEPROM能夠降低系統(tǒng)功耗,同時(shí)節(jié)約成本。
3.3.1 Wi-Fi模塊工作流程
Wi-Fi模塊在上電后進(jìn)行系統(tǒng)初始化,包括系統(tǒng)時(shí)鐘初始化、SPI初始化以及JoyLink2.0協(xié)議中各種參數(shù)的配置等。然后監(jiān)察系統(tǒng)的網(wǎng)絡(luò)配置,如果有配置網(wǎng)絡(luò)連接的信息,則按照之前的配置嘗試連接到Wi-Fi,如果沒有則等待配置oneshot。oneshot配置的過程:手機(jī)連接路由器,打開oneshot軟件,配置已連接Wi-Fi的信息,然后向Wi-Fi模塊廣播網(wǎng)絡(luò)配置的信息,包括ssid、password以及加密方式,Wi-Fi模塊按照手機(jī)端發(fā)來的配置信息連接路由器。聯(lián)網(wǎng)成功后,Wi-Fi模塊一方面接收STM32通過SPI總線發(fā)來的數(shù)據(jù),另一方面接收云平臺(tái)發(fā)來的數(shù)據(jù)命令。
3.3.2 JoyLink通信
Wi-Fi模塊與京東微聯(lián)云平臺(tái)使用京東提供的JoyLink2.0協(xié)議進(jìn)行通信。Wi-Fi模塊網(wǎng)絡(luò)配置成功后,會(huì)向云平臺(tái)發(fā)送認(rèn)證請(qǐng)求,門鎖認(rèn)證成功后會(huì)與云平臺(tái)建立長(zhǎng)連接,并發(fā)送設(shè)備快照,之后即可進(jìn)行數(shù)據(jù)傳輸,控制請(qǐng)求及回應(yīng)等操作。Wi-Fi模塊每隔一定時(shí)間會(huì)發(fā)送心跳請(qǐng)求,以確保門鎖在線。Wi-Fi模塊開發(fā)流程圖如圖13所示。
圖13 Wi-Fi模塊開發(fā)流程圖
3.3.3 SPI通信
STM32與Wi-Fi通信模塊使用高速SPI接口進(jìn)行通信。當(dāng)STM32向Wi-Fi模塊傳輸數(shù)據(jù)時(shí)首先發(fā)出片選信號(hào),Wi-Fi通信模塊進(jìn)入接收模式等待單片機(jī)數(shù)據(jù)的傳入。之后利用透?jìng)鞴δ軐?shù)據(jù)傳輸?shù)皆贫诉M(jìn)行處理并將處理結(jié)果下發(fā)至Wi-Fi通信模塊和手機(jī)用戶APP,提醒用戶采取相應(yīng)的措施。單片機(jī)通過SPI通信向Wi-Fi模塊讀數(shù)據(jù)的程序如下:
GPIO_ResetBits(GPIOA, GPIO_Pin_4);
SPI1_ReadWriteByte(0x10);
for(i=0;i { *(RXBuf+i)=SPI1_ReadWriteByte(0xff); } GPIO_SetBits(GPIOA, GPIO_Pin_4); SetSPIStatus(SPI_DATA_IN); STM32單片機(jī)進(jìn)行片選并向Wi-Fi模塊發(fā)送讀數(shù)據(jù)指令,之后向Wi-Fi模塊發(fā)送無效數(shù)據(jù)以得到有效數(shù)據(jù),關(guān)閉片選并將SPI有關(guān)位進(jìn)行置位。寫數(shù)據(jù)與讀數(shù)據(jù)類似。單片機(jī)向Wi-Fi模塊寫數(shù)據(jù)的程序如下: GPIO_ResetBits(GPIOA, GPIO_Pin_4); SPI1_ReadWriteByte(0x90); //寫數(shù)據(jù)命令 for(i=0; i { SPI1_ReadWriteByte(*(TXBuf+i)); } GPIO_SetBits(GPIOA, GPIO_Pin_4); 本文設(shè)計(jì)開發(fā)的智能門鎖控制系統(tǒng)主要包括門鎖端、云平臺(tái)和手機(jī)端APP三部分。使用Wi-Fi模塊通過互聯(lián)網(wǎng)實(shí)現(xiàn)云平臺(tái)和手機(jī)端對(duì)門鎖端控制與信息采集。門鎖端使用身份證代替IC卡作為房卡,并且數(shù)字鍵盤結(jié)合KMP算法設(shè)置虛位密碼功能,分別實(shí)現(xiàn)身份證、數(shù)字密碼以及手機(jī)端控制三種開鎖方式進(jìn)行開鎖操作。同時(shí)能夠?qū)崿F(xiàn)實(shí)名認(rèn)證、內(nèi)部鎖定、掉電保護(hù)、備用電源接口等功能。 本文所設(shè)計(jì)開發(fā)的智能門鎖控制系統(tǒng)能夠保障用戶的安全,使用方便。所采用的虛位密碼技術(shù)能夠有效防止偷窺等行為,安全可靠性高;使用身份證代替IC卡作為房卡,能夠有效解決IC房卡易被復(fù)制等安全性問題;使用云平臺(tái)進(jìn)行實(shí)名登記,能夠減少酒店的入住程序,并且在解決聯(lián)網(wǎng)問題的同時(shí),能夠降低開發(fā)成本。經(jīng)過測(cè)試,證明本文所開發(fā)的門鎖控制系統(tǒng)穩(wěn)定可靠,具有很好的應(yīng)用前景。4 結(jié) 語