天天看点

安信可A7模块GPS数据解析与开发板模块连接 主机操作系统:Centos 6.7  交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询) 开发板平台: fl2440  Linux内核版本: linux-3.0 .54

==========================================================================

主机操作系统:Centos 6.7 

交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询)

开发板平台: fl2440 

Linux内核版本: linux-3.0 .54

模块:安信可A7模块 ========================================================================== 1.安信可A7模块接线与开启GPS      首先按照我们之前测试GPRS连线连上模块,波特率为115200.发送AT指令测试是否能用有返回。接着用命令AT+GPS=1打开GPS,返回OK即打开。打开 GPS/AGPS 后,默认 NEMA 信息从 GPS_TXD 管脚以 9600 的波特率输出,如果要让 NEMA 从 AT 串口输出,可以使用 AT+GPSRD。我这里使用AT+GPSRD=3表示每隔3秒输出信息。模块一上电一两分钟后就能正确采集到gps数据了。采集到数据后,关闭串口,把A7模块的接线的TXD线接到模块的GPS数据TXD上,并把波特率设置为9600,打开串口后,可以看到GPS数据每隔1s输出。测试结果如下图所示。

安信可A7模块GPS数据解析与开发板模块连接 主机操作系统:Centos 6.7  交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询) 开发板平台: fl2440  Linux内核版本: linux-3.0 .54
安信可A7模块GPS数据解析与开发板模块连接 主机操作系统:Centos 6.7  交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询) 开发板平台: fl2440  Linux内核版本: linux-3.0 .54

2.GPS数据解析 2.1GPS协议NMEA-0183简介 NMEA 0183是美国国家海洋电子协会(National Marine ElectronicsAssociation)为海用电子设备制定的标准格 式。目前业已成了GPS导航设备统一的RTCM(Radio Technical Commission for Maritimeservices)标准协议.     GPS接收机上电后,会自动通过串口或USB口发送NMEA0183格式的数据包,它是一组包含有各种地理位置信息的字符串,字符串格式为: $信息类型,xxx,xxx,xxx,xxx,xxx,xxx,xxx, 每行开头的字符都是‘$’,接着是信息类型,后面是数据,以逗号分隔开。 信息类型为: GPGSV:可见卫星信息 GPGLL:地理定位信息 GPRMC:推荐最小定位信息 GPVTG:地面速度信息 GPGGA:GPS定位信息 GPGSA:当前卫星信息

这里我们只解析GPRMC的信息,$GPRMC语句的格式如下: $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh< CR>< LF>

一行完整的数据:
$GPRMC,060916.000,A,3029.65900,N,11423.63928,E,0.00,0.00,120617,,,A*64
           

字段0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐最小定位信息 字段1:UTC时间,hhmmss.sss格式【6:09:16】 字段2:状态,A=定位,V=未定位【定位】 字段3:纬度ddmm.mmmm,度分格式(前导位数不足则补0)【3029.65900】 字段4:纬度N(北纬)或S(南纬)【北纬】 字段5:经度dddmm.mmmm,度分格式(前导位数不足则补0)【11423.63928】 字段6:经度E(东经)或W(西经)【东经】 字段7:速度,节,Knots【0.00节】 字段8:方位角,度【0.00】 字段9:UTC日期,DDMMYY格式【120617】 字段10:磁偏角,(000 - 180)度(前导位数不足则补0)【空】 字段11:磁偏角方向,E=东W=西【空】 字段12:模式,A=自动,D=差分,E=估测,N=数据无效(3.0协议内容)【自动】 字段13:校验值【校验值为6F】 解析内容: (1)     时间,这个是格林威治时间,是世界时间(UTC),我们需要把它转换成北京时间(BTC),BTC和UTC差了8个小时,要在这个时间基础上加8个小时。 (2)     定位状态,在接收到有效数据前,这个位是‘V’,后面的数据都为空,接到有效数据后,这个位是‘A’,后面才开始有数据。 (3)     纬度,我们需要把它转换成度分秒的格式,计算方法: 如接收到的纬度是:3029.65900 3029.65900 / 100  =  30.2965900   可以直接读出30度 3029.65900-30 * 100 = 29.65900   可以直接读出29分 29.65900-29 = 0.65900 * 60 = 39.54  读出39秒 所以纬度为:30度29分39秒。 同理经度为:114度23分38分 (4)  南北纬,这个位有两种值‘N’(北纬)和‘S’(南纬) (5)  经度的计算方法和纬度的计算方法一样 (6)  东西经,这个位有两种值‘E’(东经)和‘W’(西经) (7)   速率,这个速率值是 海里/时,单位是节,要把它转换成千米/时,根据:1海里 = 1.85公里,把得到的速率乘以1.85。 (8)   航向,指的是偏离正北的角度 (9)   日期,这个日期是准确的,不需要转换 3.关于经纬度的换算: 因为我们收到的经纬度的格式是aabb.mmmm格式,往往要经过换算的。比如百度地图上需要的格式是,xx.mmmmm。这个换算过程其实蛮简单的,大致表示为aa+bb/60+mmmm/60/60。 当然我们也可以用工具进行转换,不过编写程序为了显示需要,需要我们进行换算,所以给出下面简单的算法(存在一定的误差)。

float caculate(float *x) 
{ 
   int a; 
   float b,c,d,e; 
   a=*x%100;           //30 
   b=(int)((*x/100-a)*100);   //29 
   c=((*x/100-a)*100-b)*60; 

   d=b/60; 
   e=c/60; 

   f=a+d+e; 
   return e;     
} 
           

计算得到的经纬度度分秒转换为经纬度

安信可A7模块GPS数据解析与开发板模块连接 主机操作系统:Centos 6.7  交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询) 开发板平台: fl2440  Linux内核版本: linux-3.0 .54

在地图工具上查询就能看到我们的位置了

安信可A7模块GPS数据解析与开发板模块连接 主机操作系统:Centos 6.7  交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询) 开发板平台: fl2440  Linux内核版本: linux-3.0 .54

http://www.gpsspg.com/maps.htm GPS转换地址

http://www.ab126.com/Geography/2703.html 经纬度转换 4.用开发板连接模块接收GPS数据: (1)使能USB接口:                  因为我们的开发板的两个串口用的是RS232,而我们的模块是TTL电平,所以我们并不能用串口直接去接我们的模块,我们需要用USB转串口线接到开发板的USB口,因此,我们需要对内核进行修改。在内核的make menuconfig->Device Drivers->USB support ->USB Serial Converter support选项中选择USB CP210x family of UART Bridge Controllers 选项,重新编译烧录内核。然后我们把USB转串口线插到我们的开发板USB接口上,通过网线连接开发板,用secuercrt远程登录开发板。我们可以看到/dev目录下有个USB0的设备。 >ls  /dev

安信可A7模块GPS数据解析与开发板模块连接 主机操作系统:Centos 6.7  交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询) 开发板平台: fl2440  Linux内核版本: linux-3.0 .54

(2)microcom命令监听USB接口: >:microcom -s 9600  /dev/ttyUSB0 -t 单位毫秒,无操作自动退出时间,-s 单位bps,串口波特率,通过ctrl+x可以退出监听。

安信可A7模块GPS数据解析与开发板模块连接 主机操作系统:Centos 6.7  交叉编译器环境:arm-linux-gcc-4.5.4 (可通过命令/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -v查询) 开发板平台: fl2440  Linux内核版本: linux-3.0 .54

监听到该接口后,我们可以对该接口进行编程操作,获取经纬度信息。

GPS数据包格式+数据解析   点击打开链接