当我使用arduino GPS模块时,通常需要花费几分钟时间才能开始发送数据。而且似乎所有GPS模块通常都是这种情况,因为它们需要一段时间来“收听”卫星。但是,每当我使用手机的内置GPS时,它都能在几秒钟内找到其位置。这是为什么?
当我使用arduino GPS模块时,通常需要花费几分钟时间才能开始发送数据。而且似乎所有GPS模块通常都是这种情况,因为它们需要一段时间来“收听”卫星。但是,每当我使用手机的内置GPS时,它都能在几秒钟内找到其位置。这是为什么?
Answers:
有几件事会影响首次修复时间(TTFX)。
获取历书和星历表。从技术上讲,这两件事彼此有点不同,但是出于我们的目的,我们将它们视为相同。它们是卫星的位置,您需要知道它们的位置才能确定自己的位置。每颗卫星大约每12分钟发送一次全部卫星。因此,从单通道接收器和良好信号的完全冷启动开始,TTFX至少需要12分钟。您可以通过以下方法加快处理速度:
识别卫星。您需要至少听三颗卫星,最好听更多,以获得更好的解决方案,但是每个接收器(称为相关器)一次只能调谐到一个。如果您大致了解自己的位置,现在的时间并且已经有了年历,那么您就可以猜测可以看到哪些卫星。通过识别wifi或蓝牙信号,知道正在使用的手机发射塔以及其他来源,电话通常会大致知道它们在哪里。它们也定期获得非常准确的时间更新,因此通常可以直接获得正确的卫星。手机和更大的模块都可以记住上一次使用的时间和地点,并从中开始使用。
相关器的数量。由于GPS信号的信噪比非常低,因此需要特殊的硬件来接收它们。一些接收器只有一个,并且需要围绕卫星旋转。其他人拥有更多,并且可以立即收听更多内容。因此,即使您已经有了历书/星历表并且大致了解您的位置,也可以使用更多的相关器来更快地进行修复。您可能会认为更多的总会更好,但是更多的确会增加成本和功耗。某些电话和模块具有更多的功能。
信号和天线。如果您有很好的信噪比,相关器将更快地完成它们的工作。非常差的信号可能根本不起作用。良好的天线设计,放大器,天空视野和良好的PCB布局可以使一切变得不同。某些模块开箱即可正常工作,插入天线后效果会更好。
可用卫星数。实际上,那里有两个大型卫星群,即GPS(由美国运营)和GLONASS(由俄罗斯运营)。还有更多在建项目:伽利略(EU)和北斗2号(中国),还有一些在当地覆盖的国家,例如印度的NAVIC或北斗1号。可以与来自多个星座的卫星一起工作的接收机可以选择更多的卫星,并且可以更快更准确地进行定位。
相关器的质量。新的硬件设计优于旧的硬件设计,并且能够更好地在噪声信号中识别GPS消息的片段。电话可以做的另一种技巧是捕获信号片段,然后将其通过互联网通过具有很好的软件相关器的服务器传递给服务器,并完成历书/星历表的检查。这就是所谓的MSA辅助GPS。
一些电话(甚至几个模块)可能还会使用一些小偷小摸的技巧来避免或隐藏较长的TTFX。由于它们一直处于运行状态,因此他们可能会短暂打开GPS而不通知用户,以使位置和星历大致保持最新状态。其他人可能会在仍在等待真正的修复时显示最近的位置-大多数时候看起来像是不错的TTFX,但是如果发现位置非常错误,则看起来很糟糕。
上面的第1点是最大的区别,通常是基本模块,高级模块和电话之间有区别的关键。其他通常不会产生太大的变化,但实际上可能会变得非常复杂。如果您想了解更多信息,请搜索“ GPS首次定位时间”。
手机操作系统通过手机网络通过互联网下载GPS年历数据(卫星星历和状态信息),并将其加载到GPS模块中的速度比直接以50 bps的速度从GPS卫星下载数据要快得多(是的,那是每秒50位,GPS是一项相当老的技术,专为在非常低的SNR下运行而优化),从而大大缩短了首次修复的时间。这就是所谓的辅助GPS。它还可能具有来自蜂窝调制解调器的非常准确的初始时间参考(蜂窝塔通常通过GPS与时间同步)以及来自蜂窝调制解调器的粗略位置估计。所有这些结合极大地减少了接收机必须执行的搜索量-它知道它应该能够看到哪些卫星,因此它只寻找那些卫星,而无需等待卫星发送整个消息。
其他答案已经解释了“如何”和“为什么”,所以剩下的就是“什么”:它称为A-GPS(辅助GPS,有时也称为加速或增强GPS)。
换句话说:手机的GPS比“ GPS的GPS”工作更快的原因是该手机没有使用“ GPS”,而是使用了GPS。
答案的一部分是手机GPS不仅仅是GPS。Cell还使用其他信息进行地理位置定位,例如手机塔的三角测量和wifi网络的可见性。例如,非蜂窝版本的iPad Air没有实际的GPS,但仍可以使用这些技术知道您在建筑区域中的位置。
只是想更详细地说明较旧的接收器正在等待数据时发生的情况。换句话说,为什么该历书(和记住的位置)如此有用?
GPS信号非常弱。在给定距离的情况下,信号到达地面时会远低于本底噪声。如果您只是以正确的频率观看示波器扫描,就永远不会直接检测到卫星。
接收器获取信息的方式是通过将输入信号与特定模式进行比较(通过FFT相关)。如果使用正确的模式,则相关性会排队,并且可以看到数据。
对于一个简单的老式接收器,要达到这一点,需要设备的相关器执行以下两项操作:来自卫星的消息的频率以及消息的相位(排列码型)。如果其中任何一个都不正确,则关联不成功,并且不会检测到任何东西。卫星的运动意味着接收到的信号会发生较大的多普勒频移。
有了历书并且对当前位置和时间有了一个很好的了解,接收机就可以估计卫星和接收机的相对运动,以消除大部分的多普勒频移并稍微接近频率。这意味着相关器通常只需为信号模式尝试不同的相位即可得出结果。相空间搜索可以在几秒钟内完成。
如果缺少年历,或者没有当前位置和时间的估计,则系统必须尝试不同的相位和不同的频率以从每颗卫星获取数据。现在必须在两个不同的维度上进行搜索,即使是多通道系统,也可能需要花费几分钟才能通过蛮力“发现” 3颗卫星。
即使没有A-GPS,现代芯片组也可以利用附加信号和大量并行比较器来加快搜索速度。我怀疑您在Arduino防护板上获得的芯片组可能更旧/更便宜,并且不会使用这些较新的功能。
在美国,FCC要求蜂窝电话运营商在 2012年9月11日首次拨打电话后的6分钟内向300米以内拨打紧急服务时,能够识别呼叫者所在的位置。
在过去的几年中逐步采用了这种方法,并且在以后的几年中,对距离和位置报告时间的要求也越来越严格。
蜂窝电话公司无法保证在偏远地区的移动电话仅能接触到一两个蜂窝塔,也无法在城市环境中(即使手机可以容纳多个发射塔的情况下)反射和建筑物密度限制了位置。GPS芯片无法在所需的时间范围内以足够低的功率提供此功能,以致手机仍将在商业上可行(在引入此要求时。芯片组现在具有更高的功率效率和更快的功耗,部分原因在于需求每个电话都包含部分或全部GPS芯片组)。此外,相对于其他电话组件,GPS芯片组非常昂贵。
因此,他们创建了一些不同的竞争系统,它们都属于辅助GPS的绰号“ AGPS”。
在这些各种AGPS系统后面运行的技术有时会有所不同。
最便宜的蜂窝式AGPS系统会记录几毫秒的GPS RF信号,然后将其发送到AGPS服务器,然后,服务器就知道手机的大概位置,可以使用该GPS RF代码段来确定更准确的位置。如果没有良好的蜂窝连接,这些电话将无法获取GPS坐标。
有些具有完整的GPS芯片组,但允许手机为它们提供年历和星历表-这两条信息使芯片组可以在几秒钟内得到修复-之后,它会使用其常规方法生成位置结果。给定时间,这些电话可以获得独立于其网络的位置。
大多数GPS芯片组都允许您将星历和历书信息加载到其中,因此,如果您的arduino设备具有互联网连接并且可以访问AGPS服务器,则可以类似的方式加快GPS修复速度。但是,对于大多数项目,只需在GPS接收器的正确引脚上添加一个锂纽扣电池,就可以保持最新的历书和星历表更新,并且由于在短时间内变化很小,因此可以极大地加快首次定位的速度,因为只要设备尚未移动数千英里,并且每隔几天就会通电。