PR

GT-502MGG-NとATGM336Hの使い方|Raspberry Pi Pico 2 WとMicroPythonでGPSを受信して2台を比較

ハードウェア制御 / 電子工作
PICO MODULE LAB / GPS VOL.1
スポンサーリンク

GT-502MGG-NとATGM336HをPico 2 Wで比べる|この記事で試したこと

こんにちは。ニンジンです🥕

GPS受信モジュールを2つ手に入れたので、Raspberry Pi Pico 2 W(以下 Pico 2 W)につないで同時に動かし、どこまで違いが出るのか比べてみました。

  • GT-502MGG-N(秋月電子):GPS・GLONASS・Galileo・みちびき。アンテナ一体型で、ケーブルの先がバラ線になっているタイプ
  • ATGM336H(Amazon):GPS・北斗(中国の衛星)・みちびき。小さな基板に外付けアンテナをつなぐタイプ

この記事(第1回)では、配線とMicroPythonでの受信のしかた、データを記録するロガーの作り方、そして同じ場所に置きっぱなしにしたときの精度の比較までをまとめます。

この記事の結論

  • 測位に使う衛星の数はATGM336Hが多い(北斗が15機前後見える)
  • 1機ごとの信号の強さはGT-502MGG-Nが上(平均で約6.6dB強い)
  • 屋外に置きっぱなしなら、どちらも中心から1m前後に収まる。窓際だと、2台の位置が13〜15mも食い違った
  • Pico 2 WのMicroPythonは小数(float)が単精度なので、緯度経度をfloatで扱うと約1.4m刻みに丸められる

第2回では、この2台を車に積んで通勤路を走り、トンネルでの粘り強さなどを比べる予定です。

確認環境

項目内容
マイコンRaspberry Pi Pico 2 W(Pico 2 WH)
ファームウェアMicroPython v1.28.0(2026-04-06版、RP2350)
開発環境Thonny 5.0.0(Windows)
データの集計パソコンのPython 3(pandas・matplotlib)

スポンサーリンク

GT-502MGG-NとATGM336Hの違い(対応衛星・データシート・-5N/-6N)

項目GT-502MGG-NATGM336H
形アンテナ一体型(ケースに入った完成品)小型基板+外付けアンテナ(IPEX端子)
チップMediaTek MT3333($PMTK コマンド)中科微电子 AT6558(CASIC、$PCAS コマンド)
対応する衛星(今回の出力で確認)GPS/GLONASS/Galileo/みちびきGPS/北斗/みちびき
電源電圧3〜5.5Vモジュール本体は2.7〜3.6V(基板にレギュレータあり)
測位精度(仕様)2.5m2.5m(CEP50)
初期の通信速度9600bps9600bps
更新間隔1秒1秒
接続先バラ線5本(VCC・GND・TXD・RXD・PPS)ピンヘッダ(VCC・GND・TXD・RXD・PPS)
価格2,980円(秋月電子)1,385円(Amazon、購入時)
データシート秋月電子の商品ページからPDFメーカー(Zhongke Micro)の「ATGM336H-5N User Manual」

GT-502MGG-Nは、秋月電子の仕様では北斗(BeiDou)にも対応となっています。ただ、今回の出力には北斗の衛星は出てきませんでした。初期設定では使っていないようです。

GT-502MGG-N。ケースの中にアンテナが入っている
▲ GT-502MGG-N。ケースの中にアンテナが入っている
裏には3Mの両面テープ
▲ 裏には3Mの両面テープ
先バラ線は5本。赤=VCC、黒=GND、橙=TXD、緑=RXD、茶=PPS
▲ 先バラ線は5本。赤=VCC、黒=GND、橙=TXD、緑=RXD、茶=PPS

ATGM336Hの基板とバックアップ電池

