#include <WiFi.h>
#include "ThingSpeak.h"
#include <TinyGPS++.h>
#define RXD2 16
#define TXD2 17
#define GPS_BAUDRATE 9600
TinyGPSPlus gps;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
WiFiClient client;
unsigned long myChannelNumber = 3266633;
const char * myWriteAPIKey = "ZX4MY8NFRUASQG5N";
unsigned long previousMillis = 0;
const long interval = 20000;
String lat_data = "";
String lng_data = "";
void setup() {
Serial.begin(9600);
Serial2.begin(GPS_BAUDRATE, SERIAL_8N1, RXD2, TXD2);
Serial.println("ESP32 GPS Tracker");
WiFi.begin(ssid, pass);
Serial.print("Connecting WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi Connected");
ThingSpeak.begin(client);
}
void loop() {
while (Serial2.available() > 0) {
gps.encode(Serial2.read());
}
if (gps.location.isValid()) {
lat_data = String(gps.location.lat(), 6);
lng_data = String(gps.location.lng(), 6);
Serial.print("Latitude : ");
Serial.println(lat_data);
Serial.print("Longitude: ");
Serial.println(lng_data);
}
else {
Serial.println("Waiting GPS signal...");
}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
ThingSpeak.setField(1, lat_data);
ThingSpeak.setField(2, lng_data);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (x == 200) {
Serial.println("Data sent to ThingSpeak");
} else {
Serial.println("ThingSpeak error code: " + String(x));
}
}
delay(1000);
}Loading
esp32-devkit-v1
esp32-devkit-v1