A compact ZED F9P GNSS status display and USB diagnostic console for topside ROV operations.
DeepLynx Topside GPS is an Arduino based GNSS display for a u blox ZED F9P receiver. It reads navigation data over I2C, shows live GPS status on a 240 x 320 ST7789 screen, and exposes a USB serial command console for diagnostics.
The current sketch is aimed at field testing and early topside integration. It provides a clear visual status display while also letting a connected computer query detailed GNSS data such as position, time, motion, fix quality, RTK state, DOP values, and high precision position fields.
| Navigation | Latitude, longitude, altitude, course over ground, UTC time |
| Fix Status | Fix type, GPS health, satellites used, RTK or differential correction state |
| Accuracy | Horizontal accuracy, vertical accuracy, data age, DOP values through serial commands |
| USB Output | COM OFF, COM READY, and COM TX status shown directly on screen |
| Part | Purpose |
|---|---|
| u blox ZED F9P GNSS module | High accuracy GNSS receiver |
Arduino compatible microcontroller with SerialUSB |
Host controller and USB diagnostic output |
| ST7789 240 x 320 TFT display | Local topside status display |
| I2C wiring | GNSS communication from the F9P to the controller |
| SPI wiring | Display communication |
| GNSS antenna | Required for satellite reception |
The firmware includes several selectable screen layouts:
| Style | Name | Description |
|---|---|---|
| 0 | Tactical | Dense operational status layout |
| 1 | Minimal | High contrast simplified display |
| 2 | Marine | Marine instrument inspired display |
| 3 | DeepLynx Sci Fi | Angular DeepLynx themed display |
| 4 | LCARS | Colorful operations panel style |
The default style is currently LCARS.
The USB serial console runs at:
115200 baud
The device does not block while waiting for USB. It will boot and continue displaying GPS status even when no computer is attached.
| Command | Description |
|---|---|
help |
Show the command list |
all |
Print every diagnostic group |
pvt |
Print compact position, velocity, and time summary |
pos |
Print position fields |
time |
Print GNSS UTC time fields |
motion |
Print velocity, ground speed, and course over ground |
quality |
Print fix type, validity, satellite count, and accuracy |
rtk |
Print RTK and differential correction state |
dop |
Print dilution of precision values |
hp |
Print high precision geodetic and ECEF position fields |
stream on |
Continuously print all diagnostic groups |
stream off |
Stop continuous printing |
rate 1 |
Set GNSS navigation rate to 1 Hz |
rate 5 |
Set GNSS navigation rate to 5 Hz |
style list |
Show available display styles |
style next |
Cycle to the next display style |
style 0 through style 4 |
Select a specific display style |
Install these libraries before compiling:
#include <Wire.h>
#include <SPI.h>
#include <SparkFun_u-blox_GNSS_Arduino_Library.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>The current sketch uses these TFT pins:
#define TFT_CS 9
#define TFT_DC 8
#define TFT_RST 3Update these values if your display wiring changes.
The ZED F9P is accessed over I2C:
Wire.begin();
Wire.setClock(100000);
zedF9p.begin(Wire);The sketch configures the receiver for UBX output over I2C and starts with a 1 Hz navigation rate.
This is an early field test sketch. It is intended to validate the display layout, USB command interface, GNSS health logic, and ZED F9P data mapping before expanding into the full topside GPS system.
Planned future work may include Ethernet output, NMEA 0183 output, UDP broadcast support, and web based configuration.
This firmware is part of the broader DeepLynx ROV Pilot Software effort. The topside GPS unit is intended to support real world ROV positioning workflows by providing reliable local GNSS status and machine readable navigation output for topside systems.