Overview
The autonomous drone needed something better than a laptop balanced on a truck tailgate. This is a self-contained ground station built into a Pelican 1550: a Beelink mini PC running Ubuntu, QGroundControl, and the WFB-NG video downlink, plus a custom control panel that makes the whole thing feel like equipment instead of a science fair table.
The control panel PCB
The panel is driven by a custom ESP32-S3 board that bridges physical controls (joystick, throttle, toggle switches, rotary encoders, a key switch) to the PC as a USB composite device: an HID gamepad that QGroundControl reads natively, plus a CDC serial channel for telemetry.
The board was routed entirely headless: schematic ERC driven from 33 violations
to 0, then 668 traces and 32 vias autorouted with 0 DRC violations, verified via
kicad-cli automation. Along the way I caught a real footprint bug (the generic
2×20 header didn’t match the DevKitC-1’s 22.86 mm row spacing) and fixed it with
a custom footprint plus an SPI remap off the octal-PSRAM pins.
Two ILI9341 displays run LVGL-based MFD/PFD screens, prototyped in an SDL2 desktop simulator that switches to real hardware with one line.
The power system
A 12 V, 40 Ah LiFePO4 bus with a per-branch fuse schedule, pass-through AC charging, and thermostatic cooling. Budgeted at ~38 W typical draw for 13+ hours of runtime, with a labeled 23-wire harness cut list. The bottom panel is manufactured and mounted.
Status
PCB v1 is fab-ready (Gerbers exported, order not yet placed). Remaining: battery fit-check (the 170 mm pack vs. 149 mm of case depth is an open argument with physics), top panel design, and porting the LVGL screens from the simulator to the physical displays.