PR

GPSロガーのCSVを地図に表示する方法|Pico 2 WでGT-502MGG-NとATGM336Hを車に積んで走行・トンネル比較【Python・folium】

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

GPSロガーのCSVを地図に表示する|2台を車に積んで走った記録

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

第1回では、GT-502MGG-NとATGM336HをRaspberry Pi Pico 2 W(以下 Pico 2 W)につなぎ、置きっぱなしで精度を比べました。今回は同じロガーを車に積み、通勤路などを4回走って、走行中の違いを比べます。後半では、記録したCSVをPythonで地図に重ねる方法も紹介します。地図の手順だけ知りたい方は、GPSロガーのCSVを地図に表示する方法へ進んでください。

🛰️ 第1回はこちら GT-502MGG-NとATGM336Hの使い方|Raspberry Pi Pico 2 WとMicroPythonでGPSを受信して2台を比較 配線とMicroPythonのプログラム(ロガー)、屋外に置きっぱなしでの精度の比較をまとめています。 →

この記事の結論

  • 最初の走行では、GT-502MGG-Nが17回再起動した。原因は、ダッシュボードに置いただけで揺れていたことだとみられる。固定してからは、再起動が1回 → 0回 → 0回に減った
  • 走行中も、測位に使う衛星の数はATGM336H、信号の強さはGT-502MGG-Nが上(第1回と同じ傾向)
  • トンネルでは、ATGM336Hが入口で約5秒長く位置を出し続けた。出口ではほぼ同時に復帰した(1回分のデータ)
  • 記録したCSVは、Pythonのfoliumと地理院タイルで地図に重ねられる

確認環境

項目内容
マイコン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・folium)

スポンサーリンク

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

第1回と同じ部品です。配線とPicoのプログラムは、第1回で説明しています。

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

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

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

比べた1台目。MediaTek MT3333搭載です。走行中も4回とも、1機ごとの信号の強さはこちらが上でした。

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

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

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

比べた2台目。小さな基板に外付けのパッチアンテナをつなぐタイプです。走行中も4回とも、測位に使う衛星の数はこちらが多くなりました。アンテナは表裏に注意。

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を挿すだけで、全ピンがネジ端子とピン名の印字付きで引き出されます。4回目からは、GPSの信号線(TX・RX)をこのネジ端子に直接留めました。

ネジ端子ピン名印字
ブレッドボード 400穴
1〜3回目で使用

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

ブレッドボード 400穴

1〜3回目は、Picoの3V3(OUT)とGNDをブレッドボードで2台に分けていました(4回目からは端子台)。

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

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

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

ATGM336Hのピンヘッダと、ブレッドボード・Picoの間の配線に使いました。

3種類×40本多色

このほか、電源にモバイルバッテリー、持ち出し用のケースにダイソーのタッパーを使いました。4回目から使った端子台やコンデンサは、「再起動の対策」の節で紹介しています。

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


スポンサーリンク

測定条件(4回の走行)

第1回のロガーを、持ち運びしやすいようにタッパーに入れて車に積みました。置き方と配線は、各回の結果を見て次の回から変えています(理由は次の節で書きます)。条件が日によって違うので、比べるのは「同じ日の2台」だけにします。

回日時距離置き方電源の分け方GT-502MGG-Nの通信速度
1回目10/16 18:41〜19:02(日没後)約12.5kmダッシュボードに置いただけブレッドボード115200bps
2回目10/18 14:00〜14:29(トンネルあり)約15.7kmテープ固定ブレッドボード9600bps(切り替え失敗)
3回目10/19 07:56〜08:19約12.6kmテープ固定ブレッドボード9600bps(切り替え失敗)
4回目10/19 18:30〜18:51(日没後)約12.6kmテープ固定端子台+コンデンサ115200bps
  • どの回もフロントガラス越しで、2台のアンテナは結束バンドでまとめています
  • ATGM336Hは、4回とも115200bpsでした
  • 電源はモバイルバッテリーです。2回目は途中でバッテリーが切れて終わりました
