Real-Time Sensor & Video Console
A cross-platform C++17 and Qt6 desktop application that ingests real-time data from a range of hardware sensors and video sources over serial and TCP/UDP, processes it on background threads, and visualizes it on a live dashboard with SQLite storage and logging. Built by extending the open-source OpenCPN application, with configurable, port-adjustable sensor integrations and per-subsystem simulators for testing. The company and project names are kept private, so this covers the engineering only, not the purpose.
- C++
- Qt
- CMake
- FFmpeg
- SQLite
- Python
- OpenCPN
Summary. A cross-platform desktop application in C++17 and Qt6 that brings real-time data from a range of hardware sensors and video sources into one live dashboard. It builds on the open-source OpenCPN project and adds configurable sensor integrations. This describes the engineering only; I keep the company and project names private and leave the purpose out.
Sensor and video integration
The core of my work was integration, and I built most of these sensor connections myself: configurable, port-adjustable modules that connect to different sensors and feeds and bring their data in over serial (UART) and TCP/UDP. Across the system that covered GPS and GNSS receivers, AIS, other NMEA instruments, and live and recorded camera and video streams handled with FFmpeg. The same modules could be pointed at different ports and sources through configuration, without changing code.
Architecture
Data flows through a clear pipeline: acquisition from the serial or network port, parsing, then Qt signals and slots carry it to the live interface, to SQLite for storage, and to a logger. Video runs on background QThread workers so the interface stays responsive under real-time load, and a small TCP server streams it to multiple clients. A common integration layer means new sensor types and protocols slot in through configuration rather than special-casing each one, and the modules reconnect on their own when a sensor or feed drops, so the dashboard keeps running. To develop and test each part without the real hardware, I built standalone simulators that replay mock data.
Tooling
The application is built with CMake and runs on Linux and Windows. I worked across the codebase in C++, with Python for supporting utilities. Rather than starting from scratch, I integrated OpenCPN into the system and refactored the parts it needed.
Questions
Can you share what this was for?
No. I keep the company and project names private and leave the purpose out, for my own reasons. What I can share is the engineering: the technologies, the sensor integrations, and the architecture.
What was the hardest part?
Making the sensor integrations configurable and port-adjustable, so the same software could talk to different sensors and feeds over different serial and network ports without code changes.