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 upto some 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 electronic shops. The picture of a gps module is shown below.

gps1The gps unit that I bought is having an RS232 as well as a TTL interface. We can connect this device to a computer, raspberry pi or any micro-controller very easily. I connected and did the experiments using this device 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. This depends on the type of gps module that you are using. The module I used supports 12V and 5V input voltage. Then connect the gps module to your computer using the RS232. 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()
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