陳麗珠
(福州大學(xué) 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,福建 福州 350108)
隨著通信網(wǎng)絡(luò)的發(fā)展和手機(jī)的普及,人與人之間只是一個(gè)網(wǎng)絡(luò)的距離,隨著物聯(lián)網(wǎng)技術(shù)[1]的發(fā)展,人與物之間也將只是一個(gè)網(wǎng)絡(luò)的距離,物體的防丟防盜管理將有重要的意義。目前的防丟防盜設(shè)備多數(shù)基于無(wú)線通信原理[2]或紅外線與GSM通信原理[3-4],實(shí)現(xiàn)近距離防丟防盜警報(bào)或單純的紅外人體檢測(cè)警報(bào)。鑒于此,本文結(jié)合現(xiàn)有的北斗二代定位技術(shù)[5]、GSM網(wǎng)絡(luò)通信技術(shù),在Android智能手機(jī)上實(shí)現(xiàn)防丟防盜遠(yuǎn)程智能監(jiān)控系統(tǒng)[6]。系統(tǒng)實(shí)現(xiàn)物品或人員的監(jiān)控、搜索、定位等掌上智能化管理;系統(tǒng)實(shí)現(xiàn)移動(dòng)軌跡追蹤功能,區(qū)別目前的地圖軟件,可在手機(jī)端存儲(chǔ)用戶移動(dòng)的軌跡。
北斗設(shè)備監(jiān)控端定位模塊使用的是MXTOS2-200模塊,該模塊是由北京時(shí)代民芯公司開(kāi)發(fā)的GPS、BD-2雙模兼容接收機(jī),具有低功耗、小體積、高性能等特點(diǎn)。該模塊提供了串口、I2C和SPI 3種通信接口,本文使用串口0,速率為 115 200 b/s。發(fā)送來(lái)的字符串為:$GPGGA,〈UTC 時(shí)間〉,〈緯度〉,〈緯度標(biāo)識(shí)符 N 或 S〉,〈經(jīng)度〉,〈經(jīng)度標(biāo)識(shí)符 E或 W〉,〈定位狀態(tài)〉,〈正在使用的衛(wèi)星數(shù)量〉,〈HDOP 水平精度因子〉,〈海拔高度〉,〈地球橢球面相對(duì)大地水準(zhǔn)面的高度〉,〈差分時(shí)間〉,〈差分站 ID號(hào)〉,〈校驗(yàn)值〉。截取經(jīng)緯度信息,根據(jù)經(jīng)緯度距離公式(見(jiàn)4.2節(jié))計(jì)算距離,從而判斷其是否脫離監(jiān)控范圍。
Android平臺(tái)有著嚴(yán)格的安全機(jī)制,位置服務(wù)、手機(jī)地圖服務(wù)等操作需在AndroidManifest.xml文件中申明權(quán)限。GPS要獲取ACCESS_COARSE_LOCATION、ACCESS_FINE_LOCATION等權(quán)限,百度地圖需ACCESS_NETWORK_STATE、WRITE_EXTERNA-L_STORAGE等權(quán)限。
Android手機(jī)端采用兩種數(shù)據(jù)存儲(chǔ)方式,一種采用SharePreference存儲(chǔ),將數(shù)據(jù)存儲(chǔ)到文件系統(tǒng)中;另一種采用SQLite數(shù)據(jù)庫(kù)存儲(chǔ)。對(duì)于小數(shù)據(jù)量且不經(jīng)常改變的數(shù)據(jù)采用第一種方式,比如地圖級(jí)別、北斗設(shè)備報(bào)警音效提醒、GPS更新距離等;北斗設(shè)備信息、追蹤路徑等數(shù)據(jù)量較大且經(jīng)常操作的數(shù)據(jù)就采用第二種方式。其中,北斗設(shè)備數(shù)據(jù)庫(kù)設(shè)計(jì)如表1所示。
表1 北斗設(shè)備信息表
本文的整體功能設(shè)計(jì)框圖如圖1所示。
防丟防盜遠(yuǎn)程監(jiān)控功能是通過(guò)GSM無(wú)線網(wǎng)絡(luò)進(jìn)行通信的,本文自行擬定的通信協(xié)議如下所示。
(1)手機(jī)端監(jiān)控上鎖/解鎖指令
#LOCK,〈手機(jī)端號(hào)碼〉,〈監(jiān)控距離〉,〈蜂鳴器警報(bào)〉,〈LED燈警報(bào)〉/#UNLOCK,〈手機(jī)端號(hào)碼〉
如#LOCK,13246830424,100,1,1表示監(jiān)控距離為100 m、開(kāi)啟蜂鳴器和LED燈警報(bào)。
(2)北斗設(shè)備端經(jīng)緯度位置請(qǐng)求指令
圖1 系統(tǒng)整體功能設(shè)計(jì)框圖
手機(jī)端發(fā)送 #REQLOC,〈手機(jī)端號(hào)碼〉請(qǐng)求北斗設(shè)備端經(jīng)緯度,北斗設(shè)備端接收到請(qǐng)求后,發(fā)送#REQLOC,〈經(jīng)度〉,〈緯度〉指令給手機(jī)端。
(3)手機(jī)端搜索北斗設(shè)備指令
#SEARCH,〈 手機(jī)端號(hào)碼〉,〈蜂鳴器〉,〈LED 燈〉
(4)北斗設(shè)備警報(bào)指令
北斗設(shè)備端超出監(jiān)控范圍后,將發(fā)送#ALARM,〈北斗端號(hào)碼〉,〈經(jīng)度〉,〈緯度〉,〈超出范圍〉指令。
北斗設(shè)備端主要是由北斗定位模塊、GSM模塊、LPC2478處理器模塊、蜂鳴器LED及按鈕模塊組成。北斗定位模塊負(fù)責(zé)位置信息服務(wù),GSM模塊負(fù)責(zé)通信,蜂鳴器和LED燈用于警報(bào),按鈕模塊用于緊急聯(lián)系和位置推送。流程圖如圖2所示,主要部件原理圖設(shè)計(jì)如圖3所示。
圖2 北斗設(shè)備監(jiān)控端流程圖
圖3 北斗設(shè)備主要部件原理圖
獲取兩點(diǎn)經(jīng)緯度信息,將其轉(zhuǎn)為球面坐標(biāo),計(jì)算兩點(diǎn)間的一段劣弧的長(zhǎng)度,即為移動(dòng)軌跡的長(zhǎng)度?,F(xiàn)假設(shè)獲取到兩坐標(biāo)點(diǎn)A、B,如圖4所示。點(diǎn)O為球心,球面半徑為 R,球面上的點(diǎn) A(lon1,lat1)、B(lon2,lat2),lon1、lon2為經(jīng)度,lat1、lat2為緯度。AC、BD垂直于赤道平面,垂足分別為 C、D。
圖4 地球上兩點(diǎn)間球面距率
北斗設(shè)備端使用μC/OS-II操作系統(tǒng)開(kāi)啟了GSM模塊、北斗經(jīng)緯度模塊和按鈕中斷3個(gè)任務(wù)。北斗監(jiān)控端命令結(jié)構(gòu)體如下所示。
北斗經(jīng)緯度任務(wù)中通過(guò)strstr函數(shù)判斷是否接收到"$GPGGA"開(kāi)頭的字符串,再通過(guò)strtok命令截取經(jīng)緯度。結(jié)構(gòu)體中的monCmd命令等于LOCK,且監(jiān)控狀態(tài)mon-Status等于MONITING時(shí),通過(guò)4.2節(jié)距離公式計(jì)算移動(dòng)距離。如果距離超出監(jiān)控范圍,將monStatus狀態(tài)置為 ALERT,若isLed或 isBeep等于ON,則開(kāi)啟LED燈和蜂鳴器。同時(shí)構(gòu)造警報(bào)信息,調(diào)用Send_SMS函數(shù)給手機(jī)監(jiān)控端發(fā)送警報(bào)。
手機(jī)端進(jìn)行北斗設(shè)備端和手機(jī)端通信時(shí),按3.2節(jié)約定的協(xié)議構(gòu)造信息。手機(jī)端主要包括北斗設(shè)備增刪查改功能,北斗設(shè)備加鎖、解鎖、位置請(qǐng)求、搜索等功能;手機(jī)用戶或北斗設(shè)備百度地圖位置顯示、手機(jī)用戶移動(dòng)軌跡記錄和查詢、刪除等功能。點(diǎn)擊主界面設(shè)備列表記錄可進(jìn)行加解鎖、位置請(qǐng)求和搜索操作;點(diǎn)擊底部的新建按鈕可建新的監(jiān)控設(shè)備;點(diǎn)擊底部的系統(tǒng)設(shè)置按鈕可設(shè)置地圖顯示級(jí)別、語(yǔ)言報(bào)警提示等設(shè)置;點(diǎn)擊位置服務(wù)按鈕可查看手機(jī)用戶當(dāng)前位置和按地址查詢地圖位置;點(diǎn)擊路徑追蹤按鈕可記錄用戶移動(dòng)軌跡以及管理用戶移動(dòng)的軌跡。
Android手機(jī)端軟件可安裝在Android2.1及以上版本的系統(tǒng)上,本文軟件在酷派8150手機(jī)Android2.3版本上進(jìn)行測(cè)試,下面將介紹軟件的功能實(shí)現(xiàn)和測(cè)試結(jié)果。
(1)北斗設(shè)備端防丟防盜功能
北斗設(shè)備記錄以圓角列表顯示,如圖5所示;點(diǎn)擊列表記錄后,創(chuàng)建GridView彈出窗體,可選擇設(shè)備加解鎖、搜索、修改等操作,選擇設(shè)備加鎖和設(shè)備搜索都要進(jìn)行參數(shù)設(shè)置,設(shè)備操作如圖6所示;點(diǎn)擊新建對(duì)象按鈕可新建設(shè)備,勾選上鎖按鈕則調(diào)用SMS模塊通知北斗設(shè)備端,如圖7所示。
(2)位置服務(wù)和路徑追蹤功能
位置服務(wù)地圖上顯示手機(jī)用戶和北斗設(shè)備位置,系統(tǒng)實(shí)現(xiàn)中SMSreceiver類繼承了BroadcastReceiver類,在onReceive方法中截獲到"#REQLOC"位置請(qǐng)求指令后,將啟動(dòng)Intent調(diào)用地圖類顯示當(dāng)前位置。
圖5 列表界面
圖6 功能操作界面
圖7 新建設(shè)備界面
路徑追蹤功能用于管理用戶移動(dòng)軌跡,距離采用4.2節(jié)推導(dǎo)的公式,代碼實(shí)現(xiàn)為R*Math.acos(Math.sin(Lat1r)*Math.sin(Lat2r)+Math.cos(Lat1r)*Math.cos(Lat2r)*Math.cos(Long2r-Long1r))。點(diǎn)擊左上角按鈕可在彈出窗體中查看追蹤軌跡,如圖8所示。
圖8 查看軌跡
(3)系統(tǒng)參數(shù)設(shè)置功能
系統(tǒng)參數(shù)設(shè)置地圖默認(rèn)級(jí)別、北斗設(shè)備警報(bào)語(yǔ)音報(bào)警和振動(dòng)警報(bào)等,Menu菜單的快捷按鈕可關(guān)閉和開(kāi)啟語(yǔ)音警報(bào)。效果如圖9所示。
圖9 參數(shù)設(shè)置
SMSreceiver類的onReceive方法中截獲北斗設(shè)備警報(bào)截獲"#ALARM"指令后,獲取語(yǔ)音和振動(dòng)警報(bào)參數(shù),開(kāi)啟相應(yīng)警報(bào);通過(guò)PendingIntent設(shè)置警報(bào)通知內(nèi)容和運(yùn)行的 Intent;最后,調(diào)用 NotificationManager類中的notify發(fā)送警報(bào)通知欄消息。手機(jī)用戶點(diǎn)擊通知欄警報(bào)可查看警報(bào)信息,如圖10所示。
圖10 警報(bào)通知
隨著北斗定位技術(shù)和物聯(lián)網(wǎng)技術(shù)的發(fā)展,物體快速定位將非常方便,物品的遠(yuǎn)程智能化防丟防盜管理有著重要意義。本系統(tǒng)還可以用來(lái)監(jiān)控小孩和老人,當(dāng)小孩跑離監(jiān)控范圍后,系統(tǒng)馬上向家長(zhǎng)發(fā)送警報(bào),防止孩子走丟,可通過(guò)位置請(qǐng)求服務(wù)實(shí)時(shí)了解他們的位置動(dòng)態(tài)。在將來(lái)人與物品都網(wǎng)絡(luò)化的社會(huì)中,掌上智能防丟、防盜管理只需一掌的距離便可掌握各方動(dòng)態(tài)。
[1]顧征宇.廣電物聯(lián)網(wǎng)智能家居體系設(shè)計(jì)[J].物聯(lián)網(wǎng)技術(shù),2012(11):60-62.
[2]王嘯東,尤鳳翔.基于單片機(jī)的智能防丟器系統(tǒng)設(shè)計(jì)[J].河 南 科 技,2011(11):61.
[3]任杰.基于彩信的無(wú)線紅外防盜報(bào)警系統(tǒng)的硬件設(shè)計(jì)[D].天津:河北工業(yè)大學(xué),2007.
[4]張曄.基于紅外檢測(cè)與GPS坐標(biāo)變化判據(jù)的電力設(shè)施防盜裝置[D].長(zhǎng)春:吉林大學(xué),2011.
[5]黃建華,吳升.面向北斗二代終端的導(dǎo)航地圖更新框架[J].福州大學(xué)學(xué)報(bào)(自然科學(xué)版),2012,40(3):347-351.
[6]ABUZALATA M,MOMANI M,FAYYAD S,et al.A practical design of anti-theft car protection system based on microcontroller[J].American Journal of Applied Sciences,2012,9(5):709-716.