Hola a todos,

estoy intentando leer los datos de mi Gps usando la librería TinyGps pero tengo algún fallo y no funciona.

Tengo una APM1(2560) con un MTK3329. Creo que puede haber un error al seleccionar los pines RXPin y TXPin (lo he probado de muchas formas pero no conecta). Cuando ejecuto el programa la consola me muestra lo siguiente:

Nota: <<uart_gps.available() siempre es falso >>

///////////////////////////////////////////////////

*___ Mi primer Gps ___* 

Iniciando Gps...
RxPin no disponible.
RxPin no disponible.
RxPin no disponible.
RxPin no disponible.
RxPin no disponible.
RxPin no disponible.
...

...

////////////////////////////////////////////////////

¿Alguien podría  echarme una mano con esto?

 

--------------------------------------------------------------------------------------------------------------------------------------------------

#include <NewSoftSerial.h>
#include <TinyGPS.h>

#define RXPIN 4 // GPS TX pin connects to Arduino D0 (thankfully by default)
#define TXPIN 3 // GPS RX pin connects to Arduino D1. You could change these if making your own hardware
#define GPSBAUD 38400 // baud rate of our EM-406 GPS module. Change for your GPS module if different

// Create an instance of the TinyGPS object
TinyGPS gps;
// Initialize the NewSoftSerial library to the pins you defined above
NewSoftSerial uart_gps(RXPIN, TXPIN);


void getgps(TinyGPS &gps);

void setup()
{
Serial.begin(115200);

uart_gps.begin(GPSBAUD);

Serial.print("*___ Mi primer Gps ___* \r\n");
delay(2000);
Serial.print("Iniciando Gps...\r\n"); 
delay(3000);
}

void loop()
{
while(uart_gps.available()) // While there is data on the RX pin...
{
Serial.print("RxPin disponible");
int c = uart_gps.read(); // load the data into a variable...
if(gps.encode(c)) // if there is a new valid sentence...
{
getgps(gps); // then grab the data, and display on LCD
}
}
Serial.print("RxPin no disponible.\r\n");
}


// The getgps function will get and print the values we want.
void getgps(TinyGPS &gps)
{
// Define the variables that will be used
float latitude, longitude;
// Then call this function
gps.f_get_position(&latitude, &longitude);

Serial.print("Latitud: ");
Serial.print(latitude,5);
Serial.print("Longitud: ");
Serial.print(longitude,5);


// Same goes for date and time
int year;
byte month, day, hour, minute, second, hundredths;
gps.crack_datetime(&year,&month,&day,&hour,&minute,&second,&hundredths);

Serial.print(hour, DEC);
Serial.print(":");

if (minute<10)
{
Serial.print("0");
Serial.print(minute, DEC);
} else if (minute>=10)
{
Serial.print(minute, DEC);
}

Serial.print(":");


if (second<10)
{
Serial.print("0");
Serial.print(second, DEC);
} else if (second>=10)
{
Serial.print(second, DEC);
}

Serial.print(" ");
Serial.print(day, DEC);
Serial.print("/");
Serial.print(month, DEC);
Serial.print("/");
Serial.print(year, DEC);
Serial.print(gps.f_altitude());
Serial.print("m ");
Serial.print(gps.f_speed_kmph());
Serial.print("km/h");

// Here you can print statistics on the sentences.
unsigned long chars;
unsigned short sentences, failed_checksum;
gps.stats(&chars, &sentences, &failed_checksum);

}

 

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –