Connecting u-blox NEO-6M GPS to Arduino

I picked up a u-blox NEO-6M GPS like this:

for $28 from

Connecting the GPS a PC First

My first step was to connect the GPS to a PC first and make sure I could get it to work. The GPS outputs TTL serial data. So I just needed to connect the GPS to an FTDI to USB cable. You can pickup such a cable here if you don’t already have one:

My basic clues to make this happen were found here:

The pinout for the FTDI cable is:

Interconnecting the FTDI cable to the GPS is easy:

FTDI Color        GPS Pin
Black(GND)        GND
Yellow(RX)        TX
Orange(TX)        RX
Red(VCC)          VCC

I connected the FTDI cable to my laptop and it immediately recognized the GPS as COM11. I set my terminal emulator for 9600 baud and it came right up!


There is a tiny green LED on the GPS board (at least the version I have). When it flashes green, it has locked onto the satellites.

I went to the u-blox site to get their board evaluation software:

Came up fine and even told me exactly which room I was testing it in:


Connecting the GPS to an Arudino

It seems there is a library for EVERYTHING these days and that certainly is true for the GPS module. I downloaded the TinyGPSPlus library from here:

I followed their instructions to install the library into the Arduino IDE. I then compiled and ran BasicExample from the GPS examples. This code doesn’t actually interface with the GPS. Instead, it really just let’s you know the GPS software library is working OK. No issues were found with this.

Next, I opened the kitcheSink example. This example wants to connect to the GPS with pin 3 of the arduino connected to the RX pin of the GPS and pin 4 of the Arduino connected to the TX pin of the GPS. You HAVE to verify the baud rate for the GPS. The software is setup to use 4800 and, at least for me, the default is 9600.

Once that was done, the software came up w/o a single hitch and started displaying GPS information:


I perused the TinyGPSPlus library and using it is very straight forward.

Connecting a GPS to your Arduino and extracting location, date, time, speed, etc. is very simple!


This entry was posted in c-arduino and tagged , . Bookmark the permalink.

12 Responses to Connecting u-blox NEO-6M GPS to Arduino

  1. Rocker says:

    Software serial is too slow, are there alternatives?

    • Dan TheMan says:

      With a normal arduino Uno, the only other choice I know is to use the UART pins of 0 and 1, but then you can’t use normal USB debugging (e.g. Serial.print).

      With an Arduino Mega, you could use pins 14,15; 16,17; or 18,19. They are supported by hardware and should go faster.

  2. Pingback: Arduino, GPS, and SMS: Where Are You Arny the Arduino? | Big Dan the Blogging Man

  3. pohyee says:

    Hi, May i know that i must use FTDI cable? if i didnt use, it cant work?

  4. Alexandre says:

    I just get my u-blox NEO-6M GPS and only the date and the time are running (I have the good values for the time but not for the date). The speed, location, altitude, …. are not working.
    Any idea why it’s not working ?

    • Dan TheMan says:

      I would say are you sure you have the right baud rate if EVERYTHING were wrong, but if the date and time are correct, that isn’t the case.

      One possibility is the GSM data is coming in to the arduino too fast and getting corrupted. I believe when I was experimenting with the GSM, I slowed the baud rate down. I’m sure I didn’t let it operate faster than 9600 baud.

      The only other suggestion I can make is make sure you have a clear view of the sky – take it outside to be sure. Also make sure the antenna is properly attached.

      Good luck, and when you find the problem let us know!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s