Módulo GPS en Google Maps: Captura y Visualización Móvil

Captura de Ubicaciones con GPS y su Visualización en Google Maps mediante una aplicación móvil.

...
Posteado por Caamal el 11-06-2024 a las 02:11
Categoria: Arduino
Realizado por: Caamal Balan Carlos Daniel, Eduardo Antonio Bermúdez Alejandro y Catzin Concha Víctor Alberto.

Presentación.

Este proyecto se enfoca en desarrollar un dispositivo móvil capaz de registrar y almacenar coordenadas GPS con latitud y longitud. Esta funcionalidad se vuelve esencial en una variedad de proyectos que requieren la integración de un módulo GPS junto con un módulo SIM800L. Este proyecto puede abarcar desde el seguimiento de rutas y la identificación de puntos de interés durante viajes, hasta en estudios de campo que requieran de una geolocalización precisa.

Funcionamiento.

Una vez que hayamos establecido la conexión adecuada en nuestro proyecto, procederemos a desarrollar una aplicación móvil basada en GPS que permita al usuario guardar ubicaciones específicas con tan solo presionar un botón denominado "Guardar Ubicación". Después de que estas ubicaciones deseadas se almacenan con éxito y se visualice la confirmación de la acción en el puerto serial de Arduino, podrán verse directamente en el mapa de la aplicación al presionar el botón "Recibir Ubicaciones". Al hacerlo, las direcciones junto con sus correspondientes coordenadas de longitud y latitud llegarán uno por uno en forma de mensajes SMS al teléfono correspondiente. Cada vez que se reciban estas direcciones de Google Maps, la aplicación mostrará un icono rojo en el mapa para indicar las ubicaciones capturadas.

Realización.

Materiales necesarios para el ensamblado del proyecto:

  • 1 Módulo SIM800L.
  • 1 Tarjeta SIM
  • 1 Capacitor
  • 1 Módulo GPS.
  • Cables
  • Protoboard
  • 1 Arduino UNO

El circuito queda de la siguiente manera: 

Conexión:

SIM800L

Arduino Uno

VCC

5V

GND

GND (Capacitor)

GND

GND

TX

10

RX

11

 

GPS

Arduino UNO

VCC

VCC

GND

GND

TX

RX (0)

RX

TX (1)

 

El resultado queda de la siguiente manera:

Programación.

Código Arduino Uno

#include <SoftwareSerial.h>

#include <TinyGPS.h> // Incluimos TinyGPS

SoftwareSerial mySerial(10, 11); // RX, TX

String mensajeRecibido;

TinyGPS gps; // Declaramos el objeto gps

 

// Declaramos las variables para la obtención de datos

String url;

float latitude, longitude;

const int maxUbicaciones = 20

; // Tamaño máximo del array

String ubicaciones[maxUbicaciones]; // Array para almacenar las ubicaciones

int indiceUbicaciones = 0; // Índice para controlar el array

 

void setup() {

    Serial.begin(9600); // Iniciamos el puerto serie

    Serial.println(" ---Buscando señal--- ");

    mySerial.begin(9600);

    delay(1000);

    mySerial.println("AT ");

    delay(1000);

    mySerial.println("AT+CMGF=1 "); // Configuramos el modo texto para SMS

    delay(1000);

    mySerial.println("AT+CNMI=1,2,0,0,0 "); // Configuramos para recibir mensajes automáticamente

    delay(2000);

}

 

void loop() {

    while (mySerial.available()) {

        mensajeRecibido = mySerial.readString();

        if (mensajeRecibido.indexOf("ON") > -1) {

            capturarUbicacion();

        } else if (mensajeRecibido.indexOf("OFF") > -1) {

            enviarUbicacionesGuardadas();

        }

    }

 

    while (Serial.available()) {

        int c = Serial.read();

        if (gps.encode(c)) {

            gps.f_get_position(&latitude, &longitude);

            url = "http://maps.google.com/maps?f=q&hl=en&q=";

            url += String(latitude, 5);

            url += ",";

            url += String(longitude, 5);

            Serial.println(url);

        }

    }

}

 

void capturarUbicacion() {

    if (indiceUbicaciones < maxUbicaciones) {

        gps.f_get_position(&latitude, &longitude);

        String nuevaUbicacion = "http://maps.google.com/maps?f=q&hl=en&q=" + String(latitude, 5) + "," + String(longitude, 5);

        ubicaciones[indiceUbicaciones] = nuevaUbicacion;

        indiceUbicaciones++;

        Serial.println("Ubicación capturada: " + nuevaUbicacion);

    } else {

        Serial.println("Memoria de ubicaciones llena.");

    }

}

 

