ラズベリーパイでNTP ST1 完結編

この記事を読む およそ時間 3

ラズベリーパイでNTP ST1 完結編

前回ラズベリーパイ Pi3でGPSでSt1 NTPserverって記事を書きました。詳しくはみれもらえれば良いかなと思いますが、
掻い摘まんで書くと

  • GPSモジュールのが低くすぐGPSを見失ってしまう(GPSのアンテナを外だしたい)
  • PPSがとれていない事で、時刻同期品のJitterが2桁~3桁で正確な値を刻んでいるとは言いがたい

ラズベリーパイ Pi3でGPSでSt1 NTPserver

さてと、大分我慢していたのですが、つい買っちゃいました。

はい。GPSモジュールキットですね。色々GPSモジュールキットは出ているのですが、何故これにしたか?色々理由はあるんです。

  • GPSの外付けのアンテナが出ていて欲しい
  • PPSの出力がある
  • ラズベリーパイと接続コネクタが同梱されてる(半田付けは自分でしなきゃなんですが)
  • バッテリーバックアップコネクタを要し、バッテリーを接続する事でラズパイがオフの時でも時間を保持する

ということで、この基板にしました。買ったのは、この基板とGPS外付けアンテナです。

ラズベリーパイにしてみましょう。

使って居たケースに全く入らなかったので、とりあえず上蓋を外して、ひとまず動作確認しています。黒い細いケーブルがでているのは、GPSの外付けのアンテナが接続されていて、窓際においてます。基板上にのっているのもGPSのアンテナだと思いますが、まあ、そちらは使いません。

流したコマンドは、下記の通りです。

  536  stty -F /dev/serial0 raw 9600 cs8 clocal -cstopb
  537  cat /dev/serial0
  538  sudo apt-get install gpsd gpsd-clients python-gps
  539  sudo systemctl stop gpsd.socket
  540  sudo systemctl disable gpsd.socket
  541  sudo systemctl enable gpsd.socket
  542  sudo systemctl start gpsd.socket
  543  sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock
 550  sudo vi /etc/default/gpsd
  556  sudo sh -c "echo 'dtoverlay=pps-gpio,gpiopin=4' >> /boot/config.txt"
  557  sudo apt-get install -y pps-tools
  562  sudo apt-get install -y libcap-dev
  565  sudo sh -c "echo 'server 127.127.28.0 minpoll 4 maxpoll 4 prefer' >> /etc/ntp.conf"
  566  sudo sh -c "echo 'server 127.127.28.0 minpoll 4 maxpoll 4 prefer' >> /etc/ntp.conf"
  567  sudo sh -c "echo 'fudge 127.127.28.0 time1 0.490 refid GPS' >> /etc/ntp.conf"
  568  sudo sh -c "echo 'server 127.127.22.0 minpoll 4 maxpoll 4' >> /etc/ntp.conf"
  569  sudo sh -c "echo 'fudge 127.127.22.0 flag3 1 refid PPS' >> /etc/ntp.conf"
  593  sudo ppstest /dev/pps0
  574  NTPVER=ntp-Ver*.**p*
  575  wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/${NTPVER}.tar.gz
  576  tar xfz ${NTPVER}.tar.gz
  577  cd ${NTPVER}
  578  sudo ./configure --enable-NMEA --enable-linuxcaps && sudo make &&sudo make install
  579  sudo cp /usr/local/bin/ntp* /usr/bin/
  580  sudo cp /usr/local/sbin/ntp* /usr/sbin/
  581  sudo service ntp stop
  582  ntpq -p
  583  sudo service ntp start

動作確認してみましょう

PPSがとれているかどうかを確認します。問題無くPPS信号が取れています。デバイスとしても認識されています。

ntpq -qの結果でも確認しましょう。

GPSとPPSのデバイスが見えている事を確認出来ますね。そして、SHMに*がついて居て同期がされていることが確認出来ますね。そして、PPSの先頭にはo文字がついてます。これは、PPSを使って補正をしているって事を表しています。この状態でGPSだけのJitterが19.808msであり、PPSは0.010msである事が分かります。PPSがどれだけの精度で動いて居るか分かると思います。

次にNTPのステータスを見て見ましょう

pi@ntp:~ $ ntpq -c rv
associd=0 status=0118 leap_none, sync_pps, 1 event, no_sys_peer,
version=”ntpd *.*.*p*@*.6243 Sat Sep 22 14:58:22 UTC 2018 (1)”,
processor=”armv7l”, system=”Linux/4.4.38-v7+”, leap=00, stratum=1,
precision=-20, rootdelay=0.000, rootdisp=1.030, refid=PPS,
reftime=df50ea32.3e2c4c0e Sun, Sep 23 2018 1:20:02.242,
clock=df50ea34.4295855e Sun, Sep 23 2018 1:20:04.260, peer=5140, tc=4,
mintc=3, offset=-0.003287, frequency=-9.791, sys_jitter=0.001926,
clk_jitter=0.003, clk_wander=0.001

stratumは、想定通りの1階層目で動作している事が分かりますね。そして、PPSで補正している事も分かりますね。

では、PPS対応した事でlocal環境のPC立ちはどうなったか見て行きましょう。

3番目に今回PPS対応したラズベリーパイがいますね。nict.goで今は同期していて、 mfeedとラズベリーパイが+で評価対象だと言ってます。Jitterが現時点では、nict.goが一番低い為、一番正確なNTPに同期したものと思われます。

ここからPPSのそこ力を垣間見る事になります。

Jitterは流動的なので、この確認した時にはラズベリーパイが一番低くラズベリーパイに同期した事が分かります。よしよし!とりあえず、local環境に設置したラズベリーパイが一番正確だと思ってもらったらしいです。

もう少し時間がたって見て見ると

もう独走態勢ですね。Jitterが0.160msと他の2つのNTPと比べても数倍の精度が出ている事が分かります。これで、local環境により正確な時計が同期出来るNTPserverが構築できました。

もう誰も勝てませんね。とりあえず、PPSがどれだけ精度を持っているか?お分かり頂けれたかと思います。0.069msのJitterです。ほぼ正確な時間を担保出来ている状況です。ケースがないのでむき出しですけどねw

最後のラズベリーパイの省電力機能を切って、フルパフォーマンスで動作させる仕様に変更後

sudo su –
echo > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
reboot

PPSのJitterが0.002とかになってますね。半端ないですね。

後は、安定度を見る為、このまま起動してGPSを見失わなければOK

という事で、明日ラズベリーパイを新しいケースに詰め替えて、アンテナ端子をちゃんと穴をけて取り付けてを外に設置すればいったん終わりです。問題無く稼働してくれると思っています。

先ほど外にGPSアンテナを設置してきました。

GPSの広う速度も速くなって、さらにGPSの同時受信している数も格段に増えました。これで、両面テープで固定したら今回のラズベリーパイでGPSによるナノレベルのST1構築は終了します。

Related posts