# 位置追踪 ![本课的手绘笔记概览](../../../../../translated_images/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.zh.jpg) > 手绘笔记由 [Nitya Narasimhan](https://github.com/nitya) 提供。点击图片查看大图。 ## 课前测验 [课前测验](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/21) ## 简介 将农产品从农场运送到消费者的主要过程包括将装满农产品的箱子装载到卡车、船舶、飞机或其他商业运输工具上,并将食品运送到某个地方——要么直接送到客户手中,要么送到中央枢纽或仓库进行处理。从农场到消费者的整个端到端过程被称为*供应链*。以下视频来自亚利桑那州立大学 W. P. Carey 商学院,详细介绍了供应链的概念及其管理方式。 [![什么是供应链管理?来自亚利桑那州立大学 W. P. Carey 商学院的视频](https://img.youtube.com/vi/Mi1QBxVjZAw/0.jpg)](https://www.youtube.com/watch?v=Mi1QBxVjZAw) > 🎥 点击上方图片观看视频 添加物联网设备可以显著改善供应链管理,使您能够更好地管理物品的位置、规划运输和货物处理,并更快地应对问题。 在管理车队(如卡车)时,了解每辆车在特定时间的位置非常有帮助。车辆可以安装 GPS 传感器,将其位置发送到物联网系统,使车主能够精确定位车辆位置、查看行驶路线,并了解车辆何时到达目的地。大多数车辆在 WiFi 覆盖范围之外运行,因此它们使用蜂窝网络发送此类数据。有时,GPS 传感器内置于更复杂的物联网设备中,例如电子日志。这些设备跟踪卡车的运输时间,以确保司机遵守当地关于工作时间的法律。 在本课中,您将学习如何使用全球定位系统 (GPS) 传感器追踪车辆位置。 本课内容包括: * [联网车辆](../../../../../3-transport/lessons/1-location-tracking) * [地理空间坐标](../../../../../3-transport/lessons/1-location-tracking) * [全球定位系统 (GPS)](../../../../../3-transport/lessons/1-location-tracking) * [读取 GPS 传感器数据](../../../../../3-transport/lessons/1-location-tracking) * [NMEA GPS 数据](../../../../../3-transport/lessons/1-location-tracking) * [解码 GPS 传感器数据](../../../../../3-transport/lessons/1-location-tracking) ## 联网车辆 物联网正在通过创建*联网车辆*车队改变货物运输方式。这些车辆连接到中央 IT 系统,报告其位置和其他传感器数据。拥有联网车辆车队有许多好处: * 位置追踪 - 您可以随时精确定位车辆位置,从而: * 在车辆即将到达目的地时收到警报,以便准备卸货人员 * 定位被盗车辆 * 将位置和路线数据与交通问题结合起来,使您能够在旅途中重新规划车辆路线 * 遵守税收规定。一些国家根据车辆在公共道路上行驶的里程数收取费用(例如 [新西兰的 RUC](https://www.nzta.govt.nz/vehicles/licensing-rego/road-user-charges/)),因此了解车辆在公共道路与私人道路上的行驶情况可以更轻松地计算应缴税款。 * 在车辆发生故障时知道派遣维修人员的位置 * 驾驶员遥测 - 确保驾驶员遵守限速规定、以适当速度转弯、提前有效刹车并安全驾驶。联网车辆还可以配备摄像头记录事故。这可以与保险挂钩,为优秀驾驶员提供优惠费率。 * 驾驶员工作时间合规性 - 确保驾驶员仅在法律允许的时间内驾驶车辆,基于发动机启动和关闭的时间。 这些好处可以结合使用,例如,将驾驶员工作时间合规性与位置追踪结合起来,如果驾驶员无法在允许的驾驶时间内到达目的地,则重新规划路线。这些还可以与其他车辆特定的遥测数据结合使用,例如温控卡车的温度数据,如果当前路线会导致货物无法保持适当温度,则重新规划车辆路线。 > 🎓 物流是将货物从一个地方运输到另一个地方的过程,例如从农场通过一个或多个仓库运输到超市。农民将西红柿装箱,装载到卡车上,运送到中央仓库,然后装载到可能包含不同类型农产品的第二辆卡车上,最终送到超市。 车辆追踪的核心组件是 GPS——能够在地球上任何地方定位其位置的传感器。在本课中,您将学习如何使用 GPS 传感器,从了解如何定义地球上的位置开始。 ## 地理空间坐标 地理空间坐标用于定义地球表面上的点,类似于如何使用坐标在计算机屏幕上绘制像素或在十字绣中定位针脚。对于单个点,您需要一对坐标。例如,美国华盛顿州雷德蒙市的微软园区位于 47.6423109, -122.1390293。 ### 纬度和经度 地球是一个球体——一个三维圆。因此,点的定义是将其分为 360 度,与圆的几何形状相同。纬度测量从北到南的度数,经度测量从东到西的度数。 > 💁 没有人确切知道为什么圆被分为 360 度。[维基百科上的“角度 (度)”页面](https://wikipedia.org/wiki/Degree_(angle))介绍了一些可能的原因。 ![纬度线从北极的 90°,到北极和赤道之间的中点 45°,到赤道的 0°,到赤道和南极之间的中点 -45°,到南极的 -90°](../../../../../translated_images/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.zh.png) 纬度是通过围绕地球的线测量的,这些线与赤道平行,将北半球和南半球分别分为 90°。赤道为 0°,北极为 90°,也称为北纬 90°,南极为 -90°,或南纬 90°。 经度是测量东西方向的度数。经度的 0° 起点称为*本初子午线*,1884 年定义为穿过[英国格林威治皇家天文台](https://wikipedia.org/wiki/Royal_Observatory,_Greenwich)的一条从北极到南极的线。 ![经度线从本初子午线以西的 -180°,到本初子午线的 0°,到本初子午线以东的 180°](../../../../../translated_images/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.zh.png) > 🎓 子午线是从北极到南极的一条假想直线,形成一个半圆。 要测量某点的经度,您需要测量从本初子午线沿赤道到穿过该点的子午线的度数。经度范围从 -180°(或西经 180°),经过本初子午线的 0°,到 180°(或东经 180°)。180° 和 -180° 指的是同一个点,即反子午线或第 180 条子午线。这是地球上与本初子午线相对的一条子午线。 > 💁 反子午线不要与国际日期变更线混淆,后者大致位于同一位置,但不是一条直线,并根据地缘政治边界有所变化。 ✅ 做一些研究:尝试找到您当前所在位置的纬度和经度。 ### 度、分和秒与十进制度 传统上,纬度和经度的度数测量使用六十进制或基数 60 的计数系统,这是古巴比伦人使用的计数系统,他们最早测量和记录时间与距离。您可能每天都在使用六十进制而没有意识到——将小时分为 60 分钟,将分钟分为 60 秒。 经度和纬度以度、分和秒为单位测量,其中 1 分为 1/60 度,1 秒为 1/60 分。 例如,在赤道上: * 1° 纬度为 **111.3 公里** * 1 分纬度为 111.3/60 = **1.855 公里** * 1 秒纬度为 1.855/60 = **0.031 公里** 分的符号是单引号,秒的符号是双引号。例如,2 度 17 分 43 秒可以写作 2°17'43"。秒的小数部分以小数表示,例如半秒为 0°0'0.5"。 计算机不使用六十进制,因此在大多数计算机系统中使用 GPS 数据时,这些坐标以十进制度表示。例如,2°17'43" 为 2.295277。通常省略度符号。 点的坐标总是以 `纬度, 经度` 的形式给出,因此前面提到的微软园区 47.6423109,-122.117198 的坐标为: * 纬度为 47.6423109(北纬 47.6423109 度) * 经度为 -122.1390293(西经 122.1390293 度)。 ![微软园区位于 47.6423109,-122.117198](../../../../../translated_images/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.zh.png) ## 全球定位系统 (GPS) GPS 系统使用多个绕地球运行的卫星来定位您的位置。您可能已经在不知不觉中使用过 GPS 系统——例如在手机上的地图应用中找到您的位置(如 Apple Maps 或 Google Maps),或者在叫车应用(如 Uber 或 Lyft)中查看您的车辆位置,或者在汽车中使用卫星导航 (sat-nav)。 > 🎓 “卫星导航”中的卫星就是 GPS 卫星! GPS 系统通过多个卫星发送信号,每个卫星包含其当前位置和精确时间戳。这些信号通过无线电波发送,并由 GPS 传感器中的天线检测到。GPS 传感器会检测这些信号,并使用当前时间测量信号从卫星到传感器的传输时间。由于无线电波的速度是恒定的,GPS 传感器可以使用发送的时间戳计算传感器与卫星之间的距离。通过结合至少 3 颗卫星发送的位置数据,GPS 传感器能够精确定位其在地球上的位置。 > 💁 GPS 传感器需要天线来检测无线电波。内置 GPS 的卡车和汽车的天线通常安装在挡风玻璃或车顶上,以获得良好的信号。如果您使用单独的 GPS 系统,例如智能手机或物联网设备,则需要确保 GPS 系统或手机内置的天线能够清晰地看到天空,例如安装在挡风玻璃上。 ![通过知道传感器与多个卫星的距离,可以计算出位置](../../../../../translated_images/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.zh.png) GPS 卫星绕地球运行,并非固定在传感器上方,因此位置数据包括海拔高度以及纬度和经度。 GPS 曾经受到美国军方强制限制,精度约为 5 米。该限制在 2000 年被取消,使精度达到 30 厘米。由于信号干扰,获得这种精度并不总是可能。 ✅ 如果您有智能手机,打开地图应用程序,查看您的位置精度。可能需要一段时间让手机检测到多个卫星以获得更准确的位置。 💁 卫星上配备了极其精确的原子钟,但由于爱因斯坦的狭义和广义相对论预测的速度增加导致时间变慢的效应,与地球上的原子钟相比,它们每天会漂移38微秒(0.0000038秒)——因为卫星的运行速度比地球自转速度更快。这种漂移现象已经被用来验证狭义和广义相对论的预测,并且在设计GPS系统时必须进行调整。可以说,GPS卫星上的时间确实运行得更慢。 全球定位系统(GPS)已被多个国家和政治联盟开发和部署,包括美国、俄罗斯、日本、印度、欧盟和中国。现代GPS传感器可以连接到这些系统中的大多数,以获得更快、更准确的定位。 > 🎓 每个部署中的卫星组被称为星座。 ## 读取GPS传感器数据 大多数GPS传感器通过UART发送GPS数据。 > ⚠️ UART在[项目2,课程2](../../../2-farm/lessons/2-detect-soil-moisture/README.md#universal-asynchronous-receiver-transmitter-uart)中已经介绍过。如果需要,可以回顾该课程。 您可以在物联网设备上使用GPS传感器来获取GPS数据。 ### 任务 - 连接GPS传感器并读取GPS数据 按照相关指南,使用您的物联网设备读取GPS数据: * [Arduino - Wio Terminal](wio-terminal-gps-sensor.md) * [单板计算机 - Raspberry Pi](pi-gps-sensor.md) * [单板计算机 - 虚拟设备](virtual-device-gps-sensor.md) ## NMEA GPS数据 运行代码时,您可能会在输出中看到一些看似乱码的内容。实际上,这些是标准的GPS数据,每一部分都有其意义。 GPS传感器使用NMEA消息输出数据,遵循NMEA 0183标准。NMEA是[国家海洋电子协会](https://www.nmea.org)的缩写,这是一个总部位于美国的贸易组织,负责制定海洋电子设备之间通信的标准。 > 💁 该标准是专有的,售价至少为2000美元,但由于有足够的信息公开,大部分标准已经被逆向工程,可以用于开源和其他非商业代码。 这些消息是基于文本的。每条消息由一个以`$`字符开头的*句子*组成,后面是两个字符表示消息来源(例如,美国GPS系统为GP,俄罗斯GPS系统GLONASS为GN),以及三个字符表示消息类型。消息的其余部分是以逗号分隔的字段,以换行符结束。 一些可以接收到的消息类型包括: | 类型 | 描述 | | ---- | ----------- | | GGA | GPS定位数据,包括GPS传感器的纬度、经度和海拔,以及用于计算定位的可见卫星数量。 | | ZDA | 当前日期和时间,包括当地时区。 | | GSV | 可见卫星的详细信息——定义为GPS传感器可以检测到信号的卫星。 | > 💁 GPS数据包括时间戳,因此如果需要,您的物联网设备可以从GPS传感器获取时间,而无需依赖NTP服务器或内部实时时钟。 GGA消息使用`(dd)dmm.mmmm`格式提供当前位置,并附带一个字符表示方向。格式中的`d`表示度,`m`表示分,秒以分的小数形式表示。例如,2°17'43"将表示为217.716666667——2度,17.716666667分。 方向字符可以是`N`或`S`表示纬度的北或南,`E`或`W`表示经度的东或西。例如,纬度2°17'43"的方向字符为`N`,而-2°17'43"的方向字符为`S`。 例如 - NMEA句子`$GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67` * 纬度部分是`4738.538654,N`,转换为十进制度数为47.6423109。`4738.538654`表示47.6423109,方向为`N`(北),因此是正纬度。 * 经度部分是`12208.341758,W`,转换为十进制度数为-122.1390293。`12208.341758`表示122.1390293°,方向为`W`(西),因此是负经度。 ## 解码GPS传感器数据 与其使用原始的NMEA数据,不如将其解码为更有用的格式。您可以使用多个开源库来帮助从原始NMEA消息中提取有用的数据。 ### 任务 - 解码GPS传感器数据 按照相关指南,使用您的物联网设备解码GPS传感器数据: * [Arduino - Wio Terminal](wio-terminal-gps-decode.md) * [单板计算机 - Raspberry Pi/虚拟物联网设备](single-board-computer-gps-decode.md) --- ## 🚀 挑战 自己编写一个NMEA解码器!与其依赖第三方库解码NMEA句子,您能否编写自己的解码器,从NMEA句子中提取纬度和经度? ## 课后测验 [课后测验](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/22) ## 复习与自学 * 在[维基百科地理坐标系统页面](https://wikipedia.org/wiki/Geographic_coordinate_system)上阅读更多关于地理坐标的信息。 * 在[维基百科本初子午线页面](https://wikipedia.org/wiki/Prime_meridian#Prime_meridian_on_other_planetary_bodies)上了解地球以外其他天体的本初子午线。 * 研究由欧盟、日本、俄罗斯、印度和美国等世界各国政府和政治联盟开发的各种GPS系统。 ## 作业 [调查其他GPS数据](assignment.md) **免责声明**: 本文档使用AI翻译服务 [Co-op Translator](https://github.com/Azure/co-op-translator) 进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原文档的原始语言版本为权威来源。对于关键信息,建议使用专业人工翻译。因使用本翻译而引起的任何误解或误读,我们概不负责。