6 Replies Latest reply on Jun 18, 2014 10:37 AM by orpheus

    Adafruit Ultimate GPS

    stantheman286

      Hey everyone,

       

      I know the Adafruit Ultimate GPS module isn't listed on the supported shields list, but I thought I'd give it a try.  I've used the module before with my other uCs and it's pretty easy to get going.  I tried following the basic directions to get data out on the serial console listed here:

       

      Arduino Wiring | Adafruit Ultimate GPS | Adafruit Learning System

       

      I figured since the Galileo follows the Uno's layout, that it might work out of the box.  However, when I load a blank sketch and open the Serial Console, I get nothing, even with the correct serial settings.  Other serial example sketches work, but not the GPS data.

       

      Is there something special I must do to get this working?  I'm guessing I'll have to hack the libraries a bit or rewire, which is fine, but I wanted to ask to see if there might be a quick fix.

       

      Thanks!

      Matt

        • 1. Re: Adafruit Ultimate GPS
          arduino_4_life

          Hi Matt,

               we did do an out-of-the-box test with the Adafruit GPS shield, and we could get not get the thing to work on a Galileo. However, we also couldn't get it to work on the Arduino UNO....... none of the example sketches seemed to work at all. Even tried with two of them cause we thought maybe one was a dud.

           

          Do let us know if you have any success with this shield, either on the UNO or the Galileo.

          Erik.

          1 of 1 people found this helpful
          • 2. Re: Adafruit Ultimate GPS
            stantheman286

            Hi Erik,

             

            Definitely.  I have another LTE/GPS mini-PCIe card I'm trying to obtain to replace this GPS, but in the meantime I'm up to the challenge.  I've gotten it to work before on my own custom Atmel-based board, so I have to believe I can get it up on the Galileo.  Hopefully I can find some time haha.

             

            Thanks!

            Matt

            1 of 1 people found this helpful
            • 3. Re: Adafruit Ultimate GPS
              vlvrd

              Hi Matt, did you have any luck with the Ultimate GPS and the Galileo? I guess you can't bypass the Quark as you do the Atmel in the Arduino Uno, but I haven't been able to test other examples because of the Software Serial library. What other Serial examples worked out for you?

              • 4. Re: Adafruit Ultimate GPS
                arduino_4_life

                     " I guess you can't bypass the Quark as you do the Atmel in the Arduino Uno"

                you're right, you can't do this- On the arduino, there is a seperate uC (ATMega 16u2) which handles the serial-USB conversion. So, you have to remove the ATmega320 (main CPU) from its socket in order to 'bypass' it and pass messages directly from your keyboard (USB cable) to the UART on the GPS shield.

                Obviously on Galileo this won't work.

                 

                HOWEVER- since you have access to a shell, you could write a simple C program (even a shell script would probably do it!) which writes your input to the serial port (/dev/ttyS0, I think, for the UART pins on Arduino header) and prints any response to your shell.

                Hell, you could probably get by with just 'echo' and 'cat'

                • 5. Re: Adafruit Ultimate GPS
                  conor100

                  Hi Guys,

                   

                  I believe the Adafruit GPS shield libraries have been ported to the Galileo at the below link, there is a sample sketch also.

                   

                  https://github.com/enableiot/iotkit-samples/tree/master/arduino/gps

                  • 6. Re: Re: Adafruit Ultimate GPS
                    orpheus

                    //  Connect the GPS TX (transmit) pin to Arduino RX1 (Digital 0)

                    //  Connect the GPS RX (receive) pin to matching TX1 (Digital 1)

                    but I prefer using my version of the leo_echo sketch because that can also send commands to the shield, to change updaterate and stuff like that.

                     

                    If you, like me, have soldered stackable headers instead of the stock ones, you can directly connect Digital 8 to Digital 0 and Digital 7 to Digital 1 instead of connecting them to GPS TX/GPS RX, to get a more stable cable connection.

                     

                    #include <Adafruit_GPS.h>

                     

                    #define PMTK_SET_NMEA_UPDATE_1HZ  "$PMTK220,1000*1F"

                    #define PMTK_SET_NMEA_UPDATE_5HZ  "$PMTK220,200*2C"

                    #define PMTK_SET_NMEA_UPDATE_10HZ "$PMTK220,100*2F"

                     

                    // turn on only the second sentence (GPRMC)

                    #define PMTK_SET_NMEA_OUTPUT_RMCONLY "$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29"

                    // turn on GPRMC and GGA

                    #define PMTK_SET_NMEA_OUTPUT_RMCGGA "$PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28"

                    // turn on ALL THE DATA

                    #define PMTK_SET_NMEA_OUTPUT_ALLDATA "$PMTK314,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0*28"

                    // turn off output

                    #define PMTK_SET_NMEA_OUTPUT_OFF "$PMTK314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28"

                     

                    #define PMTK_Q_RELEASE "$PMTK605*31"

                     

                    void setup() {

                      while (!Serial); // wait for leo to be ready

                     

                      Serial.begin(57600); // this baud rate doesn't actually matter!

                      Serial1.begin(9600);

                      delay(2000);

                      Serial.println("Get version!");

                      Serial1.println(PMTK_Q_RELEASE);

                     

                      // you can send various commands to get it started

                      Serial1.println(PMTK_SET_NMEA_OUTPUT_RMCONLY);

                     

                      Serial1.println(PMTK_SET_NMEA_UPDATE_10HZ);

                    }

                     

                     

                    void loop() {

                      if (Serial.available()) {

                       char c = Serial.read();

                       Serial.write(c);

                       Serial1.write(c);

                      }

                      if (Serial1.available()) {

                        char c = Serial1.read();

                        Serial.write(c);

                      }

                    }