• 木. 11月 21st, 2024

~下町物語~

入り組んだ現代社会に鋭いメスを入れ、おもしろおかしく書く綴るブログである。

この記事を読む およそ時間 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 performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
reboot

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

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

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

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

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

Translate »