Neo 6m GPS Module is one of the most frequently used GPS modules throughout the world. The Neo 6m GPS module is used for the Location Tracking. I have been using the Ublox Neo 6m GPS module in different types of advanced level projects, which you can check out by clicking on the links given below.
- Car Accident Location Tracking using Ublox Neo 6m GPS module, GSM, and Arduino
- Nodemcu esp8266 IOT based real-time Location Tracking using Neo 6m GPS & Blynk Application.
Due to a lot of requests from my Subscribers and Followers, I decided to make a very basic tutorial on the Ublox Neo 6m GPS Module explaining each and every detail.
In this tutorial, you will learn how to use the Ublox Neo 6m GPS Module with Arduino and find the Longitude and Latitude Values along with the Speed and date-time information. In this
Tutorial, I have tried to cover the maximum things so that you don’t need to search for any other Article. In this Article, I will also explain under what circumstances you don’t get the Longitude and Latitude Values? This is a very common problem which I will discuss in this Tutorial.
The library used in this project is developed by Mikal Hart.
In this tutorial, we will cover
- Neo 6m GPS Module Pinout
- Neo 6m GPS Module features
- Neo 6m GPS Module interfacing with Arduino Uno
- Neo 6m GPS Module programming and finally
The components and tools used in this project can be purchased from Amazon, the components Purchase links are given below:
Arduino Uno: https://amzn.to/2tVz1vu
Mega 2560: https://amzn.to/2ze1kdu
Neo-6m GPS module: https://amzn.to/2LqzyPO
330 ohm resistors pack: https://amzn.to/2NtlAeh
5v 2A adaptor: https://amzn.to/2GsNfcw
2n2222 npn transistors: https://amzn.to/2EmXsIb
10k Resistor: https://amzn.to/2KTd6OW
lm7805 Voltage Regulator: https://amzn.to/2IZEl5x
330-ohm resistors pack: https://amzn.to/2NtlAeh
female DC power jack socket: https://amzn.to/2KEo1gt
470 uf capacitors: https://amzn.to/2xDCOzf
5×7 cm vero board: https://amzn.to/2OHGbvn
female headers: https://amzn.to/2zqmtiJ
connection wires: https://amzn.to/2DpBuW7
Super Starter kit for Beginners: https://amzn.to/2KJvmKG
Jumper Wires: https://amzn.to/2KMoVXs
Bread Board: https://amzn.to/2MS4q8X
12v Adaptor: https://amzn.to/2Ntr6h1
PCB plate: https://amzn.to/2IUwpCt
Variable Supply: https://amzn.to/2MT4Qfj
Digital Multimeter: https://amzn.to/2Nvft9i
Vero Board / strip board: https://amzn.to/2MTf9jD
Soldering iron kit: “best” You guys should definitely purchase this: https://amzn.to/2zfoNuJ
Solder wire: https://amzn.to/2ufUMWf
Wire Stripper: https://amzn.to/2KOqxfU
wire cutter: https://amzn.to/2ucIq14
PCB small portable drill machine: https://amzn.to/2Nu62XF
What is GPS?
GPS or Global Positioning System is a satellite navigation system that furnishes location and time information in all climate conditions to the user. GPS is used for navigation in planes, ships, cars and so on. GPS provides continuous real-time, 3-dimensional positioning, navigation, and timing worldwide. The GPS is used to finding the Longitude and Latitude Values.
How GPS Determines a Position:
The working/operation of Global positioning system is based on the ‘trilateration’ mathematical principle. The position is determined from the distance measurements to satellites. From the figure, the four satellites are used to determine the position of the receiver on the earth. The target location is confirmed by the 4th satellite. And three satellites are used to trace the location place. A fourth satellite is used to confirm the target location of each of those space vehicles. Global positioning system consists of satellite, control station and monitor station and receiver. The GPS receiver takes the information from the satellite and uses the method of triangulation to determine a user’s exact position.
About the Neo 6m GPS Module:
This is the Ublox Neo 6M GPS module that I am going to use in this Tutorial.
This GPS module can be interfaced with the Arduino using VCC, RX, TX, and Gnd. In order to interface this module with Arduino, we will need to solder 4 wires. Usually, the Ublox NEO 6M GPS modules comes with the male headers and using Male to Female type jumper wires this module can be easily interfaced with the Arduino. But if this GPS module does not have any Male headers then you can solder 4 wires.
For the easy Soldering, first of all, apply solder to all the wires that you want to solder with the GPS module, it will save a lot of time. So after applying solder to the 4 wires then I started attaching the wires with the VCC, RX, TX, and Ground.
After I was done with the Soldering then I started checking the short circuit using a Digital Multimeter. To avoid any damage always check the short circuit before you power up any circuit. To check the short circuit set the multimeter on the Beep or continuity.
As you can see there is a short circuit. You can practically see how beneficially this can be. So always check the short circuit and continuity before powering up the circuit.
I removed the solder bridge and I tested again the short circuit and this time everything was just fine. Now this GPS module is ready and can be interfaced with the Arduino Uno or Mega.
Neo 6M GPS Module Features as per the Datasheet:
This GPS module can be powered up using 3 to 5v. I will be using 5v. Its default baud rate is 9600 which we will be using in the programming.
Dimensions help in calculating the size of the final product. We can use this information to make a plastic enclosure in SolidWorks or any other software.
Neo 6m GPS Arduino wiring:
The Neo-6M GPS module interfacing with Arduino is very simple. The VCC of the GPD module is connected with 5v, RX will be connected with pin3 of the Arduino, TX will be connected with pin2 of the Arduino and Ground will be connected with the Arduino’s GND.
I followed the same exact connections and now this GPS module is ready for the programming.
Before you start the Programming, first of all, make sure that you download the TinyGPSPlus library. While you don’t need to download the SoftwareSerial library, this is already available in the Arduino IDE, all you need is only include this in the programming.
Download TinyGPS: TinyGPSPlus
This sample sketch demonstrates the normal use of a TinyGPS++ (TinyGPSPlus) object.
It requires the use of SoftwareSerial, and assumes that you have a
4800-baud serial GPS device hooked up on pins 4(rx) and 3(tx).
// connect tx pin of the gps module with rx pin of arduino
// connect rx pin of the gps module with tx pin of the arduino
// vcc with 5v
// gnd with ground of arduino
static const int RXPin = 2, TXPin = 3;
static const uint32_t GPSBaud = 9600;
// The TinyGPS++ object
// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);
Serial.println(F("A simple demonstration of TinyGPS++ with an attached GPS module"));
Serial.print(F("Testing TinyGPS++ library v. ")); Serial.println(TinyGPSPlus::libraryVersion());
Serial.println(F("by Mikal Hart"));
// This sketch displays information every time a new sentence is correctly encoded.
while (ss.available() > 0)
if (millis() > 5000 && gps.charsProcessed() < 10)
Serial.println(F("No GPS detected: check wiring."));
Serial.print(F(" Date/Time: "));
if (gps.time.hour() < 10) Serial.print(F("0"));
if (gps.time.minute() < 10) Serial.print(F("0"));
if (gps.time.second() < 10) Serial.print(F("0"));
if (gps.time.centisecond() < 10) Serial.print(F("0"));
Commands that we can try also
Serial.println(gps.location.lat()); // Latitude in degrees (double)
Serial.println(gps.location.lng()); // Longitude in degrees (double)
Serial.print(gps.location.rawLat().negative ? "-" : "+");
Serial.println(gps.location.rawLat().deg); // Raw latitude in whole degrees
Serial.println(gps.location.rawLat().billionths);// ... and billionths (u16/u32)
Serial.print(gps.location.rawLng().negative ? "-" : "+");
Serial.println(gps.location.rawLng().deg); // Raw longitude in whole degrees
Serial.println(gps.location.rawLng().billionths);// ... and billionths (u16/u32)
Serial.println(gps.date.value()); // Raw date in DDMMYY format (u32) S
erial.println(gps.date.year()); // Year (2000+) (u16)
Serial.println(gps.date.month()); // Month (1-12) (u8)
Serial.println(gps.date.day()); // Day (1-31) (u8)
Serial.println(gps.time.value()); // Raw time in HHMMSSCC format (u32)
Serial.println(gps.time.hour()); // Hour (0-23) (u8)
Serial.println(gps.time.minute()); // Minute (0-59) (u8)
Serial.println(gps.time.second()); // Second (0-59) (u8)
Serial.println(gps.time.centisecond()); // 100ths of a second (0-99) (u8)
Serial.println(gps.speed.value()); // Raw speed in 100ths of a knot (i32)
Serial.println(gps.speed.knots()); // Speed in knots (double)
Serial.println(gps.speed.mph()); // Speed in miles per hour (double)
Serial.println(gps.speed.mps()); // Speed in meters per second (double)
Serial.println(gps.speed.kmph()); // Speed in kilometers per hour (double)
Serial.println(gps.course.value()); // Raw course in 100ths of a degree (i32)
Serial.println(gps.course.deg()); // Course in degrees (double)
Serial.println(gps.altitude.value()); // Raw altitude in centimeters (i32)
Serial.println(gps.altitude.meters()); // Altitude in meters (double)
Serial.println(gps.altitude.miles()); // Altitude in miles (double)
Serial.println(gps.altitude.kilometers()); // Altitude in kilometers (double)
Serial.println(gps.altitude.feet()); // Altitude in feet (double)
Serial.println(gps.satellites.value()); // Number of satellites in use (u32)
Serial.println(gps.hdop.value()); // Horizontal Dim. of Precision (100ths-i32)
Chat Conversation End
For the complete program explanation and Practical testing, you can watch a video tutorial given at the end.
Neo 6m GPS module connection Problem:
There are situations when you don’t get the longitude and latitude values, the same thing have happened to me and maybe you will also face the same problem. If you are using the same program and connections and still unable to receive the longitude and latitude values then I am sure you might be inside a Building or in the Basement.
To solve this Problem, don’t use this GPS module in the Basement or in a building, because this way the GPS module will take a lot of time in connecting with the Satellites or it will never connect. So try to use this in an open space. I am telling you this from my personal experience as I have been using this GPS module for years.