ATGM336Hの基板には、モジュール本体(ATGM336H-5N-31)のほかに、アンテナ端子、EEPROM、小さなバックアップ電池、電源レギュレータ、電源LEDが載っています。電池の刻印から、セイコーの充電式の小型リチウム電池(MS414など)と思われます。

ATGM336Hの基板の表。中央がモジュール本体(ATGM336H-5N-31)
▲ ATGM336Hの基板の表。中央がモジュール本体(ATGM336H-5N-31)
基板の裏。左上がIPEXのアンテナ端子、その下が小さなバックアップ電池、右上がEEPROM
▲ 基板の裏。左上がIPEXのアンテナ端子、その下が小さなバックアップ電池、右上がEEPROM

この電池が衛星の情報を覚えておいてくれるので、電源を切っていた時間が短ければすぐに測位できます。ただし容量が小さく、長く切ると覚えていられません(TTFFの表を参照)。

  • 1時間ほどのOFFなら記憶が残り、数秒で測位
  • 一晩OFFにすると時計までリセットされ、測位に40秒ほどかかる

GT-502MGG-Nも同じような傾向でした。

ATGM336H-5Nと-6Nの違い

ATGM336Hには、型番の後ろに「-5N」「-6N」が付くものがあります。

  • -5N:今回使ったシリーズ。チップはAT6558。メーカーのマニュアルでは、末尾の数字で対応する衛星が分かれていて、-5N-3Xが「GPS+北斗」です。手元の「-5N-31」も、実際の出力はGPSと北斗でした(みちびきはGPSと同じ扱いで出てきます)
  • -6N:新しい世代のチップ(AT6668)を使ったシリーズで、GLONASSやGalileoにも対応した型番があると紹介されています(メーカーの資料は未確認)

Amazonなどで買うときは、商品名ではなくモジュールに印刷された型番を見るのが確実です。


スポンサーリンク

用意するもの(GT-502MGG-N・ATGM336H・Raspberry Pi Pico 2 W ほか)

今回使った部品一式。左からGT-502MGG-N、ATGM336H(アンテナ付き)、Freenoveの端子台付きブレークアウトボード+Pico 2 W、ブレッドボード、モバイルバッテリー、持ち出し用のタッパー
▲ 今回使った部品一式。左からGT-502MGG-N、ATGM336H(アンテナ付き)、Freenoveの端子台付きブレークアウトボード+Pico 2 W、ブレッドボード、モバイルバッテリー、持ち出し用のタッパー
GPS受信機 シリアル出力タイプ(先バラ)みちびき対応 1PPS出力付 GT-502MGG-N
必須

ケース入り・アンテナ一体型で、アンテナの向きを気にせず置ける

GPS受信機 シリアル出力タイプ(先バラ)みちびき対応 1PPS出力付 GT-502MGG-N

比較する1台目。MediaTek MT3333搭載で、今回はGPS・GLONASS・Galileo・みちびきを使っていました。1機ごとの信号の強さは2台の中で上でした。

みちびき対応1PPS出力先バラ線5本
ATGM336H GPS+BDS デュアルモードモジュール(アンテナ付き)
必須

北斗が見えるぶん、測位に使える衛星が多い

ATGM336H GPS+BDS デュアルモードモジュール(アンテナ付き)

比較する2台目。小さな基板に外付けのパッチアンテナをつなぐタイプです。手元に届いたのはATGM336H-5N-31(GPS+北斗)でした。アンテナは表裏に注意。

GPS+北斗IPEXアンテナバックアップ電池
ヘッダー ハンダ付け済み Raspberry Pi Pico 2WH
必須

UARTが2つあるので、GPSを2台同時につなげる

ヘッダー ハンダ付け済み Raspberry Pi Pico 2WH

今回のマイコン。ピンヘッダー実装済みのモデルです。UART0とUART1に1台ずつGPSをつなぎ、MicroPythonで記録しました(筆者はPico 2 Wで動作確認)。

UART×2MicroPython
Freenove Raspberry Pi Pico 1/2 W H WH用ブレイクアウトボード
あると便利

