樹莓派 GPS 時間校正

Microsecond accurate NTP with a Raspberry Pi and PPS GPS - Austin's Nerdy Things


以下為根據原文內容整理的繁體中文總結:

容易懂 (Easy Know)

想像一下,你家裡的所有時鐘和手錶平時都是透過網路來對時,但網路傳送資料需要一點點時間,所以時間通常會差個千分之一秒(毫秒)。雖然這對人類來說根本感覺不出來,但對於講求極致精準的電腦極客來說還不夠好!這篇文章教大家用一台小巧又便宜的迷你電腦「樹莓派」,接上一個像手錶晶片大小的 GPS 衛星接收器。衛星上有全世界最準的原子鐘,接收器每整整一秒就會發出一次微小的電流訊號(稱為 PPS)。樹莓派抓到這個訊號後,就能把家裡的時鐘校準到「百萬分之一秒」(微秒)以內,讓你在家就能擁有一座跟衛星完全同步的超精準時間伺服器!


總結 (Overall Summary)

本指南介紹如何使用低成本的硬體設備,在家中自行搭建達到微秒(Microsecond,0.000001 秒)級別精度的第一層級(Stratum 1)網路時間協定(NTP)伺服器。一般家用或辦公電腦預設透過網際網路的時間伺服器同步時間,受限於網路延遲與抖動,誤差通常落在 10 至 20 毫秒(Millisecond)之間。對於一般日常使用而言已相當足夠,但透過結合樹莓派(Raspberry Pi 3 或 4)與支援每秒脈衝(Pulse Per Second, PPS)的 GPS 接收模組(如 Adafruit Ultimate GPS 或廉價的 GT-U7),即可將時間精準度大幅提升一千倍以上。

文章詳盡說明了完整的軟硬體建置流程。硬體方面,僅需透過 5 條杜邦線將 GPS 的電源、接地、UART 串列傳輸(TX/RX)以及 PPS 腳位連接到樹莓派的 GPIO(預設使用 GPIO 18)。軟體層面,作者建議採用 Chrony 取代傳統的 NTPd,因為 Chrony 無需額外重新編譯即可良好支援 PPS,且時間收斂與同步速度更快。系統需啟用 Linux 核心的 pps-gpio 模組,並透過 GPSd 守護行程解讀 GPS 輸出的 NMEA 時間與定位數據,最後在 Chrony 設定檔中將 PPS 與 NMEA 綁定為本地參考時鐘。

實際測試顯示,系統重啟後 Chrony 能在一分鐘內將偏差收斂至微秒以內,穩定運作時與衛星時間的偏移量甚至僅有數百奈秒(Nanosecond)。作者亦指出,系統時脈的長期穩定度會受到樹莓派周圍環境溫度、處理器負載高低造成的晶片發熱,以及 GPS 天線收訊品質(如現代節能低輻射玻璃會阻擋 GPS 訊號)等物理因素影響。整體而言,這是一套低成本、高度實用且不依賴外部網際網路連線,即可提供極致精準時間校對的自建方案。


觀點 (Viewpoints)

  • PPS 訊號是突破網路時間精準度瓶頸的關鍵:傳統 NTP 透過網際網路傳輸,不可避免會受網路延遲浮動影響(通常在數十毫秒);而 GPS 模組硬體輸出的 PPS 訊號可直接觸發樹莓派的中斷處理,將校時精度一舉推進至微秒乃至奈秒級別。
  • 選擇 Chrony 取代傳統 NTPd 可大幅降低建置門檻:在 Raspberry Pi OS 上,傳統 NTPd 預設未啟用 PPS 支援,需要手動重新編譯原始碼;Chrony 原生支援 PPS 且同步收斂速度顯著更快,是更現代且穩定的替代方案。
  • 低成本單板電腦完全能勝任 Stratum 1 頂級時間伺服器:時間校對服務對運算效能的要求極低,不論是樹莓派 2、3、4 甚至 Zero 系列,搭配不到 15 美元的 GPS 模組,就能達到媲美昂貴商業級時間伺服器的效果。
  • 物理環境因素對硬體時脈穩定性有顯著干擾:樹莓派主機板上的石英震盪器會隨溫度劇烈波動。室內氣溫變化、冷氣對流或 CPU 高負載發熱,都會直接反映在時鐘頻率偏移(PPM)上,若要追求極致穩定,溫控或改用溫補晶振(TCXO)是後續進階方向。
  • 建築遮蔽與材質可能嚴重影響衛星收訊:留言討論中證實,現代建築常見的低輻射(Low-E)雙層鍍膜玻璃會強烈屏蔽 GPS 射頻訊號,導致模組無法取得衛星定位(Fix)與 PPS 訊號,天線擺設位置在實務上極具關鍵性。

