Add camera node case v4 status panel CAD #11

Merged
overseer merged 8 commits from agent/hermes/camera-node-case-v4-status-panel into dev 2026-05-23 11:31:40 -04:00
7 changed files with 18676 additions and 17827 deletions
Showing only changes of commit daeea9f2c9 - Show all commits
+7 -6
View File
@@ -25,7 +25,7 @@
- Stand-mounted upright camera node enclosure; the case still does **not** mount to the GoPro.
- Visual direction now matches the original green appliance-style reference: tall vertical body, large inset front panel, centered OLED near the upper third, blank middle area, two long rounded lower slots, bottom USB-C female power input, and right-side USB-A female passthrough power port for the GoPro.
- This replaces the rejected wide/low generic electronics-box layout from the first v4 attempt.
- Primary mounting is reusable cloth zip ties / Velcro straps through low-profile external rear belt-loop channels, not a clamp/dovetail.
- Primary mounting is reusable cloth zip ties / Velcro straps through two low-profile vertical rear pass-through loops, not a clamp/dovetail.
- Front has a recessed/flush full-height service lid similar to a field-service status panel.
- Lid includes cutouts for:
- 1.3-inch OLED/status screen.
@@ -34,7 +34,7 @@
- small rocker on/off switch.
- two long rounded lower front slots styled after the reference.
- Front-panel screen, LED, rocker, and lower-slot openings are actual through-cuts through the full lid and locating lip so the back side of the printed lid is not skinned over.
- Body includes screw bosses, recessed lid pocket, lid locating geometry, a bottom USB-C female power inlet cutout, a right-side USB-A female passthrough power cutout, and two rear horizontal external belt-loop strap channels to resist rotation on a stand.
- Body includes screw bosses, recessed lid pocket, lid locating geometry, a bottom USB-C female power inlet cutout, a right-side USB-A female passthrough power cutout, and two vertical external rear zip-tie/Velcro pass-through loops to resist rotation on a stand.
- Internal envelope is sized for known module dimensions plus service clearance:
- ESP32-C3 Super Mini: 22.5 × 18 mm.
- ESP-01S: ~24.7 × 14.3 × 12 mm.
@@ -73,10 +73,11 @@ BAT 87% LINK OK
- pilot diameter, screw length, and head/counterbore diameter.
- Mounting straps:
- cloth zip-tie / Velcro width and thickness.
- prototype rear loop tunnel: ~6.4 mm usable strap width × ~3.8 mm strap-thickness clearance, with each visible vertical bracket ~8.5 mm wide × 50 mm tall.
- whether two strap paths are enough to prevent case rotation on the expected stand diameter.
- whether rear bridge edges need larger radii or TPU/silicone sleeve protection.
- whether rear vertical loop edges need larger radii or TPU/silicone sleeve protection.
- Printability:
- rear strap bridge bridging/support behavior.
- rear vertical zip-tie loop side-pad/bridge strength and whether the top-to-bottom pass-through tunnels print cleanly without supports.
- body/lid fit after PETG shrinkage.
- lid lip clearance and screw boss robustness.
- USB-C/USB-A cutout edge quality, wall strength, and connector retention/strain relief.
@@ -90,7 +91,7 @@ openscad -o /tmp/camera-node-case-v4-preview.stl hardware/case/camera-node-case-
openscad -o /tmp/camera-node-case-v4-front-review.stl hardware/case/camera-node-case-v4-front-review.scad
```
Latest validation: OpenSCAD reports `Simple: yes`; trimesh confirms body, lid, preview, and front-review STLs are watertight. Body and lid each export as a single connected printable component; preview includes separate non-print board guide volumes by design.
Latest validation: OpenSCAD reports `Simple: yes`; trimesh confirms body, lid, preview, and front-review STLs are watertight. Body and lid each export as a single connected printable component; preview includes separate non-print board guide volumes by design. A rear-loop sanity check confirms both vertical brackets have clear non-solid pass-through tunnel volumes behind the raised bridges.
Or with the main parametric selector:
@@ -119,7 +120,7 @@ openscad -D 'part="front_review"' -o /tmp/camera-node-case-v4-front-review.stl h
- User requested front status/service panel with OLED, LEDs, and rocker switch.
- Single RGB status LED replaces separate red/green status LEDs.
- Strap channels are simpler and more adaptable than a dedicated clamp/dovetail for field stands.
- Rear strap pass-through loops are simpler and more adaptable than a dedicated clamp/dovetail for field stands.
## Backlog
+8 -8
View File
@@ -43,7 +43,7 @@ Each camera node is two ESP boards in a small upright stand-mounted case. The ca
| Short USB cables / wiring | as needed | ~$2$5 | Power bank → node USB-C input; node 5 V passthrough → USB-A female → GoPro USB cable; internal power/signal wiring |
| M2 or small self-tapping screws | 4 | <$1 | Front service lid screws; pilot holes are parametric |
| PETG filament | ~3550 g | ~$1 | 3D printed case body + lid |
| Reusable cloth zip ties / Velcro straps | 2 | ~$1 | Primary stand mount through rear strap channels |
| Reusable cloth zip ties / Velcro straps | 2 | ~$1 | Primary stand mount through rear vertical zip-tie pass-through loops |
**Total per node:** roughly ~$25$35 plus GoPro and power bank, depending on display/switch choice.
@@ -62,7 +62,7 @@ The current v4 CAD replaces the rejected wide/low electronics-box layout with a
- single 3 mm **RGB STAT** LED for state-dependent colors.
- small rectangular rocker switch cutout.
- two long rounded lower front slots styled after the reference appliance face.
4. **Rear strap channels** — two low-profile external belt-loop cloth zip-tie / Velcro strap paths to reduce rotation on a tripod/stand without visually dominating the body.
4. **Rear vertical zip-tie pass-through loops** — two low-profile external belt-loop brackets, one left and one right of center, with real top-to-bottom tunnels behind the raised bridges for feeding reusable cloth zip ties / Velcro straps.
5. **USB power ports** — bottom USB-C female power input and right-side USB-A female passthrough power output for a GoPro USB power cable.
### Export wrappers
@@ -98,9 +98,9 @@ openscad -D 'part="front_review"' -o hardware/case/camera-node-case-v4-front-rev
- **Material:** PETG preferred for heat/outdoor use and strap-tab durability.
- **Layer:** 0.2 mm typical.
- **Infill:** 20% gyroid minimum; 30%+ recommended around rear strap bridges.
- **Supports:** likely minimal/none depending on orientation; verify rear strap bridge spans and USB-C/USB-A port cutouts in slicer.
- **Post-processing:** fit 4 lid screws; deburr OLED/LED/switch cutouts; soften strap-channel edges if the printed radius is too sharp for cloth ties.
- **Infill:** 20% gyroid minimum; 30%+ recommended around rear vertical zip-tie loop side pads/bridges.
- **Supports:** likely minimal/none depending on orientation; verify the vertical rear pass-through tunnels remain open and check USB-C/USB-A port cutouts in slicer.
- **Post-processing:** fit 4 lid screws; deburr OLED/LED/switch cutouts; clear any stringing inside the rear pass-through tunnels; soften strap-contact edges if the printed radius is too sharp for cloth ties.
## Expected Status Screen Content
@@ -163,7 +163,7 @@ The ESP8266/ESP-01S and GoPro talk over Wi-Fi. The only cable to the GoPro is US
## Field Setup
1. Mount GoPro on tripod/stand.
2. Route two reusable cloth zip ties / Velcro straps through the rear v4 case channels.
2. Feed two reusable cloth zip ties / Velcro straps through the rear vertical pass-through loops from top to bottom.
3. Strap the case to a tripod/stand leg; use both strap paths to resist rotation.
4. Connect the power bank to the case bottom USB-C input; connect the GoPro USB power cable to the case side USB-A passthrough output.
5. Toggle rocker switch on.
@@ -177,13 +177,13 @@ Prototype v4 nominal CAD dimensions:
| Part / feature | W × D × H (mm) |
|---|---|
| Case shell external | ~56 × 36 × 82 |
| Case with rear strap bridges | ~56 × 40 × 82 |
| Case with rear zip-tie loops | ~56 × 40.5 × 82 |
| Front recessed lid | visible panel ~48 × 2 × 74; total with locating lip ~48 × 3 × 74 |
| OLED visible window assumption | ~31 × 16 |
| Rocker cutout assumption | ~13 × 19 |
| Bottom USB-C power input cutout | ~10.5 × 4.5 opening with ~18 × 10 shallow underside recess |
| Right-side USB-A passthrough cutout | ~16 Y/front-back × 8 Z opening through side wall |
| Rear strap channels | two low-profile external belt-loop paths, ~33 mm usable slot width, ~4.2 mm strap-thickness clearance |
| Rear vertical zip-tie loops | two external pass-through brackets, each ~8.5 mm wide × 50 mm tall; usable tunnel ~6.4 mm strap width × ~3.8 mm strap-thickness clearance, open top/bottom for feeding |
| Board clearance targets | ESP32-C3 22.5 × 18 mm + ESP-01S 24.7 × 14.3 × 12 mm plus wiring/service clearance |
These dimensions are placeholders for the first CAD prototype. Measure the actual OLED module, rocker switch, LEDs, screws, USB-C/USB-A connector flanges and body depths, USB cable bend radius, and strap width/thickness before committing to production prints.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+38 -30
View File
@@ -1,11 +1,11 @@
// RemoteRig camera node case v4
// Upright appliance-style OpenSCAD prototype for a strap-mounted camera node.
// Units: millimeters. Coordinate system: X=width, Y=depth/front-back, Z=height.
// Front/service lid is on the -Y face. Rear strap channels are on the +Y face.
// Front/service lid is on the -Y face. Rear zip-tie pass-through loops are on the +Y face.
//
// v4 visual direction: tall/upright appliance/control box matching the original
// reference image, replacing the rejected wide, low generic electronics box.
// Nominal body: 56 W x 36 D x 82 H mm; with low rear strap bridges ~40 D.
// Nominal body: 56 W x 36 D x 82 H mm; with low rear zip-tie loops ~41 D.
//
// Prototype assumptions to confirm against purchased parts:
// - 1.3 inch OLED module/window opening: 31 x 16 mm visible window, 37 x 22 mm panel recess.
@@ -50,14 +50,19 @@ rocker_h = 19.0;
front_slot_w = 34.0; // two long rounded horizontal slots near lower front
front_slot_h = 3.2;
// Rear reusable cloth zip-tie / Velcro strap channels: low-profile external loops.
strap_bridge_w = case_w - 14;
strap_bridge_h = 6.5; // outer raised rail height
strap_slot_h = 4.2; // strap thickness opening; adjust for cloth ties
strap_gap_y = 2.4; // clearance behind bridge for strap material
strap_bridge_y = strap_gap_y + 2.4;
strap_z1 = 23.0;
strap_z2 = 50.0;
// Rear reusable cloth zip-tie / Velcro pass-through loops.
// Two visibly vertical external belt-loop brackets sit left/right of center.
// The strap path is the real non-solid tunnel between rear wall and raised bridge;
// it stays outside the electronics cavity and is open at the top/bottom for feeding.
rear_loop_x = 13.0;
rear_loop_w = 8.5; // outside bracket width in X
rear_loop_h = 50.0; // outside bracket height in Z
rear_loop_z = case_h/2;
rear_loop_gap_y = 3.8; // usable strap-thickness clearance behind raised bridge
rear_loop_face_t = 1.4; // low-profile outer bridge skin
rear_loop_y = rear_loop_gap_y + rear_loop_face_t;
rear_loop_usable_w = 6.4; // usable strap width through each vertical loop
rear_loop_side_pad = (rear_loop_w - rear_loop_usable_w) / 2;
// USB power connector placeholder cutouts
usb_c_cutout_w = 10.5; // bottom USB-C female inlet visible opening, X width
@@ -107,24 +112,27 @@ module screw_boss(x, z) {
}
}
module strap_bridge(zc) {
// Low external rear belt-loop bridge for cloth ties/Velcro.
// The slot is entirely behind the rear wall so it does not expose the
// electronics cavity; a small overlap keeps the bridge connected to shell.
bridge_overlap_y = 0.8;
translate([0, case_d/2 + strap_bridge_y/2 - bridge_overlap_y, zc - strap_bridge_h/2])
union() {
difference() {
rounded_box([strap_bridge_w, strap_bridge_y, strap_bridge_h], r=1.8);
translate([0, -strap_bridge_y/2 + bridge_overlap_y + 0.05 + (strap_bridge_y + 1.0)/2,
(strap_bridge_h - strap_slot_h)/2])
rounded_box([strap_bridge_w - 9.0, strap_bridge_y + 1.0, strap_slot_h], r=1.1);
}
module rear_zip_tie_loop(xc) {
// Vertical external belt-loop bracket for reusable cloth zip ties/Velcro.
// The central void is a real strap tunnel: rear wall -> air gap -> raised
// outer bridge face. Side pads weld the bridge to the shell while keeping
// the electronics cavity sealed; the tunnel is open at top and bottom.
loop_overlap_y = 0.75;
tunnel_extra_y = 0.35;
tunnel_clear_z = rear_loop_h + 0.8;
// Rear-wall weld pad: mechanically joins the external bridge to the
// shell while keeping the belt slot outside the electronics cavity.
translate([0, -strap_bridge_y/2 + bridge_overlap_y, strap_bridge_h/2])
cube([strap_bridge_w, 0.9, strap_bridge_h], center=true);
translate([xc, case_d/2 + rear_loop_y/2 - loop_overlap_y, rear_loop_z])
difference() {
xz_rounded_prism(rear_loop_w, rear_loop_y, rear_loop_h, r=1.6);
// Real vertical feed-through gap behind the raised bridge. Starts
// just outside the rear wall, so it cannot cut into the enclosure.
translate([0,
-rear_loop_y/2 + loop_overlap_y + rear_loop_gap_y/2 + 0.08,
0])
cube([rear_loop_usable_w,
rear_loop_gap_y + tunnel_extra_y,
tunnel_clear_z], center=true);
}
}
@@ -137,9 +145,9 @@ module camera_node_body_v4() {
// Upright outer shell with softened appliance-like corners.
rounded_box([case_w, case_d, case_h], r=corner_r);
// Rear cloth zip-tie / Velcro strap bridges kept flat/quiet.
strap_bridge(strap_z1);
strap_bridge(strap_z2);
// Rear cloth zip-tie / Velcro pass-through loops kept flat/quiet.
rear_zip_tie_loop(-rear_loop_x);
rear_zip_tie_loop( rear_loop_x);
}
// Full-height front recessed lid pocket, like the green reference panel.