Dev #26

Open
overseer wants to merge 65 commits from dev into main
7 changed files with 38433 additions and 17600 deletions
Showing only changes of commit d89f9dc20b - Show all commits
+6 -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 two low-profile vertical rear pass-through loops, not a clamp/dovetail.
- Primary mounting is reusable cloth zip ties / Velcro straps through two low-profile vertical rear brackets with long lateral side-feed openings, 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 vertical external rear zip-tie/Velcro pass-through loops 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 brackets to resist rotation on a stand. The zip ties feed laterally through long side windows behind the raised bridge faces; the old top-to-bottom feed-through tunnel is intentionally closed by top/bottom anchor pads.
- 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,11 +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.
- prototype rear side-feed opening: ~40 mm long vertical side window × ~3.8 mm strap-thickness clearance behind each raised bridge, 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 vertical loop edges need larger radii or TPU/silicone sleeve protection.
- whether rear vertical bracket/window edges need larger radii or TPU/silicone sleeve protection.
- Printability:
- rear vertical zip-tie loop side-pad/bridge strength and whether the top-to-bottom pass-through tunnels print cleanly without supports.
- rear vertical zip-tie bracket top/bottom anchor-pad and bridge strength, and whether the lateral side-feed openings 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.
@@ -91,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. A rear-loop sanity check confirms both vertical brackets have clear non-solid pass-through tunnel volumes behind the raised bridges.
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-bracket sanity check confirms both vertical brackets have clear non-solid lateral X-direction side-feed volumes behind the raised bridge faces, while the rear wall, bridge faces, and top/bottom anchor pads remain solid.
Or with the main parametric selector:
+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 vertical zip-tie pass-through loops |
| Reusable cloth zip ties / Velcro straps | 2 | ~$1 | Primary stand mount through rear vertical zip-tie brackets with lateral side-feed openings |
**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 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.
4. **Rear vertical zip-tie pass-through brackets** — two low-profile external brackets, one left and one right of center, with top/bottom anchor pads and long vertical side-access openings. Zip ties feed laterally in the X direction behind each raised bridge face instead of top-to-bottom, while the rear wall stays sealed.
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 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.
- **Infill:** 20% gyroid minimum; 30%+ recommended around rear vertical zip-tie bracket anchor pads/bridges.
- **Supports:** likely minimal/none depending on orientation; verify the rear lateral side-feed openings 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 side-feed openings; 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. Feed two reusable cloth zip ties / Velcro straps through the rear vertical pass-through loops from top to bottom.
2. Feed two reusable cloth zip ties / Velcro straps laterally through the long side openings behind the rear vertical brackets.
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 zip-tie loops | ~56 × 40.5 × 82 |
| Case with rear zip-tie brackets | ~56 × 41.2 × 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 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 |
| Rear vertical zip-tie brackets | two external side-feed brackets, each ~8.5 mm wide × 50 mm tall; lateral tunnel has ~40 mm vertical side-window length × ~3.8 mm strap-thickness clearance behind the raised bridge |
| 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
+25 -24
View File
@@ -1,7 +1,7 @@
// 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 zip-tie pass-through loops are on the +Y face.
// Front/service lid is on the -Y face. Rear side-feed zip-tie brackets 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.
@@ -50,10 +50,10 @@ 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 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 reusable cloth zip-tie / Velcro pass-through brackets.
// Two visibly vertical external brackets sit left/right of center.
// The strap path is a lateral X-direction tunnel between the sealed rear wall
// and raised bridge face; long side windows stay open for feeding from either side.
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
@@ -61,8 +61,8 @@ 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;
rear_loop_anchor_h = 5.0; // top/bottom weld pads; side window remains long vertically
rear_loop_side_window_h = rear_loop_h - 2*rear_loop_anchor_h;
// USB power connector placeholder cutouts
usb_c_cutout_w = 10.5; // bottom USB-C female inlet visible opening, X width
@@ -114,25 +114,26 @@ module screw_boss(x, z) {
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.
// The bracket silhouette remains vertical, but the real strap tunnel runs
// laterally in X through the long side windows, behind the raised bridge face.
// Top/bottom pads weld the bridge to the shell; no cut reaches the rear wall.
loop_overlap_y = 0.75;
tunnel_extra_y = 0.35;
tunnel_clear_z = rear_loop_h + 0.8;
pad_r = 1.15;
bridge_y_center = case_d/2 + rear_loop_gap_y + rear_loop_face_t/2;
pad_y_center = case_d/2 + rear_loop_y/2 - loop_overlap_y;
pad_z_offset = rear_loop_h/2 - rear_loop_anchor_h/2;
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);
union() {
// Raised vertical bridge face: visually preserves the requested vertical
// rear brackets while spanning the side-feed tunnel externally.
translate([xc, bridge_y_center, rear_loop_z])
xz_rounded_prism(rear_loop_w, rear_loop_face_t, 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);
// Top and bottom anchor pads close the old top-to-bottom feed direction
// and tie the raised face back into the rear wall without opening the case.
for (zoff = [-pad_z_offset, pad_z_offset])
translate([xc, pad_y_center, rear_loop_z + zoff])
xz_rounded_prism(rear_loop_w, rear_loop_y, rear_loop_anchor_h, r=pad_r);
}
}
@@ -145,7 +146,7 @@ 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 pass-through loops kept flat/quiet.
// Rear cloth zip-tie / Velcro side-feed brackets kept flat/quiet.
rear_zip_tie_loop(-rear_loop_x);
rear_zip_tie_loop( rear_loop_x);
}