Es un sistema de posicionamiento global, que permite determinar la posición de un objeto en todo el mundo con una precisión que va de los centímetros a los metros. Los datos para obtener dicha ubicación se determina a través de 24 satélites alrededor del mundo.
Para ubicar la posición en el mapa, usamos dos coordenadas angulares que se miden desde el centro de la Tierra.
# Latitud: Corresponde a las coordenadas norte y sur.
# Longitud: Corresponde a las coordenadas este y oeste.
Usaremos el mapa como referencia para determinar la ubicación aproximada de Arequipa. Trazamos dos líneas para obtener las coordenadas que son:
# Latitud: 16 grados sur
# Longitud: 71 grados oeste
El GPS que usamos en aplicaciones no nos proporciona las coordenadas directamente con el hemisferio. En cambio, las coordenadas se pueden reescribir de la siguiente manera:
# Latitud: - 16 (Al estar debajo de la línea de demarcación de hemisferio norte y sur).
# Longitud: -71 (Al estar a la izquierda de la línea de demercación del hemisferio oeste y este).
SKYLAB SKM53
El modelo usado para este tutorial es el modelo comercial SkyNav SKM53, esta placa de desarrollo contiene embebida una antena y no se necesitan mayores accesorios para hacerlo funcionar. Se aplica en:
# Sistemas de navegación de vehículos.
# PND - Artefactos de navegación portables.
# Receptores GPS por Bluetooth.
# Aplicación de temporizado.
# Determinación de la velocidad de desplazamiento.
Algunas de las prestaciones que posee son las siguientes:
# Sensibilidad de -165 dBM.
# Velocidad de transferencia de datos de 9600 bps.
# Protocolo NMEA.
Para mayor información tenemos el "Datasheet"
CONEXIÓN
Para realizar la prueba de funcionamiento usamos un Arduino Uno. La conexión que se debe realizar es de la siguiente manera:
# RXD (GPS) ==> Pin 3 (Arduino Uno).
# TXD (GPS) ==> Pin 2 (Arduino Uno).
# GND (GPS) ==> GND (Arduino Uno).
# VCC (GPS) ==> 5V (Arduino Uno).
SOFTWARE DE PRUEBA
Antes de poder escribir el programa, debemos bajar dos librerías que se adjuntan a la librería de Arduino IDE en nuestra PC. Primero bajamos la librería "TinyGPS 13" que nos permite manejar los periféricos del GPS, adquirir datos, etc. De la misma manera, debemos usar una librería especialmente hecha para poder comunicarse con este tipo de dispositivos "New Software Serial Library", esta funciona para versiones de Arduino actuales o a partir de la versión 1.0 en adelante.
Luego, implementamos el siguiente código en nuestro Arduino:
/* PROGRAMA DE PRUEBA: SkyNav SKM53 GPS CONEXION: RXD: Arduino Pin 3 TXD: Arduino Pin 2 GND: Arduino GND VCC: Arduino 5V NC y RST: Dejar sin conexion Para correr el programa se necesitan las librerias TinyGPS 13 (TinyGPS.h) y New Software Serial Library (NewSoftSerial.h) Se pueden encontrar en: https://github.com/mikalhart/TinyGPS/releases/tag/v13 http://arduiniana.org/libraries/newsoftserial/ Tambien en el tutorial correspondiente en: http://beetlecraft.blogspot.pe/ Autor: Renato H. http://beetlecraft.blogspot.pe/ El siguiente programa es de uso publico, cualquier modificacion o mal uso del mismo que pudiera ocasionar el mal funcionamiento de la plataforma de uso de la misma no es responsabilidad del autor */ #include <TinyGPS.h> // Libreria de manejo del GPS #include <SoftwareSerial.h> // Libreria de manejo de comunicacion serial alterna long lat, lon; // Variables auxiliares para lectura de longitud y latitud float LAT, LON; // Variables auxiliares para latitud y longitud con punto decimal SoftwareSerial ss(2,3); // Pines usados para comunicacion con el GPS (RXD = 2, TXD = 3) TinyGPS GPS; // Declaracion de cabecera para la funcion GPS void setup(){ ss.begin(9600); // Velocidad de comunicacion del GPS (Segun hoja de datos) Serial.begin(9600); // Velocidad de comunicacion con la computadora } void loop(){ lectura_serial(); // Lectura de la informacion del GPS } void lectura_GPS(){ bool newdata = false; // Variable auxiliar para ingreso de datos unsigned long start = millis(); // Variable auxiliar para refresh y update datos while (millis() - start < 1000){ // Update de lectura cada segundo if (feedgps ()){newdata = true;} // Validacion de datos en la pila } if (newdata){informacion_gps(GPS);} // Ingreso de datos } bool feedgps(){ while (ss.available()){ // Mientras exista informacion en la pila de datos if (GPS.encode(ss.read())) // Validacion de existencia de datos en la pila de datos return true; } return 0; } void informacion_gps(TinyGPS &GPS) { GPS.get_position(&lat, &lon); // Byte de datos de latitud y longitud LAT = lat; // Adquicion de datos en decimales LON = lon; // Adquicion de datos en decimales { feedgps(); // Sin esta funcion, puede causarse un error de suma } } void lectura_serial(){ GPS.get_position(&lat, &lon); // Adquicion de datos de latitud y longitud lectura_GPS(); // Funcion de rutina de lectura del GPS Serial.print("Latitud : "); Serial.print(LAT/1000000,10); // Latitud en grados con diez decimales Serial.print(" :: Longitud : "); Serial.println(LON/1000000,10); // Longitud en grados con diez decimales }
El resultado obtenido al abrir el puerto serial del Arduino IDE debe ser el siguiente:
COMPROBACIÓN DE LAS COORDENADAS OBTENIDAS
Los valores obtenidos deben ser parecidos a los siguientes (La latitud y longitud se miden de -90 a 90 grados):
# Latitud: -16.4XXXXXXXXX
# Longitud: -71.5XXXXXXXXX
Para visualizar los datos en Google Maps, podemos usar la siguiente página: http://itouchmap.com/latlong.html
En la parte inferior derecha podemos ingresar estos datos, la que posee el encabezado "Show Point from Latitud and Longitude" y el resultado que se visualizado será parecido al siguiente:
ALGUNOS PROBLEMAS COMUNES
Inconvenientes comunes pueden presentarse mientras se aprende a usar este módulo. Algunos de ellos se describen a continuación:
# Insuficiente corriente en el GPS, se recomienda usar un puerto USB 3 si está alimentando el Arduino Uno al GPS. Si el caso persiste, es preferible usar una fuente de 5V separada para el GPS.
# Es posible que los valores que se miran en el visualizador del puerto serial sean "Longitud: 0.0000000000 :: Latitud: 0.0000000000", es normal mientras el GPS recibe los datos y los procesa, este proceso puede demorar unos cuantos segundos. Si los datos son los mismos es preferible realizar las mediciones cerca de una ventana abierta o en exteriores.
Autor:
Autor:
No hay comentarios:
Publicar un comentario