GPS時刻をナノ秒で配る——ESP32-P4でつくる PTP グランドマスタークロック

NTPの精度は数ミリ秒だが、PTPはナノ秒オーダーを狙える。Hackadayで取り上げられたDIYプロジェクトから、時刻同期の仕組みを考える。


時刻の同期という話をすると、「NTPで十分じゃないか?」という話になりがちだ。確かに NTP で 10ms 以内には収まる。それで多くの用途は済む。

でも「10ms」を「十分」とみなせない場面が確かにある。科学計測、高速な分散システム、精密なロボット制御——こういった用途では、マイクロ秒どころかナノ秒単位で時刻が揃っていないといけないことがある。

そこで登場するのが PTP(Precision Time Protocol)、IEEE 1588 として標準化されたプロトコルだ。


NTPとPTPで精度の差はどこで生まれるのか

NTP はOSのソフトウェアスタック上でタイムスタンプを打つ。パケットを受け取って処理してタイムスタンプを記録するまでに、カーネルのスケジューリングやネットワークスタックの処理が挟まる。この遅延が数ms〜数十msのジッタとして残ってしまう。

PTP はここを根本から変える。タイムスタンプを Ethernet コントローラーのハードウェアレベルで打つ。パケットが NIC に到達した瞬間に直接時刻を記録するので、OS のジッタが乗らない。これがナノ秒精度を実現できる理由だ。

ただし、対応した Ethernet コントローラーが必要になる。ここが「ハードウェアサポートが必要」という意味で、ソフトウェアだけでどうにかなるものじゃない。


GNSSが時刻基準として強い理由

PTP グランドマスタークロック(ネットワーク内の時刻源)には、信頼できる絶対時刻が必要だ。GNSS はその用途に向いている。

GPS 衛星は原子時計を搭載しており、送信する信号には精密な時刻情報が含まれている。受信機で信号の伝播遅延を補正すると、サブマイクロ秒単位の絶対時刻を得られる。天文台や計量標準機関が使う外部基準と比べると精度は劣るが、DIY の時刻源としては十分すぎるくらいだ。

信号は宇宙から来るし、基準は世界中どこでも同じ。ネットワーク越しに時刻を取りに行くよりずっとシンプルだ、と思う。


ESP32-P4 というチョイス

Hackaday(2026-07-08)で取り上げられたのは、Cristiano Monteiro による DIY PTP グランドマスタークロックだ。

面白いのは ESP32-P4 を選んだ理由だ。Monteiro によれば、PTP のハードウェアタイムスタンプをサポートする初めての「手が届く価格」のチップだという。従来の ESP32 シリーズは NTP には使えても、PTP のハードウェアサポートには対応していなかった。ESP32-P4 でその壁が下がった。

構成はシンプルだ。GNSS モジュールが絶対時刻を供給し、ESP32-P4 が PTP マスターとしてローカルネットワークに時刻を配る。ケースは OpenSCAD で設計して 3D プリント、フロントパネルにはステータスを示す LED が並ぶ。商用の PTP 機器と比べればコストは桁違いに安い。


精密タイミングに対応したチップが安価になると、実験や計測システムを DIY で組む敷居がかなり下がる。「ナノ秒の精度なんて自分には関係ない」と思っていたものが、趣味の話として視野に入ってくる感じがする。

GNSS の時刻信号がハードウェアタイムスタンプを経由してネットワーク全体に広がる——その情報の流れは、なかなか美しいんじゃないかな。

— ランキン

出典

一次情報(プロジェクト報告)

プロジェクトの詳細な仕様・性能数値は著者・制作者の報告に基づく。独立した計測・検証はこれから。

コメント

まだコメントはないよ。最初のひとことをどうぞ。