本文来源:Luat
本文作者:Delectate
介绍篇过去,如果你的女友是个路痴,大概会有这样的对话……
——你在哪儿呢?
——啊?我在马路上啊。
——有什么特征?
——头顶有个月亮。
——你旁边有什么啊?
——有个路灯。
——有没有路牌啊?路牌上写的什么?
——我看看啊。还真的有,上边写着“禁止停车违者罚款”。
——姑奶奶,我真是服了你了……
——哼,你是不是不爱我了,你肯定是不爱我了,你是不是喜欢上了新来的那个前台?
——。。。
——我跟你说那个前台绝对是个伪娘!(开启八卦模式)还有还有,小王买了个新口红真好看,你也给我买好不好……
——(一脸崩溃的表情)
(路人甲:你是不可能有女友的!)
现在,如果你的女友是个路痴……
——你在哪儿啊?
——我发定位给你!乖乖的来接老娘。
——遵命。。。
作为一个标准路痴,曾经有N次陷入绝境黑历史。正所谓:手持一纸地图,双眼紧盯道路,环顾四周茫然,我现身在何处?
后来随着智能手机的普及,我以为情况能有所改善,后来才发现是我想多了——为嘛xx地图、xx导航还是总让我往死胡同里跑,非让我开车过湖?
再后来,随着手机操作系统的迭代,芯片的升级,定位才慢慢变得精准、可靠。我再也不用湖里游泳了……当然,这都是后话了。
(哥开的不是车,是!寂!寞!)
慢慢的随着了解的深入,才明白原来定位有这么多区别,里边的学问可大着呢。
定位给方式有很多种,室外定位有基站定位,卫星定位等方式;室内定位有BLE、RFID、Wi-Fi等方式;还有其他IP定位,惯性导航等等方式。
定位方式
定位原理
定位方案
应用场景
成本
设备要求
精度
基站定位
上报设备周边基站信息,服务器查表、解析并返回定位结果
单基站定位
多基站定位
室外
极低
设备成本低
需后端支持*
m
卫星定位
使用天线搜索卫星向地表发射的电波,解算后输出定位结果
多星定位
室外
较低
设备成本低
5m
差分定位
卫星+结合基准站的数据进行定位
多星定位
室外
很高
设备成本高
需专有后端支持*
5mm
BLEiBeacon
使用设备接收蓝牙信号,根据信号强弱计算距离,输出定位结果
单点定位
多点定位
室内
较高
设备成本较高
0cm
RFID
使用设备接收射频信号,根据信号强弱计算距离,输出定位结果
单点定位
多点定位
室内
很高
设备成本较高
10cm
Wi-Fi
上报设备周边路由器MAC信息,服务器查表、解析并返回定位结果
单机定位
多机定位
室内
较低
设备成本低
需后端支持*
10m
IP定位
上报目标设备公网IP地址,服务器查表并返回定位结果
-
不限
极低
设备成本低
需后端支持*
10km
佛系
手持佛珠
念念有词
-
不限
0成本
无需设备
随缘
“需后端支持”指需要连接到服务器进行数据解析,才能获得定位结果;
“需专有后端支持”指可能需要付费才能获得相关数据,终端设备才可以进行定位。
本文咱们就说说和物联网关系最密切的卫星定位那些事儿。
众多卫星定位系统中,最广为人知的就是GPS(GlobalPositioningSystem)了。它是美国在年开始研发,年投入使用,年实现全球覆盖的全球卫星定位系统。
GPS由4颗工作星和4颗备用星组成。卫星工作在互成55度的6条高度为.0万KM的非同步轨道上。如此一来,在全球的任何地方、任何时间都可观测到4颗以上的GPS卫星。GPS卫星向地球发射导航电文(系统时间、星历、历书、卫星时钟修正参数、导航卫星健康状况、电离层延时参数等内容),GPS终端收到卫星发送的数据,经解算即可确定当前位置,并以NMEA格式,WGS-84坐标系输出数据。
也许有的读者会问,万一卫星坏了怎么办,GPS岂不是要失准了?其实这个担心是多余的啦,轨道上不仅有备用卫星,每年NASA也会委托SpaceX补发和替换寿终的卫星。
当然,卫星定位系统不是GPS一家独大的。只是因为GPS的先驱地位,所以很多人也都习惯性的把所有卫星定位系统都称之为“GPS”。
毕竟,使用GPS卫星之时,就是被美国钳制之日。GPS卫星是被美国军方控制的,他们可以随意调节某地区的定位精度(如中东地区),甚至让终端设备解算结果南辕北辙。而且GPS卫星是单向广播的,不具备双向通信能力,功能略显单一。
有鉴于此,很多国家也都在建设或已建成卫星定位系统。如中国的北斗(BeiDou)、欧洲的伽利略(Galileo)、俄罗斯的格洛纳斯(GLONASS)、印度的IRNSS等。
目前,中国的BeiDou北斗已经具备商用能力。配合基准站,甚至能给客户提供精确到毫米的定位服务。同时,BeiDou北斗也弥补了GPS的不足,具备短报文能力(驴友、海航必备。绝非手机的基站可比拟,只是资费超超超感人)。
既然太空中有那么多卫星,又有那么多种不同的卫星定位系统,那么如何知道某一片区域是否有定位卫星覆盖,以及有哪些卫星覆盖呢?Android手机请在应用商店搜索“GPSData+”并安装,打开后即可看到当前正在使用的定位卫星:
由于智能手机操作系统、定位芯片、天线、算法的差异,所以并不能搜索到所有用于定位的卫星系统。通常来说,智能手机只能搜到并使用部分(如图)。
即GPS+Beidou+GLONASS+QZSS,没有Galileo、IRNSS。
各导航系统不同频段的工作频率
导航系统
国家
频段
工作频率
GPS
美国
L1
.4MHZ±1.0MHZ
L
17.60MHZ±1.0MHZ
L5
.45MHZ±1.0MHZ
GLONASS
俄罗斯
L1
.MHZ±4MHZ
L
.MHZ±4MHZ
BD1
中国
S
.75MHZ±4.08MHZ
L
.68MHZ±4.08MHZ
(左旋圆极化)
BD
B1
.MHZ±.MHZ
B
.50MHZ±.MHZ
B
.50MHZ±10.MHZ
Galileo
欧洲
L1
.40MHZ±1.0MHZ
E5b
.MHZ±1.0MHZ
E5a
.MHZ±1.0MHZ
E6
.MHz±1.0MHZ
QZSS
日本
L1C
L1CD
.4MHz
L1CP
L1-C/A
LC
17.6MHz
L5
L5I
.45MHz
L5Q
L1-SAIF
.4MHz
LEX
.75MHz
IRNSS
印度
L5
.45MHz
S
49.08MHz
观察一下表格,我们可以发现,日本简直是太“鸡贼”了——L1C/A、L1C、LC、L5信号跟GPS卫星信号是完全兼容的,同时L1-SAIF还可以给日本地区提供高精度定位服务;LEX信号频点和欧洲Galileo系统的E6频点重合。也就是说,日本的QZSS当前可以作为GPS的补充,日后等到Galileo系统正式提供服务,QZSS也能实现Galileo系统的补充。
接下来进入喜闻乐见的“你问我答”环节:
Q:为什么有的时候手机定位还是很慢?
A:信号问题、基带问题等,一切皆有可能。如果想要提高定位精度,最简单方式就是——买!个!新!手!机!
Q:我想试试伽利略,有没有支持的手机呢?
A:华为有部分机型支持。
Q:小米8刘海屏不好看啊,你看VIVONEX多美。对了,小米8说是全球第一个支持GPS双频定位(L1、L5)的手机,好像很牛逼,能做到厘米级定位吗?
A:不能。没有基准站的支持,双频顶多是减小误差,对高精度定位无助。所以,还是洗洗睡吧。
Q:北斗的短报文资费究竟有多感人?
A:十几块一条吧。你可以去某猫、某宝查看一下报价。
至于说语音通信,也有海事卫星电话可用,不同国家资费不同,从十几块到几十块一分钟;什么?你想用卫星上网?按量计费$10/1M,怎么样,用的起吗?
Q:既然已有GPS,为什么还要重造轮子?
A:因为GPS的L1、L5是民码,大众可用,但是美军曾经在战时关闭过某些战区的数据覆盖,为了避免这种被人卡住喉舌的尴尬,所有必要发展自己的卫星定位系统。
Q:卫星定位系统只在地表有用吗?
A:非也。负海拔地区(只要有信号)、空中、甚至大气层外都可以。需要注意的是,水体、岩石等密度高的物体内无法使用。
大气层外使用,还要注意广义相对论对时钟造成的影响。
Q:《明日帝国》中,大反派使用了某种很牛逼的设备,通过某些手段改变了卫星参数,劫持了一艘船,这种事情可能发生吗?
A:这种事情,世界上已经发生过了。
因为GPS信号没有认证方式,且信号极弱,非常容易被劫持。例如HackRFOne就可以模拟并发射GPS信号;甚至让大疆无人机在禁飞区起飞。
伊朗也是用过类似的技术,成功捕获美国的无人机。
Q:最少搜到多少颗卫星才能定位成功呢?
A:因为采用三角定位的原理,所以至少颗卫星才能实现精准定位;具体要求如下:
使用卫星数
能否定位
备注
0
无法定位
1
无法定位
可以更新UTC时间和日期;
无法定位
可实现DFix,输出经纬度
不可输出海拔信息
4
可实现DFix
可输出正确海拔信息
4(多频)
可实现DFix
可输出伪距
Q:你为什么懂得那么多啊?
A:大概是因为我比高吧。
定位篇有的人会问,既然天上多卫星,为什么我看输出结果只是用了其中有限的几个呢?这是因为单片机使用的小尺寸的陶瓷天线,一般只能做到兼容个频段(一般软件上也是多选),无法做到同时兼容个频段。所以通常是单选GPS或北斗;或者是GPS+北斗、GPS+GLONASS等两两组合的方式。
有的开发者实测时发现,为什么代码无误,但是定位模块就是搜不到卫星,无法定位呢?
实际上排查这种问题既简单,又复杂。之所以说简单的,是因为搜不到卫星唯一的原因就是信号问题。复杂是因为即便知道了病因,开发者也可能会觉得束手无策。
信号问题,那就是“卫星→天线→模块→代码→输出”的某个环节出现异常了。在这里,结合“望闻问切”的方法,针对可能出现的问题逐项击破。
首先,开发者应谨记,任何时候都应该避免空间上存在异物遮蔽天线(如树木、建筑、高架桥),物理上存在金属外壳等遮挡天线等情况(如铝壳、铁壳)。应确保测试环境是空旷的,无遮挡的,信号良好的。
之所以一直在强调天线、信号、无遮挡,是因为卫星的发射功率并不大,信号到达地面时已经很弱。这种信号强度相当于1.6万公里外一个5瓦的灯泡发出的光。再做个比喻,它比电视机天线所接收到的功率还要低10亿倍。
信号弱、无信号,都会表现为无法定位,或者定位慢。那么,如何判断究竟是信号问题导致的定位慢,还是真·无信号呢?观察模块输出的GGA、RMC和GSA:
GGA:
格式:
$--GGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh
示例:
$GPGGA,.,.,N,10.,E,1,9,0.85,18.1,M,8.0,M,,*5E
名称
样例
单位
描述
消息ID
$GPGGA
GGA协议头
UTC时间
.
hhmmss.sss
纬度
.
ddmm.mmmm
N/S
N
N=北,S=南
经度
10.
dddmm.mmmm
E/W
E
W=西,E=东
定位指示
1
0:未定位
1:SPS模式,定位有效
:差分,SPS模式,定位有效
:PPS模式,定位有效
卫星数目
9
范围0到1
HDOP
0.85
水平精度
MSL幅度
18.1
米
单位
M
米
大地
-.
米
单位
M
-
差分时间
秒
当没有DGPS时,无效
差分站ID
校验和
*5E
CRLF
消息结束
RMC:
格式:
$--RMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,xxxx,x.x,a*hh
例句:
$GPRMC,.,A,.,N,11.,E,0.57,5.6,,,,A*59
名称
样例
单位
描述
消息ID
$GPRMC
RMC协议头
UTC时间
.
hhmmss.sss
状态
A
A=数据有效;V=数据无效
纬度
.
ddmm.mmmm
N/S
N
N=北,S=南
经度
.
dddmm.mmmm
E/W
E
W=西,E=东
地面速度
0.57
Knot(节)
方位
5.6
度
日期
ddmmyy
磁变量
-
校验和
*59
CRLF
消息结束
GSA:
格式:
$--GSA,a,a,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x.x,x.x,x.x*hh
例句:
$GPGSA,A,,10,4,1,,5,1,15,0,1,,,,1.5,0.85,0.91*04
名称
样例
单位
描述
消息ID
$GPGSA
GSA协议头
模式1
A
M=手动(强制在D或D模式)
A=自动
模式
1:定位无效
:D定位
:D定位
卫星使用
10
通道1
卫星使用
4
通道
卫星使用
1
通道
卫星使用
通道4
卫星使用
5
通道5
卫星使用
1
通道6
卫星使用
15
通道7
卫星使用
0
通道8
,,,
,,,
,,,
卫星使用
通道1
PDOP
1.5
位置精度
HDOP
0.85
水平精度
VDOP
0.91
垂直精度
校验和
*04
CRLF
消息结束
如果GGA中的UTC时间错误,定位指示为0,卫星数目不为0;或者RMC的UTC时间错误,日期错误;GSA中卫星数目不为0,但是载噪比都很低,则可能是搜星慢,定位慢,信号差;
如果GGA中的UTC时间错误,定位指示为0,卫星数目始终为0;或者RMC的UTC时间错误,日期错误;GSA完全没有任何有效输出,则可能是完全无信号。
对于搜星慢,定位慢,信号差的情况,应改善天线设计,保证天线面朝上的安装使用状态;并且天线周边没有金属物件遮挡,无射频干扰;在空间容许的情况下尽量选择大尺寸的陶瓷天线,必要时应使用有源天线。
对于完全无信号的情况,大概率是天线设计错误。譬如,没有给有源天线开启供电,错误使用天线型号(如芯片仅支持GPS,天线仅支持北斗;错误的使用GSM天线接收信号)等。
扩展阅读:《Luat模块GPS天线设计建议》
还有一种常见情况是开发者在室内(含窗口、窗台)进行测试,这是不行的。因为室内没有卫星信号,并不能实现定位。
如果开发者不便于去户外进行测试,可以在某宝搜索“GPS转发”并购买相关设备。这样一来,开发者就不用“风吹日晒,饱经风雨”的,“不辞辛劳”的在户外调试啦。
接下来进入大快人心的“你问我答”环节:
Q:有没有体积小、信号好强的天线?
A:鱼和熊掌不可兼得。只有最适合的,没有最好的。
Q:NMEA-哪里格式说明呢?
A:请到