1〜3回目の配線。ブレッドボードで3.3VとGNDを2台に分けていた
▲ 1〜3回目の配線。ブレッドボードで3.3VとGNDを2台に分けていた
走行前。PicoのLEDが点灯していれば、2台とも測位できている
▲ 走行前。PicoのLEDが点灯していれば、2台とも測位できている
小ネタ

Freenoveのブレークアウトボードは、ピンごとにLEDが付いています。GPSがデータを送るたびに、GPSとつないだピンのLEDが点滅します。配線が合っているかを、目で確かめられます。

▲ ピンのLEDが、GPSのデータに合わせて点滅する(約5秒・音声なし)


スポンサーリンク

走行中にGT-502MGG-Nが再起動していた(電源の瞬断)

1回目の走行では、GT-502MGG-Nの測位が17回途切れました。ATGM336Hは、同じ時間に1回(1秒)しか途切れていません。

ログを調べると、これは測位が途切れたのではなく、GT-502MGG-Nが再起動していたことが分かりました。理由は次の3つです。

  • 時刻の小数部分がずれる(いつもは .000 なのに、途切れたあとは .421 などになる)
  • 測位に使う衛星の数が、0機から数え直しになる
  • Galileoの衛星が、一度一覧から消える

どれも、電源を入れ直したときと同じ特徴です。このとき、タッパーはダッシュボードに置いただけで、走行中はカタカタ揺れていました。ブレッドボードの差し込みが、振動で一瞬外れていたとみられます。


スポンサーリンク

再起動の対策(テープ固定・端子台・コンデンサ)と結果

対策は、次の順に入れていきました。

2回目から:タッパーをダッシュボードにテープで固定した

タッパーを養生テープでダッシュボードに固定
▲ タッパーを養生テープでダッシュボードに固定

4回目から:電源の分け方を端子台にした

ブレッドボードの差し込みをやめ、3.3VとGNDを端子台で分けました。GPSの電源線は、圧着端子を付けてネジで留めています。信号線(TX・RX)は、Freenoveのブレークアウトボードのネジ端子に直接留めました。

4回目の配線。左が端子台、右がPico 2 W
▲ 4回目の配線。左が端子台、右がPico 2 W
端子台は同じ段の左右がつながっている。下の2段で3.3VとGNDを2台に分けた
▲ 端子台は同じ段の左右がつながっている。下の2段で3.3VとGNDを2台に分けた
信号線はブレークアウトボードのネジ端子に直接留めた
▲ 信号線はブレークアウトボードのネジ端子に直接留めた

4回目から:電源ラインにコンデンサを足した(おまじない)

端子台の3.3VとGNDの間に電解コンデンサ(25V 470μF)を入れました。正直なところ、今回の症状に効くかは分かりません。計算すると、470μFで電圧の低下を0.3V以内に抑えられるのは約1.4ミリ秒だけです(3.3V系の電流を約0.1Aとした場合)。接点が一瞬ばたつく程度なら支えられますが、それ以上は支えきれません。安心のための「おまじない」として入れています。

注意

電解コンデンサには向きがあります。帯(−)の側をGNDにつなぎます。

結果

走行中のGT-502MGG-Nの再起動の回数
▲ 走行中のGT-502MGG-Nの再起動の回数

テープで固定した2回目は1回、3回目は0回に減りました。端子台とコンデンサに変えた4回目も0回です。

いちばん効いたのは、タッパーを固定したことだとみられます。端子台とコンデンサは同時に入れたので、どちらが効いたかは分かりません。今回の結果から言えるのは、「固定して1回 → 0回に減り、端子台にしても0回が続いた」というところまでです。

端子台 12個入り 600V 15A 組端子台 2列型(2色絶縁圧着端子セット付属)
4回目から使用

ネジで留めるので、振動で抜けにくい

端子台 12個入り 600V 15A 組端子台 2列型(2色絶縁圧着端子セット付属)

Picoの3.3VとGNDを、2台のGPSに分けるのに使いました。同じ段の左右がつながっています。

ネジ留め圧着端子付き
圧着端子セット(丸型端子・U形端子、320個入り、10サイズ)
4回目から使用

先バラ線を端子台にネジで留められる