ネジ端子なので、持ち出しても線が抜けにくい

Freenove Raspberry Pi Pico 1/2 W H WH用ブレイクアウトボード

Picoを挿すだけで、全ピンがネジ端子とピン名の印字付きで引き出されます。GPSの先バラ線を留めることもできます(第2回では端子台につなぐ予定)。

ネジ端子ピン名印字
ブレッドボード 400穴
必須

1本しかない3.3VとGNDを、2台に分ける

ブレッドボード 400穴

Picoの3V3(OUT)とGNDを2台のGPSに分けるのに使いました。小さいのでタッパーにも収まります。

はんだ付け不要
ELEGOO 120pcs 多色デュポンワイヤー
必須

オス-オス・オス-メス・メス-メスがそろって、たいていの配線に使える

ELEGOO 120pcs 多色デュポンワイヤー

ATGM336Hのピンヘッダとブレッドボード・Picoの間の配線に使用。被膜付きの線より、こちらのほうが確実です。

3種類×40本多色

このほか、屋外で動かすためのモバイルバッテリー(手持ちのもの)と、持ち出し用のケースとしてダイソーのタッパーを使いました。

USBケーブルについて

Pico 2WHはmicro USBです。充電専用のケーブルだとPCがPicoを認識しないので、データ通信対応のケーブルを使ってください。

※リンクはアフィリエイトを含みます。価格・在庫・同梱内容は変わることがあるので、購入前に各商品ページをご確認ください。


スポンサーリンク

GPSモジュールとPico 2 Wの配線(UART0/UART1に2台接続)

2台を同時に使うので、Pico 2 Wの2つのハードウェアUARTに1台ずつつなぎます。

配線図。赤=3.3V、黒=GND、橙=GPS→Pico、緑=Pico→GPS。PPSはつないでいない
▲ 配線図。赤=3.3V、黒=GND、橙=GPS→Pico、緑=Pico→GPS。PPSはつないでいない
GPS側GT-502MGG-N の線の色Pico 2 W(GT-502MGG-N)Pico 2 W(ATGM336H)
VCC赤3V3(OUT)(36番ピン)3V3(OUT)(36番ピン)
GND黒GNDGND
TXD橙GP1(UART0 RX)GP5(UART1 RX)
RXD緑GP0(UART0 TX)GP4(UART1 TX)
PPS茶未接続未接続

ポイントは2つです。

  • TXとRXは交差させる。GPSのTXD(送信)はPicoのRX(受信)へ、GPSのRXD(受信)はPicoのTX(送信)へつなぎます
  • 3V3(OUT)の隣は3V3_EN。ここにつなぐとPicoの電源が切れるので、1つずれないように注意します

3.3Vは1本しかないので、ブレッドボードで2台に分けています。

実際の配線の全体
▲ 実際の配線の全体
3V3(OUT)は36番ピン。隣の37番(3V3_EN)と間違えない
▲ 3V3(OUT)は36番ピン。隣の37番(3V3_EN)と間違えない
ブレッドボードで3.3VとGNDを2台に分ける
▲ ブレッドボードで3.3VとGNDを2台に分ける
ATGM336Hのピン表記
▲ ATGM336Hのピン表記
小さなつまずき

最初、手元にあったホルマル線(エナメル線)で配線したら、ATGM336Hから1行も届きませんでした。先端の被膜の削り残しが原因で、普通のジャンパー線に替えたらすぐ受信できました。被膜付きの線を使うときは、テスターで導通を確認してから使いましょう。

最初に使ったホルマル線
▲ 最初に使ったホルマル線

スポンサーリンク

MicroPythonでNMEAを受信する(GGA・RMC・GSVの読み方)

受信確認用のプログラム

Pico 2 WにMicroPythonを書き込み、Thonnyで動かします。ThonnyのインストールとMicroPythonの書き込みは、こちらの記事で画面つきで説明しています。

