Los dispositivos NEO-6 son una familia de receptores fabricados por U-Blox, que pueden ser conectados con facilidad a un autómata o procesador como Arduino.
Están diseñados para tener un pequeño tamaño y bajo consumo consumo. La intensidad de corriente necesaria es de unos 37mA en modo de medición continuo.
La precisión que en posición es de 2.5m, en velocidad 0,1m/s y en orientación 0.5º, valores más que aceptables para un sistema de posicionamiento GPS.
Son muy empleados en proyectos de como robots y drons.
https://mega.nz/#!XhFRVIpR!7mY2lb3FTgHKlDedGTNtutJeSem6kaDhes_PfFIenJk
#include <SoftwareSerial.h>//incluimos SoftwareSerial
#include <TinyGPS.h>//incluimos TinyGPS
TinyGPS gps;//Declaramos el objeto gps
SoftwareSerial serialgps(11,10);//Declaramos el pin 11 Tx y 10 Rx mega, algunas versiones
//SoftwareSerial serialgps(4,3);//Declaramos el pin 4 Tx y 3 Rx uno
//SoftwareSerial serialgps(50,51);//Declaramos el pin 50 Tx y 51 Rx due, mega
//Declaramos la variables para la obtención de datos
int year;
byte month, day, hour, minute, second, hundredths;
unsigned long chars;
unsigned short sentences, failed_checksum;
void setup()
{
Serial.begin(115200);//Iniciamos el puerto serie
serialgps.begin(9600);//Iniciamos el puerto serie del gps
//Imprimimos:
Serial.println("");
Serial.println("www.lawedeingenieria.jimdo.com ");
Serial.println("GPS GY-GPS6MV2");
Serial.println(" ---Buscando senal--- ");
Serial.println("");
}
void loop()
{
while(serialgps.available())
{
int c = serialgps.read();
if(gps.encode(c))
{
float latitude, longitude;
gps.f_get_position(&latitude, &longitude);
Serial.print("Latitud/Longitud: ");
Serial.print(latitude,5);
Serial.print(", ");
Serial.println(longitude,5);
gps.crack_datetime(&year,&month,&day,&hour,&minute,&second,&hundredths);
Serial.print("Fecha: ");
Serial.print(day, DEC);
Serial.print("/");
Serial.print(month, DEC);
Serial.print("/");
Serial.print(year);
Serial.print(" Hora: ");
Serial.print(hour, DEC);
Serial.print(":");
Serial.print(minute, DEC);
Serial.print(":");
Serial.print(second, DEC);
Serial.print(".");
Serial.println(hundredths, DEC);
Serial.print("Altitud (metros): ");
Serial.println(gps.f_altitude());
Serial.print("Rumbo (grados): ");
Serial.println(gps.f_course());
Serial.print("Velocidad(kmph): ");
Serial.println(gps.f_speed_kmph());
Serial.print("Satelites: ");
Serial.println(gps.satellites());
Serial.println();
gps.stats(&chars, &sentences, &failed_checksum);
}
}
}
#include <SoftwareSerial.h>
SoftwareSerial gps(4,3);
char dato=' ';
void setup()
{
Serial.begin(115200);
gps.begin(9600);
}
void loop()
{
if(gps.available())
{
dato=gps.read();
Serial.print(dato);
}
}
#include <SoftwareSerial.h>
#include <TinyGPS.h>
SoftwareSerial serial1(4, 3); // RX, TX
TinyGPS gps1;
void setup() {
serial1.begin(9600);
Serial.begin(9600);
Serial.println("esperando conexion con el satelite.... ");
}
void loop() {
bool recebido = false;
while (serial1.available()) {
char cIn = serial1.read();
recebido = gps1.encode(cIn);
}
if (recebido) {
Serial.println("----------------------------------------");
//Latitud y Longitud
long latitud, longitud;
unsigned long ida_de_informacion;
gps1.get_position(&latitud, &longitud, &ida_de_informacion);
if (latitud != TinyGPS::GPS_INVALID_F_ANGLE) {
Serial.print("latitud: ");
Serial.println(float(latitud) / 100000, 6);
}
if (longitud != TinyGPS::GPS_INVALID_F_ANGLE) {
Serial.print("longitud: ");
Serial.println(float(longitud) / 100000, 6);
}
if (ida_de_informacion != TinyGPS::GPS_INVALID_AGE) {
Serial.print("tiempo de lectura (ms): ");
Serial.println(ida_de_informacion);
}
//Dia y Hora
int ano;
byte mes, dia, hora, minuto, segundo, centesimo;
gps1.crack_datetime(&ano, &mes, &dia, &hora, &minuto, &segundo, ¢esimo, &ida_de_informacion);
Serial.print("fecha (GMT): ");
Serial.print(dia);
Serial.print("/");
Serial.print(mes);
Serial.print("/");
Serial.println(ano);
Serial.print("Horario (GMT): ");
Serial.print(hora);
Serial.print(":");
Serial.print(minuto);
Serial.print(":");
Serial.print(segundo);
Serial.print(":");
Serial.println(centesimo);
//altitude
float altitudeGPS;
altitudeGPS = gps1.f_altitude();
if ((altitudeGPS != TinyGPS::GPS_INVALID_ALTITUDE) && (altitudeGPS != 1000000)) {
Serial.print("Altitude (cm): ");
Serial.println(altitudeGPS);
}
//velocidad
float velocidad;
//velocidad = gps1.speed(); //
velocidad = gps1.f_speed_kmph(); //km/h
//velocidad = gps1.f_speed_mph(); //milla/h
//velocidad = gps1.f_speed_mps(); //milla/segundo
Serial.print("velocidad (km/h): ");
Serial.println(velocidad, 2); //Conversion a Km/h
//sentito (en la centésima de grado)
unsigned long sentido;
sentido = gps1.course();
Serial.print("Sentido (grau): ");
Serial.println(float(sentido) / 100, 2);
//satélites y precisión
unsigned short satelite;
unsigned long precision;
satelite = gps1.satellites();
precision = gps1.hdop();
if (satelite != TinyGPS::GPS_INVALID_SATELLITES) {
Serial.print("satelite: ");
Serial.println(satelite);
}
if (precision != TinyGPS::GPS_INVALID_HDOP) {
Serial.print("precision (centesimos de segundo): ");
Serial.println(precision);
}
//float distancia_entre;
//distancia_entre = gps1.distance_between(lat1, long1, lat2, long2);
//float sentido_para;
//sentido_para = gps1.course_to(lat1, long1, lat2, long2);
}
}