Arduino GPS Shield

Adafruit: The Ultimate GPS

We have updated the GPS shield to include Mega, Duo, and Leonardo.

And a picture of our latest build!

and what is the improvement of this version?

One really big one: we've added solder jumpers on the bottom that let you use it with the Mega version of the Arduino. You can use these to use a different set of communication lines if you need the original lines for your project.

If this sounds confusing, we have added the schematic and board drawings: http://dexterindustries.com/files/GPS_Shield_2.0.zip

Another one: the software and examples were updated for the latest Arduino 1.0.1. We added a few examples and additional calculations that let you calculate distances to destinations and times easier: http://dexterindustries.com/files/dGPS.zip

hi
both links point to the same zip file with .sch and .brd
the link to the examples is missing.

BUT it's still incompatible with the 3.3V specification of the GPS receiver!

How do you figure ursm?

?Input Voltage: 3.0V ~ 5.5V DC

We've been running it in this configuration for 2 years with no problems. The levels may be 3.3V but they're certainly compatible with the Arduino digital pins.

Hello world :slight_smile:
Last week I buy dexter industries GPS shield. I tyied to run it with arduino mega adk. I can't read GPS data over serial communication. I read that on arduino mega I must change jumper from 3 to some high pin (10,11,12) but with no success. I also tryed all examples over internet but also with no result.
please help.

regards

Hello world again :slight_smile:
after one week testing I figure this out. I put the jumper on my dexter GPS shield to 10 and change in dGPS.cpp file ports like :

#define SoftrxPin 10
#define SofttxPin 4

and everything works fine :smiley:

Glad you found the change in the software. Did you really spend a week, it looks like you just posted the first request for help an hour or two ago.

What kind of project are you using this for?

Hi,
i make a quadcopter. I want to control the QC over the internet. On board I have arduino mega adk + GPS shield and android phone.
I write android program that control the motors over usb, send back gps data to the server and receive command from web.
I can see QC position on my laptop and can send commands like "goto <latitude, longtitude> etc. :smiley: (sorry for my bad english)

Your English is fine, no worries.

Do you have a project page or something we could share?

Does anyone knows why am i getting always the same latitude and longitude?

Does anyone knows why am i getting always the same latitude and longitude?

Could it be that you're not providing enough detail for a sensible answer, or that you lead a sedentary lifestyle?

Sorry, i just got a Dexter Industries GPS Shield but when i run the sketch i get the same latitude and longitude at different places.
this is my script:

#include <string.h>
 #include <ctype.h>
 #include <SoftwareSerial.h>
 #define SoftrxPin 3
 #define SofttxPin 4
// Initiate the software serial connection
SoftwareSerial gpsSerial = SoftwareSerial(SoftrxPin, SofttxPin);
 int ledPin = 13;                  // LED test pin
 int rxPin = 0;                    // RX PIN 
 int txPin = 1;                    // TX TX
 int byteGPS=-1;
 char linea[300] = "";
 char comandoGPR[7] = "$GPRMC";
 int cont=0;
 int bien=0;
 int conta=0;
 int indices[13];
 void setup() {
   pinMode(ledPin, OUTPUT);       // Initialize LED pin
   pinMode(rxPin, INPUT);
   pinMode(txPin, OUTPUT);
   Serial.begin(9600);
   gpsSerial.begin(9600);
   for (int i=0;i<300;i++){       // Initialize a buffer for received data
     linea[i]=' ';
   }   
 }
 void loop() {
   digitalWrite(ledPin, HIGH);
   byteGPS=gpsSerial.read();         // Read a byte of the serial port
   if (byteGPS == -1) {           // See if the port is empty yet
     delay(100); 
   } else {
     // note: there is a potential buffer overflow here!
     linea[conta]=byteGPS;        // If there is serial port data, it is put in the buffer
     conta++;                      
     Serial.write(byteGPS); 
     if (byteGPS==13){            // If the received byte is = to 13, end of transmission
       // note: the actual end of transmission is <CR><LF> (i.e. 0x13 0x10)
       digitalWrite(ledPin, LOW); 
       cont=0;
       bien=0;
       // The following for loop starts at 1, because this code is clowny and the first byte is the <LF> (0x10) from the previous transmission.
       for (int i=1;i<7;i++){     // Verifies if the received command starts with $GPR
         if (linea[i]==comandoGPR[i-1]){
           bien++;
         }
       }
       if(bien==6){               // If yes, continue and process the data
         for (int i=0;i<300;i++){
           if (linea[i]==','){    // check for the position of the  "," separator
             // note: again, there is a potential buffer overflow here!
             indices[cont]=i;
             cont++;
           }
           if (linea[i]=='*'){    // ... and the "*"
             indices[12]=i;
             cont++;
           }
         }
         Serial.println("");      // ... and write to the serial port
         Serial.println("");
         Serial.println("---------------");
         for (int i=0;i<12;i++){
           switch(i){
             case 0 :Serial.print("Time in UTC (HhMmSs): ");break;
             case 1 :Serial.print("Status (A=OK,V=KO): ");break;
             case 2 :Serial.print("Latitude: ");break;
             case 3 :Serial.print("Direction (N/S): ");break;
             case 4 :Serial.print("Longitude: ");break;
             case 5 :Serial.print("Direction (E/W): ");break;
             case 6 :Serial.print("Velocity in knots: ");break;
             case 7 :Serial.print("Heading in degrees: ");break;
             case 8 :Serial.print("Date UTC (DdMmAa): ");break;
             case 9 :Serial.print("Magnetic degrees: ");break;
             case 10 :Serial.print("(E/W): ");break;
             case 11 :Serial.print("Mode: ");break;
             case 12 :Serial.print("Checksum: ");break;
           }
           for (int j=indices[i];j<(indices[i+1]-1);j++){
             Serial.print(linea[j+1]); 
           }
           Serial.println("");
         }
         Serial.println("---------------");
     
       }
       conta=0;                    // Reset the buffer
       for (int i=0;i<300;i++){    //  
         linea[i]=' ';             
       }                 
     }
   }
 }

Now go back to your last post, click on "modify", highlight the code, then click on the # icon on the editor's toolbar.
Then click on "save".
Then we won't have any of the italics, and your code may make some sense.

You've got a lot of big buffers and strings there; maybe you're running short of RAM.
Move the constant strings into PROGMEM.

Thanks man, i moved the constant string and works just fine.

iteadstudio:
Hi everyone!

Here is another Arduino GPS Shield from ITEAD Studio: http://imall.iteadstudio.com/im120417017.html

Cheers,

Wendy

Yes I just buy your product last time.. The problem is .. default jumper on the products is on 1 (RX) and 0 (TX), when i compile sample code from tinyGPS and softwareserial set to RX 1 and TX 0.. I can't upload on Arduino. I try to change jumper to pin 4 (RX) and pin 3 (TX) and i configure again softwareserial to (4,3). yessss.. I can upload the code !!! but.. I can't get Received anything data from GPS. I read guide from other and it should that the RX PIN 4 connect to TX ( pin 18 ) on arduino Mega 2560 and TX PIN 3 connected to RX (PIN 19) on arduino Mega 2560. I reupload the code and I still can get Received Data.... something wrong with my PIN CONFIGURATION ??? . I will very appreciate if you could give me setup PIN ited connected to arduino Mega with PICT ..thanks

Why don't you contact itead directly instead of hoping they'll see your post on here?

And if you get resolution, please follow up your post?