Categories
Raspberry PI Tutorials

Interfacing GPS with Raspberry PI 3

 

Adafruit has a very good explanation about GPS interfacing. You may follow that tutorial or continue here.

 

To view, the available USB to TTL converter devices use the following command

ls /dev/ttyUSB*

If you had installed pyserial then you may list all your available COM ports using this command via python

python -m serial.tools.list_ports

Pyserial short Intro is a good place to get started with PySerial Library. One thing to remember while coding in Raspberry Pi 3 model is to use the naming convention difference from PI 2 model

port = "/dev/ttyAMA0"  # Raspberry Pi 2
#port = "/dev/ttyS0"    # Raspberry Pi 3

Deeper detail about serial communication as well as GPS string parsing code is available at the python-example website. From that link, we used this code to run and parse our GPS data

import serial

port = "/dev/ttyAMA0"  # Raspberry Pi 2
#port = "/dev/ttyS0"    # Raspberry Pi 3

def parseGPS(data):
#    print "raw:", data
    if data[0:6] == "$GPGGA":
        s = data.split(",")
        if s[7] == '0':
            print "no satellite data available"
            return        
        time = s[1][0:2] + ":" + s[1][2:4] + ":" + s[1][4:6]
        lat = decode(s[2])
        dirLat = s[3]
        lon = decode(s[4])
        dirLon = s[5]
        alt = s[9] + " m"
        sat = s[7]
        print "Time(UTC): %s-- Latitude: %s(%s)-- Longitude:%s(%s)\
-- Altitute:%s--(%s satellites)" %(time, lat, dirLat, lon, dirLon, alt, sat) 

def decode(coord):
    # DDDMM.MMMMM -> DD deg MM.MMMMM min
    v = coord.split(".")
    head = v[0]
    tail =  v[1]
    deg = head[0:-2]
    min = head[-2:]
    return deg + " deg " + min + "." + tail + " min"

ser = serial.Serial(port, baudrate = 9600, timeout = 0.5)
while True:
    data = ser.readline()
    parseGPS(data)

To reboot raspberry PI

sudo shutdown -r now

 

 

Install minicom terminal to view the available data from serial port

sudo apt-get install minicom

The use this command to run minicom

minicom -b 9600 -o -D /dev/ttyUSB0

This article explains the above-mentioned minicom installation process.

To Exit from minicom: click Ctrl- A, Z then X.

Screen Serial Terminal

Minicom has a very bad user interface. Next best Option you have is “Screen Serial Consol”.  You may install screen console using this command

sudo apt-get install screen

to run screen console use this command

sudo screen /dev/ttyUSB0 9600

To exit from screen console you can press

  1. Ctrl + A then Ctrl + D . Doing this will detach you from the screen session which you can later resume by doing screen -r .

    Cutecom Serial Monitor

    Cutecom is a GUI based serial monitor. You can install this by typing

sudo apt-get install cutecom
lxterminal -e 'cutecom'

It shows output like this

By Abdul Rehman

My name is Abdul Rehman and I love to do Reasearch in Embedded Systems, Artificial Intelligence, Computer Vision and Engineering related fields. With 10+ years of experience in Research and Development field in Embedded systems I touched lot of technologies including Web development, and Mobile Application development. Now with the help of Social Presence, I like to share my knowledge and to document everything I learned and still learning.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.