🥕 Thonnyの準備はこちら ラズパイPico WとDHT11で温湿度を測定する方法|配線図とMicroPythonコード Thonnyのインストールと、Pico WへのMicroPythonの書き込み(BOOTSEL)を画面付きで解説しています。 →

この記事のプログラムは、まとめてダウンロードできます。

この記事のプログラム一式

📦 gps001-code.zip をダウンロード

Picoで動かすファイルは pico/ フォルダに、記録したCSVをパソコンで集計するスクリプトは pc/ フォルダに入っています。

受信の確認には、次の2つのファイルをPicoに保存します。

  • nmea.py:受信した文字列を読み取る部品(チェックサムの確認など)
  • test_uart.py:2台から届いた行を、そのまま画面に表示する
# test_uart.py(抜粋)
PORTS = [("GT502", 0, 0, 1), ("ATGM ", 1, 4, 5)]   # 名前, UART番号, TX, RX

def open_auto(uid, tx, rx):
    # 9600 → 115200 の順に試し、チェックサムが合う行が読めた速度を使う
    for baud in (9600, 115200):
        u = UART(uid, baudrate=baud, tx=Pin(tx), rx=Pin(rx), rxbuf=4096)
        ...

通信速度を自動で選ぶようにしているのは、後で作るロガーが通信速度を115200bpsに上げるためです。GPSがその設定を覚えていることがあるので、どちらでも読めるようにしています。

Thonnyで実行(F5)すると、1秒ごとにこんな行が流れてきます。

GT502 $GNGGA,014627.000,36xx.xxxx,N,139xx.xxxx,E,...
GT502 $GPGSV,...
ATGM  $GNGGA,014627.000,36xx.xxxxx,N,139xx.xxxxx,E,1,08,2.0,...
ATGM  $BDGSV,3,1,11,...

(緯度経度は伏せています)

NMEAの読み方

GPSモジュールが出しているのは NMEA 0183 という形式の文字列です。$ で始まり、* の後ろの2文字はチェックサムです。先頭の2文字は衛星の種類(GN=複数の衛星の組み合わせ、GP=GPS、GL=GLONASS、GA=Galileo、BD=北斗)を表します。

よく使うのは次の4種類です。

種類中身主な項目
GGA測位の結果時刻、緯度経度、品質(0=未測位、1=測位、2=補正あり、6=推定)、使用衛星数、HDOP、標高
RMC最低限の航法データ状態(A=有効/V=無効)、速度、進行方向、日付
GSA測位に使っている衛星衛星番号の一覧、PDOP・HDOP・VDOP
GSV見えている衛星衛星番号、仰角、方位、信号強度(C/N0)

この記事のロガーが使うのは、GGA・RMC・GSVの3つです(HDOPはGGAから取っています)。

HDOPは衛星の配置の良さを表す数字で、小さいほど良い配置です。C/N0は信号の強さで、40dB-Hzを超えればかなり良好です。

電源を入れてから測位するまで

ATGM336Hの電源を入れてから測位するまでを追うと、4段階で進むのが分かります。

test_uart.pyの実行画面(緯度経度はぼかしています)
▲ test_uart.pyの実行画面(緯度経度はぼかしています)
ATGM336Hが測位するまでの4段階(test_uart.pyの出力から抜粋)
▲ ATGM336Hが測位するまでの4段階(test_uart.pyの出力から抜粋)
  1. 何も分からない:時刻も位置も空欄。品質0
  2. 時刻と衛星の配置が分かる:時刻が出て、GPS 8機・北斗 11機の仰角と方位が分かる
  3. 仮の位置:品質が 6(推定) になり、位置が出始める。まだ「仮」の扱い
  4. 測位完了:品質 1。GPS 4機+北斗 4機で測位

時刻が出てから測位まで、約7秒でした。このあと数分かけて使う衛星が増え、HDOPは0.5〜0.6まで良くなります。

