Elastic Sheep

Because elasticdog was already taken

Elastic Sheep header image 2

Testing a EM-406A GPS module

March 19th, 2009 · 15 Comments · Uncategorized

Some months ago I ordered a EM-406 GPS module from Sparkfun. I intended to explore geotagging and this module seemed to be a simple one to use : integrated antenna, SiRF III chipset (seems to be well know on forums) while not too expensive.


Among the specs :

  • 20-Channel Receiver
  • Extremely high sensitivity : -159dBm
  • 70mA at 4.5-6.5V
  • Outputs NMEA 0183 and SiRF binary protocol

Module interface

You provide a 5V power source and it begins to output NMEA sentences on the TX output at 4800 bauds. When the led stops blinking the module is fixed : enough satellites are tracked to computes its position as Lat/Long coordinates.



The 1PPS pin provides an 1hz pulse synchronized on the GPS clock signal.

Connecting the module to the PC

Having no serial port on my laptop I use a Prolific PL-2303 USB-to-RS232 adapter. The TTL adaptation is done with a small Sparkfun level shifter board.

One problem is that the serial level is not TTL : 2.8V instead of 5V. Simply connecting the module TX to the level shifter RX-I is not enough. Another level adaptation is done with the following circuit I found after several days of Google fruitless searches : http://www.musicfromouterspace.com/analogsynth/oddsandends.html#GATEBOOSTER [Dead link].


The reverse conversion from TTL to 2.8V can be done with a simple voltage divider circuit.


The power is provided by a spare USB port.

Testing the connection

The simplest way to test if you can correctly read NMEA sentences on your PC is to launch the Terminal configured with the following parameters : 4800 bauds, 1 stop-bit, no parity.

Once powered on the module should immediatly starts the output of NMEA sentences.

Testing the module : SiRFDemo

To go further and actually see the content of the data sent by the GPS module, the SiRFDemo application is very helpful (http://www.falcom.de/support/software-tools/sirf/).

This GPSPassion forum entry provides a lot of information about to the use of the software : http://www.gpspassion.com/forumsen/topic.asp?TOPIC_ID=25575


15 Comments so far ↓

  • Kim

    Thanks so much for this entry – it was very useful! One quick question – when you do your level shifting, do you still use the level shifter RX-I chip(maybe something like a MAX232?) in addition to the circuit you provided, or does the circuit serve both purposes? I tried your design, but I’m still getting complete gibberish out of my EM-406A. My only other thought is that I may have totally failed at soldering… Thanks for any advice you can provide!

  • The Chief Sheep

    Hi Kim

    I am using the Sparkfun level shifter circuit to obtain TTL serial levels (0-5V) with my USB-Serial adapter. It provides the same functionality as a MAX232. As the serial level of the EM-406A is 0-2.8V, I then use an additional shift to raise 2.8 to 5V.

    Thus I have the following connections :
    GPS => [2.8V - 5V shifter] => [TTL RS-232 shifter] => USB-Serial adapter

    If you need to connect your GPS directly to a microcontroller serial input at a TTL level, you only need the first shifter stage.

    Could you provide more information about your hardware setup ?

    Another problem could be a bad baudrate/protocol settings. Your GPS is could be setup to output SirF binary data when you expect NMEA. In this case, SiRFDemo has a “Synchronize Protocol&Baud Rate” that could help you to find the correct settings.

    Good luck !

  • Kim

    Wow – thanks so much for the advice! Adding the TTL level shifter made it work like a charm, and I got my first data out successfully today (now off to learn NMEA protocol!).

    This is a part of a bigger project for me – I’m designing an indoor-outdoor tracking device for my senior project – so eventually all of the data will be going into a microprocessor where it will be synthesized with data from microaccelerometers and other ICs, but the current challenge was to get anything at all out of the GPS, and start figuring out how to do signal processing on the arriving sentences. And you just made life super-easy for me. Would you like to be credited for your help as “The Chief Sheep” in my references? :)

  • The Chief Sheep

    Hi Kim,

    I don’t mind ;)
    Glad to see you’re making progress with your own project.

  • Maurits


    Thanks for the excellent instruction. I was just wondering why the PNP transistor is included. Why not omit Q2, replace R5 with a wire and connect R7 to the emitter of Q1? Then use R6 as a pull-down for the emitter (and R7).


  • Nathan

    Hey Chief-

    I just wanted to let you know that I found this to be very helpful.

  • Testing the serial interface and the GPS

    [...] wrote about the connection of the EM-406A GPS module to an ATMEGA168 and Teensy AT90USB162 in this post and this [...]

  • Jo

    TO Maurits: If I understand you correctly you are proposing an Emitter follower. It won’t work because Q1′s Vbe is 0.6V and Vb (when the GPS gives a logic ’1′) is 2.8, it means Ve can’t be higher than 2.2V. Hence Q2.

  • Frank

    Hi, thanks for posting about your project, I am doing a similar one for my undergraduate final year and I was wondering. Is the sensitivity of the EM-406A good indoors or should I invest in the more expensive EM-408 plus antenna plus antenna interface cable, thanks

  • Ian


    Good info. An alternative, and probably a better method for dealing with communication with the GPS, (if you’re going to be using usb anyways), is to just skip the multiple level conversions using one of these: http://www.sparkfun.com/commerce/product_info.php?products_id=718

    It plugs straight into USB on one side, and uses 3.3V logic on the other. Hence all that is needed is to plug RX/TX on the GPS straight to TX/RX on the board, Ground goes to Ground, and VIN on the GPS goes to VCC (+5 from usb) on the board.

  • ChasTiv

    Not sure how the level shifter works, but there should be a resistor in the base of Q2 otherwise you will momentarily short the 5V supply to ground.

  • wider

    sadly the link [GATEBOOSTER] is dead

  • loner556

    wider, the link is dead but the circuit is provided in the schematic just below the link.

    Chief, thanks for posting the booster circuit. It fixed the issues I was having with my project.

  • mulder


    The Chief Sheep would you mine to repost it again or send email 2 me, l really need help, schematic to read data from gps, thanks…

  • The Chief Sheep

    Hi Mulder,
    Sorry the original link is dead. I’ll send you a more complete schematic by PM.

Leave a Comment