// this sketch will allow you to bypass the Atmega chip // and connect the GPS directly to the USB/Serial // chip converter. // Connect VIN to +5V // Connect GND to Ground // Connect GPS RX (data into GPS) to Digital 0 // Connect GPS TX (data out from GPS) to Digital 1 void setup() {} void loop() {}
Direct Connection with Jumpers on Leonardo
If you have a Leonardo we have to do a funky trick where we swap the Direct connect wires (because the processor chip acts like the USB/Serial converter rather than having a seperate chip. The upshot is you'll need two wires. For basic testing as long as the wires touch the two sets of pads, you'll be able to continue with this very basic test. We don't suggest soldering them yet in since as long as the GPS works, you can go forward and use software serial if you prefer
Select Software Serial on the switch. Connect a wire from the TX pad to digital 0 and a wire from the RX pad to digital 1.
Testing Direct Connection
Now plug in the USB cable, and open up the serial monitor from the Arduino IDE and be sure to select 9600 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.
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.
Sending NMEA Commands via Direct Connect
You can send $PMTK and other commands from the GPS module datasheet, just type into the serial monitor box. Don't forget you'll need to set Both NL & CR (new line and carriage return) next to the baud rate selection box)!
Text editor powered by tinymce.