1. GPS基础知识
1. 方位的概念
- 上北下南,左西右东,表明方位
- 北 north
- 南 south
- 东 east
- 西 west
- 纬度 latitude
- 经度 longitude
看懂方位才知道处于哪个位置
分不清经纬度的话简单记
经度长 long
108.924671
lat_value=34.359225
lon_value=108.924671

如图所示
横轴线为纬线,分为北纬和南纬
纵轴线为经线,分区东经和西经
2. gps是什么
GPS由24颗工作星和4颗备用星组成
在全球的任何地方、任何时间都可观测到4颗以上的GPS卫星
GPS终端收到卫星发送的数据,经解算即可确定当前位置,
并以NMEA0183格式,WGS-84坐标系输出数据

2.1 模组使用注意
- 在无遮挡空旷地使用
- 陶瓷天线上面的小圆点必须朝上
- 楼间距小也可能定位失败

2.2 缩写标识

2.3 冷启动
定位模块上电开机后,通过天线搜索卫星,解析卫星发射的数据(导航电文),然后内部生成星历,再经过复杂的计算,从而得到当前精确的位置(3D Fix)。这个过程称之为“冷启动”。根据信号强度、芯片运算能力,通常耗时几十秒到几分钟不等
这个过程中,搜星+生成星历文件耗时最久
冷启动是指在一个默认的环境下启动GPS直到GPS和周围的卫星联系并计算出坐标
冷启动大概需要1-2分钟才会定位成功

2.4 AGPS辅助定位
是通过网络直接下载当前地区的可用卫星星历数据,并将之发送给定位模块,定位模块只搜索特定的卫星,从而提高了搜星速度,减少设备耗电
“AGPS辅助定位”能否提高定位精度?
不能,它只能加快定位速度。无法提升定位精度
2.5 读懂坐标数据
经纬度格式分为三种:度、度-分、度-份-秒
1.) ddd.ddddd °【度 . 度 格式】的十进制小数部分(5位)
2.) ddd°mm.mmm’ 【度 . 分 . 分 格式】的十进制小数部分(3位)
3.) ddd°mm’ss’’ 【度 . 分 . 秒 格式】
关系:
一度(°)等于60分钟(’)等于3600秒(“):
整度(d)等于十进制的度的整数部分(dd):
分钟(m)等于十进制的度的整数部分(dd)减去整数度(d)的60倍:
秒(s)等于十进制的度(dd)减去整数度(d)减分(M)除以60乘以3600:
Google使用的是第三种格式 : 度。分’秒’’
上面的经纬度坐标会看到那里呢?
度分转换:
将度分单位数据转换为度单位数据
度=度+分/60
例如:
经度 = 116°20.12’(度分)
纬度 = 39°12.34’
经度 = 116 + 20.12 / 60 = 116.33533°(度)
纬度 = 39 + 12.34 / 60 = 39.20567°
度分秒转换:
将度分秒单位数据转换为度单位数据
度 = 度 + 分 / 60 + 秒 / 60 / 60
例如:
经度 = 116°20’43”
纬度 = 39°12’37”
经度 = 116 + 20 / 60 + 43 / 60 / 60 = 116.34528°
纬度 = 39 + 12 / 60 + 37 / 60 / 60 = 39.21028°
模组输出的格式为度分格式
一般使用为度格式
输出格式:ddmm.mmmm(度-分)
日常使用格式:dd.dddddd(度)
ddmm.mmmm(度-分)
dd.dddddd(度)
转换公式:
ddmm.mmmm=
dd.mmmmmm(小数点前移2位)
dd.(mmmmmm/60)
结果是
dd.dddddd
2.7 GCJ-02 火星坐标系统纠偏
NMEA-0183输出格式和我们日常使用的格式不同
模块输出数据的格式为NMEA-0183,使用的坐标系是WGS-84
输出格式:ddmm.mmmm(度-分)
日常使用格式:dd.dddddd(度)
//国际原始坐标系
WGS-84
//中国坐标偏移标准(火星坐标系)
GCJ-02
模块输出数据的格式为NMEA-0183,使用的坐标系是WGS-84。通常,国际上其他国家的地图软件也都是使用WGS-84,相安无事。不过,中国国家测绘局要求所有从事地理测量、地图绘制的公司、单位机构、个人必须使用GCJ-02坐标系(G表示Guojia国家,C表示Cehui测绘,J表示Ju局)。
也就是说,国内的地图软件大都是使用的GCJ-02坐标系。所以开发者/用户如果将WGS-84的经纬度填入国内的地图软件,就会产生极大的偏差
(所有的电子地图、导航设备,都需要使用GCJ-02坐标系。第一步,地图公司测绘地图,测绘完成后,送到国家测绘局,将真实坐标WGS-84的电子地图,加密成“GCJ-02火星坐标”,这样的地图才是可以出版和发布的。第二步,所有的面向客户的设备厂商,要在软件中加入该转换算法,将定位模块输出的真实WGS-84坐标,转换成GCJ-02的坐标。这样一来,“以偏治偏”,坐标系才可以完全匹配,也就没有“偏差”了)
两者之间存在转换
公式如下:
ddmm.mmmm → 小数点前移两位 → dd.mmmm → dd + 0.(mmmm/60) = dd.dddddd
举例:
12023.4047 → 120.234047 → 120 + 0.(234047÷60) = 120.390078

2.8 什么是“星历预测”?
指在信号正常(CN值大于27)的情况下,硬件连续运行5-10分钟,即可在内部自动生成星历,并预测出未来2~3天的星历,此过程不需要耗费任何流量
实现“星历预测”这个功能,是有条件的:
1、星历被下载过一次(外部输入给GPS芯片星历文件,或者GPS芯片自主3D Fix)
2、GPS信号CN值不低于27
3、正常定位过一次;
4、RTC不掉电(当主电源断开后,只有RTC电源不断,星历预测功能才可以使用,RTC断开后星历预测功能将不再起作用)
2.9 分享
科普文章链接
2. ATGM336H模组


- 模组内芯片是AT6558
- 详细资料在官网
1. 通讯
使用串口通讯
NMEA0183 4.1 版本
国际标准 NMEA0183 协议
理解为航海协会的一个通用协议

2. 数据

NAME标准消息看需求,仅定位数据使用RMC即可
3.RMC

- 解析注意协议中重要参数
/*
* RMC数据解析
*/
uint8_t gps_rec_data_parse(uint8_t *data)
{
uint8_t *data_p = data;
uint32_t value1 = 0;
uint32_t value2 = 0;
LOG_OUT("$GNRMC rec ok\r\n");
if(*(data_p+18) == 'A')//数据有效
{
//取出数据
gps_data.data_valid = 'A';
memcpy(gps_data.latitude, data_p+20, 10);
gps_data.lat_n_s = *(data_p+31);
memcpy(gps_data.longitude, data_p+33, 11);
gps_data.lon_e_w = *(data_p+45);
LOG_OUT("%c\r\n", gps_data.data_valid);
for(uint8_t t=0; t<10; t++)
{
gps_data.latitude[t] -= '0';
LOG_OUT("%d-", gps_data.latitude[t]);
}
LOG_OUT("-%c\r\n", gps_data.lat_n_s);
for(uint8_t t=0

本文详细解释了GPS的基本概念、卫星组成、定位方法(冷启动和AGPS)、坐标数据解读、NMEA-0183格式、GCJ-02坐标系、星历预测机制以及AT6556R模组的通信和数据解析。还提供了坐标查看的相关资源。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



