2か月前くらいにふと「GPSでNTPサーバー作りたい!」という気分になり色々買ったんですが、すぐにやる気を失い放置していました。
最近、モノを片づけたら買ったのが出てきて、この頃時間もできたのでやってみるかと思い作業を始めましたが、すごい苦労したので記事にします。
買ったのはこちら。
すでに在庫切れですがよくあるGPSシールドです。1999円でした。で、これがすごい面倒な代物でした。
大きさは、ちょうどラズパイ3の上に乗るくらいです。
まず、「記事の内容が古い」。今のOSバージョンにあっていないので、やらなくてよい作業とか書いてあります。あと、「説明が足りない」。実は、シールドとしてラズパイに取り付けただけではだめで、別の所から出ているピンと配線しなくてはなりません。
こんな感じ。UARTのTXとRXに配線します。
で、なんとかGPS信号は取り出せたのですが、最後に「PPS信号も取り出せるはずなのにどこにも説明がない」。で、「調べても情報がない」ときたもんだ。一般的なGPSシールドだと、GPIO18ピンに信号が入るらしいのですがなんかうまくいかない。もしかしたら時間が経たないと信号取り出せないのかもしれないがよくわからん。
ここで考えた。「わざわざ別のピンから配線するのだから、ラズパイに取り付けなくてもよいのではなかろうか」と。そんなわけで、取り外して配線してみました。
あとは、別の記事を参考に、OS側に必要最小限の変更を加えたところ動いたんですよ。
learn.adafruit.com
qiita.com
mirahouse.jp
denor.jp
nyanchew.com
qiita.com
kassyjp.ninja-web.net
nezuku.hatenablog.com
参考にさせてもらった記事をすべて貼ります。
5つピンがあるんですが、5V・GND・TX・RX・PPSというのをそれぞれ結線するんですな。で、PPSはGPIO18ピンに入れるのが普通と。あとはgpsdとntpでなんとかなります。
gpsmonというコマンドでリアルタイム監視できます。
うまく電波を受信できるとこうなります。Yの文字が複数でたらOKですね。
ppsの信号も入るとこうなります。
ntpデーモンがうまく動くと、Windowsの時刻同期先としても設定できます。
ほんとうは「.local」は使ってはいけないらしいので、今は「ntp.lan」にしています。
今はこんな感じ。
この記事のようにきちんと調整してやらなくてはいけないんですが、まだそこまではできていません。
「ntpq -p」コマンドを実行するとこんな感じになりますね。
まあ今回学んだことは、「いくら安物でも、いちおう押さえている部分は押さえているのでなんとか調べればできる」ですかね。
今は、「ラズパイ3を使っているので有線LANが100Mbpsなので、ラズパイ4に置き換えたいなあ」というのと「OSはUbuntu Serverでできないかなあ」というところですかね。あと、「配線を楽にしたい」もあるか。配線については目途がたったので、別記事にします。