GPS

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.     

 

 

libreria arduino proteus

https://mega.nz/#!XhFRVIpR!7mY2lb3FTgHKlDedGTNtutJeSem6kaDhes_PfFIenJk

gps arduino mega

#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);

}

}

}

Proyecto 1

 

#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);

}

}

 

Proyecto 2

#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, &centesimo, &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);

  }

}

proyecto 3