跳至主要内容

位置追蹤

本課程的概述手繪圖

手繪圖由 Nitya Narasimhan 提供。點擊圖片查看大圖。

課前測驗

課前測驗

簡介

將食物從農民運送到消費者的主要過程包括將農產品裝箱上卡車、船隻、飛機或其他商業運輸工具,並將食物運送到某個地方——直接送到客戶,或送到中央樞紐或倉庫進行處理。從農場到消費者的整個端到端過程是供應鏈的一部分。以下來自亞利桑那州立大學 W. P. Carey 商學院的視頻更詳細地介紹了供應鏈的概念及其管理方式。

什麼是供應鏈管理?來自亞利桑那州立大學 W. P. Carey 商學院的視頻

🎥 點擊上方圖片觀看視頻

添加物聯網設備可以大大改善您的供應鏈,使您能夠更好地管理物品的位置,計劃運輸和貨物處理,並更快地應對問題。

當管理一隊車輛(如卡車)時,知道每輛車在特定時間的位置是很有幫助的。車輛可以配備 GPS 傳感器,將其位置發送到物聯網系統,使車主能夠確定其位置,查看其行駛路線,並知道它們何時到達目的地。大多數車輛在 WiFi 覆蓋範圍之外運行,因此它們使用蜂窩網絡來發送這類數據。有時 GPS 傳感器內置於更複雜的物聯網設備中,如電子日誌。這些設備跟踪卡車的行駛時間,以確保司機遵守當地的工作時間法律。

在本課程中,您將學習如何使用全球定位系統 (GPS) 傳感器追蹤車輛的位置。

在本課程中,我們將涵蓋:

連接車輛

物聯網正在通過創建連接車輛的車隊來改變貨物的運輸方式。這些車輛連接到中央 IT 系統,報告其位置和其他傳感器數據。擁有一隊連接車輛有很多好處:

  • 位置追蹤 - 您可以隨時確定車輛的位置,使您能夠:

    • 當車輛即將到達目的地時收到警報,以準備卸貨人員
    • 定位被盜車輛
    • 將位置和路線數據與交通問題結合起來,使您能夠在旅途中重新規劃車輛路線
    • 遵守稅收規定。一些國家根據車輛在公共道路上行駛的里程數收取費用(如新西蘭的 RUC),因此知道車輛何時在公共道路上行駛與私人道路上行駛,使計算應繳稅款變得更容易。
    • 知道在發生故障時將維修人員派往何處
  • 司機遙測 - 能夠確保司機遵守速度限制,以適當的速度轉彎,提前有效地剎車,並安全駕駛。連接車輛還可以配備攝像頭來記錄事件。這可以與保險掛鉤,為優秀司機提供優惠費率。

  • 司機工作時間合規 - 確保司機根據他們啟動和關閉引擎的時間僅在法定允許的時間內駕駛。

這些好處可以結合起來——例如,將司機工作時間合規與位置追蹤結合起來,如果司機在法定駕駛時間內無法到達目的地,則重新規劃路線。這些還可以與其他車輛特定的遙測數據結合起來,例如來自溫控卡車的溫度數據,如果當前路線會導致貨物無法保持在適當溫度,則重新規劃車輛路線。

🎓 物流是將貨物從一個地方運送到另一個地方的過程,例如從農場經過一個或多個倉庫運送到超市。農民將西紅柿裝箱,裝上卡車,運送到中央倉庫,然後裝上可能包含不同類型農產品的第二輛卡車,然後運送到超市。

車輛追蹤的核心組件是 GPS——可以在地球上任何地方確定其位置的傳感器。在本課程中,您將學習如何使用 GPS 傳感器,首先學習如何在地球上定義位置。

地理空間坐標

地理空間坐標用於定義地球表面上的點,類似於如何使用坐標在計算機屏幕上繪製像素或在十字繡中定位針腳。對於單個點,您有一對坐標。例如,美國華盛頓州雷德蒙德的微軟園區位於 47.6423109, -122.1390293。

緯度和經度

地球是一個球體——一個三維圓。由於這一點,點是通過將其分為 360 度來定義的,與圓的幾何形狀相同。緯度測量從北到南的度數,經度測量從東到西的度數。

💁 沒有人真正知道為什麼圓被分為 360 度的最初原因。維基百科上的度 (角) 頁面 涵蓋了一些可能的原因。

從北極的 90°,到北極和赤道之間的 45°,到赤道的 0°,到赤道和南極之間的 -45°,到南極的 -90° 的緯度線

緯度是使用環繞地球並與赤道平行的線來測量的,將北半球和南半球分為各 90°。赤道位於 0°,北極位於 90°,也稱為北緯 90°,南極位於 -90°,或南緯 90°。

經度是測量東西方向的度數。經度的 0° 原點稱為本初子午線,並於 1884 年被定義為從北極到南極穿過英國格林威治皇家天文台的一條線。

從本初子午線以西的 -180°,到本初子午線的 0°,到本初子午線以東的 180° 的經度線

🎓 子午線是一條從北極到南極的假想直線,形成一個半圓。

要測量一個點的經度,您需要測量從本初子午線到穿過該點的子午線沿赤道的度數。經度從 -180°(或西經 180°)到本初子午線的 0°,再到 180°(或東經 180°)。180° 和 -180° 指的是同一點,即反子午線或第 180 條子午線。這是一條位於地球另一側的子午線。

💁 反子午線不應與國際日期變更線混淆,後者大致位於相同位置,但不是一條直線,並且會根據地緣政治邊界進行調整。

✅ 做一些研究:嘗試找到您當前位置的緯度和經度。

度、分和秒與十進制度

