feat(mechanical): modular payload bay system (Issue #170) #174

Merged
sl-jetson merged 1 commits from sl-mechanical/issue-170-payload-bay into main 2026-03-02 10:39:36 -05:00
Collaborator

Dovetail rail + tool-free swappable modules for SaltyLab/Rover/Tank.

  • payload_bay_rail.scad: 50x12mm 60deg dovetail rail (DXF for CNC Al bar), spring ball detent, thumbscrew safety-lock groove, 4-pin pogo connector housing, cross-variant deck adapters
  • payload_bay_modules.scad: _module_base() universal foundation + cargo tray, camera boom, cup holder examples + copy-paste template for new modules
  • payload_bay_BOM.md: CNC spec, pin map, load analysis (2kg rated), module developer guide

Closes #170

Generated with Claude Code

Dovetail rail + tool-free swappable modules for SaltyLab/Rover/Tank. - payload_bay_rail.scad: 50x12mm 60deg dovetail rail (DXF for CNC Al bar), spring ball detent, thumbscrew safety-lock groove, 4-pin pogo connector housing, cross-variant deck adapters - payload_bay_modules.scad: _module_base() universal foundation + cargo tray, camera boom, cup holder examples + copy-paste template for new modules - payload_bay_BOM.md: CNC spec, pin map, load analysis (2kg rated), module developer guide Closes #170 Generated with Claude Code
sl-mechanical added 2 commits 2026-03-02 10:35:00 -05:00
Add I2S3/DMA audio output driver for MAX98357A/PCM5102A class-D amps:

- audio_init(): PLLI2S N=192/R=2 → 96 MHz → FS≈22058 Hz (<0.04% error),
  GPIO PC10/PA15/PB5 (AF6), PC5 mute, DMA1_Stream7_Ch0 circular,
  HAL_I2S_Transmit_DMA ping-pong, 441-sample half-buffers (20 ms each)
- Square-wave tone generator (ISR-safe, integer volume scaling 0-100)
- Tone sequencer: STARTUP/ARM/DISARM/FAULT/BEEP sequences via audio_tick()
- PCM FIFO (4096 samples, SPSC ring): receives Jetson audio via JLink
- JLink protocol: JLINK_CMD_AUDIO = 0x08, JLINK_MAX_PAYLOAD 64→252 bytes
  (supports 126 int16 samples/frame = 5.7 ms @22050 Hz)
- main.c: audio_init(), STARTUP tone on boot, ARM/FAULT tones, audio_tick()
- config.h: AUDIO_BCLK/LRCK/DOUT/MUTE pin defines + PLLI2S constants
- test_audio.py: 45 tests, all passing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Dovetail rail + tool-free swappable payload modules for all variants:
- payload_bay_rail.scad: 50×12 mm 60° dovetail rail (DXF for CNC Al bar),
  spring ball detent (Ø6 mm, 50 mm pitch), continuous safety-lock groove
  (M4 thumbscrew), 4-pin pogo connector housing (GND/5V/12V/UART),
  lab/rover/tank deck adapter plates
- payload_bay_modules.scad: universal _module_base() (male tongue, detent
  bore, 4× Ø4 mm target pads, lock bore) + 3 example modules: cargo tray
  (200×100 mm, Velcro slots, bungee cord slots), camera boom (120 mm mast +
  80 mm arm, 2020-rail-compatible head, 3-position tilt), cup holder
  (Ø80 mm tapered, 8-slot flex grip). Includes copy-paste module template.
- payload_bay_BOM.md: hardware list, CNC spec (dovetail dimensions, surface
  finish, connector pocket), load analysis (2 kg rated with Al rail + lock),
  module developer guide with constraints table

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sl-webui force-pushed sl-mechanical/issue-170-payload-bay from f952ca2d0b to 796e343b78 2026-03-02 10:38:14 -05:00 Compare
sl-jetson merged commit 7c62f9bf88 into main 2026-03-02 10:39:36 -05:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: seb/saltylab-firmware#174
No description provided.