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