popnja’s blog

日記風からハード中心に変わりました

放置していたGPSシールドを使おうとしたらすごい苦労した

2か月前くらいにふと「GPSでNTPサーバー作りたい!」という気分になり色々買ったんですが、すぐにやる気を失い放置していました。
最近、モノを片づけたら買ったのが出てきて、この頃時間もできたのでやってみるかと思い作業を始めましたが、すごい苦労したので記事にします。

買ったのはこちら。

www.amazon.co.jp

すでに在庫切れですがよくあるGPSシールドです。1999円でした。で、これがすごい面倒な代物でした。

f:id:kaias1jp:20211003083530j:plain
f:id:kaias1jp:20211003083558j:plain

大きさは、ちょうどラズパイ3の上に乗るくらいです。

wiki.keyestudio.com

まず、「記事の内容が古い」。今のOSバージョンにあっていないので、やらなくてよい作業とか書いてあります。あと、「説明が足りない」。実は、シールドとしてラズパイに取り付けただけではだめで、別の所から出ているピンと配線しなくてはなりません。

f:id:kaias1jp:20211003083657j:plain
f:id:kaias1jp:20211003083719j:plain

こんな感じ。UARTのTXとRXに配線します。

deviceplus.jp

で、なんとかGPS信号は取り出せたのですが、最後に「PPS信号も取り出せるはずなのにどこにも説明がない」。で、「調べても情報がない」ときたもんだ。一般的なGPSシールドだと、GPIO18ピンに信号が入るらしいのですがなんかうまくいかない。もしかしたら時間が経たないと信号取り出せないのかもしれないがよくわからん。
ここで考えた。「わざわざ別のピンから配線するのだから、ラズパイに取り付けなくてもよいのではなかろうか」と。そんなわけで、取り外して配線してみました。

f:id:kaias1jp:20211003084856j:plain
f:id:kaias1jp:20211003084915j:plain

あとは、別の記事を参考に、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でなんとかなります。

f:id:kaias1jp:20211003090050p:plain

gpsmonというコマンドでリアルタイム監視できます。

f:id:kaias1jp:20211003090156p:plain

うまく電波を受信できるとこうなります。Yの文字が複数でたらOKですね。

f:id:kaias1jp:20211003090259p:plain

ppsの信号も入るとこうなります。

ntpデーモンがうまく動くと、Windowsの時刻同期先としても設定できます。

f:id:kaias1jp:20211003090424p:plain

ほんとうは「.local」は使ってはいけないらしいので、今は「ntp.lan」にしています。

f:id:kaias1jp:20211003090950j:plain

今はこんな感じ。

k-hiura.cocolog-nifty.com

この記事のようにきちんと調整してやらなくてはいけないんですが、まだそこまではできていません。

f:id:kaias1jp:20211003091230p:plain

「ntpq -p」コマンドを実行するとこんな感じになりますね。

まあ今回学んだことは、「いくら安物でも、いちおう押さえている部分は押さえているのでなんとか調べればできる」ですかね。
今は、「ラズパイ3を使っているので有線LANが100Mbpsなので、ラズパイ4に置き換えたいなあ」というのと「OSはUbuntu Serverでできないかなあ」というところですかね。あと、「配線を楽にしたい」もあるか。配線については目途がたったので、別記事にします。