国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Linux+ARM的GPS模塊設(shè)計(jì)

2016-05-30 15:02:34周小仨
軟件工程 2016年3期
關(guān)鍵詞:嵌入式

摘 要:隨著移動(dòng)終端的普及,嵌入式Linux系統(tǒng)越來(lái)越得到廣泛的應(yīng)用,同時(shí)作為定位領(lǐng)域最為常用的GPS信號(hào),也需要逐步應(yīng)用到基于Linux的移動(dòng)便攜終端中來(lái),使得各種移動(dòng)終端的位置信息更加可靠,同時(shí)使得各設(shè)備之間互聯(lián)及數(shù)據(jù)傳輸變得高效和方便,本文旨在設(shè)計(jì)一款基于Linux+ARM的GPS通信模塊。

關(guān)鍵詞:嵌入式;Linux;GPS;ARM

中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A

Abstract:With the popularity of mobile terminal,embedded Linux system,more and more widely used,at the same time as the location of most commonly used GPS signal,also need to gradually applied to Linux mobile portable terminal based on,makes a variety of mobile terminal location information more reliable,at the same time between each equipment interconnection and data transmission more efficient and convenient.The aim of this paper is to design a GPS communication module based on Linux+arm is being paid.

Keywords:embedded;Linux;GPS;ARM

1 引言(Introduction)

何謂GPS呢,就是全球定位系統(tǒng),英文為Global Positioning System。換言之,是一個(gè)由覆蓋全地球的24顆衛(wèi)星組成的衛(wèi)星定位系統(tǒng)。此項(xiàng)技術(shù)可作為航空器、船只、汽車和人的定位和導(dǎo)向,能夠較為安全和準(zhǔn)確地沿著既定的路線,準(zhǔn)確的到達(dá)所需目的地。美國(guó)主導(dǎo)的全球定位系統(tǒng)簡(jiǎn)稱GPS,是20世紀(jì)70年代末期美軍三軍聯(lián)合研制的醫(yī)用衛(wèi)星來(lái)進(jìn)行導(dǎo)航和定位的系統(tǒng)。它研制的主要目的是為三軍的三個(gè)大的領(lǐng)域提供全球性、長(zhǎng)時(shí)間的和實(shí)時(shí)的導(dǎo)航和定位信號(hào),還可用于軍事情報(bào)的收集、核爆炸的監(jiān)測(cè)和應(yīng)急通訊等,是美國(guó)控制全球戰(zhàn)略的重要組成部分之一。歷經(jīng)30多年的發(fā)展和壯大,消耗資金超過(guò)400億美金,至今其全球覆蓋率已經(jīng)達(dá)到99%的二十余顆GPS衛(wèi)星都已經(jīng)全部布置完成。上述GPS全球衛(wèi)星定位系統(tǒng)主要由以下幾大部分構(gòu)成,它們是空間部分,即GPS星座,地面控制部分,即地面監(jiān)控系統(tǒng),用戶終端接收設(shè)備部分,即GPS信號(hào)接收器[1]。

2 定位系統(tǒng)的構(gòu)成(Composition of positioning system)

2.1 定位系統(tǒng)的三大構(gòu)成部分

地球周邊太空空間部分,定位系統(tǒng)需要21顆工作衛(wèi)星組成,后備的衛(wèi)星為三顆。地球上的后臺(tái)支撐系統(tǒng),主要有一個(gè)主控站點(diǎn)、三個(gè)注入站點(diǎn)、五個(gè)監(jiān)測(cè)站點(diǎn)共同組成。終端用戶的信號(hào)接收設(shè)備部分,用來(lái)接收GPS衛(wèi)星所發(fā)射來(lái)的信號(hào),來(lái)獲取所需的導(dǎo)航和定位數(shù)據(jù),經(jīng)過(guò)信號(hào)的分析和處理,從而來(lái)實(shí)現(xiàn)導(dǎo)航和定位的目的。本定位系統(tǒng)的接收機(jī)硬件主要由主控機(jī)、天線和電源部分所構(gòu)成。

2.2 全球定位系統(tǒng)的定位思路

