SHOTech Blog

プログラミングに関する記録です

M5Stick C + GPS のテスト

買ってからあけることなく積まれていたGPSユニットのテストをしたのでメモしておく

GPSユニット

使ったのはこれ
これをM5StickCと繋げてGPSのテストをする。

www.switch-science.com

本当はこれが良かったがひとまずはあるものでやるとする

ja.aliexpress.com

TinyGPS++のライブラリを取得する

arduiniana.org

サイトに行ってDownloadをクリックしたらGithubに行くので最新版ZIPファイルをダウンロードする。 f:id:syota-y1989:20200714005314p:plain

今回はバージョン1.0.2bを使いました f:id:syota-y1989:20200714005409p:plain

解凍したフォルダを「」という名前にしてArduinoのライブラリ直下に配置する f:id:syota-y1989:20200714005541p:plain

テストコードを書く

#include <M5StickC.h> 
#include "TinyGPS++.h"        // ダウンロードしたライブラリ
TinyGPSPlus gps;
HardwareSerial GPSRaw(2);     // UART2でシリアル通信
void setup() {
  
  M5.begin(); 
 
  M5.Lcd.setRotation(3);
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setTextSize(1);
  M5.Lcd.setCursor(20, 15);
  GPSRaw.begin(9600, SERIAL_8N1, 33, 32); // M5StickCのGROVEポート
  while (!GPSRaw) {
 ;                            // シリアルポートが開くまで待つよ
  }
  M5.Lcd.println("GPS UNIT START");  //準備完了
} 
void loop() {
  while(GPSRaw.available()) {
    gps.encode(GPSRaw.read());
    if (gps.location.isUpdated()) {
      M5.Lcd.setCursor(20, 30);
      M5.Lcd.print("LAT="); M5.Lcd.print(gps.location.lat(),6);
      M5.Lcd.setCursor(20, 45);
      M5.Lcd.print("LNG="); M5.Lcd.print(gps.location.lng(),6);
      M5.Lcd.setCursor(20, 60);
      M5.Lcd.print("ALT="); M5.Lcd.print(gps.altitude.meters());
    }
  }
}

実行

f:id:syota-y1989:20200714010351p:plain

うまく取れないときは屋外に行ってみる。曇ってたせいか、5分くらいじっとしてたら取れた。

M5Stick Cのライブラリ

M5StickC用のライブラリはこれを参考にする

qiita.com