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