Hi,
im new here and startet programming only a few weeks before. My english is not the best and i hope it's understandable. I got some experience with Basic and Turbo Pascal 6 in school and now started with an Arduino mega ADK. The basic exercises went great so i bought an LS20031. If i got the GPS unit to pin 0 and 1 on the Board (RX => TX / TX => RX) i could read some data with GPS Fox oder MiniGPS @ 57600-baud. But the example for TinyGPS doesn't work so I used an FTDI Breakout Board and changed the gps to 1Hz and 4800-baud and the sentence GPRMC and GPGGA.
Since the change the Data with only GPS-TX connected to the RX are fine, with RX and TX connected sometimes the new line signal got lost and instead there are strange signs (like a wrong baud in the serial monitor).
Only TX:
$GPGGA,203619.000,5341.2901,N,01008.3782,E,1,7,1.02,42.9,M,45.8,M,,6F
$GPRMC,203619.000,A,5341.2901,N,01008.3782,E,1.02,133.48,211211,,,A61
$GPGGA,203620.000,5341.2901,N,01008.3789,E,1,7,1.02,42.9,M,45.8,M,,6E
$GPRMC,203620.000,A,5341.2901,N,01008.3789,E,1.01,127.36,211211,,,A6F
$GPGGA,203621.000,5341.2897,N,01008.3794,E,1,7,1.02,43.1,M,45.8,M,,64
$GPRMC,203621.000,A,5341.2897,N,01008.3794,E,0.67,128.16,211211,,,A60
$GPGGA,203622.000,5341.2893,N,01008.3798,E,1,7,1.02,43.0,M,45.8,M,,*6E
With the Example from the TinyGPS Libary the only Lines apperaring in the Serial Monitor window are these but nothing about the position.
Testing TinyGPS library v. 10
by Mikal HartSizeof(gpsobject) = 103
(Only TX GPS => RX Arduino), i've tried to find a mistake now for two weeks but i've no idea where to search now, i hope someone could help me.
The Example sketch:
#include <TinyGPS.h>
#include <NewSoftSerial.h>
/* This sample code demonstrates the normal use of a TinyGPS object.
It requires the use of NewSoftSerial, and assumes that you have a
4800-baud serial GPS device hooked up on pins 2(rx) and 3(tx).
*/
TinyGPS gps;
NewSoftSerial nss(2, 3);
void gpsdump(TinyGPS &gps);
bool feedgps();
void printFloat(double f, int digits = 2);
void setup()
{
Serial.begin(9600);
nss.begin(4800);
Serial.print("Testing TinyGPS library v. "); Serial.println(TinyGPS::library_version());
Serial.println("by Mikal Hart");
Serial.println();
Serial.print("Sizeof(gpsobject) = "); Serial.println(sizeof(TinyGPS));
Serial.println();
}
void loop()
{
bool newdata = false;
unsigned long start = millis();
// Every 5 seconds we print an update
while (millis() - start < 5000)
{
if (feedgps())
newdata = true;
}
if (newdata)
{
Serial.println("Acquired Data");
Serial.println("-------------");
gpsdump(gps);
Serial.println("-------------");
Serial.println();
}
}
void printFloat(double number, int digits)
{
// Handle negative numbers
if (number < 0.0)
{
Serial.print('-');
number = -number;
}
// Round correctly so that print(1.999, 2) prints as "2.00"
double rounding = 0.5;
for (uint8_t i=0; i<digits; ++i)
rounding /= 10.0;
number += rounding;
// Extract the integer part of the number and print it
unsigned long int_part = (unsigned long)number;
double remainder = number - (double)int_part;
Serial.print(int_part);
// Print the decimal point, but only if there are digits beyond
if (digits > 0)
Serial.print(".");
// Extract digits from the remainder one at a time
while (digits-- > 0)
{
remainder *= 10.0;
int toPrint = int(remainder);
Serial.print(toPrint);
remainder -= toPrint;
}
}
void gpsdump(TinyGPS &gps)
{
long lat, lon;
float flat, flon;
unsigned long age, date, time, chars;
int year;
byte month, day, hour, minute, second, hundredths;
unsigned short sentences, failed;
gps.get_position(&lat, &lon, &age);
Serial.print("Lat/Long(10^-5 deg): "); Serial.print(lat); Serial.print(", "); Serial.print(lon);
Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");
feedgps(); // If we don't feed the gps during this long routine, we may drop characters and get checksum errors
gps.f_get_position(&flat, &flon, &age);
Serial.print("Lat/Long(float): "); printFloat(flat, 5); Serial.print(", "); printFloat(flon, 5);
Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");
feedgps();
gps.get_datetime(&date, &time, &age);
Serial.print("Date(ddmmyy): "); Serial.print(date); Serial.print(" Time(hhmmsscc): "); Serial.print(time);
Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");
feedgps();
gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age);
Serial.print("Date: "); Serial.print(static_cast<int>(month)); Serial.print("/"); Serial.print(static_cast<int>(day)); Serial.print("/"); Serial.print(year);
Serial.print(" Time: "); Serial.print(static_cast<int>(hour)); Serial.print(":"); Serial.print(static_cast<int>(minute)); Serial.print(":"); Serial.print(static_cast<int>(second)); Serial.print("."); Serial.print(static_cast<int>(hundredths));
Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");
feedgps();
Serial.print("Alt(cm): "); Serial.print(gps.altitude()); Serial.print(" Course(10^-2 deg): "); Serial.print(gps.course()); Serial.print(" Speed(10^-2 knots): "); Serial.println(gps.speed());
Serial.print("Alt(float): "); printFloat(gps.f_altitude()); Serial.print(" Course(float): "); printFloat(gps.f_course()); Serial.println();
Serial.print("Speed(knots): "); printFloat(gps.f_speed_knots()); Serial.print(" (mph): "); printFloat(gps.f_speed_mph());
Serial.print(" (mps): "); printFloat(gps.f_speed_mps()); Serial.print(" (kmph): "); printFloat(gps.f_speed_kmph()); Serial.println();
feedgps();
gps.stats(&chars, &sentences, &failed);
Serial.print("Stats: characters: "); Serial.print(chars); Serial.print(" sentences: "); Serial.print(sentences); Serial.print(" failed checksum: "); Serial.println(failed);
}
bool feedgps()
{
while (nss.available())
{
if (gps.encode(nss.read()))
return true;
}
return false;
}
greetings from germany
Arne