#include #include #include #include // Configuración de la red WiFi //const char* ssid = "INFINITUM82DC"; //const char* password = "EGKEet8jx2"; const char* ssid = "TP-Link_A00C"; const char* password = "95763118"; // URL de la API const char* serverName = "https://apigps.onrender.com/api/gps/"; // Pines y configuración del GPS int RXPin = D7; int TXPin = D6; int GPSBaud = 9600; TinyGPSPlus gps; SoftwareSerial gpsSerial(RXPin, TXPin); double latitude, longitude; // Variables para almacenar latitud y longitud unsigned long lastPrintTime = 0; // Variable para almacenar el tiempo de la última impresión const unsigned long printInterval = 60000; // Intervalo de impresión en milisegundos (1 minuto) void setup() { Serial.begin(9600); gpsSerial.begin(GPSBaud); // Conectar a la red WiFi WiFi.begin(ssid, password); Serial.print("Conectando a WiFi..."); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println("Conectado a la red WiFi"); } void loop() { while (gpsSerial.available() > 0) { if (gps.encode(gpsSerial.read())) { saveCoordinates(); } } if (millis() > 5000 && gps.charsProcessed() < 10) { Serial.println("No GPS detected"); while(true); } } void saveCoordinates() { if (gps.location.isValid()) { latitude = gps.location.lat(); longitude = gps.location.lng(); unsigned long currentTime = millis(); if (currentTime - lastPrintTime >= printInterval) { printCoordinates(); // Llamar a la función para imprimir las coordenadas sendGPSData(latitude, longitude); // Llamar a la función para enviar las coordenadas lastPrintTime = currentTime; // Actualizar el tiempo de la última impresión } } } void printCoordinates() { Serial.print("Latitude: "); Serial.println(latitude, 6); // Imprimir latitud con 6 decimales de precisión Serial.print("Longitude: "); Serial.println(longitude, 6); // Imprimir longitud con 6 decimales de precisión } void sendGPSData(float latitude, float longitude) { if (WiFi.status() == WL_CONNECTED) { HTTPClient http; // Especifica la URL de la API http.begin(serverName); // Especifica el tipo de contenido http.addHeader("Content-Type", "application/json"); // Crea el JSON a enviar String jsonPayload = "{\"lat\": \"" + String(latitude, 6) + "\", \"lng\": \"" + String(longitude, 6) + "\"}"; // Envía la solicitud POST int httpResponseCode = http.POST(jsonPayload); // Comprueba la respuesta del servidor if (httpResponseCode > 0) { String response = http.getString(); Serial.println(httpResponseCode); Serial.println(response); } else { Serial.print("Error en la solicitud: "); Serial.println(httpResponseCode); } // Finaliza la conexión http.end(); } else { Serial.println("Error en la conexión WiFi"); } }