Friday, February 25, 2011

AVC Bot: Picking a GPS Module

Selecting a GPS Module

GPS is the heart of any robomagellan-esque robot; my AVC bot is no different. I wanted a high performance GPS that could deal with the challenges around the Sparkfun building including an urban canyon on the west side, trees, and very little tolerance for error all around the course.

Sparfkun did a comparison between various GPS modules they sell. The long and short of it is that of all the modules tested, the Locosys LS20031, based on a MediaTek chipset, seems to have dealt best with the challenges around the building.

Another factor of importance was update rate. Most GPS modules update at 1Hz but a few provide fixes more frequently. The LS20031 is one of those, providing fixes at 5 Hz out of the box.  Adjustable baud rate is helpful, too, so that the data sent by the GPS is sent quickly, reducing lag between fix time and processing, and ensuring sufficient time between updates for processing.

Locosys LS20031
Locosys LS20031

Thanks to Sparkfun's Free Day I ordered a Locosys LS20031. Unfortunately the first one was never able to get a proper fix on satellites.

The replacement (thanks SFE) didn't work at first either. It couldn't pick up a single satellite. Now I was really frustrated and wondering if it was time to bring in the good luck rubber chicken to ward away the evil gremlins. More on this momentarily.


Pharos iGPS 500,

I ran across a source for an $18 Sirf Star III GPS, the Microsoft Pharos iGPS-500, from an online surplus seller. The upside is the sensitive chipset (although the EM406, also a Sirf III, didn't perform quite as well as the Locosys in SFE's testing).

The downside is the fixed 1Hz update rate and 4800bps data rate. EDIT: After the 2011 AVC I contacted Pharos support and obtained the pinout. I can now adjust baud rate and choose which NMEA sentences are transmitted. Cool.

Upon arrival, I got a solid fix using the device as originally intended, hanging off a USB to serial adapter.  After converting to pin headers, performance degraded considerably and I was worried that somehow I was jinxing GPS modules.

But performance improved when I constructed an extension cable and moved the module away from the breadboard. It still wasn't great.

Finally I decided to power it with the same 5V as the USB adapter, instead of 3.3V.  That did the trick.  The fix was as good as ever.

Back to the LS20031

I decided to try the same approach with the Locosys. The module either really doesn't like to sit next to a breadboard, or next to the mbed, or maybe both. With long wires attaching it to the breadboard, it quickly got a solid fix outdoors and works beautifully.  Now I'm in business!


  1. Would you mind sharing the pinout? I have a couple of these and have it working with just receiving data at 4800 baud but I'd like to reconfigure it.


  2. For the Locosys, you can find the pinout at which carries the GPS. Other sites have the pinout.

    For the iGPS-500, unfortunately, I can't share the pinout because I contacted Pharos for the information which is proprietary and I was asked specifically not to share the info. *sigh* You might want to have a look at a thread on Let's Make Robots which may give you some ideas on reverse engineering and figuring out which is the mysterious RX-in pin.


Note: Only a member of this blog may post a comment.