This GNSS Desktop Application is a tool for viewing real-time and historical GPS data on a Google Maps interface. It allows users to connect to a GNSS device via a serial port, visualize real-time location data, load historical GPS data from CSV files, and manage data display on the map.
Watch the following video to see how the application works in real-time:
- Real-Time GPS Data Visualization: Connect to a GNSS device using a serial port and visualize real-time location updates on a Google Map.
- GPS Data Recording: Record GPS data in real-time to a CSV file for future reference and analysis.
- Historical Data Loading: Load historical GPS data from CSV files and display them as permanent markers on the map.
- Marker Customization: Real-time and historical markers are displayed with color coding based on the signal-to-noise ratio (SNR) value.
- Wi-Fi Signal Indicator: Visual indicator of the Wi-Fi signal strength within the application.
- Control Panel: Includes options to start/stop recording, load historical data, toggle real-time location display, and refresh the map.
- Input Validation and Safety Measures: The application includes safeguards to prevent users from entering incorrect information that may cause the application to crash, enhancing stability and user experience.
The GNSS Desktop Application interfaces with a Quectel LC29H GNSS module via a serial port. To efficiently handle this communication, I developed firmware for an STM32 microcontroller using DMA to process UART data pulses in real-time. This method ensures reliable, high-performance handling of NMEA sentence streams.
I also implemented GPSUtils.c
and GPSUtils.h
to parse various NMEA sentences, such as GGA, GSA, GSV, RMC, and GLL, from the GNSS module. These utilities allow the extraction of essential data, including latitude, longitude, and active satellites, and provide more comprehensive features than existing libraries like TinyGPS.
The firmware and GPS utilities are available in the repository:
Ensure the firmware is uploaded to your STM32 board for proper communication with the GNSS module.
The application is composed of several key components, each defined in separate C++ files:
-
CSVUtils.cpp: Provides utilities for handling CSV files, such as writing GNSS data to CSV and generating titles for map markers based on the data.
-
GNSS_desktop_application.cpp: Contains the main application logic, including UI setup, serial port communication, real-time data processing, and interaction with the Google Maps interface.
-
GPSData.cpp: Defines data structures and functions for parsing and handling GNSS sentences, converting coordinates, and verifying data integrity.
-
main.cpp: The entry point of the application, which initializes and runs the Qt application.
-
NetworkUtils.cpp: Handles network-related functionality, such as checking Wi-Fi signal strength and updating the Wi-Fi signal indicator on the map.
-
SerialPortUtils.cpp: Manages serial port communication, reading data from the GNSS device, and processing it for display and recording.
To install the GNSS Desktop Application on your computer, follow these steps:
-
Download the installer from the following link:
-
Run the installer and follow the on-screen instructions to complete the installation.
-
Once installed, the application can be launched from your desktop or start menu.