# Charging Dock BOM — Issue #159 **Agent:** sl-mechanical | **Date:** 2026-03-01 Cross-variant charging dock: 5 V / 5 A pogo-pin contact, V-guide funnel, ArUco marker, LED status. --- ## A. Dock Station Hardware | # | Description | Spec | Qty | Notes / Source | |---|-------------|------|-----|----------------| | D1 | High-current pogo pin | OD 5.5 mm, 5 A rated, 20 mm length, 4 mm travel | 2 | Generic HC pogo "PBX-5" type; AliExpress or Preci-Dip 821 series. Specify press-fit shoulder. | | D2 | Brass contact pad | Ø12 × 2 mm, bare brass | 2 | Machine from Ø12 mm brass rod, or order PCB contact pad. Robot-side receiver. | | D3 | Meanwell IRM-30-5 PSU | 5 V / 5 A (30 W), open-frame | 1 | Or equivalent: Hi-Link HLK-30M05, Recom RAC30-05SK | | D4 | PG7 cable gland | IP67, M12 thread, 3–6 mm cable | 2 | PSU mains in + DC out to pogo; fits bracket cable exit | | D5 | M20 hex nut (ballast) | Steel, 30 mm AF, ~86 g each | 8 | Stack in 4× base pockets (2 nuts/pocket) for ~690 g ballast | | D6 | M4×16 SHCS | Stainless | 12 | Back wall + guide rail attachment to base | | D7 | M4×10 BHCS | Stainless | 8 | ArUco mast foot + PSU bracket to base | | D8 | M4 T-nut or insert | Heat-set, M4 | 20 | Into base plate slots | | D9 | M3×16 SHCS | Stainless | 4 | LED bezel to back wall | | D10 | M3 hex nut | DIN 934 | 4 | LED bezel | | D11 | M8×40 BHCS | Zinc | 4 | Optional floor anchor bolts | | D12 | Rubber foot | Ø20 × 5 mm, self-adhesive | 4 | Underside of base plate (no floor bolts variant) | | D13 | 16 AWG silicone wire | Red + black, 300 mm each | 2 | Pogo pin to PSU | | D14 | Crimp ring terminal | M3, for 16 AWG | 4 | Pogo pin terminal connection | | D15 | Silicone sleeve | 4 mm ID, 100 mm | 2 | Wire strain relief in cable routing channel | ## B. LED Status Circuit Components | # | Description | Spec | Qty | Notes | |---|-------------|------|-----|-------| | L1 | 5 mm LED — Red | Vf ≈ 2.0 V, 20 mA | 1 | SEARCHING state | | L2 | 5 mm LED — Yellow | Vf ≈ 2.1 V, 20 mA | 1 | ALIGNED state | | L3 | 5 mm LED — Blue | Vf ≈ 3.2 V, 20 mA | 1 | CHARGING state | | L4 | 5 mm LED — Green | Vf ≈ 2.1 V, 20 mA | 1 | FULL state | | L5 | Current limiting resistor | 150 Ω 1/4 W (for 5 V rail) | 4 | R = (5 V − Vf) / 20 mA | | L6 | TP4056 or MCU GPIO | LED driver / controller | 1 | GPIO from Jetson Orin NX via I2C LED driver, OR direct GPIO with resistors | | L7 | 2.54 mm pin header | 1×6, right-angle | 1 | LED→controller connection | > **LED current calc:** R = (5.0 − 2.1) / 0.020 = 145 Ω → use 150 Ω for red/yellow/green. > Blue: R = (5.0 − 3.2) / 0.020 = 90 Ω → use 100 Ω. ## C. Robot Receiver Hardware (per robot) | # | Description | Spec | Qty | Notes | |---|-------------|------|-----|-------| | R1 | Brass contact pad | Ø12 × 2 mm | 2 | Press-fit into receiver housing (0.1 mm interference) | | R2 | 16 AWG silicone wire | Red + black, 300 mm | 2 | From pads to battery charging PCB | | R3 | M4×10 SHCS | Stainless | 4 | Receiver to chassis (rover/tank flange bolts) | | R4 | M4×16 SHCS | Stainless | 2 | Lab variant stem collar clamp | | R5 | Solder lug, M3 | For wire termination to pad | 2 | Solder to brass pad rear face | ## D. ArUco Marker | # | Description | Spec | Qty | Notes | |---|-------------|------|-----|-------| | A1 | ArUco marker print | 100×100 mm, ID = 0 (DICT_4X4_50) | 1 | Print on photo paper or laminate; slip into frame slot | | A2 | Lamination pouch | A5, 80 micron | 1 | Weather-protect printed marker | --- ## Printed Parts | Part | File | Qty | Print settings | Mass est. | |------|------|-----|----------------|-----------| | Dock base plate | `charging_dock.scad` `base_stl` | 1 | PETG, 5 perims, 60% infill (heavy = stable), 0.3 mm layer | ~380 g | | Back wall | `charging_dock.scad` `back_wall_stl` | 1 | PETG, 5 perims, 40% infill | ~120 g | | Guide rail | `charging_dock.scad` `guide_rail_stl` | 2 (mirror R) | PETG, 5 perims, 60% infill | ~45 g each | | ArUco mast | `charging_dock.scad` `aruco_mount_stl` | 1 | PETG, 4 perims, 40% infill | ~55 g | | PSU bracket | `charging_dock.scad` `psu_bracket_stl` | 1 | PETG, 4 perims, 30% infill | ~35 g | | LED bezel | `charging_dock.scad` `led_bezel_stl` | 1 | PETG, 4 perims, 40% infill | ~10 g | | Lab receiver | `charging_dock_receiver.scad` `lab_stl` | 1 | PETG, 5 perims, 60% infill | ~28 g | | Rover receiver | `charging_dock_receiver.scad` `rover_stl` | 1 | PETG, 5 perims, 60% infill | ~32 g | | Tank receiver | `charging_dock_receiver.scad` `tank_stl` | 1 | PETG, 5 perims, 60% infill | ~38 g | --- ## Mass Summary | Assembly | Mass | |----------|------| | Dock printed parts (all) | ~690 g | | Steel ballast (8× M20 hex nuts) | ~690 g | | PSU + hardware | ~250 g | | **Dock total** | **~1630 g** | | Receiver (per robot) | ~30–38 g | --- ## Pogo Pin Contact Height — Cross-Variant Alignment The dock `POGO_Z = 35 mm` (contact height above dock floor) is set for **SaltyLab** (stem receiver height ≈ 35 mm). | Robot | Chassis floor-to-contact height | Dock adapter | |-------|--------------------------------|--------------| | SaltyLab | ~35 mm (stem base) | None — direct fit | | SaltyRover | ~55 mm (deck belly) | 20 mm ramp shim under dock base | | SaltyTank | ~90 mm (hull floor) | 55 mm ramp shim under dock base | > **Ramp shim:** print `dock_base.scad` with `BASE_T` increased, or print a separate shim block (not included — cut from plywood or print as needed). > **Alternative:** in firmware, vary approach Z offset per variant. Single dock at POGO_Z = 60 mm midpoint ± 25 mm spring travel gives rough cross-variant coverage. --- ## Wiring Diagram ``` MAINS INPUT (AC) │ ▼ ┌─────────────────┐ │ IRM-30-5 PSU │ 5 V / 5 A out │ 63×45×28 mm │ └────────┬────────┘ │ 5 V (RED 16 AWG) 0 V (BLK 16 AWG) │ │ ▼ ▼ ┌───────────┐ ┌───────────┐ │ POGO + │ (spring-loaded) │ POGO - │ │ pin │◄────────────────────►│ pin │ └─────┬─────┘ robot docks └─────┬─────┘ │ │ ─ ─ ─ ┼ ─ ─ ─ ─ ─ DOCK/ROBOT GAP ─ ─ ─ ┼ ─ ─ ─ │ │ ┌─────▼─────┐ ┌─────▼─────┐ │ CONTACT + │ (brass pad Ø12 mm) │ CONTACT - │ └─────┬─────┘ └─────┬─────┘ │ │ └──────────────┬────────────────────┘ │ ┌────────▼────────┐ │ Robot charging │ │ PCB / BMS │ │ (on robot) │ └────────┬────────┘ │ [Battery pack] LED STATUS CIRCUIT (dock side): │ 5 V from PSU │ ┌─────────────┼──────────────────────┐ │ │ │ [R] [R] [R] 150 Ω 150 Ω 100 Ω 150 Ω │ │ │ │ [LED1] [LED2] [LED3] [LED4] RED YELLOW BLUE GREEN SEARCHING ALIGNED CHARGING FULL │ │ │ │ └─────────────┴─────────────┴─────────┘ │ GPIO (Jetson Orin NX) or TP4056 charge state output CURRENT SENSING (optional — recommended): Insert INA219 (I2C) in series with POGO+ line. I2C addr 0x40; reads dock current to detect: 0 mA → SEARCHING (no robot contact) >10 mA → ALIGNED (contact made, BMS pre-charge) >1000 mA → CHARGING <50 mA → FULL (BMS trickle / float) ``` --- ## Assembly Sequence 1. **Print all parts** (see table above). Base at 60% infill for mass. 2. **Press ballast nuts** into base pockets from underside. Optional: fill pockets with epoxy to lock. 3. **Install heat-set M4 inserts** in base plate slots (back wall × 3, guide × 4 each side, ArUco foot × 4, PSU × 4). 4. **Press pogo pins** into back wall bores from the front face. Flange seats against counterbore shoulder. Apply drop of Loctite 243 to bore wall. 5. **Solder 16 AWG wires** to pogo pin terminals. Route down wiring channel. Thread through base cable slot. 6. **Assemble PSU bracket** to base (rear). Connect pogo wires to PSU DC terminals (observe polarity: POGO+ → V+, POGO- → COM). Route AC mains input via PG7 glands on bracket. 7. **Install LED bezel**: press 5 mm LEDs through bores (body recessed 2 mm), solder resistors and wires on rear, plug into controller header. 8. **Bolt back wall** to base (3× M4×16 from underneath). 9. **Bolt guide rails** to base (2× M4 each side). Mirror the right rail — print a second copy, insert STL mirrored in slicer OR use `mirror([1,0,0])` in OpenSCAD. 10. **Mount ArUco mast** to base front (4× M4×10). 11. **Insert ArUco marker** (laminated 100×100 mm, ID=0, DICT_4X4_50) into frame slot from side. 12. **Attach rubber feet** (or drill floor anchor holes). 13. **Robot receiver**: press brass contact pads into bores (interference fit, apply Loctite 603 retaining compound). Solder wires to pad rear lugs before pressing in. 14. **Mount receiver to robot**: align pads to dock pogo height, fasten M4 bolts. --- ## Export Commands ```bash # Dock parts openscad charging_dock.scad -D 'RENDER="base_stl"' -o dock_base.stl openscad charging_dock.scad -D 'RENDER="back_wall_stl"' -o dock_back_wall.stl openscad charging_dock.scad -D 'RENDER="guide_rail_stl"' -o dock_guide_rail.stl openscad charging_dock.scad -D 'RENDER="aruco_mount_stl"' -o dock_aruco_mount.stl openscad charging_dock.scad -D 'RENDER="psu_bracket_stl"' -o dock_psu_bracket.stl openscad charging_dock.scad -D 'RENDER="led_bezel_stl"' -o dock_led_bezel.stl # Robot receivers openscad charging_dock_receiver.scad -D 'RENDER="lab_stl"' -o receiver_lab.stl openscad charging_dock_receiver.scad -D 'RENDER="rover_stl"' -o receiver_rover.stl openscad charging_dock_receiver.scad -D 'RENDER="tank_stl"' -o receiver_tank.stl openscad charging_dock_receiver.scad -D 'RENDER="contact_pad_2d"' -o contact_pad.dxf ```