Track My Order
Frequently Asked Questions
International Shipping Info
Mon-Fri, 9am to 12pm and
1pm to 5pm U.S. Mountain Time:
Chat With Us
-------------------- Tech Support Tips/Troubleshooting/Common Issues --------------------
Power for the GPS Receiver
By default, there is no solder jumper between the 3V3 and Batt jumper pads. If you are not using a coin cell battery and you are just running off the Arduino's 3.3V voltage regulator, you need to make sure that there is a solder jumper as stated in the Hardware Setup:Pre-Flight Checklist - Battery (VBAT) Power Supply [ https://learn.sparkfun.com/tutorials/gps-logger-shield-hookup-guide/#hardware-setup ].
Software Serial and SPI on the Arduino Mega 2560
Not all the pins for the Arduino Mega 2560 are in the same location as the Arduino Uno. The software serial [ https://www.arduino.cc/en/Reference/SoftwareSerial ] and SPI [ https://www.arduino.cc/en/Reference/SPI ] are in different pin locations for the Arduino Mega 2560. You will need to reroute pins and redefine the pin definitions in order to use any of the examples.
A quick, temporary fix for the software serial pins is to bend the software serial header pins out of place and reroute them using jumper wires similar to this tutorial => [ http://mcukits.com/2009/04/06/arduino-ethernet-shield-mega-hack/ ]. You do not need to modify the core Arduino library as explained in the NKC Electronics tutorial.
Try to change these lines where it says:
#define ARDUINO_GPS_RX 9 // GPS TX, Arduino RX pin
#define ARDUINO_GPS_TX 8 // GPS RX, Arduino TX pin
to these software serial pins:
#define ARDUINO_GPS_RX A9 // GPS TX, Arduino RX pin
#define ARDUINO_GPS_TX A8 // GPS RX, Arduino TX pin
For the SPI pins, there are traces that you can cut on the back of the GPS Logger Shield [ https://learn.sparkfun.com/tutorials/gps-logger-shield-hookup-guide/hardware-setup ] so that you do not have to bend the shield's SPI pins out of place. You can then solder a female header pin to the GPS Logger Shield's 2x3 ICSP pins to the Arduino Mega's ICSP. Otherwise, you would need to bend the pins out of place and use jumper wires like the software serial pins.
I recommend rerouting the software serial pins to a different location so that the SPI and software serial pins are not conflicting if you are trying to follow the ÂµSD Card GPS Logging example [ https://learn.sparkfun.com/tutorials/gps-logger-shield-hookup-guide/example-sketch-sd-card-gps-logging ]. There was one case where the MISO (pin 50) and MOSI (pin 51) pins were conflicting with a customer's software serial defined pins on pins 50 and 51. This caused the Arduino Mega 2560 to not receive data from the GPS receiver through software serial due to the Arduino writing data to the microSD card via SPI. Since the Arduino is not receiving data, it believes that it is not seeing any satellites.
Redefine CS on the Arduino Mega 2560
If you rerouted the SPI CS pin to pin 53 on the Arduino Mega, make sure that you also redefine the CS pin too where it says:
#define ARDUINO_USD_CS 10 // uSD card CS pin (pin 10 on SparkFun GPS Logger Shield)
#define ARDUINO_USD_CS 53 // uSD card CS pin (pin 53 on SparkFun GPS Logger Shield)
Low Power Standby Mode
A customer was able to place the GPS into Low Power Standby Mode to conserve power. Try looking below for more information:
Standby Mode: In this Mode the receiver stops navigation and internal processor enters standby state current drain at main supply VDD is reduced to 200 Î¼A typ. Standby Mode is entered by sending NMEA command: $PMTK161,0*28. Host can wake up the module from Standby Mode to full Power Mode by sending any byte via host port.
A tech support representative tested this mode out to verify that it works. The shield only draws about 7mA after the command is issued.
awesome guide! I can't wait to try it out
I've set up a GPC Logger Shield with an Arduino Uno (incl. the cell battery) and I just can't get any results. I've tried the Basic_Passthrough_Software.ino sketch (and also other ones), the GPS Port is not sending anything back. There is also one thing bothering me: there is just the PWR-light turned on on the Logger Shield, all other ones are dark. What am I doing wrong?
Hello , I have a problem
I can not connect the ports of my arduino to GPS when I open my monitor seriaI have 0, I copy a program above
A have a sparkfun logger shield and a arduino UNO
Thanks for the help and sorry for my spelling I'm french
// If you're using an Arduino Uno, RedBoard, or any board that uses the
// 0/1 UART for programming/Serial monitor-ing, use SoftwareSerial:
SoftwareSerial Serial1(1,0); // Create a SoftwareSerial
// Set gpsPort to either ssGPS if using SoftwareSerial or Serial1 if using an
// Arduino with a dedicated hardware serial port
// Define the serial monitor port. On the Uno, and Leonardo this is 'Serial'
// on other boards this may be 'SerialUSB'
// print position, altitude, speed, time/date, and satellites:
// "Smart delay" looks for GPS data while the Arduino's not doing anything else
// Print latitude, longitude, altitude in feet, course, speed, date, time,
// and the number of visible satellites.
SerialMonitor.print("Lat: "); SerialMonitor.println(tinyGPS.location.lat(), 6);
SerialMonitor.print("Long: "); SerialMonitor.println(tinyGPS.location.lng(), 6);
SerialMonitor.print("Alt: "); SerialMonitor.println(tinyGPS.altitude.feet());
SerialMonitor.print("Course: "); SerialMonitor.println(tinyGPS.course.deg());
SerialMonitor.print("Speed: "); SerialMonitor.println(tinyGPS.speed.mph());
SerialMonitor.print("Date: "); printDate();
SerialMonitor.print("Time: "); printTime();
SerialMonitor.print("Sats: "); SerialMonitor.println(tinyGPS.satellites.value());
// This custom version of delay() ensures that the tinyGPS object
// is being "fed". From the TinyGPS++ examples.
static void smartDelay(unsigned long ms)
unsigned long start = millis();
// If data has come in from the GPS module
tinyGPS.encode(gpsPort.read()); // Send it to the encode function
// tinyGPS.encode(char) continues to "load" the tinGPS object with new
// data coming in from the GPS module. As full NMEA strings begin to come in
// the tinyGPS library will be able to start parsing them for pertinent info
} while (millis() - start < ms);
// printDate() formats the date into dd/mm/yy.
// printTime() formats the time into "hh:mm:ss", and prints leading 0's
// where they're called for.
if (tinyGPS.time.minute() < 10) SerialMonitor.print('0');
if (tinyGPS.time.second() < 10) SerialMonitor.print('0');
If you've found a bug or have other constructive feedback for our tutorial authors, please send us your feedback!
Forgot your password?
No account? Register one!