摘 要: 鑒于傳統(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ù)并編寫相關(guān)代碼,,可以啟動(dòng)手機(jī)的GPS硬件,,獲得基于位置的服務(wù)。這些服務(wù)當(dāng)中包括查詢手機(jī)內(nèi)部存儲(chǔ)的最新位置信息,、獲得當(dāng)前位置以及更新當(dāng)前位置信息等,。在本文編寫的程序當(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ā),電平傳輸格式為TTL電平格式,。
當(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è)僅畫出發(fā)送部分電路使能圖,接收部分未畫出),。由于整個(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)用程序,以及一組用于編寫移動(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.