Introduction to Raspberry Pi
Imagine a tiny but mighty computer known as the Raspberry Pi. It's like a credit card-sized computer that doesn't cost much. This amazing creation has captured the attention of tech enthusiasts everywhere. Developed by the Raspberry Pi Foundation, it was made to help people learn about computers and do fun electronic projects on a budget. Thanks to its low cost, small size, and a big community of fans and developers, Raspberry Pi has become a favorite for hobbyists, teachers, and professionals.
There are different versions of the Raspberry Pi, but they all share one goal: to be a tool for learning, experimenting, and coming up with cool solutions. Whether you want to create a home theater system, automate your home, or build a robot, Raspberry Pi can make it happen.
Introduction to GPS Module :
Now, let's venture into the world of GPS (Global Positioning System). GPS is like a space-based navigation system that tells you exactly where you are on Earth and what time it is. GPS modules, such as neo 6m gps module, NEO-7M, or NEO-8M, let you add GPS capabilities to your Raspberry Pi projects.
These modules connect with satellites that circle our planet to figure out your precise location, like the latitude and longitude. This is super useful for things like tracking vehicles in real-time, finding hidden treasures in geocaching
games, or navigating the great outdoors. A GPS module usually has a GPS receiver, a special antenna, and electronics to process and share the data.
Circuit diagram:
Connections:
To make your GPS module work with your Raspberry Pi, you need to plug things together:
1. Power It Up: Connect the GPS module's power (VCC) to either the Raspberry Pi's 3.3V pin or the 3.3V GPIO pin.
2. Ground It: Link the GPS module's ground (GND) to the Raspberry Pi's ground (GND) pin.
3. Talk to Each Other: Most GPS modules chat with the Raspberry Pi using UART (Universal Asynchronous Receiver/Transmitter). Connect the GPS module's TX (transmit) to the Raspberry Pi's RX (receive) pin, and vice versa, by attaching the GPS module's RX (receive) to the Raspberry Pi's TX (transmit) pin.
Code:
import serial # Import serial package
from time import sleep
import webbrowser # Import package for opening link in the browser
import sys # Import system package
def GPS_Info():
global NMEA_buff
global lat_in_degrees
global long_in_degrees
nmea_time = []
nmea_latitude = []
nmea_longitude = []
nmea_time = NMEA_buff[0] # Extract time from GPGGA string
nmea_latitude = NMEA_buff[1] # Extract latitude from GPGGA string
nmea_longitude = NMEA_buff[3] # Extract longitude from GPGGA string
print("NMEA Time: ", nmea_time,'\n')
print ("NMEA Latitude:", nmea_latitude,"NMEA Longitude:", nmea_longitude,'\n')
lat = float(nmea_latitude) # Convert string into float for calculation
longi = float(nmea_longitude) # Convert string into float for calculation
lat_in_degrees = convert_to_degrees(lat) # Get latitude in degree decimal format
long_in_degrees = convert_to_degrees(longi) # Get longitude in degree decimal format
# Convert raw NMEA string into degree decimal format
def convert_to_degrees(raw_value):
decimal_value = raw_value/100.00
degrees = int(decimal_value)
mm_mmmm = (decimal_value - int(decimal_value))/0.6
position = degrees + mm_mmmm
position = "%.4f" %(position)
return position
gpgga_info = "$GPGGA,"
ser = serial.Serial ("/dev/ttyS0") # Open port with baud rate
GPGGA_buffer = 0
NMEA_buff = 0
lat_in_degrees = 0
long_in_degrees = 0
try:
while True:
received_data = (str)(ser.readline()) # Read NMEA string received
GPGGA_data_available = received_data.find(gpgga_info) # Check for NMEA GPGGA string
if (GPGGA_data_available>0):
GPGGA_buffer = received_data.split("$GPGGA,",1)[1] # Store data coming after "$GPGGA," string
NMEA_buff = (GPGGA_buffer.split(',')) # Store comma-separated data in buffer
GPS_Info() # Get time, latitude, longitude
print("lat in degrees:", lat_in_degrees," long in degree: ", long_in_degrees, '\n')
map_link = 'http://maps.google.com/?q=' + lat_in_degrees + ',' + long_in_degrees # Create a link to plot location on Google map
print("<<<<<<<>>>>>\n") # Press ctrl+c to plot on the map and exit
print("------------------------------------------------------------\n")
except KeyboardInterrupt:
webbrowser.open(map_link) # Open the current position information in Google Maps
sys.exit(0)
Code Explanation:
We import the necessary packages, including serial for serial communication, time for introducing delays, webbrowser for opening links in a web browser, and sys for system-related operations.
The GPS_Info() function extracts time, latitude, and longitude information from the received NMEA string and converts them into a more human-readable format.
The convert_to_degrees() function converts raw NMEA values into degree decimal format, which is more suitable for mapping.
We specify the target NMEA string we're looking for using gpgga_info and configure the serial port using serial.Serial().
The code enters a loop to continuously read NMEA data from the serial port. When a valid GPGGA data string is found, it's processed to obtain time, latitude, and longitude information, which is then displayed.
We construct a link for Google Maps based on the latitude and longitude values obtained.
Finally, we handle the possibility of a keyboard interrupt (Ctrl+C) to open the Google Maps link and exit gracefully.
This code allows you to collect GPS data from the Raspberry Pi's serial port, parse it, and plot the location on Google Maps. It's a valuable tool for various location-based projects.
read more : Raspberry Pi in IOT
Conclusion:
So, connecting a GPS module to your Raspberry Pi opens the door to many exciting location-based projects. By making these physical connections and using Python code, you can easily add GPS features to your Raspberry Pi creations. Whether you're building a GPS tracker, a weather station, or something else entirely, the Raspberry Pi and GPS module combo is a budget-friendly and accessible way to explore the world of GPS technology. So, grab your Raspberry Pi and start your GPS adventure!
If you appreciate our work don't forget to share this post and leave your opinion in the comment box.
Please do check out other blog posts about Popular electronics
Make sure you check out our wide range of products and collections (we offer some exciting deals!)