libdrone — Work Breakdown Structure
About¶
Complete build sequence for libdrone Pro from first print to maiden flight. 28-day timeline, ~36,600 CZK budget. Covers all phases: parametrics, CAD, printing, assembly, electronics, wiring, software configuration, and maiden flight. Each phase has explicit quality gates before proceeding.
About¶
This document is a libdrone Software Configuration Reference for EDGETX — BETAFLIGHT 4.5 — AM32 — HDZERO — GYROFLOW — SENSOR LOGGER and other platform parts
WBS V2.4.6: 6‑INCH "libdrone" (THREE-LAYER ARCHITECTURE: SANDWICH / PLATFORM / BACKPLANE)¶
Timeline: 28 Days • Budget: ~36,600 CZK (+10% contingency) Single-frame build. X sandwich body. PETG shafts + PETG tabs. Frame 2 deferred. MR30 connectors for serviceability. GPS/camera on front bracket. Sensor mast removable in 60 s. ASA bumpers — TPU excluded.
PHASE 0: PREP & PARAMETRICS (Day 0)¶
0.1 Obsidian Vault "libdrone-V2.4.6"¶
- 9 MD chapters: [Master Spec], [Prompt], [Prusa], [Software], [Regulatory], [Shopping], [WBS], [FreeCAD Cookbook], [Sensor Payload].
0.2 FreeCAD Document "libdrone V2.4.6" — enter ALL variables:¶
Single source of truth: Open
reference/LD_-_Variables_v246.mdand enter every variable exactly as listed there, grouped by section. Do not use values from memory or older documents.
0.3 FreeCAD ARM Part Studio — execute steps in order:¶
- Step 1 Arm shaft (#ArmWidth × #ArmHeight, 3 mm fillets, #ArmShaftLength ~125 mm) — check Variables.
- Step 2 Motor head loft (35×18 mm, 3 mm fillets, 20 mm — curvature-continuous).
- Step 3 Rod channels ×2 (Ø2.2 mm; both on same side: Z +5.0 and Z +2.0 mm; through all; 0.5×45° chamfers). FL/RL arms normal orientation; FR/RR arms install inverted. One part for all four positions — no Type A / Type B.
- Step 4 Pinch slit (0.5×8 mm, 5 mm into face) + M3 tab (Ø3.3 mm) — on SIDE FACE of motor head (not top surface). Bolt access identical normal or inverted.
- Step 5 Motor bores ×4 (Ø6.5 mm through all — confirm 2507 hole pattern from datasheet).
- Step 6 Top counterbores ×4 (Ø7.0×1.5 mm).
- Step 7 Bottom counterbores ×4 (Ø7.0×1.5 mm).
- Step 8 MR30 wire channel on motor head END FACE at centreline (4.0 mm wide × 3.0 mm deep). Centreline placement — wire exits same direction normal or inverted.
- Step 9 Bumper notch on hub end — CUT BOTH FACES (2.0 mm deep, 1.0 mm radius corners, top and bottom). Bumper fits regardless of arm orientation.
- Step 10 Optional lightening pockets on shaft side faces (avoid rod zone).
- CHECK Wall bore edge to head outer face ≥6.0 mm — if marginal: #MotorHeadWidth = 36 mm.
0.4 FreeCAD X BODY PCCF LAYER Part Studio:¶
- Step 1 X profile: 60×60 mm core + 4 arm extensions (40 mm wide × 35 mm long) at 45°. 3 mm thick. Fillet core corners 5 mm.
- Step 2 T-slot pockets ×4 (one per arm extension): 22.4 mm wide × 20 mm deep. T-lock pocket at inner end. Open at outer edge.
- Step 3 Rod channels ×4 (Ø2.2 mm at Z +5.0, +2.0, −2.0, −5.0 mm; through all; chamfered).
- Step 4 Sandwich bolt holes ×4 (Ø3.3 mm — near arm extensions, clear of T-slots and rod channels).
- Step 5 TOP LAYER ONLY: add stack holes ×4 (Ø3.3 mm, 30.5 mm pattern), dowel pin holes ×2, battery strap slots ×2 (5×60 mm), sensor mast bosses ×2, bracket holes ×2.
0.5 FreeCAD ARM TAB Part Studio:¶
- Step 1 Body: 22 mm wide × #TabThick (16 mm) tall × 20 mm long. CRITICAL: tab must fill full sandwich height.
- Step 2 T-lock extension at inner tip: 8 mm wider each side, 4 mm inboard from tip.
- Step 3 Rod channels ×2 (Ø2.2 mm, same Z heights as arm shaft — SAME SIDE, chamfered).
- Step 4 M2 screw holes ×2 (Ø2.0 mm, 10 mm spacing — shaft junction face).
- Step 5 Shaft pocket: 1.0 mm deep on outer face, matches shaft profile. Print orientation: HORIZONTAL (stated in Part Studio notes).
0.6 FreeCAD GPS/CAMERA BRACKET Part Studio:¶
- Step 1 Body: 26 mm wide × ~60 mm tall × 2 mm wall.
- Step 2 GPS pocket at top (M10Q footprint; patch antenna faces up, clear sky view).
- Step 3 Camera tilt: arc-slot mechanism, 0°–30° (#BracketCamTiltMin to #BracketCamTiltMax), default 15° (#BracketCamTiltDefault). Two M3 bolts. See Variables §[11].
- Step 4 No VTX pocket. Camera tilt slot only. VTX is in electronics zone on Platform.
- Step 5 MIPI cable channel through body.
- Step 6 Mounting holes ×2 (Ø3.3 mm, 20 mm spacing — matches X body top layer).
0.6b FreeCAD PLATFORM Part Studio (V2.4.6 NEW):¶
- Step 1 Body: 283×40mm footprint, #PlatformThick tall. PETG.
- Step 2 Battery rails: LEFT (closed both ends) and RIGHT (open right end, endstop wall at left end).
- Rail inner width 41mm. Height 53mm (flush with battery top).
- Lateral strap slots in rail top faces: 20mm wide, cuts full rail height.
- Step 3 MIPI channel: 16mm wide × 1.5mm deep, centreline, full nose-to-tail length.
- Step 4 Wire channels: LEFT (signal, −20mm) and RIGHT (power, +20mm), 4×1mm.
- Step 5 Battery lead relief notch: 8mm wide, rear edge, through-all.
- Step 6 Fan slot: 30×30mm opening at −138 to −148mm from body centre, rear-facing.
- Fan wire channel 3×2mm routes left to signal zone.
- Step 7 GX12-7 chimney: D-D bore (Ø11.87mm / 10.80mm flat-to-flat) + Ø14mm boss, 3mm proud, at X=−25mm, Y=−66mm.
- Ø12mm through-hole. Ø18mm OD chimney 25mm deep downward. 6×4mm wire exit slot LEFT.
- Step 8 Attachment post pairs: 3 pairs at Y=+39mm (A), Y=−39mm (B), Y=−148mm (C).
- Post height 54mm (=battery height 53mm + 1mm clearance). Ø6mm post, M3 bore.
- Post X positions: ±17mm (outside strap slot, inside rail walls — confirm in FreeCAD).
- Step 9 Camera/GPS bracket mount holes: 2ר3.3mm at Platform nose, 20mm spacing, matches bracket.
- VERIFY: no features conflict with battery slide-out path on RIGHT side.
0.6c FreeCAD BACKPLANE Part Studio (V2.4.6 NEW):¶
- Step 1 Diamond/hexagonal PETG lattice: 187×50mm, 1.5mm beam thickness, 3mm beam width. Spans Y=+39mm (battery front) to Y=−148mm (fan rear). Rib spacing 20mm, 10 ribs total. Diagonals at 45° alternating bays. ~65% open area.
- Step 2 RIGHT edge in battery zone (Y=+39 to −39mm): NO lattice material — fully open for battery slide.
- Step 3 Fan exhaust zone (Y=−138 to −148mm): NO lattice material — fully open for airflow.
- Step 4 GX12 boss ring: Ø18mm at Y=−66mm, X=−25mm (matches Platform chimney position).
- Step 5 M3 attachment holes: at post pair positions (Y=+39, −39, −148mm), X=±17mm. Hole Ø3.3mm through lattice — M3 screw passes through into Platform post. VERIFY post X positions in Assembly before drilling/printing.
0.7 FreeCAD SENSOR MAST Part Studio:¶
- Step 1 Base: 20×20 mm × 4 mm thick. 2 × Ø3.3 mm through-holes on 20 mm centres.
- Step 2 Hollow tube body: 70 mm tall from base, 2 mm wall.
- Step 3 Sensor cradle at top: 55.5×26 mm pocket, 1 mm retention lips, 5 mm deep.
- Step 4 ESP32-S3 pocket on mast body (dimensions per chosen board).
- Step 5 Cable channel from cradle to ESP32 pocket (4-wire I2C).
- Step 6 1S battery mount slot or clip on base or mast body.
0.8 FreeCAD ASSEMBLY:¶
- Insert tabs into X body T-slots; mate arm shafts to tabs.
- Thread 4 CF rods through all 5 sandwich layers — verify Box-in-Box clearance.
- Verify motor mount geometry and rod channel alignment.
- Verify camera/GPS bracket: GPS antenna clear sky view above camera.
- Verify mast boss positions: clear of FC stack and battery strap zone.
- Virtual mast fit check: confirm mast boss access with FC stack installed.
0.9 PrusaSlicer — create FOUR profiles:¶
- "Arms — ASA Natural": 0.6 mm Steel • 8 peri • 30% Grid • 0.15 mm • 255°C/110°C • enclosure closed • 20-30% cooling • glue stick.
- "Arms — PETG Orange": 0.6 mm Steel • 8 peri • 30% Grid • 0.15 mm • 255°C/85°C • 30-40% cooling.
- "Plates — PCCF Black": 0.6 mm Steel • 6 peri • 10-15% Gyroid • 0.20 mm • 285°C/110°C • 10-15% cooling • glue stick.
- "Sensor Mast — PETG Natural": 0.6 mm Steel • 4 peri • 20% Gyroid • 0.20 mm • 255°C/85°C • 30-40% cooling.
0.10 Mass Budget Sheet:¶
Target: dry mass — check the Variables file for current targets and gates. Reference: motors ~78g, ESC ~35g, FC ~12g, HDZero ~45g, GPS ~18g, hardware/wiring ~30g, X body sandwich ≤115 g. Sensor payload ~59g (see Sensor_Payload.md [10]).
DURATION: ~8 hrs • OUTPUT: All Part Studios verified in Assembly, 4 slicer profiles ready, mass budget confirmed, mast boss positions verified.
PHASE 1: PROCUREMENT (Day 1)¶
1.1 ALIEXPRESS (10–15 days — order Day 1 without fail):¶
Silicone o-rings ×50; silicone tubing OD6/ID3.5 500mm.
MR30 connector pairs ×12; conformal coating spray.
SEN66 sensor; ESP32-S3 mini + SD module; 1S 500mAh LiPo; I2C cable; LDO.
1.2 PRUSA.SHOP (next-day): nozzles ×2, glue sticks ×4, PETG Natural 500g.¶
1.3 LOCAL / ONLINE (Days 1–5):¶
Full hardware kit (M3, M2, standoffs, nylocs).
M3 × 4mm heat-set inserts ×8. Loctite 243, epoxy, zipties.
Carbon rods 4 metres. Tools.
1.4 HOBBYDRONE / RCSTUDIO (Days 7–10):¶
FC, ESC, HDZero FSV2, HDZero Goggle 2, Motors ×4,
M10Q GPS, RP2 ELRS receiver, props, LiPo packs ×3, buck + TVS, MIPI spare, buzzer.
PHASE 2: COUPONS & STRUCTURAL VALIDATION (Day 2–4)¶
- 2.1 Coupon 1 — Rod fit (PETG Natural): Ø2.05/2.10/2.15/2.20 mm. Tune Extrusion Mult.
- 2.2 Coupon 2 — Pinch slit (ASA): rod + M3. Zero play, no crush marks.
- 2.3 Coupon 2B — Pinch slit (PETG Orange): same test for summer material.
- 2.4 Coupon 3 — Motor head (PETG Natural — CRITICAL): Full-scale head + bores + counterbores + MR30 channel. O-ring flush; sleeve float; M3 clearance; channel accessible.
- 2.5 Coupon 4 — ASA bumper: fit to notch; hand-crush test.
- 2.6 Coupon 5 — Sensor mast base (PETG Natural — V2.4.6): Print 20×20mm base only. Test M3 screw fit into X body top layer bosses. Confirm flat seating. Only print full mast after this passes.
- 2.7 Drop test: ASA arm coupon and PETG Orange coupon from ~1 m.
- 2.8 Boolean verify: rods through X body sandwich into arm tips. Zero play, light tension.
PHASE 3: COREONE+ PRODUCTION RUN (Day 5–10)¶
-
3.1 COUPON 8 — T-lock fit test (MANDATORY FIRST): Print 1× Arm Tab + 50 mm X body section with T-slot. Tab must slide in with light hand pressure; zero lateral play when seated. Do not proceed to full X body print until coupon passes.
-
3.2 PCCF X Body Base Layer ×2 (~1.5 hrs each = ~3.0 hrs total). → Cool to 60°C before removal. IPA wipe after. → Quality check: T-slot walls intact; rod channels clear.
-
3.3 PCCF X Body Top Layer ×1 (~1.5 hrs). → Quality check: same as base layers PLUS stack holes and bracket holes clean.
-
3.4 PETG Arm Tabs ×8 — HORIZONTAL orientation (~2 hrs total). → Quality check: T-lock profile sharp; M2 holes clean.
-
3.5 PETG Arm Shafts ×4 — VERTICAL orientation (~3.5 hrs each = ~14 hrs). → Quality check: rod channels clear; pinch slit clean; bumper notch depth correct.
-
3.6 PETG Arm Shafts ×2 — spares, same settings (~7 hrs).
-
3.7 ASA Bumpers ×8 + 4 spares (~1.5 hrs total).
-
3.8 GPS/Camera Bracket ×1 — PETG, flat (~1.5 hrs). → Quality check: MIPI channel clear; camera slot tilt geometry correct.
-
3.9 Sensor mast + cradle (PETG Natural, ~1.5 hrs): Only after Coupon 5 mast base passes fit test. Print mast vertical (base down). Print cradle flat.
-
3.10 Post-process ALL structural parts: Heat-gun 250°C / 15 s (FFP3 mask — PCCF dust hazardous). Thin laminating epoxy wipe-coat (shafts, X body layers — NOT tabs, mast, bracket). Full cure. IPA wipe.
-
3.11 Cut silicone sleeves: 32 × 11.5 mm + 16 spares.
DURATION: ~38 print hours + 2 hrs post-process over 5 days.
PHASE 4: AIRFRAME INTEGRATION — BOTH FRAMES (Day 11–14)¶
NOTE — EMC GEOMETRY (verify before assembly): Three features in the FreeCAD model enforce EMC wire discipline physically: A. Arm shaft: longitudinal dovetail groove on BOTTOM face (Step 4.9b) → twisted motor phase wires route here, held by active cover B. Platform: LEFT channel (signal wires) and RIGHT channel (power wires) → never cross-route; label channels during build C. Platform: battery lead relief notch at rear centreline → twisted battery leads drop through notch to ESC pads, no sharp bend If any of these features are missing from printed parts, do not proceed — reprint the affected part. The EMC benefit is zero without the geometry.
- 4.1 Insert 8 tabs into T-slots of bottom X body PCCF layer (slide from outside). Place middle PCCF layer. Place top PCCF layer. Thread 4 × 333 mm CF rods through all 5 sandwich layers simultaneously — self-aligns. Then fit Platform on posts (3× M3 into post pairs).
- 4.2 Install floating motor mounts: o-rings in counterbores; sleeves in bores; M3 × 20mm screws; nyloc nuts. Torque 0.4–0.5 N·m.
- 4.3 Pinch slit M3 bolts to zero rod play by hand feel. Acoustic check: 2.2–2.6 kHz. Above 2.6 kHz before zero play: STOP.
- 4.4 Install FC/ESC stack on X body top surface — seat on dowel pins. Fit standoffs.
- 4.5 Verify mast insert boss positions accessible. Test Coupon 5 mast base — M3 screw in/out cleanly.
- 4.6 Frame hand-twist check: no visible flex.
- 4.7 Connect arm shafts to tabs: 2× M2 per tab, 16 screws total. Torque finger-tight.
- 4.8 Camera/GPS bracket: mount M10Q GPS above camera. Attach to Platform nose (+50mm, 2× M3). VTX mounts separately in electronics zone on Platform (-104 to -133mm). V2.4.6: VTX NOT on bracket. Arrow forward. Verify GPS antenna has clear sky view above bracket.
- 4.9 Install battery strap through X body slots. Test fit with 6S pack.
DURATION: ~6 hrs total.
PHASE 5: ELECTRONICS INSTALLATION (Day 15–18)¶
EMC PHILOSOPHY — READ BEFORE SOLDERING: Every wire carrying changing current radiates electromagnetic interference. Our compass, gyro, and receiver are all sensitive to this. Three rules govern all wiring in this build:
RULE 1 — STAR GROUND: One ground point only. ESC GND pad is the master ground. FC GND → ESC GND pad (short direct wire) VTX GND → buck converter GND → ESC GND pad Capacitor GND → directly on ESC GND pad GPS GND → via FC (not separate wire to ESC) NEVER run a separate GND wire parallel to a signal wire. NEVER create closed ground loops between components.
RULE 2 — TWISTED PAIRS on all high-current wires: Motor phase wires (3 per motor): twist all three together before routing through cable groove. ~1 twist per 15mm. Fields cancel outside the twist. Battery leads (+ and −): twist together from XT60 to ESC pads. Twisting reduces effective antenna length to near zero.
RULE 3 — POWER/SIGNAL SEPARATION: Signal wires (UART, GPS, receiver, MIPI): route along LEFT side of X body. Power wires (ESC phase exits, battery leads): route along RIGHT side. Minimum 15mm separation wherever parallel runs are unavoidable. Never route a power wire forward of the X body toward the GPS bracket.
-
5.1 CAPACITOR INSTALLATION (before any other soldering): PRIMARY — 1000µF Panasonic: Solder directly to ESC VBAT+ and GND pads. Leads as short as physically possible — cap body flat against ESC surface. No pigtail wire between cap and pad. Distance from pad kills effectiveness. SECONDARY — 100µF ceramic MLCC (optional, strongly recommended): Solder flat to FC 5V input pads. Handles high-frequency spikes the electrolytic cannot absorb fast enough. Tiny SMD body (~3mm), lies flat. Electrolytic handles slow large spikes. Ceramic handles fast small ones. Together they cover the full frequency range.
-
5.2 Stack: H7A3-SLIM + Pilotix 75A AM32. Route ALL cables before stacking — rerouting after stacking is painful. Follow star ground rule throughout.
-
5.3 MR30 ESC pigtails: Solder male MR30 to ESC motor outputs. Label M1–M4 with heatshrink. Twist three phase wires per motor immediately after soldering.
-
5.4 Power domain: Buck converter XL4015: output to VTX power input. Ferrite beads: clip 3–4 TDK 3.5mm clip-on ferrites onto VTX power wire at converter output. Clip-on type — no rethreading, repositionable post-build. Damps XL4015 switching frequency (~180kHz) and harmonics. TVS diode SMBJ28A: directly on ESC VBAT/GND pads alongside primary cap.
-
5.5 Battery leads: Keep as short as possible — target 40–50mm from XT60 to ESC pads. Twist positive and negative leads together along their full length. Route rearward: battery connector at rear of battery, leads drop straight down to ESC — minimises loop area, no right-angle bends.
-
5.6 RP2 receiver: bind to TX16S MKII before installing. Route receiver signal wire along LEFT (signal) side of X body.
-
5.7 GPS: M10Q to GPS UART via FC. GPS GND connects via FC — not a separate wire to ESC. Route GPS cable along LEFT side only — never adjacent to phase wires.
-
5.8 HDZero VTX: mount on Platform electronics zone (-104 to -133mm). Camera: mount on front bracket. Route MIPI cable (225mm) through Platform MIPI channel nose-to-tail. 250mm MIPI cable routes through X body top layer channel (nose to rear). VTX power input: from buck converter via ferrite beads (see 5.4). VTX GND: to buck converter GND, then to ESC GND pad.
-
5.9 SOLDER JOINT INSPECTION (mandatory after all soldering, before coating): Inspect every joint under magnification per DMOM §2.3.3. Acceptance: shiny, concave fillet, no cracks, wire fully tinned. Rejection: any matte, balled, or cracked joint → resolder immediately. High-current joints (XT60, ESC power pads): continuity test + voltage drop check after ShortSaver V2 power-on.
-
5.10 CONFORMAL COATING (mandatory before any full power-on): Follow Software doc Section [18]. Mask: connectors, USB, MIPI ZIF, ESC motor pads, capacitor pads (for future serviceability). Two thin coats. 24hr cure. UV inspect. Remove masking.
-
5.11 Wire management: zip-ties. 5mm minimum separation antenna to power wires.
-
5.12 GX12-7 PAYLOAD CONNECTOR INSTALLATION (×2 — Connector A and B): The GX12-7 male panel mount connector sits in the PETG chimney (D-D bore profile), offset 25mm left of centreline (signal zone). Wires are permanent — solder before fitting top layer, then thread through chimney during assembly.
Wire preparation (do before placing top layer): PIN 1 (5V): 24 AWG red — from FC 5V BEC output pad PIN 2 (GND): 24 AWG black — to star ground (ESC GND pad via FC) PIN 3 (GPS.TX): 28 AWG — from GPS UART TX via 1MOhm series resistor PIN 4 (UART4.TX): 28 AWG — from H7A3-SLIM UART4 TX pad PIN 5 (UART4.RX): 28 AWG — to H7A3-SLIM UART4 RX pad PIN 6 (I2C.SCL): 28 AWG — from FC I2C bus PIN 7 (I2C.SDA): 28 AWG — from FC I2C bus PIN 8 (AUX.GPIO.1): 28 AWG — from FC GPIO (Betaflight: Camera Control or spare output) PIN 9 (AUX.GPIO.2): 28 AWG — from FC GPIO (second spare output) PIN 10 (GND): 28 AWG — secondary ground PIN 11 (UART5.TX): 28 AWG — from H7A3-SLIM UART5 TX pad PIN 12 (UART5.RX): 28 AWG — to H7A3-SLIM UART5 RX pad
Routing: all GX12 wires exit chimney base through wire exit slot (facing LEFT). Route with signal wires along LEFT side of X body — never adjacent to power wires. Twist I2C SCL/SDA pair. Twist UART4 TX/RX pair. Twist UART5 TX/RX pair.
Assembly sequence: 1. Solder all 12 wires to FC and GPS before top layer placement. 2. Thread wire bundle up through chimney during top layer placement. 3. Insert GX12-7 male panel mount from above into D-D chimney bore (align anti-rotation flats). 4. Tighten panel nut on top surface — finger tight + 1/4 turn. 5. Fit dust cap. Screw tight.
Gate check: continuity test all 12 pins before conformal coating. Use multimeter: each pin to its FC destination, no shorts between adjacent pins. HIGH-CURRENT: PIN 1 (5V) to FC BEC — verify voltage present at GX12 PIN 1 before proceeding. Any short between PIN 1 and PIN 2 (GND) = stop, investigate.
-
5.12a COMPANION HARNESS INSTALLATION (UART6 → Pi bay): Pre-install companion harness during Phase 5 — before Platform top layer is sealed. This is a permanent 4-wire loom. It is capped and unused unless Pi is fitted. UART6 is reserved as COMPANION permanently — never assign to any other device.
Wire preparation: PIN 1 (5V_COMP): 28 AWG red — from XL4016 companion buck output + PIN 2 (GND): 28 AWG black — to star ground (ESC GND via FC) PIN 3 (UART6.TX): 28 AWG blue — from H7A3-SLIM UART6 TX pad PIN 4 (UART6.RX): 28 AWG blue — to H7A3-SLIM UART6 RX pad
FC configuration (do now, not later): Betaflight: Ports tab → UART6 → MSP (enabled), baud 921600 ArduPilot: SERIAL6_PROTOCOL = 2 (MAVLink2), SERIAL6_BAUD = 921600
Companion buck converter (XL4016 or equivalent): Input: battery rail tap (same tap point as VTX XL4015, or dedicated tap) Output: 5.1V regulated, minimum 1A Mount: Platform signal zone, adjacent to FC/ESC stack Output connects to JST-PH 2-pin → feeds PIN 1 of companion harness
Routing: alongside GX12 loom through Platform LEFT signal channel (X = −20mm). Terminate with JST-SH 4-pin female connector. Route to Pi bay base position (above Backplane, at mast zone). Coil and cable-tie excess near mast boss pads. Fit JST-SH dust cap — leave capped until Pi is fitted.
Gate check: Measure 5V_COMP at JST-SH PIN 1 = 5.1V ± 0.1V (buck converter powered) Verify UART6 TX/RX not shorted to each other or to 5V/GND Confirm JST-SH connector is capped before any flight without Pi fitted
-
5.12b PI BAY INSTALLATION (always — empty or with Pi): The Pi bay PETG tray sits on top of the Backplane in the mast zone. It is installed on every build. When Pi is not fitted, a cover plate fills the bay.
Installation: 1. Place Pi bay tray on Backplane, aligning cable entry slot over companion harness position. No fasteners — bay is retained by mast screws above. 2. Thread companion harness JST-SH through bay base slot. Leave connector accessible inside bay. 3. If Pi is NOT fitted: fit printed cover plate into bay top opening. Done. 4. If Pi IS fitted (LCM-1 option): a. Mount M2.5 × 5mm standoffs at four Pi hole positions (58×23mm spacing) b. Lower Pi Zero 2W onto standoffs, secure with M2.5 nuts c. Plug JST-SH companion harness into Pi GPIO header (pins 1-4) d. Verify Pi orientation — USB ports accessible from mast side
Gate check (Pi fitted): Power on drone. Pi should boot within 20 seconds. Verify WiFi hotspot visible on phone (SSID: libdrone-[serial]). Open QGroundControl — should detect MAVLink connection via UDP. The battery side-slide rails are integral to the PETG top layer (printed as one piece). No separate installation step — they exist when the top layer is fitted.
Verify before top layer placement: Rail inner width 41mm clear — no print artifacts inside channel (battery 40mm + 0.5mm clearance per side) Left endstop wall solid — battery must not pass through left end Right end fully open — battery slides out right without obstruction Battery strap slots present and correctly oriented (lateral, not longitudinal) Strap buckle positions on RIGHT side — accessible from outside
Test fit: slide reference battery (78×40×53mm) into rail from RIGHT. Must seat against left endstop cleanly. Must slide out RIGHT freely with no binding. With one tri-blade prop oriented one blade up: verify clearance to prop tip arc — should be >20mm margin.
-
5.14 COOLING FAN INSTALLATION: The 30×30×10mm 5V ball bearing fan (Gdstime 3010, XH2.54) mounts in the Platform fan slot at −138 to −148mm from body centre, exhausting rearward — sucking air through the FC/ESC stack front-to-rear, with the ram air in forward flight. Always on. Two wires only.
Installation: 1. Thread fan wires through the 3mm wire channel from fan slot to signal zone (LEFT side, −20mm). Secure with small cable clip at channel exit. 2. Press fan body into rear face slot — friction fit + one drop of CA adhesive on each side wall. Fan face flush with or 0.5mm recessed from rear face. 3. Solder 28AWG red to FC 5V pad, black to FC GND pad. Keep wire run short — rear of FC is nearest. ~50mm total wire length. 4. No switch. No fuse. No MOSFET. Direct connection only.
Verify: Fan spins immediately on FC 5V power-on. No audible bearing noise. Airflow direction: exhausting REARWARD (sucking air from electronics zone, exiting out rear face). Hold a piece of tissue at the fan rear face — it should be drawn toward the fan. If airflow is wrong direction: swap fan wire polarity to reverse it.
Note: fan draws ~70mA at 5V. This is accounted for in the BEC budget. In flight completely inaudible under prop noise.
DURATION: ~6 hrs including cure time.
PHASE 6: SOFTWARE COMMISSIONING (Day 19–23)¶
Follow build/LD_-_Software_v246.md in full:
- 6.1 EdgeTX setup: TX16S model, ELRS 250Hz LBT, switches, ELRS Backpack.
- 6.1b EdgeTX PAYLOAD CHANNEL ASSIGNMENT: AUX3 (SC switch): Payload master enable — maps to GX12 PIN 8 via FC GPIO SC↑ = payload OFF (GPIO low) SC↓ = payload ON (GPIO high) AUX4 (SD switch): Camera control — maps to GX12 PIN 9 via FC GPIO SD↑ = camera OFF SD↓ = camera ON / record start Label switches in EdgeTX model: SC = "PAYLOAD", SD = "CAM" Verify: flip each switch, confirm correct GPIO response in Betaflight CLI.
- 6.2 Betaflight firmware: flash latest 4.5 H7A3 cloud build.
- 6.3 Ports: assign all UARTs.
- 6.4 Configuration: DSHOT600, BiDShot, 14 poles, Props In, GPS ON.
- 6.5 Power & Battery: calibrate voltage scale.
- 6.6 PID starting values: enter without deviation.
- 6.7 Filters: RPM filter ON, verify BiDShot RPM readout.
- 6.8 Rates: both profiles; SC switch.
- 6.9 GPS Rescue: 40m, 10 m/s, 8 sat minimum. Failsafe → GPS Rescue.
- 6.10 ESC AM32: 48 kHz, Props In, BiDShot, extended telemetry. Verify motor directions.
- 6.11 HDZero VTX: MSP Displayport. 1080p60. Auto-record.
- 6.12 Goggle 2: firmware update. ELRS Backpack verified. DVR capacity checked.
- 6.13 OSD layout: GPS Speed, ESC temp, Home arrow all visible.
- 6.14 Low-speed mode: calibrate until GPS speed ≤4.8 m/s. Record calibrated value.
- 6.15 Blackbox: active, ≥50% space, GYRO_SCALED debug.
- 6.16 Compass calibration: outdoors, away from metal.
- 6.17 Motor mount check: re-verify torque after all power cycles.
-
6.18 Configuration backup: BF, AM32, HDZero, EdgeTX → repository.
-
6.19 Sensor logger setup (V2.4.6) — see Sensor_Payload.md in full: Flash ESP32-S3 with MicroPython. Install SEN66 library and logger script. Test I2C connection to SEN66. Verify SD card write. Tap GPS UART for coordinates. Verify timestamped log entries. Test WiFi sync to Synology on landing. Bench test: 30-minute log run, verify data quality and file format.
DURATION: ~6 hrs including sensor logger setup.
PHASE 7: FRAME SWAP VALIDATION (Day 24)¶
- 7.1 Remove battery. Disarm. Remove props.
- 7.2 If sensor mast fitted: unscrew 2 × M3, lift mast clear (60 seconds).
- 7.3 Disconnect 4 × MR30 connectors at arm roots.
- 7.4 Disconnect buck input.
- 7.5 Unscrew 4 × standoff top nuts.
- 7.6 Lift brain module as one unit.
- 7.7 [No Frame 2 in V2.4.6 — single frame build]
- 7.8 Reconnect MR30 (labels). Reconnect buck.
- 7.9 If sensor mast in use: refit after service.
- 7.10 Power on → verify all motors. GPS lock. Compass recal if needed.
Target: complete swap in under 20 minutes. Mast transfer adds ~2 minutes maximum.
PHASE 8: MAIDEN, MASS & GYROFLOW (Day 25–28)¶
- 8.1 Weight gate: Frame only (no payload): check the Variables file for current target and gate. Frame with payload: check the Variables file for current target and gate.
-
8.2 Regulatory: site confirmed, registration proof, insurance active. Operator e-ID on drone (physical label). Airspace checked via aim.caa.cz.
-
8.3 Pre-flight checklist (Software doc Section [20]): complete in full. Seasonal arm check: correct material for ambient temperature.
-
8.4 Frame 1 Maiden — hover only: GPS stability; rod Squeeze; motor mount behaviour. No oscillation or jello.
-
8.5 Blackbox review after hover: Gyro noise floor, D-term trace, motor output balance.
-
8.6 Vibration measurement: phone spectrum analyser at 1 m.
-
8.7 Punch test: full throttle climb. Motor temps via ESC telemetry.
-
8.8 Low-speed mode final verification: GPS speed OSD ≤4.8 m/s.
-
8.9 Cinema acceptance: 1080p60 DVR → Gyroflow → zero jello.
-
8.10 [No Frame 2 maiden — single frame build]
-
8.11 Sensor payload first flight (V2.4.6): Fit mast to Frame 1. Charge 1S sensor battery. Power on sensor logger before takeoff — verify SD logging active. Short flight (5 min) over varied terrain around Telč. Land. Check log file: timestamps, GPS coordinates, SEN66 readings. Verify data quality: PM2.5, CO2, VOC all plausible for outdoor air. Check sensor intake: clear of debris after flight.
-
8.12 Post-maiden motor mount service: inspect all o-rings and sleeves after 10 hours.
-
8.13 Crash readiness: arm swap under 10 minutes. Spares staged. Bumpers stocked.
TOTAL (with sensor): ~36,600 CZK (+10% contingency = ~40,200 CZK) TOTAL (without sensor): ~34,200 CZK (+10% contingency = ~37,600 CZK)
SUCCESS CRITERION: TWO FRAMES. ONE BRAIN. ALL SEASONS. PRE-STRESSED, ISOLATED, CRASH-READY, MODULAR, LEGAL, SENSING.
PHASE 9 (OPTIONAL): PI ZERO 2W PROOF OF CONCEPT — LCM-1¶
Gate: Phases 1–8 complete. Pro flying reliably. Minimum 10 flights logged. Pi bay already printed and companion harness already wired (from Phase 5.12a/b). This phase validates the Pi as an onboard intelligence layer.
Philosophy: Pi-ready by default. Pi-fitted by mission. The drone is always ready to accept the Pi. The Pi is fitted when the mission justifies it. This phase proves that the 15-minute fit time and the threshold filtering logic are real, not theoretical.
-
9.1 Order Pi Zero 2W (with pre-soldered 2×20 headers), XL4016 buck 5V 3A, JST-SH 4-pin 150mm cables ×2, M2.5 × 5mm standoffs + nuts ×4, ELRS WiFi Backpack for TX16S. See Shopping List §[10] for exact part descriptions.
-
9.2 Flash Pi Zero 2W with Raspberry Pi OS Lite 64-bit (headless). Critical: disable Bluetooth via
/boot/config.txt— it shares UART0 with the GPIO pins used for companion UART. Failure to do this means no serial communication with FC. Enable UART:enable_uart=1,dtoverlay=disable-btin config.txt. Seebuild/LD_-_Software_v246.md§Pi Zero 2W Setup for full procedure. -
9.3 Install Python dependencies on Pi: pip3 install pymavlink flask Copy libdrone broker script to Pi (threshold logic + REST API). Configure systemd autostart on boot. Configure WiFi hotspot: SSID
libdrone-[serial], static IP 192.168.4.1. -
9.4 Bench test — Pi standalone: Power Pi from bench USB supply. Verify boot in <25 seconds. Verify WiFi hotspot visible on phone. Connect phone browser to 192.168.4.1 — verify REST API responds.
-
9.5 Solder XL4016 buck converter: Input: tap from battery rail (same tap logic as VTX XL4015). Output: 5.1V — verify on bench before connecting to Pi. Mount in Platform signal zone adjacent to FC/ESC stack.
-
9.6 Connect Pi to drone (no battery yet): Mount Pi Zero 2W on M2.5 standoffs in Pi bay (58×23mm spacing). Plug JST-SH companion cable: Pi GPIO pins 6(GND), 8(TX), 10(RX), 4(5V) → pre-wired UART6 harness connector at Pi bay base. Plug buck converter output to Pi 5V rail (pin 4) and GND (pin 6). Verify no shorts before battery connection.
-
9.7 Bench test — Pi + FC: Connect drone battery. Pi should boot from buck converter. Open serial monitor on laptop connected to TX16S USB-C. MAVLink/MSP heartbeat packets should appear within 30 seconds. FC telemetry (GPS, attitude, battery) arriving on Pi — verify via Pi's REST API: GET 192.168.4.1/telemetry returns live JSON.
-
9.8 Install ELRS WiFi Backpack on TX16S internal ELRS module. Flash backpack firmware matching TX16S ELRS firmware version. Verify backpack WiFi hotspot appears on phone. Connect QGroundControl (tablet) to backpack hotspot UDP 14550. Verify live telemetry map with drone GPS position.
-
9.9 Bench test — end-to-end data chain: Run SEN66 payload simultaneously (plugged into GX12 A+B). Verify Pi receives SEN66 data via WiFi from ESP32-S3. Verify threshold filtering: only transmit when PM2.5 changes >5 µg/m³. Verify STATUSTEXT alerts appear in QGroundControl on tablet. Verify OpenStreetMap overlay shows drone position + sensor events.
-
9.10 WEIGH complete stack: Drone + Pi bay + Pi + buck + SEN66 payload. Record AUW. Confirm EASA category unchanged (<900g = A2). Document in Hardware doc.
-
9.11 First flight with Pi fitted — 5 minutes hover: Monitor FC temperature — Pi power must not impact BEC rail. Monitor Pi — verify no reboot, lockup, or brown-out during flight. Verify filtered telemetry arriving at ground station throughout flight.
-
9.12 Declare PoC complete when: [ ] Pi operates for full 10-minute flight without anomaly [ ] Threshold filtering confirmed (not every 2Hz update transmitted) [ ] Contextual alert (e.g. PM2.5 spike) visible on ground station map [ ] EASA category unchanged [ ] AUW documented
DURATION: ~1 weekend (order-to-flight approximately 2 weeks with shipping).
Revision History¶
| Version | Date | Author | Summary |
|---|---|---|---|
| 3.5.0 | 2026-03-30 | JS | Phase 9 added: Pi Zero 2W PoC (LCM-1). Steps 9.1–9.12 covering hardware, OS setup, bench test, first flight, and PoC gate criteria. Version bumped to 2.4.6. |
| 3.4.3 | 2026-03-27 | JS | Variables filename updated. Camera tilt corrected to arc-slot 0–30° default 15°. Backplane width corrected to 50mm. |
| 3.3.0 | 2025-12 | JS | Three-layer architecture phases added. |