2025年12月16日火曜日

u-blox M10 測位頻度改善

ちょっと前に買った中華激安 GPS ロガーに載っている u-blox M10 という GNSS チップ,公称 10Hz で測位できるはずだが,測位してから数分経つと測位頻度が 6-8Hz 程度に低下することに気づいた.
不思議なことに室内での実験ではなかなか再現せず,車内 & 自作 Android アプリで頻発するので,自作 Android アプリの問題かと思ったが,PC <--> GPS ロガーでも測位頻度が低下していることを確認.
ということでこの GPS ロガーの実力であることが確定(;´д⊂)

改めて M10 のデータシートを眺めてみると,

  • 測位処理は MCU が行っており,捕捉する衛星数が多いと更新頻度が落ちる
    • アジア地域は BeiDou (中国のやつ) が多いので測位頻度は落ちがち
  • High Performance Mode という MCU クロックを上げる設定を行うと,測位頻度は上げられる

らしい.

まずは High Performance Mode に設定してみたが,見た感じ変わってなさそう.
あんま変わらなかったのでやり方は詳しくは書かないが,ここの P13 に書いてある.

で次なる作戦.

  • BeiDou を無効化する.これだけで捕捉衛星が 3/5 くらいになる.
  • 不要な NMEA センテンス出力を無効化する
  • ただし自作アプリ以外ではそれらを無効化しないほうが良いので,本体 Flash への設定は行わず,電源 On の間だけ有効な設定にする

そのための設定は割と簡単で,UBX protocol なるものが公開されていて,適切なバイナリデータを Bluetooth 経由で書き込めば良い.
詳しくはこれを見れば全部載っている.GGA, GSA, GSV センテンスを止めて,BeiDou を使用しない設定をする Kotlin コードはこんな感じ.

で実際にやってみた結果,10Hz 出たヽ(´ー`)ノ
あと BeiDou を無効化することによる測位精度がどうなるか調べた結果 (上図の青: BeiDou 有り,橙: 無し),全く問題なかった.
BeiDou 有りの方はやはり所々ポイントが抜けているのが気になる.この座標情報からラップタイムを計算するから,ポイントが抜けていないほうがいいので,BeiDou 無しで運用することにした.

2025年12月6日土曜日

中華激安 GPS レシーバーは DG-PRO1S の代わりになるか?

■PhotoMate 887 (GPS ロガー) が壊れた...

GPS データロガーとしてずっと使ってきた PhotoMate 887 が壊れた.
で今 GPS ロガーを買うとしたら DG-PRO1S (約1.6万円) になるが,アリエクで似たような GPS ロガーを送料込み ¥3,065 で Get.
DG-PRO1S は u-blox M8 という GPS チップが載っている (らしい) が,こいつは上位? 後継? の M10 が載っていて,10Hz, Bluetooth 対応,みちびき対応ということで見た目の性能は DG-PRO1S と全く同じ.

■測位間隔を 10Hz にする設定手順

初期状態では 1Hz 間隔の測位なので,まずは PC で 10Hz に設定する必要がある.
(1) GPS レシーバの USB を PC ではなくて USB 充電器やモバイルバッテリーに接続する (これ重要!)
(2) GPS レシーバと PC を Bluetooth でペアリングする.PIN は 0000.
(3) u-blox u-center2 をダウンロード・インストールして起動.u-blox のアカウントを作る必要がありめんどくさいが,諦めてアカウント作ってツールでログインする.

(4) 左の LSI アイコン→+ を押すと,接続する GPS と通信するための COM ポート選択画面が現れる.Bluetooth ペアリングすると通常 2個の COM ポートが作られるが,どっちで通信できるかは人によるので,どちらか選んで Add device を押す.

(5) 通信成功したら GPS 衛星測位情報や,測位した位置の地図等が表示できる.失敗したら別の COM ポートで試す.

(6) 左上の歯車→Advanced configulation→CFG-RATE→MEAS で GPS 更新頻度が設定できる.Value を 100,RAM/BBR/Flash にチェック,Set をクリック,Send をクリックすると GPS レシーバに設定できる.
※後日追記: 捕捉する衛星数が多いと測位頻度が下がることがわかったので,BeiDou を無効化したほうが良さそう.設定は Advanced configulation→CFG-SIGNAL→BDS_ENA の Value を False にする.

■測位精度を検証

で実際にこれがモータースポーツ用データロガーとして使える精度があるのか調べてみた.一辺 300m ほどの区画をなるべく同じラインで何周か周回したところ,ほぼ完璧にラインが重なっている.これならサーキットユースでも問題なし.
こいつは汎用的な Bluetooth GPS レシーバなので,Android の RaceChrono でも何の問題もなく使用できた.

■結論: これは買い

中華製はスペック詐称しているものもあって販売ページ通りのものが届くか賭けだったが,色々試した限りスペック通りで,GPS チップも M10 が載ってそう (HARDWARE=000A0000) だし,QZSS (みちびき) もちゃんと捕捉している.
コスパを考えたらかなりの当たりヽ(´ー`)ノ