Interfacing with Cheap USB GPS

Well this is my first post, Here goes.

I just got my first arduino ~ 3 days ago. I've been experimenting with things, and I'd love to mess around with GPS. I could order a GPS module, but wheres the fun in that? I remembered I had a cheap USB GPS reciever that came with a laptop I got from ebay. It was cheap, and had an onboard USB to Serial chip no doubt. I cracked it open hoping to find something simple (really had no idea what i was looking for) but it was all surface mount and the only 4 wires coming off the board are for the USB cable. I snooped around and saw a tiny little chip on there labeled pl2303HXD which sure enough is a usb to serial thingy. I found a pinout on google here (can't post a link in my first post >:()

I see a RXD, a TXD, and the VDD_325 which I think is power. Is this possible to interface with the arduino like any other GPS module? Or is my thinking totally wrong? I am a noob at this stuff so sorry if it is.

Any ideas?

Here is the Pinout its on page 12 http://www.prolific.com.tw/support/files/%5CIO%20Cable%5CPL-2303HX%5CDocuments%5CDatasheet%5Cds_pl2303HXD_v1.1.pdf

Is this possible to interface with the arduino like any other GPS module? Or is my thinking totally wrong? I am a noob at this stuff so sorry if it is.

In theory, yes - you already have half of the information needed.

Now you just need to find out what GPS module is being used, and the datasheet for it. Then you can find out what connections are being common between the two chips, and then (once again, in theory) interface to the GPS module.

Essentially, you would be bypassing the USB converter chip; you would likely need to remove it entirely. Then you would have to identify based on your previous investigation what lines were used between the two chips, and likely solder some fine wires to appropriate areas to connect to the GPS module; these wires would then be connected to the Arduino (likely via a digital i/o pin or two, gnd and power, plus NewSoftSerial for comms).

Ah - one other thing that might get ya: The module might be using 3.3V for power and communications, so you need to figure that out as well. If so, then you will need level converters between the module and the Arduino.

You may find this more work than you want to take on, but reverse engineering something like this can be a fun and education thing to do, so if you are up for the task, then go for it!

:)

Yeah I kinda figured it would be hard. I did find out that it is 3.3v no problem I can handle that kind of problem. Hard & Educational > Expensive & Easy. Not that I can't afford a GPS module, but why when I technically already have one. I think this will be a great project for me. Knowing that it can be done makes me really want to work at it.

Thank you so much

If you connect the arduino and gps together at the arduino/gps USB +5v points and the arduino/gps USB grounds, the gps chip should power up as it normally would. For poking around on small stuff, I use an open safety pin connected to a test lead so I can discretely connect to the small stuff on a board. I'd then start the arduino running a dummy program like "blink" that does not interface with the arduino serial port and open the arduino IDE serial monitor. Connect the other end of the test lead to the arduino rx pin. On the USB gps, test the point where the gps would feed the rx of the rs232 converter on the USB gps board. If you get data or gibbersh input to the serial monitor, then you may be reading the gps output. If you get gibberish, experiment with different baud setting in the serial monitor to see if you can get legable data.

Tried what you said, can't get anything on any pin anywhere :-[ If the GPS is 3.3v wouldn't that make the arduino unable to read the tx from it?

If the GPS is 3.3v wouldn't that make the arduino unable to read the tx from it?

Not on a digital input - 3.3v is within the range for a logic HIGH (which I believe is 2.5-5.0 volts). Going the other way (outputing a logic high to the device on one of its pins), will likely damage it, as it is expecting 3.3v...

Found some more info on the chips, The very large is the processor which is http://www.prolificusa.com/pdf/ds_pl6313_v1.2.pdf Another smaller one is the reciever http://www.sige.com/uploads/datasheets/27-DST-02_SE4100L_Datasheet_Rev_2p4_ML_May-26-2009.pdf Gotcha on the 3.3v thing thanks!! Gonna keep trying

Hey,

