GPS(GNSS)モジュール u-blox M8N で正確な時刻信号を作る(セットアップ編)
◆まえがき
最近の GPSレシーバーの性能はすごく良くなっているらしいので、Aliexpress からモジュールを買ってみました。なお、以下の記事ではGPSではなく GNSS と呼ぶことにします。
▼u-blox m8n 搭載モジュール GG-1802

値段は送料込みで$7.38です。 Aliexpress の商品のページはこちら
GNSS モジュールはいろいろな物が売られていて、どれを買えばいいのか良いか良く判りません。とりあえず今が一番旬のような雰囲気がして、購入数が多い物(とセラー)を選びました。
u-blox 社の製品名の命名ルールがよく判っていないのですが、下位の階層から書くと、ジェネレーションは m8n、チップパッケージは M8030-KTで、基板モジュール名は GG-1802という感じではないかと思います。なお基板モジュール名はTOPGNSS社の製品名だと思います。
ちなみにジェネレーションが 6 の世代だと2ドルくらいの安値で売られています。それって昔はトラ技のGPS特集でメインに解説されていて、aitendo でも2000円以上の値段が付いていたので今昔の感があります。なお、テクノロジが 8 でも単なる 8 と m8 は違うようなのですが、そのあたりがどう違うのかよく判らないです。あと現在の最新版は9です。
ともかくドローンンの普及に合わせ、高性能化、小型化、廉価化が急速に進んでいるようです。
▼GNSS モジュール到着

本物かどうか判らないですが、ともかく届きました。
▼ケースに入れた

モジュールのままでは使い難いので、USBシリアルインターフェイスを付けて、電波の反射板と一緒に小さなケースに入れました。
▼インターフェイス

右側から来ている線がGNSS モジュールからの配線です。ピンソケットを経由してシリアルインターフェイスと、1PPS信号取り出し用のBNCコネクタに振り分けました。なお、1PPS信号はポートの保護のために 1kΩの抵抗を通して引き出しました。
▼最終的な状態

GNSS モジュールは窓際、あるいは屋外に置かないといけません。一方で 1PPPS 信号は離れた場所で使うので、両者を接続するケーブルが必要になります。そこで、2m の BNCケーブル3本をアダプタで継ぎ足し、全長6mのケーブルにして 1PPS の信号を送るようにしました。そんなことで、モジュール自体はとても小さいのですが、使う時にはかなりの量のケーブルが必要になりました。
このモジュールは u-blox 社から提供されている u-center というソフトで動作確認や設定が出来ます。実際に GNSS を受信している様子が下の画面です。
▼u-center で動作確認 (図をクリックで別窓に拡大)

全天の半分しか見通せない状態(左上のSky view参照)なのですが、衛星を20個以上捕捉出来ています。EU のガリレオ、アメリカの GPS,、日本のみちびき (QZSS)、ロシアの GLONASS を同時受信出来ていてなかなか壮観です。
ちなみに設定を変えれば中国の北斗(beiDou)の受信も出来ますが、その場合はどれか(GLONASS?)の受信が出来なくなります。
ところで、こんなにたくさんのGNSS衛星が受信できるなら、日本のみちびきは無くても大丈夫な気がしてきます。位置の決定には受信ソフトが最適な位置関係にある衛星の組み合わせを自動的に選択するのですが、その様子を見ていると、みちびきが天頂付近にあっても選択されないことが結構あります。まあ無いよりはあった方が良いのは間違いありません。
あと、みちびきに関していろんな情報が公開されていますが、これを受信すれば数センチの測位精度がすぐにも得られるような書き方になっている資料がいっぱいあって、なんだかなーと思います。
◆GNSSモジュールの設定
このモジュールは買ったままの状態で u-center に接続すればすぐに GNSS の受信が出来ました。ただ、より多くの衛星を受信するためには設定の修正が必要です。
ということで修正のポイントを以下に書いておきます。なお、うろ覚えで書いた部分もあるので適宜修正していきます。あと、設定後はその内容を Send ボタンで書き込みます。また、次回起動時に有効にするためには、内部のフラッシュ?に書き込む操作が別途必要です。
1.シリアルのボーレート
View - Configration View (Ctrl + F9) - PRT の Baudrate の選定(プルダウン)を115200にする。
2.受信する衛星の種類
View - ConfigrationViwe (Ctrl + F9) - GNSSを選択

