C:\Users\{username}\Documents\Arduino
/Users/{username}/Documents/Arduino
/home/{username}/Arduino
G18(RX)
と G17(TX)
です。Module GPS v2.0 は、ボトムにある DIP スイッチでピン接続を切り替えることもでき、必要に応じて調整できます。UnitGPSExample
サンプルプログラムを参考にし、対応する UART 初期化ピン IO を変更します。M5Unified と M5GFX を基にして、このサンプルプログラムに基本的な座標表示機能を追加します。/*
* SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
*
* SPDX-License-Identifier: MIT
*/
#include "M5Unified.h"
#include "M5GFX.h"
#include "MultipleSatellite.h"
static const int RXPin = 18, TXPin = 17;
static const uint32_t GPSBaud = 115200;
MultipleSatellite gps(Serial1, GPSBaud, SERIAL_8N1, RXPin, TXPin);
void displayInfo();
void setup()
{
M5.begin();
Serial.begin(115200);
gps.begin();
gps.setSystemBootMode(BOOT_FACTORY_START);
Serial.println(F("DeviceExample.ino"));
Serial.println(F("A simple demonstration of TinyGPSPlus with an attached GPS module"));
Serial.print(F("Testing TinyGPSPlus library v. "));
Serial.println(TinyGPSPlus::libraryVersion());
Serial.println(F("by Mikal Hart"));
Serial.println();
String version = gps.getGNSSVersion();
Serial.printf("GNSS SW=%s\r\n", version.c_str());
delay(1000);
// Set satellite mode
gps.setSatelliteMode(SATELLITE_MODE_GPS);
M5.Display.setFont(&fonts::FreeMonoBold12pt7b);
}
void loop()
{
// Update data
gps.updateGPS();
displayInfo();
delay(10);
}
void displayInfo()
{
Serial.print(F("Location: "));
Serial.printf("satellites:%d\n", gps.satellites.value());
if (gps.location.isUpdated()) {
Serial.print(gps.location.lat(), 6);
Serial.print(F(","));
Serial.print(gps.location.lng(), 6);
Serial.print(F("\n"));
M5.Display.fillRect(0, 0, 320, 60, BLACK);
M5.Display.setCursor(0, 0);
M5.Display.printf("Location: \nLat: %f\nlng: %f\n", gps.location.lat(), gps.location.lng());
} else {
M5.Display.fillRect(0, 0, 320, 60, BLACK);
M5.Display.setCursor(0, 0);
M5.Display.print("Location: \n");
M5.Display.print("Lat: ---------\n");
M5.Display.print("lng: ---------\n");
Serial.print(F("INVALID\n"));
}
Serial.print(F(" Date/Time: "));
if (gps.date.isUpdated()) {
Serial.print(gps.date.month());
Serial.print(F("/"));
Serial.print(gps.date.day());
Serial.print(F("/"));
Serial.print(gps.date.year());
M5.Display.fillRect(0, 100, 320, 60, BLACK);
M5.Display.setCursor(0, 100);
M5.Display.printf("Date/Time: %d/%d/%d\n", gps.date.month(), gps.date.day(), gps.date.year());
} else {
Serial.print(F("INVALID"));
}
Serial.print(F(" "));
if (gps.time.isUpdated()) {
if (gps.time.hour() < 10) Serial.print(F("0"));
Serial.print(gps.time.hour());
Serial.print(F(":"));
if (gps.time.minute() < 10) Serial.print(F("0"));
Serial.print(gps.time.minute());
Serial.print(F(":"));
if (gps.time.second() < 10) Serial.print(F("0"));
Serial.print(gps.time.second());
Serial.print(F("."));
if (gps.time.centisecond() < 10) Serial.print(F("0"));
Serial.print(gps.time.centisecond());
M5.Display.fillRect(0, 160, 320, 60, BLACK);
M5.Display.setCursor(0, 160);
M5.Display.printf("Time: %d:%d:%d.%d\n", gps.time.hour(), gps.time.minute(), gps.time.second(),
gps.time.centisecond());
} else {
Serial.print(F("INVALID"));
}
Serial.println();
delay(1000);
}
CoreS3 の場合、リセットボタンを 2 秒ほど長押しして、内部の緑色の LED が点灯したらボタンを離します。これでデバイスはダウンロードモードに入り、プログラム書き込みの準備が整います。
付属の外部アンテナを接続し、アンテナを窓際や屋外の開けた場所に配置して、デバイスが衛星を検索し、座標を取得するのを待ちます。