I’m interested in this as well. I successfully hooked up a cheap GPS receiver to my Arduino once. It’s a largeish GPS-over-bluetooth thingie with a serial<->usb and a serial<->bt bridge. When I cracked it open I found some solder points, added a connector, did some sniffing on the pins with a scope and pretty soon I found rx/tx and gnd. Then I just connected tx to my Arduino Mega rx1, and gnd to gnd. I wrote a small program to basically ‘pipe’ the date from uart1 to uart0, and voila, I had GPS data streaming to my PC through my Arduino Mega.

My GPS module is 3.7v, so I powered it through the battery that came with it (standard Nokia issue), so its signalling at 3.7v to a 5v device which works fine.

What you should be looking for is test pads on your PCB, can you post high-res pictures of your board (both sides) ?

Here’s a picture of my receiver:

there’s a guy in the Netherlands selling them for cheap (http://samenkopen.net/action_product/687860/829678), so if you happen to be Dutch you can pick one up from him.

For now this is the highest res I can get.

http://www.barrettrouton.com/publicupload/gps.jpg

It's a scan so the chips may be readable but the board is a little blurry. The smallest chip further from the other two is the gps chip (sige 4100), The big one is the processor (pl6313) and the medium sized one is the usb to serial chip (pl2303HXD). I'll try to get out the tripod later for a better pic. The other side of the board is just the big pink & silver square thing (I've always assumed that's the receiver itself). It takes up the whole board the only markings are right on the edge of the PCB it says GT-330R. Which I finally found to be the actual receiver model which was discontinued by a Russian company called unitraq. (Can't find a data sheet) Thanks again for the interest

a little blurry

That's a bit of an understatement :) Anyway, I see no test pads on that side of the board, then again, it's too blurry to tell. However, you can just solder straight to the pins of the chip itself.

Any clue what that white connector on the underside is for? Is it a standard GPS connector?

Your right blurry is an understatement good thing my handycam can take pictures http://www.barrettrouton.com/publicupload/gpshires.jpg
Assuming your talking about the big white connector that’s just USB. A data-sheet for a similar model shows serial also supplied to the connector, but the extra pins on mine are just put to ground. If your talking about the other small white thing that’s just a weird LED. Still no luck on finding any serial pins, I will keep trying.

Best to work out from the 2303 chip, because you have data for that. The 12Mhz Xtal confirms this as that device.

First check if only RX and TX are used. It may also use RTS or DTR for reset etc.

Do you have this working to a PC over USB already? If so use Arduino to monitor serial data traffic first, then later you may have lift a pin or cut a track to drive the tx data ( use 1K resistor in series). 4800 is pretty common data rate and then you can use software serial.

Afaics the setup is 2303<-uart->baseband<-spi?->receiver. The baseband comes in two packages, BGA and LQFP64, which is what you have on your board. Reading the datasheet, there’s only one UART brought out on the LQFP64 version, which is on pins 33/34 (TX/RX respectively). Look on page 44 of the datasheet to locate the pins.

I would just solder two wires to pins 33 and 34, find a nice spot for GND, then hook these up to your arduino. The only difficulty I see in this is the actual soldering skill required to solder directly to the pins.

Alternatively you could use a multimeter to try and find a better spot on the board to connect to the rx/tx, perhaps there are pads on the other side of the board?

It works fine over USB it shows up as a serial to usb and I read NMEA data from it perfectly at 4800. I've tried powering it up through the usb and using a wire from the arduino to find a tx, but no luck. I've also tried actually plugging it in like regular and reading data from it, still no luck. Tomorrow I plan on soldering to the tx and rx of the 2303 chip and trying that.

Tomorrow I plan on soldering to the tx and rx of the 2303 chip and trying that.

Why solder to the 2303, why not solder to the baseband? Seems much easier to me.

Ok I will try the baseband. I wasn't sure if that'd work or not.

Well I have killed the baseband chip with my iron. Nothing powers on usb or otherwise :’(. Oh well It was fun trying anyway, plus my order from sparkfun should come in today ;D, and while lacking a gps module, I ordered all sorts of other neat stuff to play with. Thank you everyone for all the help on this. Even though it failed I learned alot and it was fun.