Deep Dive: Building a Raw MAVLink Control System (Pico 2 + Custom QGC UI)

Hi everyone,

I’ve spent a lot of time recently customizing QGroundControl for business use cases adding widgets and connecting C++ backends but I realized that tools like PX4 and ArduPilot often “hide” the complexity of what’s actually happening between the hardware, the protocol, and the UI.

To bridge that gap, I decided to build a system from scratch using raw MAVLink and a microcontroller.

The Setup:

  • Embedded: Raspberry Pi Pico 2 sending raw MAVLink messages over UART.

  • Protocol: Implemented a custom helper layer to handle HEARTBEAT messages, telemetry (via NAMED_VALUE_FLOAT), and command parsing (MAV_CMD_DO_SET_RELAY).

  • UI: A custom QGC build using Qt/QML and C++ with a mobile-friendly control panel for real-time GPIO manipulation and temperature monitoring.

Full Blog Post: From Pico to Custom QGC

If anyone’s hacking on custom GCS setups, MAVLink integration, or unique hardware-to-UI pipelines– I’d love to connect. Always open to chat or even join forces on anything in the QGC/MAVLink world.

Can’t wait to hear your thoughts and feedback.

Vishal.

Hi there!
This looks interesting.

A question about the label: Are you looking for a job in that area, as you put the Looking for Opportunities label?
Or can I relabel this post correctly, so it gets viewed by the people that actually care about this sort of stuff?

Hi @nitru, thanks for taking a look!
Yes, I put that label there intentionally as I am currently on the market for new opportunities in this specific domain (C++/Qt, embedded systems, and drone tech).
However, I definitely want to make sure the post reaches the right technical audience for discussion and feedback. If relabeling it (or adding additional tags) will help it surface better for people working on custom GCS pipelines, please go ahead and adjust it. Appreciate the help!

1 Like