Posts GPSセンサで取得した位置情報をGoogleマップに描画しよう
Post
Cancel

GPSセンサで取得した位置情報をGoogleマップに描画しよう

この記事で使うソースコード

TeraTermのインストール


緯度と経度を取得しようでGPSセンサから取得した情報から緯度・経度の値のみを取得することができました。

ここでは、緯度・経度の情報をCSVファイルとして保存してGoogleに描画をしてみます。

CanSatは競技のあと制御ログを提出する必要があります。 制御ログには、「センサからAの値を取得した。だからBの制御をした」というような説明ができるようにログを残す必要があります。

制御ログの考え方として秋田大学 平山先生の下記投稿が参考になると思います。

今回は、単に緯度・経度の観測値をログとして記録してGoogleマップに描画してみます。 最終的に画像のようなCanSatの移動ルートを描画したマップを取得します。

gps-map Googleマップに描画した様子

gps-cansat 屋外で実験している様子

緯度・経度の情報をCSVファイルとして出力するためにTeraTermを使用します。 TeraTermを使用して、Arduino IDEのシリアルコンソールと同じようにCOMポートから取得したシリアル通信の内容を表示することができます。 TeraTermは下記からダウンロードしてください。

CSVファイル形式(カンマ区切り)のログを出力するプログラム


緯度と経度を取得しようでは下記のようなログをシリアルコンソールに出力していました。

1
2
3
4
5
6
7
8
Lat=  35.700883 Lng=  139.576153
Lat=  35.700883 Lng=  139.576153
Lat=  35.700883 Lng=  139.576153
Lat=  35.700883 Lng=  139.576153
Lat=  35.700883 Lng=  139.576153
Lat=  35.700883 Lng=  139.576153
Lat=  35.700883 Lng=  139.576153
Lat=  35.700883 Lng=  139.576153

このままのログでは「Lat=」のような余計な文字が入っていて、CSV形式の出力になっていないため、ソースコードを修正して「緯度の値,経度の値」を出力するようにします。 変更する箇所は、シリアルコンソールに出力している箇所です。

1
2
3
Serial.print(gps.location.lat(), 6);
Serial.print(",");
Serial.println(gps.location.lng(), 6);

TeraTermに出力してみる


CanSatをPCに接続してTeraTermを起動します。 「新しい接続」の画面が開くので「シリアル」にチェックを入れてCanSatのポートを選択します。

Arduino IDEのシリアルコンソールにCOMポートを接続しているとbusy状態で接続できない場合があります。 Arduino IDEのシリアルコンソールは閉じておきましょう。

tera5 TeraTermの起動

接続出来たらボーレートを設定します。 メニューの「設定」>「シリアルポート」から設定画面を開きます。 「スピード」を「115200」にしましょう。そのほかの設定はデフォルトのままで大丈夫です。

tera1 ボーレートの設定(1)

tera2 ボーレートの設定(2)

ボーレートを設定したら、TeraTermのコンソール画面にカンマ区切りの緯度・経度が出力されます。 もし何も表示されない場合は、GPSセンサが衛星を補足しているか確認してください。

tera0 緯度・経度が出力された様子

TeraTermの出力をCSVファイルとして保存する


次に出力された値をCSVファイルとして保存します。 メニューの「ファイル」>「ログ」を開いて、保存場所を選択します。 デフォルトではteraterm.logのようなファイル名になっているので、拡張子をcsvに変更しておきます。 「保存」をクリックするとログの記録が始まります。

tera4 ログの保存(1)

tera3 ログの保存(2)

ログの保存を開始したら、CanSatとPCを持って適当に歩いてみてください。 歩いたルートの緯度・経度が時系列順でCSVファイルとしてログに記録されます。

ある程度ログが取れたら、メニューの「ファイル」>「ログを終了」で記録を終了します。 保存されたCSVファイルを開きます。 うまく保存できていたら1列目が緯度、2列目が経度でカンマで区切られたファイルとなっているはずです。

1
2
3
4
5
6
7
8
9
10
35.700877,139.576142
35.700877,139.576142
35.700877,139.576142
35.700877,139.576142
35.700877,139.576142
35.700877,139.576142
35.700877,139.576142
35.700877,139.576142
35.700877,139.576142
35.700877,139.576142

Googleマップに描画する


最後に緯度・経度を記録したCSVファイルを使ってGoogleマップに移動経路を描画してみます。

ブラウザでGoogleマップを開き、左上のハンバーガーアイコンからメニューを開きます。

map1 Googleマップに描画する(1)

「マイプレイス」をクリックします

map2 Googleマップに描画する(2)

「マイマップ」>「地図を作成」をクリックします

map3 Googleマップに描画する(3)

「インポート」をクリックし、CSVファイルをアップロードします

map4 Googleマップに描画する(4)

CSVファイルの緯度・経度の列をそれぞれ指定します。マーカのタイトルとして使用する列はどちらでもOKです

map5 Googleマップに描画する(5)

完了をクリックすると、地図が作成されます

エラーが出る場合は、緯度・経度に指定する列が逆になっていないか確認してください。

This post is licensed under CC BY 4.0 by the author.

緯度と経度を取得しよう

回路図の概要