時光,馬維華,魏金文
(南京航空航天大學 計算機科學與技術學院,南京210016)
隨著社會的發(fā)展,我國人口老齡化越來越嚴重,對于老人的監(jiān)護成了一個社會問題。本文根據老人監(jiān)護的需求特點[1],利用我國自主研發(fā)的北斗衛(wèi)星定位系統(tǒng),結合北斗定位模塊BDM100設計了兩種針對不同需求的家庭監(jiān)護終端方案,用于對老人進行實時定位,并將實時位置信息傳輸到監(jiān)管人手中。第一種方案采用支持3G網絡的EVDO模塊MC8630,結合以ARM9為內核的AT 91SAM9260芯片進行位置信息回傳。該方案具有傳輸迅速、可擴展性強的特點,可以為以后傳遞身體信息、環(huán)境信息提供擴展空間。第二種方案采用支持2G網絡的GSM模塊GTM900,結合以Cortex-M3為內核的LPC1766芯片進行定位信息傳送,該方案結合良好的軟件設計,具有成本低、性能穩(wěn)定的特性。經過實驗檢測,這兩種方案都能很好地解決家庭監(jiān)護中老人的實時定位問題。
BDM100模塊是一款雙系統(tǒng)高性能的GNSS模塊,能夠同時支持BD2 B1、GPS L1兩個頻點,很好適應低成本、低功耗領域,可以進行大規(guī)模的北斗系統(tǒng)集成應用。模塊的結構框圖如圖1所示[2]。
圖1 BDM100模塊結構框圖
從圖1中可以看到,BDM100支持 UART、SPI、1PPS、I2C總線等多種接口。其可以通過相關器、FFT和匹配濾波器混合應用以及算法優(yōu)化,在各種復雜環(huán)境下保持出色的捕捉跟蹤能力和快速TTFF功能。采用多路徑抑制技術和高質量的原始觀測數據,可以保證很高的授時、導航精度。BDM100芯片可以采用多系統(tǒng)混合定位的方式,這樣可以提高定位精準度,因為本文采用北斗定位系統(tǒng),所以只選取其北斗定位功能。另外,BDM100芯片有3個串口,用戶可以自行設置其波特率,默認波特率是9 600,并且可以通過串口3進行固件升級。該模塊的定位精度可達到3 m,測速精度可以達到0.1 m/s。本系統(tǒng)采用的外圍應用電路如圖2所示。
圖2 BDM100模塊外圍電路
本系統(tǒng)的兩個方案均使用串口1與MCU通信,串口3預留出接口以便日后升級。特別注意:模塊正常啟動時,在復位信號有效期內,保持串口3輸入引腳電平恒定為高,否則模塊將進入升級固件模式,無法正常啟動。模塊復位信號低電平有效,且持續(xù)時間不得小于2 mm。該模塊配備的天線必須為+2.85 V有源天線,天線連接至模塊的GNSS_ANT引腳,有源天線內部集成LNA(低噪聲放大器),可以直接連接到模塊GNSS_ANT引腳;若采用非+2.85 V的有源天線,則需要為天線供電。
BDM100模塊在其采用的軟件接口協(xié)議中,主要通過消息的傳遞來完成信息的傳送,其中“消息”是全ASCII碼組成的字符串。消息的基本格式如表1所列。
表1 BDM100模塊消息格式
其中所有的消息都以$(0x24)開始,后面緊跟消息名,之后跟有不定數目的參數或數據。消息名與數據之間均以逗號(0x2C)進行分隔。表示輸入的消息可以以“\r”(0x0D)或“\n”(0x0A)或兩者的任意組合結束,而表示輸出的消息則全部以“\r\n”組合結束。消息名和參數中的字母均不區(qū)分大小寫。
BDM100模塊在使用之前需要進行初始化,初始化過程就是模塊和主控芯片之間進行消息交互的過程。BDM100模塊具有授時和定位功能,本系統(tǒng)只用到其定位功能。
系統(tǒng)需要用到的初始化指令略——編者注。
以3G方案設計的監(jiān)護終端,采用ARM926EJ-S為內核的AT91SAM9260芯片作為主控芯片。該芯片具有性能穩(wěn)定,外圍接口豐富,內嵌以太網,具備快速RAM和ROM,支持Linux操作系統(tǒng)的特性。消息回傳的3G芯片采用EVDO模塊 MC8630,3G服務要求網絡具有較高的數據吞吐量,EVDO模塊支持中國電信CDMA2000提供的所有數據分組業(yè)務;對于無線數據接入業(yè)務,EVDO的接入速度已經接近有限ADSL上網的水平,而且采用此種方式,數據傳輸穩(wěn)定,為以后的性能擴展留下空間,滿足方案設計要求。
3G方案硬件連接框圖如圖3所示。
圖3 3G方案框圖
BDM100模塊和主控芯片AT91SAM9260通過UART接口連接,而3G芯片MC8630通過USB口與主控芯片連接,這樣在保證接收與發(fā)送穩(wěn)定性的同時,還可以為以后的功能擴展提供空間。BDM100模塊和主控芯片的具體連接電路見圖2,3G模塊和主控芯片的連接如圖4所示。
圖4 3G模塊和主控芯片連接圖
在主控芯片AT91SAM9260上使用Linux作為操作系統(tǒng)。該操作系統(tǒng)已經在眾多嵌入式設備中使用,其穩(wěn)定性已經得到了驗證[3]。
2.2.1 BDM100模塊的連接
BDM100模塊采用UART串口和主控芯片通信,在Linux中配置完內核之后,利用串口通信接口進行初始化和定位信息的傳送。具體的串口通信函數略——編者注。
2.2.2 MC8630模塊的連接
本方案所用到EVDO射頻模塊,起初是無法被識別的,因為Linux默認配置中并沒有打開這個選項,屬于自定義電路,故需要手動配置。根據MC8630模塊的電路圖可以看出,CPU與MC8630通過USB口通信,因此需要將處理器的USB口配置為3G功能。Linux對3G模塊的驅動支持主要是將USB轉換為串口,應用程序就可以像操作串口一樣操作USB。所以除了打開“USB driver for GSM and CDMA modems”內核選項之外,還需打開內核選項中USB功能和USB轉串口轉換支持。3G模塊還會用到第三方的撥號軟件,故還需打開PPP撥號功能,配置完之后,編譯內核。燒錄系統(tǒng)后,重啟進入/dev目錄。若出現USBtty0~USBtty3這4個設備文件,表明3G模塊的驅動已被正確加載,如圖5所示。
圖5 3G模塊驅動加載
在程序初始化時,利用編寫好的撥號腳本綁定PPP0網卡,這樣程序就可以像操作本地網卡一樣操作3G模塊,使用Socket機制進行消息的傳送。具體的撥號腳本等內容略——編者注。
2.2.3 服務器與3G模塊通信協(xié)議
主控芯片AT91SAM9260收到BDM100模塊發(fā)來的消息后,會將消息進行重組,通過3G模塊傳送到后臺進行解析。因為系統(tǒng)的定位終端具有實時性,對于年月日信息的需求不是很強調,所以在初始化北斗時接收了GLL信息,它只含有時分秒的信息。本方案中采用的消息通信協(xié)議規(guī)定如表2所列。
表2 自定義通信協(xié)議
其中起始位和校驗位均用unsigned short表示。校驗采用每兩個字節(jié)異或操作,編譯時,強迫兩個字節(jié)對齊編譯。
3G模塊采用這種格式將消息傳輸到后臺服務器進行處理,這樣有利于保持信息的穩(wěn)定和簡潔性。
2G方案設計的監(jiān)護終端采用基于Cortex-M3為內核的LPC1766作為主控芯片,2G模塊采用支持GSM網絡的GTM900芯片[4]。該方案采用的2G網絡技術成熟穩(wěn)定,速度也能滿足信息傳輸要求,配合健壯的軟件設計,使得其在具體的應用中取得良好的效果。
具體的硬件連接如圖6所示。
圖6 2G方案框圖
BDM100芯片和GTM900芯片分別通過串口1和串口0與主控芯片LPC1766進行連接。其中GTM900與LPC1766的連接只需要將TXD引腳連接到RXD0,RXD連接到TXD0,然后將兩個芯片的GND各自接地即可。而對應BDM100和LPC1766的連接則直接根據圖2所示即可。
在2G方案的軟件設計中,由于不采用操作系統(tǒng),可直接根據LPC1766和其他兩個芯片的說明手冊進行裸板程序的設計。首先是要對BDM100芯片和GTM900芯片進行初始化操作,此處GTM900芯片的初始化操作要在BDM100芯片之前。因為BDM100初始化之后就直接輸出位置信息GLL,而在本方案的程序設計中,只設置了一個接收串口數據的全局數組變量Rec UartBuf[100]。如果先初始化BDM100芯片,則GLL信息會和GTM900初始化信息沖突。另外,在UART接收程序中,因為每次接收的數據長度不固定,所以不能設置為多字節(jié)中斷。在本方案中將程序設置為1字節(jié)中斷,并設置定時器中斷,用來判定數據是否傳送完畢。在之前的BDM100芯片介紹中,將位置信息GLL的頻率設置為1次/s,則在本方案中將定時器中斷設置為0.5 s。這樣就可以有足夠的時間接收并傳遞信息,在定時器中斷函數中將信息標志變量Rec Uart Flag設置為1,表示有數據進入,此時利用Uart0Sent函數將傳遞過來的GLL信息通過2G模塊發(fā)送到后臺服務器[5]。
在本方案中,因為保證程序健壯性的需要,GLL位置定位消息傳送到后臺服務器的格式是不經過重組的原始信息,對于信息的重組和解析任務則交予后臺服務器程序處理。
監(jiān)護終端的數據通過3G或者2G網絡傳送到服務器之后,服務器根據通信協(xié)議對其解析。得到數據后,服務器進行如下操作:
①校驗數據是否有錯,有錯則丟棄,并要求終端重新獲取一次信息并立即傳輸。
②根據數據中的值重組還原,得到經緯度及當前的時間(格式為:XX時XX分XX秒)。
③根據經緯度信息,調用地圖服務,獲取具體位置。
下面介紹3G方案測試:
通過串口軟件獲得的北斗定位信息如圖7所示。
圖7 串口軟件顯示北斗信息
其中顯示北緯32度02438675分,東經118度48951303分,后面的090528等表示UTC時間。為了統(tǒng)一格式,將MM度XX分格式轉化為MM.NN分(1度等于60分),故118度48951303分相當于118.81585505度,32度02438675分相當于32.04064458度。而其中UTC時間相當于0時區(qū)的時間,對應北京時間為東八區(qū)的時間,所以要加上8小時才是標準的北京時間,查找BDM100軟件接口協(xié)議可得GLL消息顯示的UTC時間格式為XX時XX分XX秒,例如090528,對應的UTC時間為9時5分28秒,對應的北京時間為17時5分28秒。
后臺服務器程序顯示消息及2G方案測試略——編者注。
為了驗證定位的準確性,打開地球在線(http://www.earthol.com/),輸入當前的經緯度信息,查看定位情況。
如圖8所示,北斗定位的位置為A12號樓,而筆者所在的位置為圖中箭頭所指的A10號樓,誤差在30 m左右。由于免費版本的Google地圖其官方宣稱誤差在50 m以內,所以本次試驗的誤差在合理范圍內,表明基于北斗BDM100模塊的定位終端運行成功。
圖8 北斗信息定位測試
北斗衛(wèi)星定位系統(tǒng),作為我國自主研制的全球衛(wèi)星定位系統(tǒng),在滿足軍事用途的同時,也在不斷地加緊民用化進程。本文設計了兩種方案解決家庭監(jiān)護中位置定位的問題,其中3G方案不僅可以傳輸位置信息,也為以后傳輸各種身體信息、環(huán)境信息提供了接口和可擴展的空間。2G方案的優(yōu)點在于其性能穩(wěn)定、成本較低,對應具有單一需求的用戶會是一個很好的選擇。這兩種方案設計合理,性能穩(wěn)定,對其他工程設計具有一定參考價值。
編者注:本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。
[1]唐明霞,王秋光.獨居老人無線監(jiān)護系統(tǒng)用戶端的設計[J].哈爾濱理工大學學報,2007,11(6):49-52.
[2]北京北斗星通導航技術股份有限公司.BDM100軟件接口協(xié)議[EB/OL].[2012-12].http://www.navchina.com.
[3]魏金文.新一代列車運行監(jiān)控系統(tǒng)的研究與應用[D].南京:南京航空航天大學,2014.
[4]華為技術有限公司.GTM900無線模塊AT命令手冊[EB/OL].(2007-07)[2014-05].http://www.huawei.com.
[5]時光,馬維華.一種Android端智能家居遠程控制方案的實現[J].單片機與嵌入式系統(tǒng)應用,2014,14(2):12-15.