Spresenseのチュートリアル「2.2. GPS トラッカーを使ってみよう」を参考にして、SpresenseでGPS トラッカーを作成します。GPS トラッカーで取得したデータは、「GPSデータをQGISに表示」に従って、QGISの地図に表示します。

GPS トラッカーの作成

Arduino IDE のスケッチ例から次の手順でコードを取得して、収集したGPSデータをSDカードに保存します。

メニュー「ファイル」から→ 「スケッチ例」 →「 GNSS」 → 「gnss_tracker」と選択してスケッチを開きます。

取得したスケッチを次のように変更します。

  • 6行目で「#include 」を追加します。
  • 15,16行目で156MHz で動作しているシステム全体のクロックを 32MHz へ落とすことで電力を削減します。

gnss_tracker.ino

#include <GNSS.h>
#include <GNSSPositionData.h>
#include "gnss_tracker.h"
#include "gnss_nmea.h"
#include "gnss_file.h"
#include <LowPower.h> 

     ・・・

  if (error_flag == 1)
  {
    Led_isError(true);
  }

  LowPower.begin();
  LowPower.clockMode(CLOCK_MODE_32MHz);

}

void loop() {
  static int State = eStateActive;
  static int TimeOut = IDLE_ACTIVE_TIME;

     ・・・

作成したコードをSPRESENSEに書き込みます。

GPSデータの収集

作成したコードを実行してGPSデータがシリアルモニタ表示され、SDカードにGPSデータが保存されることを確認しておきます。

新規に次のデフォルト値がファイルに作成されます。

tracker.ini

; Satellite system(GPS/GLONASS/SBAS/QZSS_L1CA/QZSS_L1S)
SatelliteSystem=GPS+GLONASS+QZSS_L1CA
; Output NMEA message to UART(TRUE/FALSE)
NmeaOutUart=TRUE
; Output NMEA message to file(TRUE/FALSE)
NmeaOutFile=TRUE
; Output binary data to file(TRUE/FALSE)
BinaryOut=FALSE
; Positioning interval sec(1-300)
IntervalSec=1
; Positioning active sec(60-300)
ActiveSec=60
; Positioning sleep sec(0-240)
SleepSec=240
; Uart debug message(NONE/ERROR/WARNING/INFO)
UartDebugMessage=NONE
; EOF

SpresenseのGPSで野外でデータを取得するときには電源としてモバイルバッテリを使用します。

アプリケーションの動作が開始するときに 4 つの全ての LED が一回だけ点滅します。測位停止中は 全ての LED が消灯します。個別の LED に関する動作仕様は以下の通りです。LED0点滅中は測位動作中のため、点灯してから移動します。

LED 説明
LED0 測位動作中に点灯/消灯を繰り返します
LED1 現在の位置情報が取得(FIX)できたら点灯します
LED2 ファイルアクセス中に点灯します
LED3 microSD カードにアクセスできないなど、何かしらのエラーが発生したときに点灯します

GPS visualizerによるGPGGA センテンスの変換

取得したGPGGA センテンスを「GPS visualizer」を使って、Google Earth やその他のファイルフォーマットへ変換します。

GPS visualizerをアクセスすると次の画面が表示され、次の設定を行い、「ファイル選択」ボタンで収取したCSVファイルを選択し、「Convert」ボタンを押します。

  • Output format: Plain text
  • Plain text delimiter: comma

変換されたデータが次のように表示されるので、「Download」ボタンを押してダウンロードします。

QGISへの表示

QGISは「QGISに横浜市みなとみらい地区の表示」ですでにインストール済みですが、「フリーでオープンソースの地理情報システム」から現在の最新バージョン「3.26.2」にバージョンアップします。

画面の左側の「XYZ Tiles」→「OpenStreetMap」をダブルクリックして、左側に表示された地図を操作して山下公園を表示させます。

GPS visualizerで変換したデータをQGISで読み込めるようにExcelを使って次のように変換します。

latitude,longitude
35.444135,139.65261
35.4442,139.6524183
35.44422833,139.6524117
35.444205,139.6525133
35.44421,139.6525633
35.44421167,139.6525717
     ・・・

次のように、レイヤメニューから「CSVテキストレイヤの追加」を選択して、CSVテキスト読み込みダイアログを表示します。

CSVテキスト読み込みダイアログの「ファイル名」に変換したCSVファイルを設定し、「追加」ボタンを押して「閉じる」ボタンを押します。

CSVファイル内の緯度/経度データが読み込まれ、次のように地図上に緑丸でその位置が表示されます。

うまくGPSデータが収集されていないところがあります。