I was really eager to interface GPS data with the Arduino microcontroller. The possibilities are endless from Autopilot robots, precisely timed junk, whatever. Tackling it one step at a time, the first goal is to read NMEA data strings from the transmit (Tx) UART serial pin of a GPS module. While, I didn’t want to spend money on a GPS module right away, I still wanted to test something out. So I borrowed a friends GPS navigation system for his car. Sure enough just as I predicted there were test points on the PCB that allow you to read directly from the GPS module. I’m not the first one to do this, as I have seen it done similarly on youtube.
I opened up my friend’s MIO DigiWalker, and this is what I found.

MIO Digiwalker Mainboard. GPS module on the left, all built on the PCB Mainboard. Metal plates removed. Right side contains flash, processor and other stuff necessary to make the user interface (UI) work for the navigation system. far. right contains an SD card slot containing map data. Top left is an external antenna. Top middle left contains an internal antenna mounted on a seperate PCB.
On the reverse side of the pcb right under the GPS module is where I found landing pads or test points.

Bottom center showing the test points. Top is ground since its connected to the large trace surrounding it. The bottom two are connected to the other side of the pcb by micro vias just to the right. Middle is (Rx) bottom is (Tx).
You can test the reading of the data by simply touching them with jumpers from the Arduino. I connected jumpers on ground connection on the Arduino and to Pin 0 which is the Rx pin on the Arduino Duemilanove.
Don’t forget to load a program on the ATMEGA328 microcontroller to read in the data and output it to the serial monitor on your computer. This was the code that I whipped up. I guessed on the baud rate being 4800bps and I got it right the first time for this one. However, other GPS sytems may communicate at different baud rates, for example 38,400bps, just change that in your code if necessary.
A close up of the GPS module reveal this. Looks like a SiRF GSC3e/LP, the product brochure tell that its a 50mhZ ARM7TDMI processor with 1Mb SRAM and some other goodies. Nearby the chip you will find decoupling capacitors, a low noise amplifier and an RF filter which ends up leading to the antennae. There’s also another memory chip nearby, this probably contains the ephemeris data which is basically the position of the satellites in the sky. Since they change position, you have to factor that into the equation when it comes time to calculating your actual position.
This GPS has to be used for typical navigation and not just Arduino stuff, so I decided to solder wires and a connector to those test points to lead it externally outside of the chassis.

My solder gun tip sucks thats why the solder job is not super professional. Anyways this just shows wires attached to the test points.
Who uses the headphone jack anyways on a GPS? I just threw the wires right through it, without breaking it. No holes to drill then.
Interfacing the system with the Arduino is now easy.
By the way, when you set it up and start reading data. The Serial monitor should look something like this. The readings shown on here do not refect a clear signal given by the GPS. But a clear satellite signal will show actual Latitude and Longitude built in within the string along with other info such as heading, speed, elevation according to sea level, date, time, the number of satellites your communicating with, etc.
Tags: featured
- Sony Cybershot W120 Teardown and LCD Replacement
- How to Hook up an N-Channel MOSFET
- LCD Screen No Power, No Signal