傳統上,緯度和經度的度數測量是使用六十進制數字系統或基數 60 進行的,這是一種由進行首次時間和距離測量和記錄的古巴比倫人使用的數字系統。您每天可能都在使用六十進制而不自覺地意識到它——將小時分為 60 分鐘,將分鐘分為 60 秒。

經度和緯度以度、分和秒為單位測量,其中一分為 1/60 度,一秒為 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 的微軟園區

全球定位系統 (GPS)

GPS 系統使用多顆環繞地球運行的衛星來定位您的位置。您可能在不知不覺中使用過 GPS 系統——在您的手機上使用 Apple 地圖或 Google 地圖等地圖應用查找您的位置,或在使用 Uber 或 Lyft 等叫車應用查看您的乘車位置,或在您的車輛中使用衛星導航 (sat-nav)。

🎓 “衛星導航”中的衛星是 GPS 衛星!

GPS 系統通過多顆衛星發送信號,每顆衛星的當前位置和準確的時間戳來工作。這些信號通過無線電波發送,並由 GPS 傳感器中的天線檢測到。GPS 傳感器將檢測這些信號,並使用當前時間測量信號從衛星到達傳感器所需的時間。由於無線電波的速度是恆定的,GPS 傳感器可以使用發送的時間戳來計算傳感器與衛星之間的距離。通過結合至少 3 顆衛星的數據和發送的位置,GPS 傳感器能夠確定其在地球上的位置。

💁 GPS 傳感器需要天線來檢測無線電波。內置 GPS 的卡車和汽車中的天線通常安裝在擋風玻璃或車頂上,以獲得良好的信號。如果您使用的是單獨的 GPS 系統,例如智能手機或物聯網設備,則需要確保內置於 GPS 系統或手機中的天線能夠清晰地看到天空,例如安裝在擋風玻璃上。

通過知道傳感器到多顆衛星的距離,可以計算出位置

GPS 衛星環繞地球運行,不是固定在傳感器上方的點,因此位置數據包括海拔高度以及緯度和經度。

GPS 曾經受到美國軍方強制執行的精度限制,精度限制在約 5 米。這一限制在 2000 年被取消,允許精度達到 30 厘米。由於信號干擾,獲得這種精度並不總是可能的。

✅ 如果您有智能手機,啟動地圖應用並查看您的位置有多準確。您的手機可能需要一段時間來檢測多顆衛星以獲得更準確的位置。

💁 衛星包含非常準確的原子鐘,但由於愛因斯坦的特殊和廣義相對論預測的速度增加導致時間變慢,與地球上的原子鐘相比,每天漂移 38 微秒(0.0000038 秒)——衛星的運行速度比地球的自轉速度快。這種漂移已被用來證明特殊和廣義相對論的預測,並且必須在 GPS 系統的設計中進行調整。實際上,GPS 衛星上的時間運行得更慢。

GPS 系統已由多個國家和政治聯盟開發和部署,包括美國、俄羅斯、日本、印度、歐盟和中國。現代 GPS 傳感器可以連接到大多數這些系統,以獲得更快和更準確的定位。

🎓 每個部署中的衛星組被稱為星座。

讀取 GPS 傳感器數據

大多數 GPS 傳感器通過 UART 發送 GPS 數據。

⚠️ UART 在項目 2,課程 2中介紹過。如有需要,請參考該課程。

您可以在物聯網設備上使用 GPS 傳感器來獲取 GPS 數據。

任務 - 連接 GPS 傳感器並讀取 GPS 數據

按照相關指南使用您的物聯網設備讀取 GPS 數據:

NMEA GPS 數據

當您運行代碼時,您可能會在輸出中看到似乎是亂碼的東西。這實際上是標準的 GPS 數據,並且它都有意義。

GPS 傳感器使用 NMEA 消息輸出數據,使用 NMEA 0183 標準。NMEA 是美國國家海洋電子協會的縮寫,這是一個設置海洋電子設備之間通信標準的美國貿易組織。

💁 這個標準是專有的,售價至少為 2,000 美元,但由於有足夠的信息在公共領域,大多數標準已被逆向工程並可用於開源和其他非商業代碼。

這些消息是基於文本的。每條消息由一個以 $ 字符開頭的句子組成,後跟 2 個字符以指示消息的來源(例如美國 GPS 系統的 GP,俄羅斯 GPS 系統的 GN),以及 3 個字符以指示消息的類型。消息的其餘部分是以逗號分隔的字段,以換行符結尾。

可以接收的一些消息類型包括:

類型描述
GGAGPS 定位數據,包括 GPS 傳感器的緯度、經度和海拔高度,以及計算此定位的衛星數量。
ZDA當前日期和時間,包括當地時區
GSV可見衛星的詳細信息——定義為 GPS 傳感器可以檢測到信號的衛星

💁 GPS 數據包括時間戳,因此您的物聯網設備可以從 GPS 傳感器獲取時間,而不是依賴於 NTP 服務器或內部實時時鐘。

GGA 消息使用 (dd)dmm.mmmm 格式包括當前位置,以及一個字符以指示方向。格式中的 d 是度數,m 是分鐘,秒數是分鐘的小數。例如,2°17'43" 將是 217.716666667——2 度,17.716666667 分鐘。

方向字符可以是 NS 表示緯度的北或南,EW 表示經度的東或西。例如,緯度為 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 數據:


🚀 挑戰

編寫您自己的 NMEA 解碼器!與其依賴第三方庫來解碼 NMEA 句子,您能否編寫自己的解碼器來從 NMEA 句子中提取緯度和經度?

課後測驗

課後測驗

回顧與自學

作業

調查其他 GPS 數據