ちなみにこのとき、GT-502MGG-Nは実行した時点ですでに測位していました。約1時間電源を切っていただけなので、前回の衛星の情報が残っていたようです。

2台の出力の違い

同じNMEAでも、2台の出力には違いがあります。

GT-502MGG-Nの測位後の出力。$GPGSVの中に、みちびき(193〜195番)が混ざっている
▲ GT-502MGG-Nの測位後の出力。$GPGSVの中に、みちびき(193〜195番)が混ざっている

GT-502MGG-N

  • 起動直後に $PMTK011,MTKGPS という行が出る。MediaTek系のチップだと分かる
  • みちびきは $GPGSV(GPSの一覧)の中に193〜195番として混ざって出る。みちびきはGPSと互換の信号を出しているためです
  • 長く電源を切った後は、日付が1980年1月5日(GPSの基準日のころ)から数え始める
  • 緯度経度は「分」の小数が4桁

ATGM336H

  • 北斗用の $BDGSV が出る。北斗は15機前後見えていた
  • $GPTXT,...ANTENNA OK でアンテナがつながっているかを教えてくれる
  • GSVの末尾に ,0 が付くなど、NMEA 4.1という新しめの形式
  • みちびきは199番(静止軌道の機体と思われる)も見えていた
  • 緯度経度は「分」の小数が5桁。止まっているときの速度は常に0.00

スポンサーリンク

ATGM336Hのアンテナの向き(表裏)で衛星数が変わる

最初、ATGM336Hは測位に使う衛星が12〜13機、HDOPは1.0前後と、GT-502MGG-Nより明らかに悪い結果でした。

原因はアンテナの向きです。付属のパッチアンテナは、ベージュのセラミックの面が表(空に向ける側)、金属のカバーがある緑の基板側が裏です。結束バンドで2台をまとめたときに、裏を上にして固定していました。

アンテナの表。ベージュのセラミックの面を空に向ける
▲ アンテナの表。ベージュのセラミックの面を空に向ける
アンテナの裏。金属のカバーがある緑の基板側
▲ アンテナの裏。金属のカバーがある緑の基板側
裏を上にして固定していたときの様子
▲ 裏を上にして固定していたときの様子

向きを直したら、測位に使う衛星は18〜19機に増え、HDOPは0.7まで良くなりました。みちびきも測位に使うようになりました。


スポンサーリンク

GPSロガーの作り方(CSV保存・9600bps→115200bpsへの変更)

タッパーに入れて持ち出す。電源はモバイルバッテリー

▲ タッパーに入れて持ち出す。電源はモバイルバッテリー

画面に流すだけでは比べられないので、2台のデータを1秒ごとにCSVファイルに記録する main.py を作りました。nmea.py と一緒にPicoに保存すると、電源を入れるだけで動きます。

主な機能は次のとおりです。

  • 電源を入れると自動で記録開始(パソコンなしで、モバイルバッテリーだけで動く)
  • 2台のGGA・RMC・GSVをまとめて、1秒×1台=1行で記録(log_NNN.csv)
  • 測位の開始・ロスト・復帰などは、別ファイル(ev_NNN.csv)に記録
  • BOOTSELボタンで記録の停止・再開
  • 基板のLEDで状態を表示(点灯=2台とも測位、1秒ごとに点滅=どちらか未測位、速い点滅=データが来ない・空き容量不足)

記録する項目はこちらです。

pico_ms,module,date,utc,quality,status,lat,lon,alt_m,sats_used,hdop,speed_kmh,course,sats_view,sats_tracked,cn0_avg,view_detail

記録を始めてから、いくつかつまずきました。

9600bpsでは送りきれない:通信速度を115200bpsに上げる

最初は初期設定の9600bpsのまま記録していたのですが、7分ほどでGT-502MGG-Nの時刻が実際より 約9秒遅れて いました。

