Full form of GPS is global positioning system. GPS is one of the very superb inventions that help us very much. GPS finds the position by making satellites as reference. It is accurate up to few meters. Now a days almost everyone in the world are using GPS for navigation.

Here I am sharing my experience with a GPS module. GPS modules are available in almost all electronic shops. The picture of a GPS module is shown below. The working of almost all the modules are the same. All these modules emit the GPS coordinates in a standard format (NMEA). Recently I have checked the signals from a GPS device present in a marine vessel and it is exactly the same as my GPS device.

What is NMEA ?

NMEA is a standard data format supported by almost all GPS manufacturers. NMEA stands for National Marine Electronics Association.  The purpose of NMEA is to ensure a standard data format so that the users can mix and match hardware & software. For example, the program that we develop here will work perfectly for any other GPS device that supports NMEA.


gps1The GPS unit that I bought has an RS232 as well as a TTL interface. We can connect this GPS device to any of the Computer or Raspberry Pi or any Micro-controller very easily. I have connected and did the experiments using GPS on Raspberry Pi, Laptop and Micro-controller.

Here I am explaining a sample python program that will find the coordinates using this GPS module. I used a python library called pynmea for reading and parsing the data returned by the GPS module.

First, power up the GPS module. The input power supply depends on the type of GPS module that you are using. The module I used supports 12V and 5V input voltage. The next step is to connect the GPS module to your Computer/Raspberry Pi/Micro-controller using the RS232 (serial port). If your laptop or PC is not having the RS232 port, don’t worry, you can use an RS232 to USB converter cable. Check the serial port in which this device is connected (This can be found from the device manager). Before we start writing the program, ensure that the pynmea library is installed in your computer.

First we will check whether the device is working properly. So we will write a small python program to read the data from the serial port.

__author__ = 'Amal G Jose'

import serial
ser = serial.Serial()
ser.baudrate = 9600
ser.port = 'COM5'
while True:
    print ser.readline()

In my case the device was connected to COM5 port. Change the port accordingly and execute this program. If you are getting values in the console, then you are good to go.

Then execute the following program to parse the data and find the coordinates.

__author__ = 'Amal G Jose'
import time
import serial
import string
from pynmea import nmea
ser = serial.Serial()
# Reading serial data from COM5 port. Change this port according to your settings.
ser.port = "COM5"
ser.baudrate = 9600
ser.timeout = 1
gpgga = nmea.GPGGA()
while True:
data = ser.readline()
if data[0:6] == '$GPGGA':
##method for parsing the sentence
lats = gpgga.latitude
print("Latitude values : " + str(lats))
lat_dir = gpgga.lat_direction
print("Latitude direction : " + str(lat_dir))
longitude = gpgga.longitude
print("Longitude values : " + str(longitude))
long_dir = gpgga.lon_direction
print("Longitude direction : " + str(long_dir))
time_stamp = gpgga.timestamp
print("GPS time stamp : " + str(time_stamp))
alt = gpgga.antenna_altitude
print("Antenna altitude : " + str(alt))
lat_deg = lats[0:2]
lat_mins = lats[2:4]
lat_secs = round(float(lats[5:])*60/10000, 2)
latitude_string = lat_deg + u'\N{DEGREE SIGN}' + lat_mins + string.printable[68] + str(lat_secs) + string.printable[63]
print("Latitude : " + str(latitude_string))
lon_deg = longitude[0:3]
lon_mins = longitude[3:5]
lon_secs = round(float(longitude[6:])*60/10000, 2)
lon_str = lon_deg + u'\N{DEGREE SIGN}' + lon_mins + string.printable[68] + str(lon_secs) + string.printable[63]
print("Longitude : " + str(lon_str))

view raw


hosted with ❤ by GitHub