The goal
Fixed FPV antennas lose the ground station the moment a drone banks hard. A phased array steers its beam electronically, with no gimbal and no moving parts, so the aircraft can hold signal lock through aggressive maneuvering. This is also the stepping stone toward the counter-UAS radar work on the RF roadmap.
Two boards, one architecture
| 3×3 v1 | 4×4 v2 | |
|---|---|---|
| Elements | 9 | 16 |
| Phase shifters | MAPS-010145, 4-bit (22.5°) | HMC1133, 6-bit (5.625°) |
| Gain | ~9.5 dBi | ~12 dBi |
| Steering | ±60° | ±60° |
| Cost | ~$450 | ~$2,750 |
The 3×3 exists to de-risk the architecture at 83% lower cost before committing to the expensive board. Both target >1 kHz beam updates with IMU compensation, so the beam stays locked while the airframe moves.
Programmatic PCB
There is no hand-drawn schematic. Netlist, component placement, and routing are all generated from Python through KiCad’s scripting API: change the element count or spacing and regenerate the board. RF details are handled in code: 1.077 mm traces for 50 Ω on the Rogers layer, 0.3 mm neck-downs at component pads, curved corners, λ/2 patch spacing at 25.84 mm.
The stackup is the part I’m most pleased with: Rogers 4350B (0.508 mm, tan δ 0.0037) only on the top layer where the RF lives, FR4 below, joined with blind vias from two controlled-depth drill passes. About 30% cheaper than a full Rogers board with no meaningful RF penalty.
Control is an STM32H743: native SPI with 9 chip-selects on the 3×3, and twelve daisy-chained 74HC595 shift registers on the 4×4.
Status
Paused. The 3×3 is fab-ready (DRC clean, Gerbers generated) and has been sitting at “awaiting fab quote” since March 2026 while the turbine ECU and ground station ate the bench time. The 4×4 has RF layout done, routing pending. The companion simulator stays live so the beamforming work continues in software.