計算してみると理由が分かります。

  • 9600bpsで1秒に送れるのは、約960バイト(1文字10ビット)
  • GT-502MGG-NはGPS・GLONASS・Galileoの3種類のGSV(みちびきはGPSの行に含まれる)を出すので、1秒分のNMEAが約1,100バイトある

送るデータのほうが多いので、少しずつ遅れがたまっていきます。そこで起動時に、2台へ通信速度を115200bpsに変えるコマンドを送るようにしました。

MODULES = [
    # 名前, UART番号, TX, RX, 115200bpsに切り替えるコマンド
    ("GT502", 0, 0, 1, "PMTK251,115200"),  # GT-502MGG-N(MediaTek系)
    ("ATGM",  1, 4, 5, "PCAS01,5"),        # ATGM336H(5 = 115200bps)
]

コマンドにもチェックサムが必要なので、nmea.py の make_cmd() で $ と *XX を付けて送っています。切り替えたあとは時刻の遅れがなくなり、50分近く止まらずに記録できました。

ただし、長く電源を切っていたあとの起動では、GT-502MGG-Nがコマンドを受け付けず、9600bpsのままになることがありました。起動直後はまだ準備ができていないようです。そこで配布版の main.py では、GPSが出力を始めるのを待ってからコマンドを送り、切り替わらなければ3回まで再試行するようにしています。どの速度で動いたかは ev_NNN.csv に baud,115200 try1 のように残ります。

もう1つ、ファイルに書き込んでいる間は受信が止まり、行が欠けることがありました。GPSは毎秒の頭にまとめてデータを送ってくるので、受信が静かになったすき間でファイルに書き込むようにして解決しています。


スポンサーリンク

MicroPythonのfloatは単精度:緯度経度が約1.4m刻みに丸められる

記録したデータで位置のバラつきを散布図にしたところ、点が 東西方向に約0.9m・約1.8m間隔の縦の列 に並びました。

修正前の散布図。点が縦の列に並んでいる
▲ 修正前の散布図。点が縦の列に並んでいる

GPSの誤差でこんなにきれいに並ぶはずがありません。原因は、Pico 2 WのMicroPythonの小数(float)が単精度だったことです。単精度の有効数字は約7桁なので、経度139度台だと小数点以下5桁ほどしか表せません。

Pico 2 Wで試してみました(値は説明用のものです)。

Pico 2 Wで単精度floatを確かめた結果
▲ Pico 2 Wで単精度floatを確かめた結果
x = 139.76712350
print(x)                       # → 139.76714
print("{:.8f}".format(x))      # → 139.76714000   入れた値とずれる
print(x + 0.000001 == x)       # → True           約9cm分を足しても変わらない

表示された 139.76714 は、入れた値より0.00002度(約1.8m)大きくなっています。単精度で表せるいちばん近い値は 139.76712036 なので、それよりもさらにずれています。数字を読み込むときや文字にするときの計算でも、誤差が加わっているようです。

経度139度台は約1.4m刻み(0.0000153度)、緯度36度台は約0.4m刻みでしか表せません。パソコンのPython(倍精度)では起きないので、最初は気づきませんでした。

散布図の列が1.4mではなく0.9mと1.8mの間隔になったのは、修正前のロガーの書き出し方が原因です。

  • 単精度では、経度139度台は約1.4m刻み(0.0000153度)でしか表せない
  • 修正前のロガーは "{:.7f}".format(lon) で書き出していたが、意味のある桁は小数5桁(0.00001度=約0.9m)までで、残りは0になる(例:139.7671200。上の画面の最後の行が、修正前と同じ書き方で出した結果です)
  • 約1.4m刻みの値を約0.9m単位で丸めるので、隣どうしの差が約0.9mと約1.8mを交互にくり返した

そこで、緯度経度は floatを使わずに整数で計算して、文字列のまま記録する ように直しました。