依據(jù)高速運(yùn)動(dòng)的衛(wèi)星瞬時(shí)的位置作為已知的初始數(shù)據(jù),來(lái)達(dá)到定位的目的,利用空間距離后方交會(huì)的方式,從而來(lái)確定待檢測(cè)點(diǎn)的位置數(shù)據(jù)。當(dāng)前定位系統(tǒng)所提供的定位精度是9米以內(nèi),誤差較大,為了提高定位的精度,經(jīng)常利用差分的定位技,在基準(zhǔn)站點(diǎn)之上安放一臺(tái)GPS接收器進(jìn)行檢測(cè)。依據(jù)該基準(zhǔn)站點(diǎn)的精準(zhǔn)坐標(biāo)值,來(lái)計(jì)算出衛(wèi)星到基準(zhǔn)站點(diǎn)的距離誤差修正數(shù)據(jù),然后由基準(zhǔn)站點(diǎn)把此數(shù)據(jù)實(shí)時(shí)發(fā)送至終端用戶。終端接收器進(jìn)行系統(tǒng)定位檢測(cè)的時(shí)候,同時(shí)接收到基準(zhǔn)站點(diǎn)所發(fā)來(lái)的修正數(shù)據(jù),綜合對(duì)定位結(jié)果數(shù)據(jù)進(jìn)行修正,從而來(lái)提高定位精度。差分定位系統(tǒng)主要分兩大類,它們是偽距差分和載波相位差分[2]。偽距差分的思想,該方法是應(yīng)用最為廣泛的差分方式。即在基準(zhǔn)站點(diǎn)之上,檢測(cè)所有衛(wèi)星數(shù)據(jù),依據(jù)基準(zhǔn)站已有的坐標(biāo)數(shù)據(jù)和諸衛(wèi)星的坐標(biāo)數(shù)值,解出每顆衛(wèi)星在每一個(gè)時(shí)刻距離基準(zhǔn)站點(diǎn)的實(shí)際距離值。然后與測(cè)得的偽距離相比較之后,計(jì)算出偽距修正數(shù),把它發(fā)送至用戶終端接收器,以此來(lái)提高定位精度。此差分方式,能得到米級(jí)定位精度,例如,我國(guó)開(kāi)放地區(qū)大量應(yīng)用的信標(biāo)差分。載波相位差分思路,該差分技術(shù)簡(jiǎn)稱RTK,即Real Time Kinematic,是及時(shí)計(jì)算若干個(gè)測(cè)站載波相位觀測(cè)值的差分方式。就是把基準(zhǔn)站點(diǎn)采樣到的數(shù)據(jù)發(fā)送給終端用戶接收器,從而來(lái)求解坐標(biāo)值。此方式能使定位精度達(dá)到厘米級(jí)。其廣泛應(yīng)用在需要高精度定位的領(lǐng)域。此方式經(jīng)歷了十多年的發(fā)展,隨著GPS技術(shù)的不斷改良,該系統(tǒng)的軟件和硬件技術(shù)也在不斷完善,不斷的拓展其應(yīng)用領(lǐng)域,至今已經(jīng)遍及經(jīng)濟(jì)社會(huì)的各個(gè)領(lǐng)域,同時(shí)逐步深入到老百姓的日常生活當(dāng)中。本全球定位系統(tǒng)的強(qiáng)大的作用還會(huì)繼續(xù)方便人們的生活[3]。

3 GR-87模塊介紹(GR-87 module introduction)

該模塊與MCU的接口是普通TTL電平串口,非常方便。另外模塊使用SiRF第二代高效能晶片,大大縮小體積??焖俣ㄎ患白粉?3顆衛(wèi)星的能力。晶片內(nèi)建1920次/頻率硬體,提高接收傳送搜尋衛(wèi)星信號(hào)。GR-87模塊輸出的數(shù)據(jù)格式遵循標(biāo)準(zhǔn)GPS接收機(jī)定位的數(shù)據(jù)格式——“NMEA-0183”數(shù)據(jù)格式。

4 具體實(shí)現(xiàn)步驟(Specific implementation steps)

(1)插上GPS模塊后上電,啟動(dòng)開(kāi)發(fā)平臺(tái)

用普通交叉串口線連接開(kāi)發(fā)平臺(tái)的DBGU串口到PC的串口,用USB電纜連接開(kāi)發(fā)平臺(tái)的USB Slave口到PC,使用網(wǎng)線可以連接開(kāi)發(fā)平臺(tái)的100M網(wǎng)卡到PC的網(wǎng)口。

(2)使用時(shí)要注意GPS模塊串口的波特率

程序所要做的工作是通過(guò)串口從GR-87模塊接收數(shù)據(jù)然后進(jìn)行分析,得到經(jīng)緯度,時(shí)間等信息。部分核心代碼如下:

int main(int argc,char *argv[])

