Untitled
Anonymous
plain_text
02/23/2026 8:31 AM
3.2 KB
10
Indexable
#include <TinyGPSPlus.h>
/* ESP32-C3 Connection Guide:
GPS TX -----> ESP32-C3 Pin 20 (RX1)
GPS RX -----> ESP32-C3 Pin 21 (TX1)
GPS VCC -----> 3.3V or 5V (Depends on module)
GPS GND -----> GND
*/
#define GPS_RX_PIN 20
#define GPS_TX_PIN 21
#define GPS_BAUD 9600
// Create GPS object
TinyGPSPlus gps;
// Create Serial instance for GPS on UART1
HardwareSerial gpsSerial(1);
void setup() {
// Start Debug Serial (USB)
Serial.begin(115200);
delay(1000);
// Initialize GPS Serial with C3 specific pins
// Format: baud, config, rxPin, txPin
gpsSerial.begin(GPS_BAUD, SERIAL_8N1, GPS_RX_PIN, GPS_TX_PIN);
Serial.println(F("--- ESP32-C3 GPS System Initialized ---"));
Serial.println(F("Waiting for satellite fix..."));
}
void loop() {
// Continuously read data from GPS module
while (gpsSerial.available() > 0) {
gps.encode(gpsSerial.read());
}
// Periodic display (every 2 seconds)
static unsigned long lastUpdate = 0;
if (millis() - lastUpdate > 2000) {
updateDisplay();
lastUpdate = millis();
}
// Diagnostics: Check if we are receiving ANY data
if (millis() > 5000 && gps.charsProcessed() < 10) {
Serial.println(F("CRITICAL ERROR: No data from GPS. Check Pin 20/21 connections."));
}
}
void updateDisplay() {
Serial.print(F("["));
printTime(); // Print UTC Time
Serial.print(F("] "));
if (gps.location.isValid()) {
Serial.print(F("Lat: ")); Serial.print(gps.location.lat(), 6);
Serial.print(F(" | Lng: ")); Serial.print(gps.location.lng(), 6);
Serial.print(F(" | Sats: ")); Serial.println(gps.satellites.value());
Serial.print(F(" Speed: ")); Serial.print(gps.speed.kmph()); Serial.print(F(" km/h"));
Serial.print(F(" | Alt: ")); Serial.print(gps.altitude.meters()); Serial.println(F("m"));
}
else {
Serial.print(F("Searching... Satellites in view: "));
Serial.println(gps.satellites.value());
}
Serial.println(F("-----------------------------------------------"));
}
void printTime() {
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());
} else {
Serial.print(F("00:00:00"));
}
}Editor is loading...
Leave a Comment