私の設定は上記の通りです。出来ない組み合わせを選ぶと自動的にチェックが外れます。
3.受信メッセージの設定
View - ConfigrationViwe (Ctrl + F9) - MSGを選択

これをやらないと、2項で選択しても受信されない衛星があります。
追記:Message は 01-30 NAV-SVINFO に設定(上図は間違っているかも?)
なお、この設定を行うと、TeraTermで受信データーを見ると文字化けする部分があります。バイナリーデーターが流れているのかも知れません。
4.パルス出力の設定
View - ConfigrationViwe (Ctrl + F9) - TP5を選択
Timepulse Settings から設定が可能。とりあえず以下の設定で使用しています。

アンロックの時は8Hz/50%の出力にしておくと、LEDが高速で点滅するので判り易いと思います。
ロックした時は1Hzで100msだけ消灯するようになります。なおコネクタに出ている信号はLEDが消灯している期間がHighレベルです。Rising Edge on TOS にチェックが入っているので、パルスの立ち上がりタイミングが秒の時刻の開始タイミングになるのだと思います。
なお、ここに高い周波数を設定することも可能なようで、100kHz くらいまではちゃんとパルスが出ていました。10MHz が出せると面白いのでそのうちやってみたいと思います。現在の状態ではケーブルの負荷が重く、さらに1KΩが入っているので、充分にドライブ出来ていない感じです。
◆まとめ
これで現在の(ほぼ)最新のGNSSレシーバーが動くようになりました。測位がとても早く、また 1PPS信号のジッタが 30ns とすごく小さくなっているのが嬉しい進歩です。
使い道はいろいろありますが、久しぶりにルビジウムオシレーターの確度確認でもやってみたいと思います。あとは、高精度RTCのDS3231の精度確認なども短時間に出来そうです。
そんなことでやりたいことはいっぱいあるのですが、おもちゃ病院で持ち帰ったものがいくつかあるので、そちらの処理が先です。
最近の GPSレシーバーの性能はすごく良くなっているらしいので、Aliexpress からモジュールを買ってみました。なお、以下の記事ではGPSではなく GNSS と呼ぶことにします。
▼u-blox m8n 搭載モジュール GG-1802

値段は送料込みで$7.38です。 Aliexpress の商品のページはこちら
GNSS モジュールはいろいろな物が売られていて、どれを買えばいいのか良いか良く判りません。とりあえず今が一番旬のような雰囲気がして、購入数が多い物(とセラー)を選びました。
u-blox 社の製品名の命名ルールがよく判っていないのですが、下位の階層から書くと、ジェネレーションは m8n、チップパッケージは M8030-KTで、基板モジュール名は GG-1802という感じではないかと思います。なお基板モジュール名はTOPGNSS社の製品名だと思います。
ちなみにジェネレーションが 6 の世代だと2ドルくらいの安値で売られています。それって昔はトラ技のGPS特集でメインに解説されていて、aitendo でも2000円以上の値段が付いていたので今昔の感があります。なお、テクノロジが 8 でも単なる 8 と m8 は違うようなのですが、そのあたりがどう違うのかよく判らないです。あと現在の最新版は9です。
ともかくドローンンの普及に合わせ、高性能化、小型化、廉価化が急速に進んでいるようです。
▼GNSS モジュール到着

本物かどうか判らないですが、ともかく届きました。
▼ケースに入れた

モジュールのままでは使い難いので、USBシリアルインターフェイスを付けて、電波の反射板と一緒に小さなケースに入れました。
▼インターフェイス

右側から来ている線がGNSS モジュールからの配線です。ピンソケットを経由してシリアルインターフェイスと、1PPS信号取り出し用のBNCコネクタに振り分けました。なお、1PPS信号はポートの保護のために 1kΩの抵抗を通して引き出しました。
▼最終的な状態

