みかづきブログ・カスタム

基本的にはちょちょいのほいです。

M5StickC Plus2でGPS座標を取得する 🌏

blog.kimizuka.org
blog.kimizuka.org

最近はGPSの記事ばかり書いている気がしますが、今回はM5StickC Plus2でGPS座標の取得を試みます。
前回までは、M5StickC Plusを使っていましたが、今回からは、M5StickC Plus2を使います。本体が若干黄色くなっています。

M5StickC Pluswww.switch-science.com
M5StickC Plus2www.switch-science.com

GPSユニットの準備

M5StickC PlusにもM5StickC Plus2にもGPSは内蔵されていないので、別途GPSユニットを用意する必要があります。
今回は、m5-docsに載っていて、公式感を醸し出しているこちらのGPSユニットを使います。

docs.m5stack.com

GROVEケーブルでM5に簡単に接続できることが魅力です。

ソースコード

#include <M5StickCPlus2.h>
#include <TinyGPS++.h>

HardwareSerial GPSRaw(2);
TinyGPSPlus gps;

void setup() {
  M5.begin();
  M5.Lcd.setRotation(1);
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setTextSize(2);
  M5.Lcd.print("GPS");
  GPSRaw.begin(9600, SERIAL_8N1, 33, 32);
}

void loop() {
  M5.Lcd.setCursor(0, 0);
  M5.Lcd.fillScreen(BLACK);

  while (GPSRaw.available() > 0) {
    if (gps.encode(GPSRaw.read())) {
      break;
    }
  }

  if (gps.location.isValid()) {
    M5.Lcd.printf("lat:%.6f\n", gps.location.lat());
    M5.Lcd.printf("lng:%.6f\n", gps.location.lng());
  } else {
    M5.Lcd.println("error");
  }

  delay(5000);
}

こちらをM5StickC Plus2に書き込み、GROVEケーブルでGPSユニットを接続すれば5秒に1回GPS座標の取得を試み、成功した際は画面に緯度・軽度を表示します。
のちに気づいたのですが、M5StickC Plus2とGPSユニットがシリアル(HardwareSerial)で通信しているので、PCとM5StickC Plus2でシリアル通信していると、座標を表示できません。