iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
M5Stack Basicで位置情報を取得した手順を備忘録として残す。
M5Stack Basic v2.7にUnit GPS v1.1を繋げると位置情報が取得できる。ただし、Unit GPS v1.1はPORT Cで接続となるが、M5Stack Basic v2.7はPORT AのみなのでBase M5GO Bottomを繋げて、PORT Cを用意する。
Base M5GO BottomはM5Stackをバッテリー駆動できるという利点もある。
M5Stack関連のライブラリは、おそらく、整理が追いついていないのだと思われ、似たコードを別の方法で記述できるため、少々混乱したが、自分なりに整理してみた。
#include <M5Stack.h>
#include <TinyGPS++.h>
static const uint32_t GPSBaud = 115200;
TinyGPSPlus gps;
double latitude, longitude;
int altitude, speed;
static const int RXPin = 16, TXPin = 17;
HardwareSerial& gpsSerial = Serial2;
void initGPS() {
gpsSerial.begin(GPSBaud, SERIAL_8N1, RXPin, TXPin); // PORT C
}
void setup() {
M5.begin(); // M5Stackの初期化
M5.Power.begin(); // 電源関係の初期化
Serial.begin(115200); // USB経由のシリアルモニター初期化
initGPS();
// LCDに初期メッセージを表示
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(0, 0);
M5.Lcd.println("Starting GPS Read");
}
void loop() {
M5.update();
while (gpsSerial.available() > 0) {
gps.encode(gpsSerial.read());
}
if (gps.location.isUpdated()) {
M5.Lcd.clear(BLACK);
M5.Lcd.setCursor(0, 0);
M5.Lcd.println("gps.location.isUpdated");
M5.Lcd.print("Lat: ");
M5.Lcd.println(gps.location.lat(), 6);
M5.Lcd.print("Lng: ");
M5.Lcd.println(gps.location.lng(), 6);
M5.Lcd.print("Sats: ");
M5.Lcd.println(gps.satellites.value());
}
}