圧着端子セット(丸型端子・U形端子、320個入り、10サイズ)

GT-502MGG-Nの電源線(先バラ線)の先に付けて、端子台に留めました。

丸型・U形10サイズ
ロブテックス ミニ圧着工具(裸圧着端子/裸スリーブ用)AK2MA
参考

お手持ちの圧着工具でかまいません

ロブテックス ミニ圧着工具(裸圧着端子/裸スリーブ用)AK2MA

今回、圧着端子を付けるのに使ったものです。

裸圧着端子用
Kaito Denshi(海渡電子)電解コンデンサ 25V 470μF(10個入り)
参考

効くかは分からない「おまじない」

Kaito Denshi(海渡電子)電解コンデンサ 25V 470μF(10個入り)

端子台の3.3VとGNDの間に入れました。支えられるのは一瞬の電圧低下だけです(本文の計算を参照)。

25V / 470μF向きあり
APMジャパン 貼ってはがせるエコノミー養生テープ 白(半透明)50mm×25m
参考

お手持ちのテープでかまいません

APMジャパン 貼ってはがせるエコノミー養生テープ 白(半透明)50mm×25m

タッパーをダッシュボードに固定するのに使いました。

貼ってはがせる

圧着工具とテープは、手持ちのものでかまいません。参考までに、今回使ったものを載せています。

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


スポンサーリンク

115200bpsへの切り替えに失敗していた(2回目・3回目)

2回目と3回目は、GT-502MGG-Nが9600bpsのまま記録していました。9600bpsでは1秒分のデータを送りきれず、一部の行が欠けます(くわしくは第1回で説明しています)。

どちらも、長く電源を切っていたあとの起動でした。起動直後のGT-502MGG-Nは、まだ通信速度を変えるコマンドを受け付けないようです。そこで main.py を、GPSが出力を始めるのを待ってからコマンドを送り、切り替わらなければ3回まで送り直すように直しました。第1回のダウンロードファイルは、この修正版です。

🥕 くわしい説明は第1回 GT-502MGG-NとATGM336Hの使い方|Raspberry Pi Pico 2 WとMicroPythonでGPSを受信して2台を比較 9600bpsでは1秒分のデータを送りきれない理由と、115200bpsに切り替えるコマンド(PMTK251・PCAS01)を説明しています。 →

直したあとの4回目は、ev_NNN.csv に baud,115200 try1(1回目で成功)と残っています。

ev_NNN.csvの記録。2台とも1回目で115200bpsに切り替わった
▲ ev_NNN.csvの記録。2台とも1回目で115200bpsに切り替わった

スポンサーリンク

走行中の比較(測位率・衛星数・HDOP・C/N0)

いちばん条件がそろった4回目(10/19夕方)の結果です。

項目GT-502MGG-NATGM336H
測位率100%(途切れ0回)100%(途切れ0回)
測位に使った衛星数(中央値)1923
HDOP(中央値)0.600.60
平均信号強度 C/N037.3 dB-Hz34.2 dB-Hz
2台の位置の差(同じ時刻どうし)中央値1.9m、95%値5.1m
4回目(10/19夕方)の衛星数・信号強度・HDOP・速度の推移
▲ 4回目(10/19夕方)の衛星数・信号強度・HDOP・速度の推移

ほかの日の結果も並べます。

回衛星数(GT/ATGM)HDOP(GT/ATGM)C/N0(GT/ATGM)2台の差(中央値)
1回目(10/16 夕方)21/260.61/0.5035.9/30.02.6m
2回目(10/18 昼)20/260.64/0.5036.6/31.76.3m
3回目(10/19 朝)21/290.59/0.5034.2/33.02.9m
4回目(10/19 夕方)19/230.60/0.6037.3/34.21.9m

