

SATVIK-26
Stabilized Autonomous Telemetry Vehicle Intelligent Kopter | Autonomous drone from scratch for delivery/filming
- Size
- 36 × 36 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 80
- Nets
- 112
- Pads
- 365
- Tracks, vias
- 1,114, 89
- Pours
- 4
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 15 Jul 2026
- Updated
- 7 Aug 2026
Overview
SATVIK-26 is an open-source printed circuit board by SavvySatvikCodes, from the SavvySatvikCodes/SATVIK-26 repository on GitHub. It is a 4-layer board of 36 × 36 mm with 80 parts on 112 nets, routed with 1,114 tracks and 89 vias.
It is built around the BMP388, TPS54560BDDA and AP2112K-3.3, with the ICM-42688-P, USBLC6-2SC6 and SMBJ26A among its other parts. Its parts include 30 capacitors, 23 resistors, 7 connectors, 6 ICs and 5 diodes. It belongs with the STM32 boards of this library.
Main components
6BMP388
LGA-10(2x2)-40℃~+85℃ 1.65V~3.6V 1pa/K 2uA 30Kpa~1.25bar 50pa 8pa I2C、SPI LGA-10(2x2) Pressure Sensors ROHSBosch SensortecPressure SensorsTPS54560BDDA
ESOP-8-40℃~+150℃@(TJ) 1 146uA 4.5V~60V 500kHz 5A 800mV~58.8V Adjustable Buck Buck Built-in No ESOP-8 DC-DC Converters ROHSTexas InstrumentsDC-DC ConvertersAP2112K-3.3
SOT253.3V 600mA CMOS Low Dropout Linear Regulator with EnableDiodes IncorporatedUncategorisedICM-42688-P
LGA-14(2.5x3)-40℃~+85℃ 1.71V~3.6V 16bit 2KB 7.5uA IMU (accelerometer + gyroscope) SPI、I2C X,Y,Z X,Y,Z ±16g ±2000dps Motion Event Detection, Synchronization, Timestamp Support LGA-14(2.5x3) Accelerometers ROHSTDK InvenSenseAccelerometersUSBLC6-2SC6
SOT-23-60.35pF、0.8pF 100nA 150W@8/20us 15V 2 5V 6A@8/20us 6V ESD SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSUMWESD And Surge Protection (TVS/ESD)SMBJ26A
DO-214AA(SMB)-65℃~+150℃ 14.3A 1uA 26V 31.9V 42.1V 600W@10/1000us TVS Unidirectional DO-214AA(SMB) ESD and Surge Protection (TVS/ESD) ROHSMDDESD And Surge Protection (TVS/ESD)
README
README.mdSATVIK-26
A custom STM32H743 flight controller, designed from scratch for ArduPilot.
36 × 36 mm, 30.5 mm stack mounting, 4-layer. My first PCB, built for Hack Club Macondo.
What this is
SATVIK-26 is a flight controller: the computer that reads a drone's sensors and decides how fast to spin each motor. It runs ArduPilot on an STM32H743VIT6, a 480 MHz Cortex-M7.
Anyone can just buy a flight controller and assemble a drone, but I wanted to understand one. There is a large gap between knowing that an IMU talks over Serial Peripheral Interface contrast to having placed that IMU's decoupling capacitor yourself, knowing why it sits exactly where it sits. The only way I know to cross that gap is to draw the schematic and route the board.
This repo is the complete hardware design: schematic, layout, gerbers, BOM, and the reasoning behind the decisions.
Specifications
- MCU - STM32H743VIT6, LQFP-100, 480 MHz Cortex-M7, 2 MB flash/1 MB RAM
- IMU - ICM-42688-P (TDK InvenSense), SPI1
- Barometer - BMP388 (Bosch), I2C2
- Storage - microSD on SDMMC1 for onboard logging
- USB-C with USBLC6-2SC6 ESD protection, DFU accessible
- Input - 2 to 6S direct battery, SMBJ26A TVS clamp
- 5 V rail - TPS54560 buck, 15 µH inductor, SS56 catch diode
- 3.3 V rail - AP2112K-3.3 LDO from the 5 V rail
- Sensing - VBAT divider and ESC current sense into ADC1
- Motor outputs - 8 PWM channels
- Serial - 6 UARTs on JST-GH connectors
- Board - 36 × 36 mm, 4-layer FR4, 1.6 mm, 3 mm corner radius
- Mounting - 4 × M3 at 30.5 mm (standard FC stack)
- Components - 80 footprints, 55 top and 25 bottom
- Weight - 40 g
What makes this not a copy
Dual airframe, 8 PWM outputs. Most 5-inch quad boards break out four motor outputs. I mapped eight timer channels to headers so the same board can fly a quad now and a fixed-wing later, where you need servo channels for ailerons, elevator and rudder on top of throttle. Four outputs would have made this a dead end. Eight cost me real routing space on a 36 mm board, and I decided the flexibility was worth it.
FPV designed in, not bolted on. A dedicated UART is broken out for a video transmitter, and the 5 V rail is sized with headroom to feed a camera and VTX rather than just flight electronics. Retrofitting FPV onto a board that never planned for it means splicing into power and hunting for a spare serial port.
A custom ArduPilot hwdef. ArduPilot does not know what is wired where on a board it has never seen. I am writing a hwdef.dat describing every peripheral, pin function and timer assignment, and the build system compiles firmware specifically for your hardware. That port is part of this project. The board is not finished until it boots real firmware.
For the record: Macondo's flight controller guide builds a rocket FC on a different MCU with a battery charger IC. This is a drone FC on an H7, no charger, different power tree, different sensors.
Design decisions
- TPS54560 buck, rated to 60V. On 4S that looks like overkill, and cheaper 28 V parts would work. I took the headroom deliberately. 6S is 25.2 V charged, uncomfortably close to a 28 V absolute maximum, and a motor decelerating hard dumps energy back into the rail.
- Entire power section moved to the back. I could not route the board with everything on top. Rather than grow it to 40 × 40 and lose stack compatibility, the buck, inductor, LDO, filter caps and thirteen control passives all went to the bottom. That freed the top for MCU fanout, and it put the noisiest thing on the board on the opposite side of a solid ground plane from the IMU, crystal and USB pair. A space fix that turned out to be the right electrical call.
- IMU as close to the mounting centroid as possible. The further a sensor sits from the centre of rotation, the more frame vibration it reads as acceleration that is not real. Vibration is the most common cause of bad behaviour in custom ArduPilot builds.
- Lower KV motors chosen on purpose. 1855 KV instead of the common 2400 KV. Lower prop RPM means less vibration reaching an IMU sitting on a board I designed myself with no proven mounting. It is also more efficient, which buys flight time. 2400 KV would give roughly 9:1 thrust-to-weight, which is race-quad territory and pointless for a GPS platform flying Loiter and Auto. It also makes tuning the IMU harder.
Stackup
Four layers: F.Cu signal, In1.Cu GND plane, In2.Cu +3V3 plane, B.Cu signal and power section.
+3V3 touches 38 pads spread across the whole board. The net that is everywhere gets the plane. VBAT_RAW became short traces, which is all a local 8-pad net needs.
The work
The tidy version above is not how it felt. Placing components looks like the easy part. It is not. Almost anything fits on a board if all you care about is fitting. I built layouts that passed every clearance check and were physically impossible to route, with pads jammed against the board edge and no path out at all. Each one had to be scrapped and rebuilt.
The final routing push ran 18 hours straight, 1pm on July 22nd to 6am on July 23rd, without a break. By the end: 1114 track segments, 89 vias, zero unconnected pads.
Some NotSoFun blunders:
- The IMU had been deleted from the board entirely, and I had not noticed
- The crystal had been deleted too
- Thirteen buck and LDO support components stranded on the wrong side after the power flip, meaning a switching regulator's feedback network would have had to via across the board
- A netclass rule silently matching nothing, so every "power" trace was drawing at 0.2 mm instead of 0.6 mm
AND YES... after so much work it is quite nail-biting to put it on JLCPCB to see if your work actually computes... the real test is still far off
Things I got wrong
- Connector pin order. My connectors run 5V, GND, TX, RX. Most off-the-shelf GPS modules and telemetry radios use Pixhawk order with ground on the last pin. Stock cables do not line up, and plugging one in without checking could push 5 V into a UART pin. Fixable by re-pinning cables, so the board still works as designed, but it is a genuine mistake and first on the rev 2 list. Every cable gets continuity-tested before it goes anywhere near power.
- Thermal reliefs on the ground pours. Ground connected to pads through four thin spokes, which exists to stop the plane wicking heat away during hand soldering. On a dense board several pads could not fit the minimum spoke count. This board is reflow assembled, so thermal relief was simply the wrong setting. Switched to solid, which is better electrically and thermally.
- Traces do not follow components. Move a part after routing and the copper stays behind, silently disconnected. I found this out by doing it. Placement gets finished properly before routing starts.
What I would do differently
- Stop designing version one like it is the last version. Most of my pain came from trying to make the first board complete instead of making it work. A first revision exists to prove the core design is sound and to teach you what you got wrong. Every extra feature is another thing that can be wrong, and another thing you have to route.
- Smaller connectors. JST-GH is the right professional choice and it is what real flight controllers use, but it is physically large and it ate a serious amount of board edge and routing space on a 36 mm board. On a first iteration I would take something more compact, or simply break out fewer UARTs.
- Skip the gimmicks. Status LEDs and their resistors, extra headers, nice-to-haves. None of them made the board work. All of them competed for space against things that did.
- Plan the escape routes before finalizing placement. The lesson that cost the most time. A component is not placed correctly just because it fits and clears its neighbours. It is placed correctly when every one of its pads has a realistic path to where it needs to go.
Airframe and flight dynamics
| Item | Mass |
|---|---|
| 5-inch carbon frame | 120 g |
| 4 × 2207 motors | 132 g |
| 4-in-1 ESC | 14 g |
| SATVIK-26 FC | 40 g |
| GPS, compass, mast | 18 g |
| RC receiver | 15 g |
| Telemetry radio (air) | 15 g |
| Propellers | 18 g |
| Wiring, standoffs, hardware | 35 g |
| Dry | 407 g |
| 4S 1850 mAh LiPo | 244 g |
| All-up weight | ~651 g |
Airframe parts
| Part | Chosen component |
|---|---|
| Frame | TBS Source One V6, 5 inch |
| Motors | iFlight XING2 2207 1855 KV (×4) |
| ESC | Sequre Blueson A2 6S 65A, AM32 |
| Propellers | Gemfan 51466 tri-blade, 5 inch |
| GPS and compass | Sequre M10-252Q with QMC5883 |
| Telemetry | Micoair 915 MHz LoRa pair |
| RC link | FlySky FS-i6X with FS-iA6B receiver |
| Battery | GNB 1850 mAh 4S 120C, XT60 (×2) |
| FC mounting | Rubber or TPU soft mounts |
| With XING2 2207 1855 KV motors on 4S: roughly 6.8:1 thrust-to-weight, hover throttle around 38 %, estimated 5-8 minutes of mixed GPS flying. |
Status
- Schematic complete, ERC clean
- Component placement
- 4-layer routing complete, 0 unconnected pads
- DRC clean
- Gerbers verified in JLCPCB's viewer
- BOM and pick-and-place prepared
- Boards ordered
- ArduPilot
hwdefwritten and firmware compiled - Bring-up
- Airframe assembly
- Maiden hover
- Loiter and Auto missions
Bring-up is planned in order: visual inspection, then a current-limited bench supply with the limit set low, then every rail verified with a multimeter before a battery touches the board, then USB enumeration and DFU, then flash ArduPilot, then confirm each peripheral in Mission Planner one at a time. Motors tested with propellers removed.
Regulatory
Over 250 g, so under Transport Canada rules this must be registered and flown by a certified pilot. That means you (& I) am taking the Small Basic Exam and registering the aircraft.
Basic certification allows uncontrolled (Class G) airspace only, 30 m from bystanders, below 400 ft, within visual line of sight. Most of Toronto is controlled airspace, which needs Advanced certification and a manufacturer safety-assurance declaration, something a homebuilt aircraft cannot obtain by definition. So fly out of city, many apps show you the proper zones.
Tools
KiCad 10 for schematic and layout. STM32CubeMX for pin mapping. ArduPilot as target firmware, with SITL for development during parts lead time. JLCPCB for 4-layer fabrication and assembly.
CREDITS TO OBSIDIAN, an .md file editor and notes taking app, for easing the process of writing in this file format.
Parts
80| Qty | Value | Footprint | References |
|---|---|---|---|
| 15 | 100nF | Capacitor_SMD:C_0402_1005Metric | C3, C8, C9, C10, C11, C12, C13, C16, C23, C24, C25, C26, C27, C28, C29 |
| 6 | 47k | Resistor_SMD:R_0402_1005Metric | R14, R15, R16, R17, R18, R19 |
| 3 | 10k | Resistor_SMD:R_0402_1005Metric | R1, R6, R8 |
| 3 | 1k | Resistor_SMD:R_0402_1005Metric | R9, R20, R21 |
| 3 | 1uF | Capacitor_SMD:C_0402_1005Metric | C21, C22, C30 |
| 3 | Conn_01x04_Pin | Connector_JST:JST_GH_SM04B-GHS-TB_1x04-1MP_P1.25mm_Horizontal | J5, J6, J7 |
| 3 | LED | LED_SMD:LED_0603_1608Metric | D3, D4, D5 |
| 2 | 100k | Resistor_SMD:R_0402_1005Metric | R2, R4 |
| 2 | 10uF | Capacitor_SMD:C_1206_3216Metric | C6, C7 |
| 2 | 15pF | Capacitor_SMD:C_0402_1005Metric | C4, C5 |
| 2 | 2.2uF | Capacitor_SMD:C_0402_1005Metric | C1, C2 |
| 2 | 330 | Resistor_SMD:R_0402_1005Metric | R22, R23 |
| 2 | 4.7k | Resistor_SMD:R_0402_1005Metric | R10, R11 |
| 2 | 4.7uF | Capacitor_SMD:C_0603_1608Metric | C14, C15 |
| 2 | 47uF | Capacitor_SMD:C_1206_3216Metric | C17, C18 |
| 2 | 5.1k | Resistor_SMD:R_0402_1005Metric | R12, R13 |
| 2 | SW_Push | easyeda2kicad:SW-SMD_4P-L5.1-W5.1-P3.70-LS6.5-TL_H1.5 | SW1, SW2 |
| 1 | 100pF | Capacitor_SMD:C_0402_1005Metric | C20 |
| 1 | 15uH | easyeda2kicad:IND-SMD_L10.4-W10.3 | L1 |
| 1 | 24.9k | Resistor_SMD:R_0402_1005Metric | R3 |
| 1 | 3.3nF | Capacitor_SMD:C_0402_1005Metric | C19 |
| 1 | 4.99k | Resistor_SMD:R_0402_1005Metric | R7 |
| 1 | 52.3k | Resistor_SMD:R_0402_1005Metric | R5 |
| 1 | AP2112K-3.3 | Package_TO_SOT_SMD:SOT-23-5 | U3 |
| 1 | B560/SS56 | Diode_SMD:D_SMA | D1 |
| 1 | BMP388 | easyeda2kicad:SENSORM-SMD_BMP388 | U5 |
| 1 | Conn_01x03_Pin | Connector_JST:JST_GH_SM03B-GHS-TB_1x03-1MP_P1.25mm_Horizontal | J4 |
| 1 | Conn_01x06_Pin | Connector_JST:JST_GH_SM06B-GHS-TB_1x06-1MP_P1.25mm_Horizontal | J3 |
| 1 | Conn_01x08_Pin | Connector_JST:JST_GH_SM08B-GHS-TB_1x08-1MP_P1.25mm_Horizontal | J2 |
| 1 | Crystal | easyeda2kicad:CRYSTAL-SMD_4P-L3.2-W2.5-BL | Y1 |
| 1 | ICM-42688-P | easyeda2kicad:LGA-14_L3.0-W2.5-P0.50-TL | U4 |
| 1 | Micro_SD_Card_Det1 | Connector_Card:microSD_HC_Hirose_DM3AT-SF-PEJM5 | J1 |
| 1 | SMBJ26A | Diode_SMD:D_SMB | D2 |
| 1 | STM32H743VITx | Package_QFP:LQFP-100_14x14mm_P0.5mm | U1 |
| 1 | TPS54560BDDA | Package_SO:Texas_R-PDSO-G8_EP2.95x4.9mm_Mask2.4x3.1mm_ThermalVias | U2 |
| 1 | TYPE-C 16PIN 2MD | easyeda2kicad:USB-C-SMD_TYPE-C-16PIN-2MD-073 | USB1 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U6 |
The 76 most common of 80 parts.
Questions
How big is the SATVIK-26 PCB?
It measures 36 × 36 mm and has 4 copper layers, 1.6 mm thick.
What parts does the SATVIK-26 use?
80 parts, built around the BMP388, TPS54560BDDA, AP2112K-3.3 and ICM-42688-P. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the SATVIK-26 KiCad files?
From the SavvySatvikCodes/SATVIK-26 repository on GitHub, at the commit this page was made from: the board is hardware/SATVIK-26/SATVIK-26.kicad_pcb and its schematic hardware/SATVIK-26/SATVIK-26.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the SATVIK-26 design in my own project?
Its repository states no licence, so its author keeps all rights: ask SavvySatvikCodes before reusing the design.
Similar boards
- 4 layers55 × 55 mm

