Archive STM32 firmware to legacy/stm32/: - src/, include/, lib/USB_CDC/, platformio.ini, test stubs, flash_firmware.py - test/test_battery_adc.c, test_hw_button.c, test_pid_schedule.c, test_vesc_can.c, test_can_watchdog.c - USB_CDC_BUG.md Rename: stm32_protocol → esp32_protocol, mamba_protocol → balance_protocol, stm32_cmd_node → esp32_cmd_node, stm32_cmd_params → esp32_cmd_params, stm32_cmd.launch.py → esp32_cmd.launch.py, test_stm32_protocol → test_esp32_protocol, test_stm32_cmd_node → test_esp32_cmd_node Content cleanup across all files: - Mamba F722S → ESP32-S3 BALANCE - BlackPill → ESP32-S3 IO - STM32F722/F7xx → ESP32-S3 - stm32Mode/Version/Port → esp32Mode/Version/Port - STM32 State/Mode labels → ESP32 State/Mode - Jetson Nano → Jetson Orin Nano Super - /dev/stm32 → /dev/esp32 - stm32_bridge → esp32_bridge - STM32 HAL → ESP-IDF docs/SALTYLAB.md: - Update "Drone FC Details" to describe ESP32-S3 BALANCE board (Waveshare ESP32-S3 Touch LCD 1.28) - Replace verbose "Self-Balancing Control" STM32 section with brief note pointing to SAUL-TEE-SYSTEM-REFERENCE.md TEAM.md: Update Embedded Firmware Engineer role to ESP32-S3 / ESP-IDF No new functionality — cleanup only. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9.6 KiB
SaltyBot Chassis — Bill of Materials
Task: bd-1iy5 / prototype-baseplate Rev: C — 2026-02-28 (vertical stem architecture; batteries on mast carousel) Agent: sl-mechanical
⚠ Axle Measurement Update (Rev B)
PR #7 (chassis_frame.scad) used placeholder values. The table below records the
caliper-verified hub motor axle dimensions. All new designs must use these.
| Feature | Measured | PR #7 placeholder | Delta |
|---|---|---|---|
| Axle base diameter (round, near hub) | 16.11 mm | 14 mm | +2.11 mm |
| D-cut shaft OD | 15.95 mm | — (not modelled) | new |
| D-cut flat chord | 13.00 mm | — | new |
| Total axle protrusion | 65.5 mm | ~60 mm est. | +5.5 mm |
| Base section length | 15.0 mm | — | new |
| D-cut section length | 43.35 mm | — | new |
| Tip / shoulder | 3.0 mm | — | new |
| Bearing seat collar OD | 37.8 mm | — | new |
| Tire OD | 254 mm (10×2.125") | 170 mm motor OD only | — |
| Axle CL height above ground | 127 mm | 310 mm (wrong) | −183 mm |
chassis_frame.scad should be updated in a follow-on task to match Rev B values.
Structural / Fabricated Parts
Prototype Base Plate (prototype_baseplate.scad) — Rev C
Batteries are removed from the base plate. Plate is now compact (680×130mm). Stem socket replaces battery tray. See Part B (stem clamp) below.
| # | Part | Qty | Material | Cut size | Notes |
|---|---|---|---|---|---|
| 1 | Base plate | 1 | 6mm 5052-H32 Al or 8mm acrylic | 680×130mm blank | RENDER="plate_2d" → DXF |
| 2 | Dropout clamp — lower | 2 | 8mm 6061-T6 Al | 90×70mm blank | Round bore Ø16.51mm; RENDER="clamp_lower_2d" |
| 3 | Dropout clamp — upper | 2 | 8mm 6061-T6 Al | 90×70mm blank | D-cut bore; RENDER="clamp_upper_2d" |
| 4 | Stem flange ring | 2 | 6mm Al or acrylic | Ø82mm disc | One above + one below plate; RENDER="stem_flange_2d" |
| 5 | Vertical stem tube | 1 | 38.1mm OD × 1.5mm wall 6061-T6 Al | 1050mm length | 1.5" EMT conduit is a drop-in alternative |
| <<<<<<< HEAD | |||||
| 6 | MCU standoff M3×6mm nylon | 4 | Nylon | — | ESP32 BALANCE / IO board isolation (dimensions TBD) |
======= | 6 | FC standoff M3×6mm nylon | 4 | Nylon | — | ESP32-S3 BALANCE vibration isolation |
291dd68(feat: remove all STM32/Mamba/BlackPill references — ESP32-S3 only) | 7 | Ø4mm × 16mm alignment pin | 8 | Steel dowel | — | Dropout clamp-to-plate alignment |
Battery Stem Clamp (stem_battery_clamp.scad) — Part B
| # | Part | Qty | Material | Notes |
|---|---|---|---|---|
| 8 | Collar half | 2 | PETG FDM (5 perimeters, 40% infill) | Print flat-side-down; mirror 2nd in slicer. Bore Ø38.6mm |
| 9 | Radial arm | 4 | 4mm 5052-H32 Al (laser-cut) or PETG FDM | RENDER="arm_2d" for DXF with ARM_THICK=4; or print at 8mm |
| 10 | Battery cradle | 4 | PETG FDM (4 perimeters, 30% infill) | U-channel, open top; holds 1 pack per cradle |
| 11 | M6×60 SHCS | 4 | SS | 2 collar clamping bolts × 2 sides |
| 12 | M6 hex nut | 4 | SS | Captured in collar nut pockets |
| 13 | M6×12 set screw | 2 | SS, cup-point | 1 per collar half for height lock |
| 14 | M4×20 SHCS | 8 (16 for 4) | SS | Arm-to-collar bolts (2 per arm) |
| 15 | M4×16 SHCS | 8 (16 for 4) | SS | Cradle-to-arm bolts (2 per cradle) |
| 16 | M4 hex nut | 16 (32 for 4) | SS | Nuts for items 14 + 15 |
| 17 | Velcro strap 25mm × 600mm | 4–8 | — | 1–2 per battery pack through cradle slots |
Full Chassis (chassis_frame.scad) — Rev A (placeholder values — pending Rev B update)
| # | Part | Qty | Material | Notes |
|---|---|---|---|---|
| 6 | Main deck plate | 1 | 6mm 5052 aluminium plate, 640×220mm | CNC router or waterjet; all holes per chassis_frame.scad |
| 7 | Longitudinal rib (front) | 1 | 4mm 5052 aluminium, 600×40mm | Laser-cut; press-fit into deck slots |
| 8 | Longitudinal rib (rear) | 1 | 4mm 5052 aluminium, 600×40mm | Same file, symmetric |
| 9 | Motor fork bracket (L) | 1 | 8mm 6061 aluminium | Update fork slot to Ø16.51mm before cutting |
| 10 | Motor fork bracket (R) | 1 | 8mm 6061 aluminium | Mirror of item 9 |
| 11 | Battery tray | 1 | 3mm PETG FDM or 3mm aluminium fold | chassis_frame.scad — battery_tray() module |
| 12 | FC mount plate / standoffs | 1 set | PETG or nylon FDM | Includes 4× M3 nylon standoffs, 6mm height |
| 13 | Jetson Orin Nano Super mount plate | 1 | 4mm 5052 aluminium or 4mm PETG FDM | B01 58×58mm hole pattern |
| 14 | Front bumper bracket | 1 | 5mm PETG FDM | Saddle clamps for 22mm EMT conduit |
| 15 | Rear bumper bracket | 1 | 5mm PETG FDM | Mirror of item 14 |
Motors
| # | Part | Qty | Source / Spec | Notes |
|---|---|---|---|---|
| 16 | Hoverboard hub motor | 2 | 10×2.125" pneumatic tire, 36V nominal, ~350W | Axle: Ø16.11mm base / Ø15.95mm D-cut / 13mm flat; bearing seat Ø37.8mm — all caliper-verified |
| 17 | Motor hall-sensor cable extension | 2 | 6-pin JST-PH 300mm | Route through deck cable slot |
| 18 | Axle lock nut | 4 | M16×1.5 or thread-matched to actual axle tip | Confirm thread at tip before ordering; calipers show Ø≈10mm at tip |
Electronics Mounts
⚠️ ARCHITECTURE CHANGE (2026-04-03): ESP32 BALANCE (ESP32) is retired. Replaced by ESP32 BALANCE + ESP32 IO. Board dimensions and hole patterns TBD — await spec from max.
| # | Part | Qty | Spec | Notes |
|---|---|---|---|---|
| <<<<<<< HEAD | ||||
| 13 | ESP32 BALANCE board | 1 | TBD — mount pattern TBD | PID balance loop; replaces ESP32 BALANCE |
| 13b | ESP32 IO board | 1 | TBD — mount pattern TBD | Motor/sensor/comms I/O |
| 14 | Nylon M3 standoff 6mm | 4 | F/F nylon | ESP32 board isolation |
| 15 | Anti-vibration grommet M3 | 4 | Ø6mm silicone | Under ESP32 mount pads |
| 16 | Jetson Orin module | 1 | 69.6×45mm module + carrier | 58×58mm M3 carrier hole pattern |
======= | 13 | ESP32-S3 ESP32-S3 BALANCE FC | 1 | 36×36mm PCB, 30.5×30.5mm M3 mount | Oriented USB-C port toward front | | 14 | Nylon M3 standoff 6mm | 4 | F/F nylon | FC vibration isolation | | 15 | Anti-vibration grommet M3 | 4 | Ø6mm silicone | Under FC mount pads | | 16 | Jetson Orin Nano Super B01 module | 1 | 69.6×45mm module + carrier | 58×58mm M3 carrier hole pattern |
291dd68(feat: remove all STM32/Mamba/BlackPill references — ESP32-S3 only) | 17 | Nylon M3 standoff 8mm | 4 | F/F nylon | Jetson board standoffs |
Battery (Vertical Stem Mount — Rev C)
Batteries mount VERTICALLY on the stem carousel, not on the base plate. Each pack stands upright (420mm tall) in a cradle at the end of a radial arm.
| # | Part | Qty | Spec | Notes |
|---|---|---|---|---|
| 18 | Battery pack | 2–4 | 24V, 420×88×56 mm each (caliper-verified) | Snap into battery cradle from above |
| 19 | BMS board | 1 | Matched to cell chemistry | Mount to stem or base plate underside; run wiring down stem |
Battery stem clamp — configuration guide
| Config | Arm count | Carousel weight | Balance | Notes |
|---|---|---|---|---|
| 2-pack | 2 arms, 180° apart | ~1.4 kg | ✅ Symmetric | Minimum configuration |
| 4-pack | 4 arms, 90° apart | ~2.8 kg | ✅ Symmetric | Maximum practical config |
| 3-pack | 3 arms, 120° apart | ~2.1 kg | ⚠ Asymmetric mass | Needs counter-balance or avoid |
CG height tuning
Slide entire carousel up/down the stem with M6 collar bolts loosened. Tighten at desired height. Typical balance point (initial estimate): batteries centred at 450–600 mm above base plate. Adjust in ≈50 mm increments during commissioning.
Bumper Rail
| # | Part | Qty | Spec | Notes |
|---|---|---|---|---|
| 21 | 3/4" EMT conduit | 2 | 22mm OD, 660mm length | Front and rear bumper rail; bent or straight |
| 22 | Conduit saddle clamp M4 | 6 | 3D-printed integral to bracket (items 9/10) | Back-up: standard pipe clamp 22mm |
Fasteners
| # | Part | Qty | Spec | Use |
|---|---|---|---|---|
| 20 | M5×16 SHCS | 16 | ISO 4762, SS | Dropout clamp bolts (4 per clamp × 4) |
| 21 | M5×20 SHCS | 8 | ISO 4762, SS | Stem flange bolts (4 per flange × 2) |
| 22 | M5 hex nut | 24 | ISO 4032, SS | |
| 23 | M4×20 SHCS | 16 | ISO 4762, SS | Arm-to-collar (2 per arm × 4 arms × 2) |
| 24 | M4×16 SHCS | 16 | ISO 4762, SS | Cradle-to-arm (2 per cradle × 4 arms × 2) |
| 25 | M4 hex nut | 32 | ISO 4032, SS | |
| 26 | M6×60 SHCS | 4 | ISO 4762, SS | Collar clamping bolts |
| 27 | M6 hex nut | 4 | ISO 4032, SS | Captured in collar pockets |
| 28 | M6×12 set screw | 2 | ISO 4026, SS cup-point | Stem height lock (1 per collar half) |
| 29 | M3×10 SHCS | 12 | ISO 4762, SS | ESP32 mount + miscellaneous |
| 30 | M3×6 BHCS | 4 | ISO 4762, SS | ESP32 board bolts (qty TBD pending board spec) |
| 31 | Axle lock nut (match axle tip thread) | 4 | Flanged, confirm thread | 2 per motor |
| 32 | Flat washer M5 | 32 | SS | |
| 33 | Flat washer M4 | 32 | SS | |
| 34 | Ø4×16 dowel pin | 8 | Steel | Dropout clamp alignment |
Tools Required for Assembly
- Torque wrench (M14 axle nuts: 35–40 N·m; M5: 4 N·m)
- M2.5 / M3 / M4 / M5 hex drivers
- Thread locker (Loctite 243 blue for all structural fasteners)
- Dial caliper — verify motor OD, axle flat before machining fork slot
Estimated Masses
| Assembly | Est. mass |
|---|---|
| Aluminium deck + ribs | ~1.1 kg |
| Motor forks (×2 Al) | ~0.4 kg |
| Motors (×2) | ~3.6 kg |
| Battery (6S 4Ah LiPo) | ~0.7 kg |
| Electronics (FC + Jetson + wiring) | ~0.5 kg |
| Bumpers + brackets | ~0.3 kg |
| Fasteners | ~0.2 kg |
| Total estimate | ~6.8 kg |