4回とも、衛星数はATGM336H、信号強度はGT-502MGG-Nが上でした。第1回の置きっぱなしの比較と同じ傾向です。

  • 信号強度:屋外に置いたとき(GT 42.3/ATGM 35.7)より、GT-502MGG-Nで5〜8dB、ATGM336Hで1.5〜6dBほど低くなっています。フロントガラスと車体で、電波が弱くなるためとみられます
  • 2台の差:2回目(10/18)だけ6.3mと大きくなっています。この日はGT-502MGG-Nが9600bpsで、行が欠けていたことも影響しているかもしれません
  • 補正:GT-502MGG-Nは、4回目の走行のほとんどで品質「2」(補正あり)でした。10/20の朝に窓際で別に確かめたとき、GT-502MGG-NのGSVに42番・50番の衛星が出ていました。NMEAの33〜64番はSBAS(静止衛星から届く補正情報)の番号で、日本のMSASとみられます

スポンサーリンク

トンネルでの比較(入口と出口)

2回目(10/18)に、トンネルを1回通りました。通過にかかった時間は約40秒です。

トンネル前後の軌跡。黄色の帯がトンネル
▲ トンネル前後の軌跡。黄色の帯がトンネル
トンネル前後の衛星数・信号強度・速度。薄い帯は測位が途切れた時間
▲ トンネル前後の衛星数・信号強度・速度。薄い帯は測位が途切れた時間
項目GT-502MGG-NATGM336H
測位が途切れた時間14:26:24〜14:27:07(43秒)14:26:29〜14:27:06(37秒)
入口先に途切れた約5秒長く位置を出し続けた
トンネルの中受信している衛星は0機信号強度6〜8の衛星を「受信中」と表示し続けた
出口ATGM336Hの約1秒後に復帰先に復帰。10秒で23機まで回復

入口でATGM336Hが粘ったのは、直前の速度と向きから位置を推定して出していたためとみられます。トンネルの中では、2台とも実際には測位できていません。

ただし、この結果は1回分です。しかもこの日のGT-502MGG-Nは9600bpsで、トンネルの約35秒前(14:25:48)にも再起動していました。条件がそろっていないので、「こういう違いが出た」という参考の結果として見てください。


スポンサーリンク

GPSロガーのCSVを地図に表示する方法(Python・folium・地理院タイル)

記録したCSVには、1秒ごとの緯度経度が入っています。これを地図に重ねると、どこで測位が途切れたのか、2台がどれくらいずれたのかがひと目で分かります。

仕組みは次のとおりです。

  • NMEAの緯度経度(「度分」)を、地図で使う「度」に直す(nmea.py の _deg_str() で記録済み)
  • 地図の画像(タイル)は、国土地理院の「地理院タイル」を使う
  • Pythonのライブラリ folium で、地図の上に軌跡の線を引いてHTMLにする

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

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

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

パソコンで使うスクリプト(pc/ フォルダ)です。Picoのプログラムは第1回のダウンロードファイルに入っています。

手順1:Picoからログを取り出す

ThonnyでPicoをつなぎ、メニューの「表示」→「ファイル」を開きます。

「表示」→「ファイル」を開く
▲ 「表示」→「ファイル」を開く

左下に、Picoの中のファイルが表示されます。log_NNN.csv と ev_NNN.csv が、ロガーが記録したファイルです。

Picoの中に記録されたログ
▲ Picoの中に記録されたログ

ファイルを右クリックして、「ダウンロード」でパソコンに保存します。ev_NNN.csv も同じように保存します。

右クリック →「〜にダウンロード」
▲ 右クリック →「〜にダウンロード」
小さなつまずき

PicoをパソコンにつなぐとPicoが起動し直し、空の新しいログができます。いちばん大きい番号のファイルが、走行のログとは限りません。ファイルの大きさで見分けてください。

手順2:パソコンに必要なライブラリを入れる

コマンドプロンプトで、次のコマンドを実行します。

pip install pandas matplotlib folium pillow
「Successfully installed」と出れば完了
▲ 「Successfully installed」と出れば完了

手順3:ログと集計スクリプトを同じフォルダに置く

ダウンロードしたZIPの pc/ フォルダに、log_NNN.csv と ev_NNN.csv をコピーします。

pc/
├─ analyze.py
├─ track_figure.py
├─ make_demo_log.py
├─ log_001.csv
└─ ev_001.csv

手順4:地図つきのHTMLを作る

pc/ フォルダでコマンドプロンプトを開き、次のコマンドを実行します。