void enviarUbicacionesGuardadas() {

    if (indiceUbicaciones == 0) {

        Serial.println("No hay ubicaciones para enviar.");

        return;

    }

 

    Serial.println("Enviando ubicaciones guardadas...");

    String num;

 

    // Encontrar el inicio y fin del número de teléfono en el mensaje recibido

    int inicio = mensajeRecibido.indexOf(""+");

    int fin = mensajeRecibido.indexOf(""", inicio + 1);

 

    if (inicio != -1 && fin != -1) {

        num = mensajeRecibido.substring(inicio + 1, fin);

    } else {

        // Número predeterminado si la extracción falla, reemplaza con tu número

        num = "+529993847288";

    }

 

    Serial.println(num);

 

    for (int i = 0; i < indiceUbicaciones; i++) {

        delay(2000);

        mySerial.println("AT+CMGF=1 "); // Configuramos el modo texto para SMS

        delay(2000);

        String part1 = "AT+CMGS="";

        String part2 = "" ";

        String todo = part1 + num + part2;

        mySerial.print(todo); // Envía el comando para iniciar SMS

        delay(2000);

        mySerial.print(ubicaciones[i]); // Enviar la URL de la ubicación

        mySerial.print(char(0x1A)); // Fin de mensaje del SMS

        delay(2000);

    }

 

    // Limpiar la lista de ubicaciones después de enviar

    for (int i = 0; i < maxUbicaciones; i++) {

        ubicaciones[i] = "";

    }

    indiceUbicaciones = 0;

}

Utilización.

  • Una vez realizadas todas las conexiones necesarias, insertamos la tarjeta SIM (con saldo suficiente para realizar dichas acciones) al móduloSIM800L, conectamos el Arduino a nuestra PC, y esperamos a que se conecte a la red.
  • Sabremos que está conectado a la red cuando el led del módulo SIM800L parpadee en un intervalo de aproximadamente 5 segundos.
  • Descarga la app en el siguiente link: https://drive.google.com/drive/folders/1yGgL1l3vaHRgM1iyeOQE7Hud4AIaEfbl?usp=sharing
  • Ingresamos a nuestra aplicación creada y para ir capturando nuestras ubicaciones oprimimos el botón “Guardar Ubicación”.

  • Haremos la misma acción dependiendo de las cantidades de ubicaciones que deseemos guardar.
  • Mientras hacemos esa acción, en nuestro programa Arduino mediante el puerto serial nos ira mostrando un mensaje “Ubicación Capturada….”.

???????

  • Una vez hayamos capturado todas nuestras ubicaciones, procedemos a descargarlas en nuestro telefono por medio de un mensaje SMS.

???????

  • Para ello oprimimos el botón “Recibir Ubicaciones”.
  • Mientras dichas ubicaciones van ingresando a nuestra mensajería, cada una ira apareciendo de forma automática en nuestra aplicación marcando de esta manera los puntos capturados.

  • Una vez hecha todas las acciones anteriores, nos saldrá un botón “Limpiar” que indica borrar esas ubicaciones para generas otras nuevas.
  • De esta manera tenemos un buen funcionamiento de nuestro proyecto.

Conclusiones.

Carlos: En conclusión, este proyecto es muy importante ya que, mediante la combinación de tecnologías como el GPS y aplicaciones móviles, hemos desarrollado una herramienta importante que puede ser aplicada en diversos contextos, desde la trazabilidad de rutas hasta la organización de viajes. Este proyecto representa un avance significativo en la optimización de la navegación y la comprensión del entorno geográfico, proporcionando una solución que destaca por su precisión y facilidad de uso.

Víctor: El proyecto de Captura de Ubicaciones con GPS y su Visualización en Google Maps a través de una aplicación móvil ha demostrado ser una herramienta poderosa para la geolocalización. La combinación de tecnología GPS y la interfaz intuitiva de Google Maps permite una captura precisa y una visualización clara de datos de ubicación en tiempo real. Este proyecto destaca el potencial de la tecnología móvil para mejorar la eficiencia y la toma de decisiones basadas en la ubicación.

Bermúdez: En conclusión, este proyecto no solo es práctico sino también una excelente manera de aprender sobre la integración de diferentes tecnologías como GPS, microcontroladores, y visualización de datos en mapas. Con los conocimientos y componentes adecuados, se puede personalizar para diferentes aplicaciones según las necesidades específicas del usuario.

Referencias.

  • Localización GPS con Arduino y los módulos GPS NEO-6. (2016, 28 septiembre). Luis Llamas. Recuperado 10 de junio de 2024, de https://www.luisllamas.es/localizacion-gps-con-arduino-y-los-modulos-gps-neo-6/
  • Proyecto GPS-Aplicacion. (2028, 28 octubre). ARDUINOCC. Recuperado 10 de junio de 2024, de https://forum.arduino.cc/t/proyecto-gps-aplicacion/552384

Para comentar debes acceder Acceder

Comentarios


No hay comentarios en este post