摘 要: 鑒于傳統(tǒng)兒童防走失系統(tǒng)使用的局限性,介紹了一種基于單片機(jī)控制的、可以工作在無(wú)線信號(hào)與移動(dòng)信號(hào)兩種數(shù)據(jù)傳輸模式下的兒童防走失系統(tǒng)。分析并利用GPS全球定位系統(tǒng),準(zhǔn)確獲取兒童所在位置的經(jīng)緯度信息,通過(guò)某種數(shù)據(jù)傳輸方式將數(shù)據(jù)傳輸給父母端設(shè)備,處理數(shù)據(jù)并圖形顯示兒童與父母的具體或是相對(duì)位置。
關(guān)鍵詞: 單片機(jī);GPS;數(shù)據(jù)傳輸;圖形顯示
據(jù)公安部最新數(shù)據(jù)顯示,近年來(lái)我國(guó)每年有近20萬(wàn)兒童失蹤。傳統(tǒng)的兒童防走失系統(tǒng)主要依靠無(wú)線電路實(shí)現(xiàn),兒童端有一個(gè)信號(hào)發(fā)射器,父母端接收此信號(hào)并判斷信號(hào)強(qiáng)度大小,當(dāng)信號(hào)強(qiáng)度小于設(shè)定值時(shí)即報(bào)警。該方案的優(yōu)點(diǎn)是結(jié)構(gòu)簡(jiǎn)單、體積小,顯著缺點(diǎn)是適用距離短,無(wú)法判別兒童方向,信號(hào)易受干擾。這往往是兒童防走失產(chǎn)品的致命缺點(diǎn)。
本系統(tǒng)采用的方案是根據(jù)GPS信息判斷兒童具體位置并實(shí)現(xiàn)報(bào)警功能,報(bào)警的同時(shí)能夠在第一時(shí)間向父母提供兒童的準(zhǔn)確位置信息。系統(tǒng)的創(chuàng)新點(diǎn)與技術(shù)突破點(diǎn)主要體現(xiàn)在以下幾個(gè)方面:
(1)雙模式工作:當(dāng)沒(méi)有移動(dòng)信號(hào)時(shí),可通過(guò)無(wú)線方式實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信,不依靠第三方;當(dāng)距離超過(guò)1 000 m時(shí)又可通過(guò)短信息傳遞數(shù)據(jù),方便可靠;
(2)雙重圖形處理:十字坐標(biāo)顯示響應(yīng)快速直觀,第一時(shí)間指明孩子的方位;Google地圖顯示告知孩子的準(zhǔn)確位置,兩種方式一鍵切換;
(3)在Android手機(jī)操作系統(tǒng)下開(kāi)發(fā)了一套完全適用于兒童防走失系統(tǒng)的軟件,可移植性強(qiáng)。
需要注意的是,系統(tǒng)可以工作在兩種傳輸模式下,且能在兩種模式之間自動(dòng)切換。具體體現(xiàn)在:開(kāi)機(jī)情況下,兒童端設(shè)備默認(rèn)通過(guò)無(wú)線信號(hào)的方式與父母端設(shè)備進(jìn)行通信,而當(dāng)接收不到信號(hào)時(shí),兒童端設(shè)備將會(huì)立刻切換到通過(guò)短信息的方式與父母端設(shè)備通信。
1 系統(tǒng)架構(gòu)與功能
本兒童防走失系統(tǒng)采用子母機(jī)形式。其中兒童端為子機(jī),主要用來(lái)獲取自身經(jīng)緯度數(shù)據(jù),同時(shí)監(jiān)聽(tīng)父母端發(fā)送過(guò)來(lái)的指令,并將自身經(jīng)緯度數(shù)據(jù)返回給父母端設(shè)備;父母端設(shè)備為母機(jī),采用了兩種模式:自主開(kāi)發(fā)的手持終端模式與智能手機(jī)模式,分別通過(guò)無(wú)線信號(hào)和移動(dòng)網(wǎng)絡(luò)信號(hào)進(jìn)行數(shù)據(jù)傳輸,兩種模式可自動(dòng)切換。系統(tǒng)整體框架如圖1所示。
系統(tǒng)實(shí)現(xiàn)的主要功能有:(1)防走失報(bào)警:當(dāng)孩子與父母之間的距離超過(guò)任意設(shè)定的安全值時(shí)父母端設(shè)備報(bào)警,同時(shí)在父母端設(shè)備上自動(dòng)彈出孩子當(dāng)前的位置信息(以坐標(biāo)信息或Google地圖的形式);(2)父母主動(dòng)查看孩子的位置:在父母端手持設(shè)備上主動(dòng)操作可以獲得孩子的位置信息;(3)孩子主動(dòng)求助:當(dāng)孩子發(fā)現(xiàn)找不到父母時(shí),可以按下子機(jī)的傻瓜式按鍵,父母就收到孩子的求助信號(hào),同時(shí)彈出孩子當(dāng)前的位置信息。
2 系統(tǒng)功能單元設(shè)計(jì)
2.1 GPS數(shù)據(jù)獲取與分析
GPS(Global Positioning System)全球定位系統(tǒng)是新一代的精密衛(wèi)星導(dǎo)航定位系統(tǒng),利用人造地球衛(wèi)星確定測(cè)站點(diǎn)位置[1]。在本兒童防走失系統(tǒng)中,定位分為兩種:父母手持終端上的定位和智能手機(jī)上的定位。
智能手機(jī)上的定位主要依靠手機(jī)內(nèi)部的GPS芯片完成。由于Google開(kāi)發(fā)的Android操作系統(tǒng)完全開(kāi)源,可以獲得其所有API函數(shù),通過(guò)調(diào)用API函數(shù)并編寫(xiě)相關(guān)代碼,可以啟動(dòng)手機(jī)的GPS硬件,獲得基于位置的服務(wù)。這些服務(wù)當(dāng)中包括查詢手機(jī)內(nèi)部存儲(chǔ)的最新位置信息、獲得當(dāng)前位置以及更新當(dāng)前位置信息等。在本文編寫(xiě)的程序當(dāng)中,使用到了查詢手機(jī)內(nèi)部存儲(chǔ)的最新位置信息和更新當(dāng)前位置信息等功能,部分程序代碼如下:
LocationManager locationManager = (LocationManager)getSystemService(context);
Location location = locationManager.getLastKnownLocation(provider);
updateWithNewLocation(location);
其中LocationManager locationManager=(LocationManager)getSystemService(context)用來(lái)添加實(shí)例變量來(lái)存儲(chǔ)對(duì)LocationManager的引用,啟動(dòng)手機(jī)基于位置的服務(wù),基于位置的服務(wù)的目的是確定設(shè)備的物理位置;Location location=locationManager.getLastKnownLocation(provider)語(yǔ)句通過(guò)對(duì)實(shí)例變量locationManager的引用獲得手機(jī)內(nèi)部最新的GPS數(shù)據(jù),并存儲(chǔ)在location變量中;最后一條語(yǔ)句updateWithNewLocation(location)用來(lái)對(duì)手機(jī)內(nèi)部存儲(chǔ)的GPS數(shù)據(jù)信息進(jìn)行更新,以獲得最新的位置信息。
在兒童和父母端的手持監(jiān)護(hù)終端上分別內(nèi)置了一個(gè)GPS信號(hào)接收機(jī)。由于GPS衛(wèi)星發(fā)送的導(dǎo)航定位信號(hào)是一種可供無(wú)數(shù)用戶共享的信息資源,對(duì)于陸地、 海洋和空間的廣大用戶,只要擁有能夠接收、跟蹤、變換和測(cè)量GPS信號(hào)的接收設(shè)備(即GPS信號(hào)接收機(jī)),就能夠獲取當(dāng)前的位置信息。利用GPS信號(hào)接收機(jī)將接收到的GPS信號(hào)轉(zhuǎn)化為GPS經(jīng)緯度數(shù)據(jù),并以TTL電平格式輸出,然后由單片機(jī)I/O口對(duì)其進(jìn)行讀取并進(jìn)行進(jìn)一步的處理。GPS模塊的電源引腳連接到單片機(jī)的VCC與GND引腳上,用以給GPS模塊進(jìn)行供電;GPS模塊的通信引腳連接到單片機(jī)的40與41引腳上,也就是單片機(jī)的異步串行接口RXD0、TXD0,GPS模塊通過(guò)這兩個(gè)引腳進(jìn)行數(shù)據(jù)的收發(fā),電平傳輸格式為T(mén)TL電平格式。
當(dāng)系統(tǒng)獲得子機(jī)與母機(jī)的GPS數(shù)據(jù)后,通過(guò)一系列算法求得子機(jī)與母機(jī)之間的實(shí)際距離與方位角。具體算法是:由于地球表面無(wú)比巨大,將地表看作是一個(gè)平面,將地球的經(jīng)度當(dāng)做這個(gè)平面的Y坐標(biāo),將緯度看做是X坐標(biāo)。當(dāng)獲得了子機(jī)與母機(jī)的經(jīng)緯度數(shù)據(jù)時(shí),實(shí)際上就獲得了它們的橫縱坐標(biāo),通過(guò)勾股定理計(jì)算距離,通過(guò)三角函數(shù)關(guān)系計(jì)算方位角。為求出兩點(diǎn)之間的實(shí)際距離與相對(duì)角度,首先需要求出其中一點(diǎn)相對(duì)于另外一點(diǎn)在經(jīng)度方向上和緯度方向上的距離,也就是兩條直角邊的長(zhǎng)度。而這兩條直角邊的長(zhǎng)度可以通過(guò)兩點(diǎn)之間的經(jīng)度差和緯度差分別乘以兩點(diǎn)相對(duì)于地球軸心和地球球心半徑來(lái)獲得,當(dāng)獲得了兩條直角邊的長(zhǎng)度后,兩點(diǎn)之間的實(shí)際距離也就是斜邊的長(zhǎng)度。具體的計(jì)算過(guò)程如下:
其中,α1、α2、β1和β2分別是兩點(diǎn)的緯度值和經(jīng)度值,α為兩點(diǎn)的平均緯度值,OA、R分別為兩點(diǎn)到地球軸心和球心的半徑,AC、BC為兩點(diǎn)在經(jīng)度方向和緯度方向上的距離。
2.2 數(shù)據(jù)傳輸
子機(jī)與母機(jī)之間的通信可以通過(guò)兩種模式進(jìn)行,分別是GSM短信息傳輸模式與無(wú)線信號(hào)傳輸模式。相應(yīng)地,為了與母機(jī)完成通信,在子機(jī)上分別使用了SIM300C GPRS帶協(xié)議模塊與APC240無(wú)線模塊。
在父母端的智能手機(jī)上開(kāi)發(fā)了一個(gè)兒童防走失系統(tǒng)配套軟件,當(dāng)父母使用手機(jī)查詢孩子的位置時(shí),將會(huì)發(fā)送一條含查詢指令的短信到子機(jī),子機(jī)上的SIM300C模塊接收到短信后會(huì)向單片機(jī)發(fā)送一條指令,單片機(jī)接收到指令后會(huì)對(duì)短信進(jìn)行讀取,然后根據(jù)短信內(nèi)容作出相應(yīng)動(dòng)作。短信發(fā)送程序代碼如下:
SmsManager smsManager=SmsManager.getDefault();
smsManager.sendTextMessage(mobile,null,content,null,null);
其中SmsManager smsManager=SmsManager.getDefault()用來(lái)添加一個(gè)實(shí)例變量來(lái)存儲(chǔ)對(duì)SmsManager的引用,啟動(dòng)手機(jī)基于短信功能的服務(wù);smsManager.sendTextMessage
(mobile,null,content,null,null)語(yǔ)句引用SmsManager下的發(fā)送短信功能來(lái)發(fā)送指令,其中括號(hào)內(nèi)第一個(gè)參數(shù)為要發(fā)送到手機(jī)的電話號(hào)碼,第三個(gè)參數(shù)為發(fā)送的具體內(nèi)容。
兒童手持終端中GSM通信部分電路圖如圖2所示。其中左半部分為通信指示燈部分,右半部分為SIM300C模塊與SIM卡的引腳定義。
當(dāng)父母使用手持終端機(jī)時(shí),將通過(guò)普通無(wú)線通信的方式進(jìn)行數(shù)據(jù)傳輸。首先由單片機(jī)讀取所需的各種信息,包括GPS數(shù)據(jù)信息與指令信息等,再通過(guò)其I/O口將數(shù)據(jù)信息傳遞給無(wú)線模塊,由無(wú)線模塊進(jìn)行數(shù)據(jù)傳輸。圖3所示為兒童端電路板上的無(wú)線發(fā)射部分電路圖(左側(cè)僅畫(huà)出發(fā)送部分電路使能圖,接收部分未畫(huà)出)。由于整個(gè)板子上共有三處需要使用到串行接口,分別是無(wú)線通信部分、GSM通信部分和GPS數(shù)據(jù)收發(fā)部分,而ATMEGA64單片機(jī)只有兩個(gè)串行接口,所以將RXD1與TXD1作為了復(fù)用串口,通過(guò)使能端EN_A或EN_B來(lái)選擇使用無(wú)線通信或是GSM通信。
2.3 父母端手機(jī)軟件開(kāi)發(fā)
正如之前所說(shuō),在父母端的智能手機(jī)上開(kāi)發(fā)了一個(gè)兒童防走失系統(tǒng)配套軟件。父母可以將采用Android操作系統(tǒng)的手機(jī)與子機(jī)配套使用。Android是一個(gè)開(kāi)源的軟件棧,它包含了操作系統(tǒng)、中間件和關(guān)鍵的應(yīng)用程序,以及一組用于編寫(xiě)移動(dòng)應(yīng)用程序的API庫(kù)。Android通過(guò)提供一個(gè)以開(kāi)源的Linux內(nèi)核為基礎(chǔ)而構(gòu)建的開(kāi)放的開(kāi)發(fā)環(huán)境。通過(guò)一系列API庫(kù),所有應(yīng)用程序都可以對(duì)硬件進(jìn)行訪問(wèn),并且可以在嚴(yán)格受控的條件下完全支持應(yīng)用程序之間的交互[2]。
當(dāng)父母使用智能手機(jī)與子機(jī)通信時(shí),將會(huì)通過(guò)GSM短信息的方式與子機(jī)進(jìn)行數(shù)據(jù)傳輸。利用手機(jī)內(nèi)置的GPS芯片獲取自身的GPS數(shù)據(jù),通過(guò)處理子機(jī)傳送過(guò)來(lái)的GPS數(shù)據(jù)與自身的GPS數(shù)據(jù)來(lái)判斷孩子是否處于安全范圍以內(nèi)并顯示兩者之間的相對(duì)位置關(guān)系,或是采用Google地圖的形式來(lái)顯示兩者的具體位置。
手機(jī)軟件部分的主要功能有:(1)主動(dòng)查詢孩子當(dāng)前位置;(2)距離可控定時(shí)查詢報(bào)警;(3)圖形顯示孩子當(dāng)前位置;(4)修改默認(rèn)號(hào)碼等。使用時(shí),首先進(jìn)入主界面,在主界面上可以完成設(shè)置默認(rèn)號(hào)碼、查詢子機(jī)位置、設(shè)置自動(dòng)報(bào)警參數(shù)等功能。其中,默認(rèn)號(hào)碼一旦設(shè)定成功,以后每次開(kāi)機(jī)或是打開(kāi)軟件將不必重新設(shè)定目標(biāo)電話號(hào)碼;自動(dòng)報(bào)警模式設(shè)置成功后手機(jī)將會(huì)自動(dòng)每隔一段時(shí)間查詢一次子機(jī)位置,并根據(jù)設(shè)定好的安全距離判斷孩子是否在安全范圍以內(nèi);當(dāng)點(diǎn)擊查詢按鍵時(shí),首現(xiàn)出現(xiàn)的將會(huì)是十字坐標(biāo)形式的顯示模式,顯示兒童相對(duì)于自己當(dāng)前的位置,同時(shí)可點(diǎn)擊切換Google地圖按鍵,切換到Google地圖顯示模式,顯示具體街道信息。并顯示具體距離和相對(duì)方位,手機(jī)部分具體的功能流程圖如圖4所示。
正如之前剛剛提到的,兒童的位置信息有兩種顯示方式,分別是十字坐標(biāo)顯示和Google地圖顯示。在十字坐標(biāo)顯示中,以父母的位置為原點(diǎn)建立十字坐標(biāo)系,將孩子對(duì)父母的相對(duì)位置標(biāo)注在坐標(biāo)系上,同時(shí)用文字標(biāo)注出孩子相對(duì)于父母的方位角與實(shí)際距離,方便父母尋找孩子;而在Google地圖顯示當(dāng)中,首先在屏幕中添加一個(gè).MapView控件,用以調(diào)用Google地圖,然后在地圖上加一透明的覆蓋層,將手機(jī)本身和子機(jī)的經(jīng)緯度數(shù)據(jù)傳入地圖,在實(shí)際的位置上標(biāo)注出孩子與父母的位置,幫助父母更直觀地了解到孩子的位置。
正如之前所列出的一樣,兩種圖形顯示各有其優(yōu)缺點(diǎn):十字坐標(biāo)顯示響應(yīng)快速直觀,能夠在第一時(shí)間指明孩子方位,而Google地圖的顯示需要更大的數(shù)據(jù)量,所以在響應(yīng)速度方面會(huì)有一些滯后;但是Google地圖顯示能夠告知父母孩子的準(zhǔn)確位置,這是坐標(biāo)顯示所無(wú)法相比的。
3 實(shí)驗(yàn)結(jié)果及分析
實(shí)際測(cè)量時(shí)有很多因素都會(huì)影響到GPS的準(zhǔn)確率,以下列舉一些引入GPS誤差的因素:(1)衛(wèi)星時(shí)鐘誤差:0~1.5 m;(2)衛(wèi)星軌道誤差:1~5 m;(3)電離層引入的誤差:0~30 m;(4)大氣層引入的誤差:0~30 m;(5)接收機(jī)本身的噪音:0~10 m;(6)多路反射:0~1 m。
理論分析GPS定位誤差最大約為28 m。
實(shí)際情況下,在某一點(diǎn)做長(zhǎng)時(shí)間連續(xù)測(cè)量記錄,并分析在同一點(diǎn)上經(jīng)緯度數(shù)據(jù)的變化量,如表1所示。
選取上述數(shù)據(jù)的兩個(gè)極限值,然后由兩點(diǎn)經(jīng)緯度計(jì)算出兩點(diǎn)距離,計(jì)算結(jié)果如表2所示。
由表2可以看出,在某一點(diǎn)做長(zhǎng)時(shí)間測(cè)量,其誤差的最大值為8.5 m,遠(yuǎn)小于上述總定位誤差28 m,而且實(shí)際測(cè)量值應(yīng)該落在以實(shí)際測(cè)量點(diǎn)為圓心,以8.5 m為半徑的圓內(nèi),所以GPS的定位誤差是可以接受的。
經(jīng)過(guò)大量試驗(yàn)驗(yàn)證,系統(tǒng)的各項(xiàng)功能均滿足設(shè)計(jì)要求,系統(tǒng)整體性能穩(wěn)定。但與此同時(shí),系統(tǒng)在GPS定位精度、外觀等方面還存在不足,有待于進(jìn)一步提高。
基于單片機(jī)控制的多功能兒童防走失系統(tǒng)的大部分操作屬于被動(dòng)操作,便于兒童使用;另外系統(tǒng)通過(guò)GPS信號(hào)進(jìn)行處理,不但能夠判斷距離的遠(yuǎn)近,同時(shí)還可以指出具體的方向,且系統(tǒng)誤差小于8 m;同時(shí),雙模式的工作方式使得系統(tǒng)適合多樣的場(chǎng)合,適應(yīng)性更強(qiáng),有很好的市場(chǎng)推廣價(jià)值。
參考文獻(xiàn)
[1] 李天文.GPS原理及應(yīng)用[M].北京:科學(xué)出版社,2010.
[2] MEIER R.Android高級(jí)編程[M].北京:清華大學(xué)出版社,2010.