GNSS モジュールは窓際、あるいは屋外に置かないといけません。一方で 1PPPS 信号は離れた場所で使うので、両者を接続するケーブルが必要になります。そこで、2m の BNCケーブル3本をアダプタで継ぎ足し、全長6mのケーブルにして 1PPS の信号を送るようにしました。そんなことで、モジュール自体はとても小さいのですが、使う時にはかなりの量のケーブルが必要になりました。
このモジュールは u-blox 社から提供されている u-center というソフトで動作確認や設定が出来ます。実際に GNSS を受信している様子が下の画面です。
▼u-center で動作確認 (図をクリックで別窓に拡大)

全天の半分しか見通せない状態(左上のSky view参照)なのですが、衛星を20個以上捕捉出来ています。EU のガリレオ、アメリカの GPS,、日本のみちびき (QZSS)、ロシアの GLONASS を同時受信出来ていてなかなか壮観です。
ちなみに設定を変えれば中国の北斗(beiDou)の受信も出来ますが、その場合はどれか(GLONASS?)の受信が出来なくなります。
ところで、こんなにたくさんのGNSS衛星が受信できるなら、日本のみちびきは無くても大丈夫な気がしてきます。位置の決定には受信ソフトが最適な位置関係にある衛星の組み合わせを自動的に選択するのですが、その様子を見ていると、みちびきが天頂付近にあっても選択されないことが結構あります。まあ無いよりはあった方が良いのは間違いありません。
あと、みちびきに関していろんな情報が公開されていますが、これを受信すれば数センチの測位精度がすぐにも得られるような書き方になっている資料がいっぱいあって、なんだかなーと思います。
◆GNSSモジュールの設定
このモジュールは買ったままの状態で u-center に接続すればすぐに GNSS の受信が出来ました。ただ、より多くの衛星を受信するためには設定の修正が必要です。
ということで修正のポイントを以下に書いておきます。なお、うろ覚えで書いた部分もあるので適宜修正していきます。あと、設定後はその内容を Send ボタンで書き込みます。また、次回起動時に有効にするためには、内部のフラッシュ?に書き込む操作が別途必要です。
1.シリアルのボーレート
View - Configration View (Ctrl + F9) - PRT の Baudrate の選定(プルダウン)を115200にする。
2.受信する衛星の種類
View - ConfigrationViwe (Ctrl + F9) - GNSSを選択

私の設定は上記の通りです。出来ない組み合わせを選ぶと自動的にチェックが外れます。
3.受信メッセージの設定
View - ConfigrationViwe (Ctrl + F9) - MSGを選択

これをやらないと、2項で選択しても受信されない衛星があります。
追記:Message は 01-30 NAV-SVINFO に設定(上図は間違っているかも?)
なお、この設定を行うと、TeraTermで受信データーを見ると文字化けする部分があります。バイナリーデーターが流れているのかも知れません。
4.パルス出力の設定
View - ConfigrationViwe (Ctrl + F9) - TP5を選択
Timepulse Settings から設定が可能。とりあえず以下の設定で使用しています。

アンロックの時は8Hz/50%の出力にしておくと、LEDが高速で点滅するので判り易いと思います。
ロックした時は1Hzで100msだけ消灯するようになります。なおコネクタに出ている信号はLEDが消灯している期間がHighレベルです。Rising Edge on TOS にチェックが入っているので、パルスの立ち上がりタイミングが秒の時刻の開始タイミングになるのだと思います。
なお、ここに高い周波数を設定することも可能なようで、100kHz くらいまではちゃんとパルスが出ていました。10MHz が出せると面白いのでそのうちやってみたいと思います。現在の状態ではケーブルの負荷が重く、さらに1KΩが入っているので、充分にドライブ出来ていない感じです。
◆まとめ
これで現在の(ほぼ)最新のGNSSレシーバーが動くようになりました。測位がとても早く、また 1PPS信号のジッタが 30ns とすごく小さくなっているのが嬉しい進歩です。
使い道はいろいろありますが、久しぶりにルビジウムオシレーターの確度確認でもやってみたいと思います。あとは、高精度RTCのDS3231の精度確認なども短時間に出来そうです。
そんなことでやりたいことはいっぱいあるのですが、おもちゃ病院で持ち帰ったものがいくつかあるので、そちらの処理が先です。