-
1Hardware setup
The hardware configuration used in this project consists of:
- Arduino UNO Q
- Linux host (Debian-based)
- STM32F0 microcontroller
- RTL-SDR front-end
- Nooelec NESDR SmarTee SDR
- Active GNSS antenna
- LED matrix display driven by the STM32F0 MCU
- Arduino UNO Q
-
2System architecture
-
3GNSS processing configuration
Real-time GNSS processing is performed using the following configuration:
- Constellation: GPS
- Signal: GPS L1 C/A
- Number of tracking channels: 7
- Coherent integration time: 4 ms
- Front-end: RTL-SDR (live RF input)
The receiver computes standard GNSS outputs in real time, including:
- GPS observables
- Carrier-to-noise density ratio (C/N₀)
- Position, Velocity, and Time (PVT) solution
Galileo signal processing is currently not enabled due to platform resource limitations.
-
4Embedded LED matrix visualization
A dedicated Python script extracts relevant GNSS-SDR outputs and forwards them to the STM32F0 microcontroller on the Arduino UNO Q.
The microcontroller drives an LED matrix display, providing real-time visualization of receiver status and navigation parameters.
Currently visualized information includes:
- Satellite signal strength indicators (C/N₀)
- Receiver activity and status
- PVT-related information
-
5LED matrix visualization of PVT information
The LED matrix provides a compact, color-coded visualization of key PVT parameters:
- Red: A binary clock indicating the number of tracked satellites. The most significant bit is the leftmost LED.
- Purple: A conventional PVT status indicator. It blinks when no solution is available, remains steadily lit at low intensity for a 2D fix, and steadily lit at higher intensity for a 3D fix.
- Yellow: C/N₀ bar indicators for up to seven satellites.
- Green: Position and velocity representation. Within this square, a dot moves in the corresponding direction of motion; its displacement increases or decreases proportionally with the platform’s speed.
![LED matrix PVT]()
-
6Web interface for GNSS-SDR control
A Node.js-based web server runs on the Linux side of the Arduino UNO Q and provides a browser-accessible interface to control GNSS-SDR execution. The web interface allows the user to: Start and stop the GNSS-SDR receiver Select between different GNSS-SDR configuration filesOffline / post-processing configuration Real-time configuration using RTL-SDR Selected GNSS-SDR outputs (observables, C/N₀, and PVT) are exposed for monitoring and downstream processing.
-
7Step 7
Miguel Angel Gomez
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.