A global positioning system (GPS) receiver is used to get precise geographical location by receiving information from satellites. It not only gives information about location but also information like time, date, height and speed. It is so useful that most smartphones are embedded with it.
GPS receivers have many applications in aircraft, ships, sea vessels and the like for navigation purposes. Smartphones with maps (like Google Maps) find routes to a specific destination such as a restaurant, hospital or hotel. With the help of a GPS, a target camp can be located and a missile launched to destroy it.
The GPS receiver module includes an antenna and a built-in processor. The built-in processor calculates the required information from the signals’ output serially in form of strings using NMEA (expanded as National Marine Electronics Association) 0183 protocol. These strings are received serially by the host computer for display or by host processor/controller to take any decision or action.
NEMA protocol includes standard messages given by the GPS receiver. Some standard message outputs from NMEA are GGA, ZDA, VTC, RMC, GSA and GSV. The string starts with $GPRMC tag and gives time, latitude, longitude, etc.
The project here demonstrates how to get location (latitude and longitude), time, date, speed and course-angle information using a GPS receiver. It uses 8-bit AVR microcontroller (MCU) ATmega16A (ATMega32 was used by the author) to get data from the GPS receiver and display it on an LCD. All this information is combined in a single string that starts with $GPRMC tag.
RMC stands for Recommended Minimum GNSS data. GPRMC string format is explained below, and shown in Fig. 2.