The first, and simplest test, is just to echo data back and forth using the Feather's USB connection to read the GPS data out. The nice thing about this demo is no library is required.
Upload the following to your Feather, it will work with the Feather 32u4, M0, M4, WICED, etc. Anything that does not have the RX/TX pins used to communicate.
// Test code for Ultimate GPS Using Hardware Serial // (e.g. GPS for Leonardo, Flora or FeatherWing) // // This code shows how to test a passthru between USB and hardware serial // // Tested and works great with the Adafruit GPS FeatherWing // ------> https://www.adafruit.com/products/3133 // or Flora GPS // ------> https://www.adafruit.com/products/1059 // but also works with the shield, breakout // ------> https://www.adafruit.com/products/1272 // ------> https://www.adafruit.com/products/746 // // Pick one up today at the Adafruit electronics shop // and help support open source hardware & software! -ada // what's the name of the hardware serial port? #define GPSSerial Serial1 void setup() { // make this baud rate fast enough to we aren't waiting on it Serial.begin(115200); // wait for hardware serial to appear while (!Serial) delay(10); // 9600 baud is the default rate for the Ultimate GPS GPSSerial.begin(9600); } void loop() { if (Serial.available()) { char c = Serial.read(); GPSSerial.write(c); } if (GPSSerial.available()) { char c = GPSSerial.read(); Serial.write(c); } }
Now open up the serial monitor from the Arduino IDE and be sure to select 115200 baud in the drop down. You should see text like the following:
This is the raw GPS "NMEA sentence" output from the module. There are a few different kinds of NMEA sentences, the most common ones people use are the $GPRMC (Global Positioning RecommendedMinimum Coordinates or something like that) and the $GPGGA sentences. These two provide the time, date, latitude, longitude, altitude, estimated land speed, and fix type. Fix type indicates whether the GPS has locked onto the satellite data and received enough data to determine the location (2D fix) or location+altitude (3D fix).
For more details about NMEA sentences and what data they contain, check out this site
If you look at the data in the above window, you can see that there are a lot of commas, with no data in between them. That's because this module is on my desk, indoors, and does not have a 'fix'. To get a fix, we need to put the module outside.
If you can get a really long USB cord (or attach a GPS antenna) and stick the GPS out a window, so its pointing at the sky, eventually the GPS will get a fix and the window data will change over to transmit valid data like this:
Look for the line that says $GPRMC,194509.000,A,4042.6142,N,07400.4168,W,2.03,221.11,160412,,,A*77
This line is called the RMC (Recommended Minimum) sentence and has pretty much all of the most useful data. Each chunk of data is separated by a comma.
The first part 194509.000 is the current time GMT (Greenwich Mean Time). The first two numbers 19 indicate the hour (1900h, otherwise known as 7pm) the next two are the minute, the next two are the seconds and finally the milliseconds. So the time when this screenshot was taken is 7:45 pm and 9 seconds. The GPS does not know what time zone you are in, or about "daylight savings" so you will have to do the calculation to turn GMT into your timezone
The second part is the 'status code', if it is a V that means the data is Void (invalid). If it is an A that means its Active (the GPS could get a lock/fix)
The next 4 pieces of data are the geolocation data. According to the GPS, my location is 4042.6142,N (Latitude 40 degrees, 42.6142 decimal minutes North) & 07400.4168,W. (Longitude 74 degrees, 0.4168 decimal minutes West) To look at this location in Google maps, type +40 42.6142', -74 00.4168' into the google maps search box . Unfortunately gmaps requires you to use +/- instead of NSWE notation. N and E are positive, S and W are negative.
The next data is the ground speed in knots. We're going 2.03 knots
After that is the tracking angle, this is meant to approximate what 'compass' direction we're heading at based on our past travel
The one after that is 160412 which is the current date (16th of April, 2012).
Finally there is the *XX data which is used as a data transfer checksum
Once you get a fix using your GPS module, verify your location with google maps (or some other mapping software). Remember that GPS is often only accurate to 5-10 meters and worse if you're indoors or surrounded by tall buildings.
Text editor powered by tinymce.