{int i;char huanchong[GPS_RECV_CMD_MAX_BUF];//receive huanchong

char tmp;XINXI xinxi;char Jiaodu[4];

char Fenzhong[8];char Shizhong[4];char Minu[4];

char Miao[4];char Zhuangtaishu[4];int number=0;//open the COM

bsp_init();int recv_count;rs485_open();

printf("test GPS...\r\n");while(1){while(!Is_startGP(fd_rs485));

for(i=0;i<256;i++){read(fd_rs485,&tmp,1);huanchong[i]=tmp; if(tmp=='\n')break;}

if(Is_GGA(huanchong)){xinxi.bIsGPGGA=1;number=6;

for(i=0;i<4;i++) Shizhong[i]=0;

Shizhong[0]=huanchong[number];Shizhong[1]=huanchong[number+1];number += 2;for(i=0;i<4;i++)Minu[i]=0;

Minu[0]=huanchong[number];Minu[1]=huanchong[number+1];number+=2;for(i=0;i<4;i++)Miao[i]=0;

Miao[0]=huanchong[number];Miao[1]=huanchong[number+1];xinxi.shizhong=atoi(Shizhong);

xinxi.min=atoi(Minu);xinxi.sec=atoi(Miao);

xinxi.secFrac=0;xinxi.bjshizhong=xinxi.shizhong+8;

if(xinxi.bjshizhong>24)xinxi.bjshizhong-=24;number=17;

for(i=0;i<4;i++)

Jiaodu[i]=0;Jiaodu[0]=huanchong[number];Jiaodu[1]=

huanchong[number+1];number+=2;for(i=0;i<8;i++)Fenzhong[i]=0;

for(i=0;i<7;i++)Fenzhong[i]=huanchong[number+i];

xinxi.latitude=(atof(Fenzhong))/60.0 + atoi(Jiaodu);

xinxi.latNS=huanchong[27];number=29;

for(i=0;i<4;i++)Jiaodu[i]=0;

Jiaodu[0]=huanchong[number];Jiaodu[1]=huanchong[number+1];Jiaodu[2]=huanchong[number+2];number+=3;for

(i=0;i<8;i++) Fenzhong[i]=0;

for(i=0;i<7;i++)Fenzhong[i]=huanchong[number+i];

xinxi.longitude=(atof(Fenzhong))/60.0+atoi(Jiaodu); xinxi.lgtEW=huanchong[40];number=44;

for(i=0;i<4;i++)Zhuangtaishu[i]=0;Zhuangtaishu[0]=huanchong[number];Zhuangtaishu[1]=huanchong[number+1];xinxi.satellites=atoi(Zhuangtaishu);

printf("UTC Time:%d h%d m%d s\n",xinxi.shizhong,xinxi.min,xinxi.sec);

printf("BJ Time:%d h%d m%d s\n",xinxi.bjshizhong,xinxi.min,xinxi.sec);

printf("Latitude:%c wei %f\n",xinxi.latNS,xinxi.latitude);

printf("Longitude:%c jing %f\n",xinxi.lgtEW,xinxi.longitude);

printf("Satellites:%d\n",xinxi.satellites);printf("\n");

}else continue;sleep(1);}return 0;}

(3)編譯生成目標(biāo)代碼下載至目標(biāo)板然后運(yùn)行調(diào)試

直接使用arm-linux-gcc命令進(jìn)行編譯,也可先編好Makefile文件,然后用make命令編譯。我們采用后一種方法,較規(guī)范。

(4)運(yùn)行之前先進(jìn)行如下操作

①cd dev;②mkdir tts;③ln–s/dev/tq2440_serial1/dev/tts/1然后運(yùn)行目標(biāo)程序,調(diào)試發(fā)送和接受數(shù)據(jù)。

5 結(jié)論(Conclusion)

本文是作者在多年從事Linux和嵌入式ARM開(kāi)發(fā)的實(shí)踐過(guò)程中,就基于Linux+ARM的GPS模塊的開(kāi)發(fā)所得到的一點(diǎn)心得體會(huì),希望對(duì)讀者有所幫助,由于本人能力有限,技術(shù)細(xì)節(jié)不夠完善,尚未實(shí)現(xiàn)多GPS模塊的多點(diǎn)通訊,沒(méi)能把GPS模塊驅(qū)動(dòng)程序加載至Linux內(nèi)核中開(kāi)機(jī)自動(dòng)運(yùn)行,不足之處,希望讀者朋友多多的指正。

參考文獻(xiàn)(References)

[1] 田世君.高靈敏度GPS定位及組合導(dǎo)航技術(shù)研究[D].電子科技大學(xué),2009.

[2] 唐康華.GPS/MIMU嵌入式組合導(dǎo)航關(guān)鍵技術(shù)研究[D].國(guó)防科學(xué)技術(shù)大學(xué),2008.

[3] 公磊.基于Android的GPS測(cè)量系統(tǒng)開(kāi)發(fā)[D].南昌大學(xué),2008.

作者簡(jiǎn)介:

周小仨(1980-),男,碩士,講師.研究領(lǐng)域:嵌入式,EDA,單片機(jī)技術(shù)開(kāi)發(fā).

猜你喜歡
嵌入式
搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
Altera加入嵌入式視覺(jué)聯(lián)盟
倍福 CX8091嵌入式控制器
同江市| 利川市| 沿河| 邵阳县| 城口县| 疏勒县| 临朐县| 浦北县| 牡丹江市| 黄大仙区| 新蔡县| 巴东县| 莱芜市| 桓台县| 芦溪县| 清水河县| 攀枝花市| 航空| 黄骅市| 特克斯县| 平凉市| 思南县| 宣恩县| 阜平县| 嵩明县| 乾安县| 延川县| 张家港市| 格尔木市| 修武县| 富平县| 阜城县| 德惠市| 阜宁县| 建宁县| 潍坊市| 赫章县| 屏山县| 瑞昌市| 克拉玛依市| 教育|