$8 GPS Receiver Hack!

25K19814

Intro: $8 GPS Receiver Hack!

GPS receivers are expensive! This neat and relatively easy hack will turn a high-quality (and cheap) GPS card into one that is usable via serial port. Then you just plug it into an Arduino or any compatible microprocessor and you are good to go!

Check out Andrzej of EmerytHacks who discovered this hack!

STEP 1: Watch My Video!


My video will overview the process of hacking this chip. More details and images will be provided next.

You can also check out my blog @ denialmedia.ca for more information and updates.

STEP 2: Materials

You will need to head out and buy the U-blox PCI-5S chip online. Do not choose a price any higher than $8 because that is what these chips are sold for usually. Here is an eBay link to get you started:

http://www.ebay.com/sch/i.html?_sacat=0&_from=R40&_nkw=u-blox+gps&_sop=15

You will also need a:

  • Arduino
  • Wires
  • Male header pins (or a paperclip)
  • Solder
  • Soldering Iron

An antenna is needed as well. It must have a UFL connector and be an ACTIVE antenna. Here is a search query:

http://www.ebay.com/sch/i.html?_odkw=u-blox+gps+pci-5s&_sop=15&_osacat=0&_from=R40&_trksid=p2045573.m570.l1313.TR0.TRC0.H0.Xgps+antenna+u.fl&_nkw=gps+antenna+u.fl&_sacat=0

STEP 3: Soldering and Connecting

You will need to solder some wire to the connections on the back of the card. As you can see in the first image, 4 wires are needed, all of which will go to the Arduino. I recommend connecting male header pins or a paperclip so that the wire can stay in the port. If you have solid core wire this may be unnecessary.

The TX will go to pin 2, the RX to pin 3, the VCC to 3.3v, and GND to GND.

I've also built a "case" for the Arduino and GPS as part of a larger project, the Arduino autopilot. The things holding the GPS card are simply dowels that are screwed in from the bottom. They both have flat notches that I cut out using a saw.

STEP 4: Installing the TinyGPS++ Library

Head on over to Mikal Hart's website and download the latest version of TinyGPS++. Extract the folder using WinRAR or a similar program and drag it to your Arduino libraries' folder. By default it is (C:\Users\%User%\Documents\Arduino\libraries). Be sure to rename the folder to something without a dash.

STEP 5: Coding and Testing

Connect the Arduino to the computer and open up the IDE (coding program). Go to the DeviceExample:

File > Examples > tinygps > DeviceExample

Here we will make some changes. In line 8 and 9:

static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 4800;

will become:

static const int RXPin = 2, TXPin = 3;
static const uint32_t GPSBaud = 9600;

The 2 represents where the RX pin is (I connected it to digital pin 2) and the TX does the same (I left it unchanged). The U-blox chip is set to a default baud rate of 9600, so I changed the value for that as well.

In the setup section:

Serial.begin(115200);

will become:

Serial.begin(4800);

I changed it so there would be less glitches and there would be less CPU usage. (This step is optional on the MEGA)

STEP 6: Connecting to U-Center

U-center is a great tool for analyzing and configuring the U-Blox chips, plus it is very simple to connect to the software itself.

Go ahead and download the software from http://www.u-blox.com/en/evaluation-software/u-center.html

Upload the following code to the Arduino through the IDE:

#include <SoftwareSerial.h>

SoftwareSerial ss(2,3);

void setup()

{

Serial.begin(4800);

ss.begin(9600);

}

void loop()

{

if (ss.available())

Serial.print((char)ss.read());

if (Serial.available())

ss.print((char)Serial.read());

}


You should see a collection of strings in the serial monitor. Open up the U-center and in the top left corner change the baud rate to 4800, then connect to the Arduino using the connect button. Be sure to close any serial monitors/connections, otherwise this will not work. Click the record button, it will ask what to name a log file. Name the file and click OK.

And there you go! In the view menu you can open up things like the deviation map to see how far it moves, or go full out and open up Google Earth to see where the GPS is showing itself to be. If you have any questions, I'll be sure to answer them!

14 Comments

Hi, I enjoyed the video. Is it possible to do the same mods on a ublox 8 and also place the GPS in model 8 (for data acquisition above Mach 1) and to apogees much higher as used in high altitude ballooning? These applications are for high power rocketry?

Hi! Thanks for the Instructable! If I connect a USB cable to the points: TX, RX, VCC and GND card, I can connect it directly to the USB port of my laptop? Thanks.

No, but the card does have a separate USB connection. See this image: http://4.bp.blogspot.com/-yZYyOJ9kExc/UTtt0C_JnuI/AAAAAAAAAjA/Rt-MAN9auP4/s1600/ublox+pci-5s.jpg

I would like to make a magnetic case for use outside the car, connected to the laptop directly into a USB port. I may have to use a voltage regulator to reduce the 5V to 3.3V card. I'm no expert in electronics! My knowledge is limited. I have suggested to carry out my idea? Thanks.

It's rare for me to assemble an Arduino project and have it work on the first try - seems like there's always *something* LOL - but this went off without a hitch for me. I was able to salvage the antenna out of a non-working Magellan car GPSunit, so I saved a few extra bucks via recycling as well. Thanks for the awesome Instructable! :-)

Hi , thanks for this awesome project !

I have one question , can i, instead of using it with the computer make it autonomous , what can you suggest ?

i want to embed it on a car.

Just like any GPS, this card has limits as to how fast and how high it can go. If you were to build a rocket using this GPS as a control, the rocket would need to maintain a speed of less than 500m/s (1800km/h) and maintain an altitude of less than 50km.

For comparison with rockets, the German V2 travels at about 800m/s at impact; which is one of the slowest points of flight for a rocket. The V2 also traveled at an altitude of 88km while the GPS rocket would barely break the statopause.

You are much better off building an autopiloted airship which can drop more than one payload.

Have fun! :)

Perhaps I was a bit too vague. I have several Laptop Wi-Fi modules and it would be nice to hack them to use them with an Arduino,similar to what you have done with this laptop GPS card, rather than having to buy an expensive Wi-Fi shield. Not to use them for location services, but to use them for Wi-Fi.

Ah, I got it. I'm not sure that this is possible. This card seems to have a USB interface through it's PCI port. The GPS card that I hacked also has the same USB connection through it's PCI port. The question is, how would you interface with it? The WIFI shield does have a pin for something called "SS" but I'm not sure that is is for software serial. Even if it was, the WIFI shield processes the data before it does to the Arduino, I doubt the ability of a computer card to do the same.

I wonder if this could also be done with a laptop wifi card???

This card (U-blox PCI-5S) is a laptop card, it is not a WIFI card though. Some WWAN Laptop cards suppport triangulation through mobile networks, but that's all I know.