摘要 (Abstract)

  • 📌 本文教學利用樹莓派與具備 PPS 功能的 GPS 模組,自建微秒級精度的 Stratum 1 NTP 時間伺服器。
  • ⏱️ 一般電腦透過網際網路 NTP 對時的誤差約 10~20 毫秒,引入 GPS PPS 訊號後可縮小 1,000 倍,達到微秒(甚至數百奈秒)級別。
  • 🛠️ 硬體僅需樹莓派、GPS 接收模組(如 GT-U7 或 Adafruit GPS)、天線及 5 條連接線,花費親民且組裝快速。
  • ⚙️ 軟體端利用 Linux 核心的 pps-gpio 驅動,搭配 GPSd 讀取衛星數據,並透過 Chrony 進行高精準度時鐘校正。
  • ✅ Chrony 在啟動後約一分鐘內即可完成同步收斂,使本地時鐘與 GPS 衛星時間的誤差降至 1 微秒以下。
  • 🔌 該系統具備離線獨立運作能力,在完全沒有外網連線的封閉區域網路中,依然能持續提供高精度的時間基準。
  • ⚠️ 樹莓派的晶片負載發熱與環境室溫波動,是導致石英震盪器產生時脈漂移(Clock Drift)的主要物理原因。
  • 📡 GPS 模組必須成功鎖定衛星位置才能產生有效的 PPS 訊號,若天線隔著金屬鍍膜節能玻璃可能導致訊號完全中斷。

問題測驗 (FAQ)

問題一

在進行高精度時間同步時,硬體輸出的「PPS」代表什麼意思?

  • A) Packets Per Second(每秒封包數)
  • B) Pulse Per Second(每秒脈衝)
  • C) Position Precision System(定位精準系統)
  • D) Protocol Ping Synchronization(協定延遲同步)

正確答案:B
解釋
:PPS 代表「Pulse Per Second(每秒脈衝)」,GPS 模組在每整秒的瞬間會輸出一個極為精準的硬體電位訊號,供電腦進行微秒級的時鐘同步。

問題二

作者在此專案中推薦使用 Chrony 而不是預設的 NTPd,主要原因是什麼?

  • A) NTPd 無法在樹莓派的 Linux 系統上安裝
  • B) Chrony 同步收斂速度較快,且預設原生支援 PPS 而無需自行重新編譯
  • C) Chrony 可以在沒有 GPS 模組的情況下自動猜測出奈秒級時間
  • D) NTPd 會大幅增加樹莓派的硬體發熱與功耗

正確答案:B
解釋
:文中提及 Chrony 相較於 NTPd 能更快鎖定並校準時間,且 Raspbian 內建的 NTPd 預設未啟用 PPS 功能(需要下載原始碼重新編譯),Chrony 則能直接支援。

問題三

讀者在留言反饋中發現 GPS 天線原本在窗邊運作正常,但在更換新窗戶後突然收不到衛星訊號且 PPS 超時,其最可能的原因為何?

  • A) 樹莓派的 GPIO 腳位因靜電短路燒毀
  • B) 新窗戶的 Low-E 低輻射金屬鍍膜玻璃阻擋了 GPS 射頻訊號
  • C) GPSd 軟體自動升級後與舊版模組不相容
  • D) 衛星系統剛好在更換窗戶當天停止維護

正確答案:B
解釋
:讀者經查證確認,新安裝的雙層玻璃含有 Planitherm XN 低輻射金屬薄膜,該金屬層會屏蔽射頻(RF)訊號,導致室內的 GPS 天線無法接收衛星訊號,將天線移至室外後即恢復正常。


https://austinsnerdythings.com/2021/04/19/microsecond-accurate-ntp-with-a-raspberry-pi-and-pps-gps/

Summarized by 小濃縮David888.com


Original Source