def _deg_str(value, hemi):
    # "13946.02741" のような「度分」を、整数だけで小数8桁の「度」に変換する
    ...
    frac = value[dot + 1:]
    k = len(frac)
    d = int(value[:dot - 2])                                   # 度
    m_units = int(value[dot - 2:dot]) * 10**k + (int(frac) if frac else 0)  # 分(整数化)
    v = d * 10**8 + (m_units * 10**8 + 30 * 10**k) // (60 * 10**k)
    return "{}{}.{:08d}".format(sign, v // 10**8, v % 10**8)
print(nmea._deg_str("13946.02741", "E"))   # → 139.76712350  正確

MicroPythonの整数は桁数の上限がないので、10の8乗を掛けても丸めは起きません。


スポンサーリンク

2台を定点で比較(衛星数・HDOP・C/N0・誤差)

測った条件

タッパーに入れて車のボンネットの上に置いた
▲ タッパーに入れて車のボンネットの上に置いた
項目内容
日時2026年10月16日 18:16〜18:32
場所屋外、車のボンネットの上
周り南10mと西15mに2階建ての建物。北と東は車
電源モバイルバッテリーで単体動作
集計した区間記録開始から3〜14.5分(約11分、2台×690秒分)

結果

項目GT-502MGG-NATGM336H
測位に使った衛星数(中央値)2225
HDOP(中央値)0.550.60
平均信号強度 C/N042.3 dB-Hz35.7 dB-Hz
中心からのずれ(50%)0.45 m0.56 m
中心からのずれ(95%)0.97 m1.65 m
電源ONから測位まで(TTFF)14秒26秒

TTFFは、直前に電源を切っていた時間で大きく変わります。何回か測った値を並べるとこうなります。

直前の電源OFFGT-502MGG-NATGM336H
約20分約3秒約2秒
約1時間(窓際)実行時にはすでに測位済み約7秒(時刻が出てから)
定点テストの回(上の表)14秒26秒
一晩(車内)37秒41秒
2日(車内)29秒28秒

数分〜1時間のOFFなら数秒〜20秒台、一晩以上切ると30〜40秒ほどかかります。この点は2台とも同じでした。なお「車内」の2行は、第2回の走行テストのときにフロントガラス越しで測った値です。

衛星数・信号強度・HDOPの推移
▲ 衛星数・信号強度・HDOPの推移

衛星数はATGM336H、信号の強さはGT-502MGG-Nが上です。受信していた衛星の内訳を見ると、違いがよく分かります。

  • GT-502MGG-N:GPS 9/GLONASS 8/Galileo 4/みちびき 2
  • ATGM336H:GPS 9/北斗 15/みちびき 3

ATGM336Hは北斗だけで15機受信しています。

一方、信号強度は平均で約6.6dBの差がありました。アンテナの大きさの違いが効いているようです(GT-502MGG-Nはケースの中にアンテナがあり、ATGM336Hの指先ほどのパッチアンテナより大きいとみられます)。

位置のバラつき

置きっぱなしにしたときの位置のバラつき(中心からの距離。丸が大きいほど長くその位置にいた)
▲ 置きっぱなしにしたときの位置のバラつき(中心からの距離。丸が大きいほど長くその位置にいた)

どちらも、95%の点が中心から1〜1.7m以内に収まりました。

おもしろいのは点の並び方です。

  • GT-502MGG-N:格子状の点。約12秒に1回、0.15〜0.18mずつ跳ぶように動く
  • ATGM336H:ヘビのようになめらかな線。毎秒1〜2cmずつ漂う

これは、出力する緯度経度の桁数の違いです。GT-502MGG-Nは「分」の小数が4桁なので、緯度方向で約0.18mより細かい動きは出せません。ATGM336Hは5桁なので、約2cm単位で出てきます。丸めを直す前の散布図では、この違いは見えませんでした。

なお、2台の位置は同じ時刻どうしで中央値4.3mずれていました(ATGM336Hのほうが西に約4m)。どちらが正しいかは、この比較だけでは分かりません。

窓際ではどうか

最初のテストは、室内の窓際にアンテナを置いて行いました。このときは2台の位置が13〜15mずれ、ずれる方向も毎回変わりました。屋外では2台の差が4m前後で安定し、それぞれのバラつきも中心から2m以内に収まったので、正しく比べるなら屋外です。


スポンサーリンク

GPSモジュールが測位しない・ずれるときのよくある質問(FAQ)

QGPSモジュールをつないだのに、Thonnyに何も表示されません。

AまずTXとRXが交差しているか(GPSのTXD→PicoのRX)を確認してください。VCCは3V3(OUT)(36番ピン)で、隣の37番(3V3_EN)ではありません。test_uart.py は9600bpsと115200bpsを自動で試すので、どちらでも読めない場合は、まず配線と電源を疑ってください。被膜付きの線を使っているときは、テスターで導通も確かめてください。

Q室内だと測位しない、または位置が大きくずれます。

A今回、窓際では2台の位置が13〜15m食い違い、ずれる方向も毎回変わりました。屋外では2台の差が4m前後で安定し、それぞれのバラつきも中心から2m以内に収まったので、比べるときは屋外がおすすめです。ATGM336Hは、パッチアンテナのベージュのセラミック面を空に向けてください。

Q電源を入れてから測位するまで、どのくらいかかりますか?

A直前に電源を切っていた時間で大きく変わりました。数分〜1時間のOFFなら数秒〜20秒台、一晩以上切っていたときは30〜40秒ほどです。この傾向は2台とも同じでした。

QATGM336Hでも、みちびきは使えますか?

A使えました。今回の定点テストでは、ATGM336Hはみちびきを3機、GT-502MGG-Nは2機受信していて、測位にも使っていました。ATGM336Hでは静止軌道の199番も見えていました。

QMicroPythonで緯度経度の精度が落ちるのはなぜですか?

APico 2 WのMicroPythonは小数(float)が単精度なので、経度139度台だと約1.4m刻みに丸められます。この記事では、NMEAの「度分」を整数だけで計算して、文字列のまま記録するようにしました(nmea.py の _deg_str())。


スポンサーリンク

まとめ

こんなときはおすすめ理由
とにかく手軽に使いたいGT-502MGG-Nケース入りで、アンテナの向きを気にしなくてよい
測位に使える衛星を増やしたいATGM336H北斗で衛星数が多く、ビルの間などで有利そう
1機ごとの信号の強さGT-502MGG-N平均で約6.6dB強い
細かい位置の動きを記録したいATGM336H緯度経度の桁数が1桁多い
みちびきどちらも可2台ともみちびきを測位に使っていた

置きっぱなしの比較では、どちらも1m前後の精度で大きな差はありませんでした。違いが出るのは、動いているときや、空が狭い場所だと思います。

次回は、この2台をタッパーに入れて車に積み、通勤路を走ってみます。トンネルの入口と出口での測位ロストや、走行中の衛星数の変化を比べます。

GPSモジュール比較シリーズ

  1. GT-502MGG-NとATGM336Hの使い方|Raspberry Pi Pico 2 WとMicroPythonでGPSを受信して2台を比較(この記事)
  2. GPSロガーのCSVを地図に表示する方法|Pico 2 WでGT-502MGG-NとATGM336Hを車に積んで走行・トンネル比較【Python・folium】

ニンジン🥕アイコン

Follow me on X

本ブログの中の人「ニンジン🥕」はXやってます。新着記事はいち早くポストでお知らせしているので、見逃したくない方は @ninjin_py_vba をフォローしてみてください🥕

@ninjin_py_vba をフォロー

この記事が役に立ったら、シェアしてもらえると嬉しいです🥕

Xでポスト はてブ LINE Pocket
まとめハブ
ハードウェア制御 / 電子工作
スポンサーリンク

コメント