GPS shield connected to Arduino UNO

Hi:

I just bought a Linksprite GPS Shield http://www.robotshop.com/linksprite-gps-shield-sd-slot-arduino-3.html
and i would like to connect it to an Arduino Uno. I also want to get my present coordinates using the NMEA library.

How would I connect the Shield to the UNO, and what would my the beginning of my code look like?

Thanks in advance,

How would I connect the Shield to the UNO

You're kidding, right? Shields fit one way.

and what would my the beginning of my code look like?

Probably a few #include statements. Then some global variables. Then, the setup() function, followed by the loop() functions and any functions you write.

It's a GPS. Look at the TinyGPS library for examples.

The documentation that comes with the shield on the useful links section of the product page should be your first target.

This GPS module appears to use SiRF although it support NMEA which is supported by TinyGPS. You may have to enable that if SiRF is the default.

There's an example sketch on the tiny gps website at: http://arduiniana.org/libraries/tinygps/

Could you also keep your discussion down to 1 thread you have multiple.

Hi:

I’m having trouble getting my coordinates back from the gps with the following code. Any help troubleshooting it would be appreciated.

Thanks

#include <SoftwareSerial.h>
#include "nmea.h"

#define RXPIN 3
#define TXPIN 4

#define GPSBAUD 4800

NMEA gps(GPRMC);

SoftwareSerial mySerial(RXPIN, TXPIN); // RX, TX

void setup()  
{
  // Open serial communications and wait for port to open:
  Serial.begin(115200);
mySerial.begin(GPSBAUD);

  Serial.println("");
  Serial.println("GPS Shield QuickStart Example Sketch v12");
  Serial.println("       ...waiting for lock...           ");
  Serial.println("");
}

void loop()
{
  while(mySerial.available())
  {
    int c = mySerial.read();
    if(gps.decode(c))
    {
      if (gps.gprmc_status() == 'A') {
    Serial.println("latitude");
      Serial.println(gps.gprmc_latitude());
     Serial.print(",");
      Serial.println("longitude");
     Serial.println(gps.gprmc_longitude());


        }
      }
    }
  }

I dont recognise your gps library nmea.h. the way you are referencing it is strange too.

Try the TinyGPS library(google it)

It has a sample sketch and examples.

hi:

thanks for the advice... I found this example of the TinyGPS library and i would like to print my coordinates on the serial monitor for now. Later on i will adapt the code. i changed the RX and TX pins to 3 and 4 for my gps shield. The code compiles but displays this error:

avrdude: stk500_getsync(): not in sync: resp=0x00

I am new to Arduino... thanks in advance for your help

/*
  6-8-10

  
  Example GPS Parser based off of arduiniana.org TinyGPS examples.
  
  Parses NMEA sentences from an EM406 running at 4800bps into readable 
  values for latitude, longitude, elevation, date, time, course, and 
  speed. 
  
  For the SparkFun GPS Shield. Make sure the switch is set to DLINE.
  
  Once you get your longitude and latitude you can paste your 
  coordinates from the terminal window into Google Maps. Here is the 
  link for SparkFun's location.  
  http://maps.google.com/maps? q=40.06477,+-105.20997
  
  Uses the NewSoftSerial library for serial communication with your GPS, 
  so connect your GPS TX and RX pin to any digital pin on the Arduino, 
  just be sure to define which pins you are using on the Arduino to 
  communicate with the GPS module. 
  
  REVISIONS:
  1-17-11 
    changed values to RXPIN = 2 and TXPIN = to correspond with
    hardware v14+. Hardware v13 used RXPIN = 3 and TXPIN = 2.
  
*/ 

// In order for this sketch to work, you will need to download 
// NewSoftSerial and TinyGPS libraries from arduiniana.org and put them 
// into the hardware->libraries folder in your ardiuno directory.
// Here are the lines of code that point to those libraries.
#include "SoftwareSerial.h"
#include "TinyGPS.h"

// Define which pins you will use on the Arduino to communicate with your 
// GPS. In this case, the GPS module's TX pin will connect to the 
// Arduino's RXPIN which is pin 3.
#define RXPIN 3
#define TXPIN 4
//Set this value equal to the baud rate of your GPS
#define GPSBAUD 4800

// Create an instance of the TinyGPS object
TinyGPS gps;
// Initialize the NewSoftSerial library to the pins you defined above

SoftwareSerial mySerial(RXPIN, TXPIN);

// This is where you declare prototypes for the functions that will be 
// using the TinyGPS library.
void getgps(TinyGPS &gps);

// In the setup function, you need to initialize two serial ports; the 
// standard hardware serial port (Serial()) to communicate with your 
// terminal program an another serial port (NewSoftSerial()) for your 
// GPS.
void setup()
{
  // This is the serial rate for your terminal program. It must be this 
  // fast because we need to print everything before a new sentence 
  // comes in. If you slow it down, the messages might not be valid and 
  // you will likely get checksum errors.
  Serial.begin(115200);
  //Sets baud rate of your GPS
  mySerial.begin(GPSBAUD);
  
  Serial.println("");
  Serial.println("GPS Shield QuickStart Example Sketch v12");
  Serial.println("       ...waiting for lock...           ");
  Serial.println("");
}

// This is the main loop of the code. All it does is check for data on 
// the RX pin of the ardiuno, makes sure the data is valid NMEA sentences, 
// then jumps to the getgps() function.
void loop()
{
  while(mySerial.available())     // While there is data on the RX pin...
  {
      int c = mySerial.read();    // load the data into a variable...
      if(gps.encode(c))      // if there is a new valid sentence...
      {
        getgps(gps);         // then grab the data.
      }
  }
}

// The getgps function will get and print the values we want.
void getgps(TinyGPS &gps)
{
  // To get all of the data into varialbes that you can use in your code, 
  // all you need to do is define variables and query the object for the 
  // data. To see the complete list of functions see keywords.txt file in 
  // the TinyGPS and NewSoftSerial libs.
  
  // Define the variables that will be used
  float latitude, longitude;
  // Then call this function
  gps.f_get_position(&latitude, &longitude);
  // You can now print variables latitude and longitude
  Serial.print("Lat/Long: "); 
  Serial.print(latitude,5); 
  Serial.print(", "); 
  Serial.println(longitude,5);
}

Can you upload other example sketches to the arduino without problems? try the blink example sketch.

I usually get the error you are getting when i'm trying to upload my code through something that is not an arduino.

Hi,

The error:

avrdude: stk500_getsync(): not in sync: resp=0x00

means that the Arduino is busy and cannot communicate with the PC. First unplug the usb cable or power. Then split the GPS Shield from the main Arduino Borad. Then plug the Arduino to PC and upload the software. Then unplug it again and join the GPS Shield. Then plug the Arduino…

Most probably you are using the Serial.print command etc on the void loop method and it keeps the Arduino busy…