#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"; const char* ssid = "xime"; const char* password = "12345678"; // URL de la API const char* serverName = "https://apigps.onrender.com/api/gps/"; // Pines y configuración del GPS int RXPin = D7; // Cambia este pin si tu hardware lo requiere int TXPin = D6; // Cambia este pin si tu hardware lo requiere 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 = 30000; // Intervalo de impresión en milisegundos (1 minuto) // Pin del LED int ledPin = D10; void setup() { Serial.begin(9600); gpsSerial.begin(GPSBaud); // Configura el pin del LED como salida pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); // Asegúrate de que el LED esté apagado inicialmente // 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"); digitalWrite(ledPin, HIGH); // Enciende el LED cuando esté conectado a 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"); } }