ラズベリーパイでNTP ST1 完結編
前回ラズベリーパイ Pi3でGPSでSt1 NTPserverって記事を書きました。詳しくはみれもらえれば良いかなと思いますが、
掻い摘まんで書くと
- GPSモジュールの安定度が低くすぐGPSを見失ってしまう(GPSのアンテナを外にだしたい)
- PPSがとれていない事で、時刻同期品質のJitterが2桁~3桁で正確な値を刻んでいるとは言いがたい
さてと、大分我慢していたのですが、つい買っちゃいました。
はい。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構築は終了します。