python analyze.py log_001.csv
ログのファイル名を付けて実行
▲ ログのファイル名を付けて実行

集計結果が表示され、out_001 フォルダができます。

測位率・衛星数・2台の差などが表示される
▲ 測位率・衛星数・2台の差などが表示される
out_001 フォルダができる
▲ out_001 フォルダができる
ファイル中身
map.html地図+2台の軌跡(ブラウザで開く)
timeline.png衛星数・信号強度・HDOP・速度の推移
summary.txt測位率・途切れた回数などの集計

手順5:ブラウザで地図を見る

map.html をダブルクリックすると、ブラウザで地図が開きます。

map.html をダブルクリック
▲ map.html をダブルクリック
map.htmlを拡大したところ(架空のデータ)。丸印でGT-502MGG-N(青)が途切れ、ATGM336H(オレンジ)は測位を続けている
▲ map.htmlを拡大したところ(架空のデータ)。丸印でGT-502MGG-N(青)が途切れ、ATGM336H(オレンジ)は測位を続けている
  • 右上のボタンで、背景を「淡色地図」「標準地図」「航空写真」に切り替えられます
  • 2台の軌跡は、それぞれ表示・非表示を切り替えられます
  • 丸印は、測位が途切れた地点です

実機がなくても試せる(架空のデータ)

架空の走行ログを作るスクリプト(make_demo_log.py)も入れてあります。日比谷から東京駅の南側を通って京橋付近まで、約2kmを時速約30kmで走ったことにしたログです。途中でGT-502MGG-Nだけ12秒、測位が途切れます。track_figure.py --demo を実行すると、同じルートの地図を画像(track_demo.png)で作れます。

python make_demo_log.py
python analyze.py log_demo.csv
python track_figure.py --demo
track_figure.py --demo で作った見本(架空のデータ)
▲ track_figure.py –demo で作った見本(架空のデータ)

スポンサーリンク

GPSロガーと地図表示のよくある質問(FAQ)

Qfoliumで作ったmap.htmlを開いても、地図が「Access blocked」で表示されません。

AOpenStreetMapの標準タイルは、パソコンに保存したHTMLから開くと、参照元の情報がないため読み込みを断られます。この記事の analyze.py は、国土地理院の地理院タイルを使っているので、保存したmap.htmlをそのまま開いて表示できます。

Q走行中だけGPSモジュールの測位が途切れます。

A測位が途切れたのではなく、電源が一瞬切れてモジュールが再起動していることがあります。ログで、時刻の小数部分がずれる、使う衛星の数が0から数え直しになる、といった特徴が出ていたら再起動です。今回は、タッパーをダッシュボードにテープで固定してから、17回あった再起動が1回 → 0回に減りました(走った日や道は違います)。

QPicoから取り出したログが空っぽです。

APicoをパソコンにつなぐと、ロガーが起動し直して空の新しいログができます。いちばん大きい番号のファイルが、走行のログとは限りません。Thonnyのファイル一覧で、ファイルの大きさを見て選んでください。

Qフロントガラス越しでも、GPSは使えますか?

A使えました。ただ、屋外に置いたときより信号強度が下がり、GT-502MGG-Nで5〜8dB、ATGM336Hで1.5〜6dB低くなりました。それでも4回目の走行では、2台とも測位率100%でした。


スポンサーリンク

まとめ

こんなときはおすすめ理由
測位に使う衛星を増やしたいATGM336H走行中も4回とも衛星数が多かった
1機ごとの信号の強さGT-502MGG-N走行中も4回とも平均C/N0が高かった
トンネルの入口で少しでも長く位置がほしいATGM336H約5秒長く位置を出し続けた(1回分のデータ)
手軽に車に置きたいGT-502MGG-Nケース入りで、裏に両面テープが付いている

車に積むときは、モジュールの違いより先に、しっかり固定することが大事でした。置いただけでは、GT-502MGG-Nの再起動が17回起きています。固定してからは、再起動が1回 → 0回 → 0回に減りました。

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
まとめハブ
ハードウェア制御 / 電子工作
スポンサーリンク

コメント