From 8af14de3fafff5d99506d324a4c02ffa525ef1d3 Mon Sep 17 00:00:00 2001 From: cube Date: Sat, 22 Mar 2025 21:09:18 +0000 Subject: [PATCH] Add 'Seeed Wio Terminal/projects/m5-gps.ino' --- Seeed Wio Terminal/projects/m5-gps.ino | 116 +++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 Seeed Wio Terminal/projects/m5-gps.ino diff --git a/Seeed Wio Terminal/projects/m5-gps.ino b/Seeed Wio Terminal/projects/m5-gps.ino new file mode 100644 index 0000000..eddd750 --- /dev/null +++ b/Seeed Wio Terminal/projects/m5-gps.ino @@ -0,0 +1,116 @@ +#include +#include +#include "TFT_eSPI.h" + +TFT_eSPI tft; + +static const uint32_t GPSBaud = 115200; + +// The TinyGPS++ object +TinyGPSPlus gps; + +// The serial connection to the GPS device - Left side Grove connector. +// Left side Grove connector shares pins with I2C1 of 40 pin connector. +static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0); + +void setup() +{ + Serial.begin(115200); + tft.begin(); + tft.setRotation(3); + tft.fillScreen(TFT_BLACK); + tft.setFreeFont(&FreeSans9pt7b); + tft.setTextColor(TFT_WHITE); + + Serial3.begin(GPSBaud); + pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT); + pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT); +} + +void loop() +{ + // This sketch displays information every time a new sentence is correctly encoded. + while (Serial3.available() > 0) + if (gps.encode(Serial3.read())) + displayInfo(); + delay(3000); + + if (millis() > 5000 && gps.charsProcessed() < 10) + { + Serial.println(F("No GPS detected: check wiring.")); + tft.drawString("No GPS detected: check wiring.", 10, 10); + while(true); + } +} + +void displayInfo() +{ + Serial.print(F("Location: ")); + if (gps.location.isValid()) + { + Serial.print(gps.location.lat(), 6); + Serial.print(F(",")); + Serial.print(gps.location.lng(), 6); + + String text = String(gps.location.lat(), 6) + ", " + String(gps.location.lng(), 6); + tft.fillRect(10, 30, 190, 30, TFT_BLACK); + tft.drawString(text, 10, 30); + } + else + { + Serial.print(F("INVALID")); + } + + Serial.print(F(" Date/Time: ")); + if (gps.date.isValid()) + { + Serial.print(gps.date.month()); + Serial.print(F("/")); + Serial.print(gps.date.day()); + Serial.print(F("/")); + Serial.print(gps.date.year()); + } + else + { + Serial.print(F("INVALID")); + } + + Serial.print(F(" ")); + if (gps.time.isValid()) + { + 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()); + } + else + { + Serial.print(F("INVALID")); + } + + Serial.println(); +} + +void SERCOM3_0_Handler() +{ + Serial3.IrqHandler(); +} +void SERCOM3_1_Handler() +{ + Serial3.IrqHandler(); +} +void SERCOM3_2_Handler() +{ + Serial3.IrqHandler(); +} +void SERCOM3_3_Handler() +{ + Serial3.IrqHandler(); +} \ No newline at end of file