- 6 layers40.6 × 40.5 mm

Flight Controller
desanv01/Flight-Controller-V2
STM32H743 controller: regulated power, signal-only ESC, neutral ArduPilot firmware, manufacturing data and engineering history.
169 partsCERN-OHL-S-2.0 - 4 layers40 × 40 mm

Snowboard fc
RotemCarr/snowboard-fc
Snowboard flight controller hardware and software stacks - using the Zephyr framework
103 parts - 6 layers36 × 36 mm

Stm32h743-px4
DataFlux-Robot/fluxpcb
全自动AI电路设计流水线: 需求→选型→原理图→PCB→验收仿真→固件,六环节门禁闭环 | Six-stage automated circuit design pipeline with machine-checkable verification gates
22 parts1Apache-2.0 - 4 layers85 × 55 mm

CAPE A-1-no comment
Stab-Rabbit-coding/Serenity-UAV
A functional, security conscious, Unmanned Aerial Vehicle based on the Firefly Class spacecraft Serenity from the 2002 show..
33 parts1CERN-OHL-W-2.0 - 4 layers66 × 58.5 mm

FOC Driver
Loredati-svg/BLDC-FOC-Motor-Driver
Single-motor BLDC/PMSM FOC driver: STM32G431 + DRV8323RH, 4-layer round PCB with on-board MA730 magnetic encoder. Motor block for a self-balancing robot. Designed in KiCad 10.
96 parts - 4 layers66.4 × 66.4 mm

Rera
fdiwth/tvc-drone
This repository contains the documentation, hardware designs, and source code for a Thrust Vector Control (TVC) drone.
140 parts34GPL-3.0 - 4 layers108 × 74 mm

STM32 Drone
bassammorsy/stm32-flight-controller
Custom 4-layer STM32F405RGTx quadcopter flight controller PCB designed in KiCad. Betaflight compatible, 4S–6S LiPo input, SMT assembled by JLCPCB.
104 parts3MIT