# 位置追蹤 ![本課程的手繪筆記概覽](../../../../../translated_images/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.mo.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) > 🎥 點擊上方圖片觀看影片 添加物聯網(IoT)設備可以大幅改善供應鏈管理,幫助您了解物品的位置、更好地規劃運輸和貨物處理,並能更快速地應對問題。 在管理車輛車隊(如卡車)時,了解每輛車在特定時間的位置非常有幫助。車輛可以安裝 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 系統,報告其位置和其他感測器數據。擁有一個連網車輛車隊有許多好處: * **位置追蹤** - 您可以隨時精確定位車輛的位置,這樣可以: * 當車輛即將到達目的地時收到警報,為卸貨工作做好準備 * 定位被盜車輛 * 將位置和路線數據與交通問題結合,允許您在行駛途中重新規劃車輛路線 * 符合法規要求。例如,一些國家根據車輛在公共道路上的行駛里程收取稅費(如[紐西蘭的道路使用費](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°,到赤道的 0°,再到南極的 -90°](../../../../../translated_images/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.mo.png) 緯度是通過圍繞地球並與赤道平行的線來測量的,將北半球和南半球各分為 90°。赤道是 0°,北極是 90°,也稱為北緯 90°,南極是 -90°,或南緯 90°。 經度是測量東西方向的度數。經度的 0° 起點稱為*本初子午線*,於 1884 年被定義為一條從北極到南極穿過[英國格林威治皇家天文台](https://wikipedia.org/wiki/Royal_Observatory,_Greenwich)的線。 ![經線從本初子午線的 0°,到西經 -180°,再到東經 180°](../../../../../translated_images/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.mo.png) > 🎓 子午線是一條從北極到南極的假想直線,形成一個半圓。 要測量某一點的經度,您需要測量從本初子午線到穿過該點的子午線沿赤道的度數。經度範圍從 -180°(西經 180°),經過本初子午線的 0°,到 180°(東經 180°)。180° 和 -180° 指的是同一點,即反子午線或 180 度子午線。這是一條位於本初子午線對側的子午線。 > 💁 反子午線不應與國際日期變更線混淆,雖然它們大致位於相同位置,但國際日期變更線並不是一條直線,會根據地緣政治邊界進行調整。 ✅ 做一些研究:試著找出您目前位置的緯度和經度。 ### 度、分、秒與十進制度數 傳統上,緯度和經度的度數測量使用的是六十進制(sexagesimal)數字系統,這是一種由古巴比倫人使用的數字系統,他們最早測量並記錄了時間和距離。您可能每天都在使用六十進制而不自知,例如將小時分為 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"。 電腦不使用六十進制,因此在大多數電腦系統中,這些座標以十進制度數表示。例如,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.mo.png) ## 全球定位系統(GPS) GPS 系統利用多顆繞地球運行的衛星來定位您的位置。您可能在不知不覺中使用過 GPS 系統,例如在手機上的地圖應用(如 Apple 地圖或 Google 地圖)中查看您的位置,或者在叫車應用(如 Uber 或 Lyft)中查看車輛的位置,或者在車輛中使用衛星導航(sat-nav)。 > 🎓 衛星導航中的“衛星”指的就是 GPS 衛星! GPS 系統的工作原理是多顆衛星發送信號,信號中包含每顆衛星的當前位置和精確的時間戳。這些信號通過無線電波傳輸,並由 GPS 感測器中的天線接收。GPS 感測器會檢測這些信號,並根據當前時間測量信號從衛星到達感測器所需的時間。由於無線電波的速度是恆定的,GPS 感測器可以使用發送的時間戳計算感測器與衛星之間的距離。通過結合至少 3 顆衛星的數據和發送的位置,GPS 感測器能夠精確定位其在地球上的位置。 > 💁 GPS 感測器需要天線來檢測無線電波。內建 GPS 的卡車和汽車通常將天線安裝在擋風玻璃或車頂,以獲得良好的信號。如果您使用的是單獨的 GPS 系統,例如智能手機或物聯網設備,則需要確保 GPS 系統或手機內建的天線能夠清楚地看到天空,例如安裝在擋風玻璃上。 ![通過知道感測器與多顆衛星的距離,可以計算出位置](../../../../../translated_images/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.mo.png) GPS 衛星繞地球運行,並非固定在感測器上方,因此位置數據包括海拔高度(相對於海平面)以及緯度和經度。 GPS 曾經受到美國軍方的限制,準確度約為 5 米。這一限制於 2000 年被取消,現在 GPS 的準確度可達 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美元,但有足夠的信息已公開,使得大部分標準已被逆向工程並可用於開源和其他非商業代碼。 這些消息是基於文本的。每條消息由一個以`$`字符開頭的*句子*組成,後面是2個字符表示消息的來源(例如,美國GPS系統的GP,俄羅斯GPS系統GLONASS的GN),以及3個字符表示消息的類型。消息的其餘部分是用逗號分隔的字段,最後以換行符結束。 一些可能接收到的消息類型包括: | 類型 | 描述 | | ---- | ----------- | | 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) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵資訊,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。