インターネットが無くなっても、自律して時間を刻めるようにおうちの内にntpサーバーを設置する事にしました。
なぜ正確な時間が必要かというと、Mac mini G4で動かしている「猫のお留守番」という自作アプリでFMラジオのエアーチェックをしているからです。
40年ほど前にタイマーでカセットテープにエアーチェックしていた頃は、1分くらい前に始めて1分くらい余計に録音するようにしていましたが、正確な時間のおかげで猫のお留守番はジャストで開始と停止をしても問題なくエアーチェックできます。
ntpdはネット経由での時間同期も出来ますが、GPSなどのリファレンスクロックをソースにして時間同期する事も出来るように作られています。
GPSをリファレンスクロックに使う場合は時間情報のシリアル信号(NMEA)とは別に1秒毎のPPSという信号を使い、その信号をFreeBSDのカーネルに入れて時間同期をしています。JJYの方は時間情報のシリアル信号を元に時間同期します。
秋月電子でみちびき対応のモジュールが発売されて、当時PPSの出力があるモジュールで最安値だったので購入して壱台目のサーバーを構築しました。GPSアンテナの下に鉄板を敷くとよいということなので、モルトウイスキーの箱をぶった切って、おまじないを作ってみました。
AitendoでJJYモジュールが39円のセールになったときにこれを購入し弐台目のサーバーを構築しました。 デコーダーはAVRで自作しました。
Amazonで安いu-bloxのGPSモジュールを購入して三台目のサーバーを構築しました。このモジュールはPPSの端子はありませんが、LEDにPPSが出ているのでそこから拾っています。
ハムフェアでジャンクのドイツのDCF用の電波時計が手に入りそのままでは使えないので、改造してJJY用にして四台目のサーバを構築しました。
リファレンスクロックがstratum0(st0)と呼ばれ、それが接続されたサーバがst1となります。st1にネットワークでつながるサーバがst2となります。
あまりちゃんと理解していませんが、富士通さんが書かれたNTPの資料にst1は4台あることが望ましいというような事が書かれていました。
st2は一つのst1に対し同期するのですが、st1を選択するアルゴリズムは謎が深いです。
当初不安定でいろいろいじったところ最近では結構安定していて、安定するといじる必要がなくなり、ちょっとつまらなかったりもします。
今年は夏に落雷で15分くらいの停電がありました。そのときは全て停止してしまいました。また復帰はリアルタイムクロックがなく、起動後は1970年になってそのままntpdを上げると落ちるので、手動で上げる必要がありました。
すべてRT3050というMIPSのSOC上のFreeBSDで動かしています。一つあたり5V 300mAくらいなので、四台でも蛍光灯一本にも満たないと思います。
JJYはNICTさんが管理していて、電波の送信所は福島の40KHzと九州の60Khzがあります。60KHzも受信してみたいのですが受信は出来るもののリファレンスに使うにはアンテナなどの調整が必要で難易度高く、あきらめました。JJYなモジュールは50cm場所を変えただけでも数値に表れ非常にセンシティブです。パソコンなどの電子機器はノイズの発生源で、ポータブルのAMラジオでもノイズが確認できます。普通の電波時計ももちろん同じなので置き場所は十分注意した方が良いです。
GPSとJJYともに電波なので、刻々と状態が変わってきますが、平均JitterがGPSが15usでJJYが10msとほぼ1000倍くらい精度が違いがあります。JJYの二台はおおよそ同じ傾向が見受けられますが、GPSの方はスパイクの出方はバラバラです。
GPSのアンテナは秋月のモジュールは直付けなので室内にあり、u-bloxの物は伸ばして室外にあります。台風が来た時に雨戸を閉めたところ秋月のモジュールは受信できなくなっていました。
「その万に一つに備えるのが俺達の仕事だろうが」by太田功