Arduino GPS – On the Cheap

I had an old USB GPS puck sitting around and wondered if I could make it play nice with the Arduino. Of course, there are easier modules (including this one in serial) that can be found elsewhere for a few dollars more. But assuming you have this one, it can be done.

You will need…

An Arduino board and IDE

NewSoftSerial Library:
http://arduiniana.org/libraries/NewSoftSerial/

Adafruit GPS Testing Sketch:
https://github.com/adafruit/GPS-shield-RMC-test-sketch/blob/master/GPStest_RMC.pde

Small Screwdrivers and Soldering Iron

Globalsat Magnetic GPS Puck – $30-35 [1]

JST SH Connector + 6-Wire Assembly – $1.50 [2]

Remove the Module…

  1. Remove the 5 screws from the GPS puck’s housing
  2. Lift out the rubber weatherproofing gasket.  It should not be glued in.
  3. Gently lift the exposed GPS module from the housing and unplug the connector.

Decision Time…

The module has a PL-2303HX chip under the antenna (that ceramic, boxy looking part) that converts serial data to USB so you can normally plug the device into your laptop.   Your Arduino can’t read the USB data coming off your module, so you have two choices:

1) Use the appropriate pin to snag the data before it’s converted or…

2) Convert back outside of the module

Naturally, I went the crazier route, and decided to find the chip and pin.   To get at it, you could (and probably should) carefully cut away the small cover to expose the left side of the chip.  Note that this is all pretty tight work, and I haven’t found an alternate (exposed) point to use other than at the chip itself.

Since I was doing exploratory work, I decided to pop the antenna off the assembly using a flathead screwdriver so that I’d have easy access.  A continuity check showed there’s a solder point on the bottom of the board that correlates with where the antenna post normally passes through, so I was able to simply reattach the antenna later on a short length of wire.

Using the datasheet from Prolific (http://www.prolific.com.tw/eng/downloads.asp?ID=23) you can see that the data we’re looking to snag happens on Pin 5.  This is going to be the data line to your arduino.

Using the wire harness from Sparkfun, you can now wire up the module to your Arduino board.  There are six wires.  One black followed by five white.  Ignore the black one.  The first and last white wires are wired to Gnd, while the fourth white wire is run to the 5v supply on your Arduino to power the module.

You can find a basic diagram here: http://wiring.org.co/learning/libraries/basicpositioning.html

Now that we’re wired up, I used Adafruit’s GPS test sketch to make sure everything was working, which you can find at the link above.  Remember that you’ll have to get the NewSoftSerial library and put it in your libraries folder first.  And for debugging purposes, the LED on the module itself blinks when it’s getting satellite broadcasts.  If the light is solid, the module isn’t getting data… try moving your setup near a window.  You’ll notice mine is on the floor near  a patio door.

You’ll want to check that the pin assignments in the Adafruit Sketch match the pin you’re using to steal data off your GPS module, then upload it and open your Serial monitor.  If you’re connected up correctly, you should soon see your Time, Date, Lat and Long come streaming through!

If you end up using one of these modules with an external IC to switch back to serial, I’d love to see what you used!

[1] GPS Puck – Additional

[2] 6 Wire Assembly – Additional
http://www.sparkfun.com/products/10361
+1Share on TwitterPin it on PinterestSubmit to redditShare on FacebookShare on Tumblr

Yeah That's Me.