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
- Print all parts (see table above). Base at 60% infill for mass.
- Press ballast nuts into base pockets from underside. Optional: fill pockets with epoxy to lock.
- Install heat-set M4 inserts in base plate slots (back wall × 3, guide × 4 each side, ArUco foot × 4, PSU × 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.
- Solder 16 AWG wires to pogo pin terminals. Route down wiring channel. Thread through base cable slot.
- 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.
- Install LED bezel: press 5 mm LEDs through bores (body recessed 2 mm), solder resistors and wires on rear, plug into controller header.
- Bolt back wall to base (3× M4×16 from underneath).
- 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.
- Mount ArUco mast to base front (4× M4×10).
- Insert ArUco marker (laminated 100×100 mm, ID=0, DICT_4X4_50) into frame slot from side.
- Attach rubber feet (or drill floor anchor holes).
- Robot receiver: press brass contact pads into bores (interference fit, apply Loctite 603 retaining compound). Solder wires to pad rear lugs before pressing in.
- Mount receiver to robot: align pads to dock pogo height, fasten M4 bolts.
Export Commands
# 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