generated from CubeCraft-Creations/Tracehound
Add camera node case v4 status panel CAD #11
@@ -14,9 +14,11 @@
|
|||||||
- `hardware/case/camera-node-case-v4-body.scad`
|
- `hardware/case/camera-node-case-v4-body.scad`
|
||||||
- `hardware/case/camera-node-case-v4-lid.scad`
|
- `hardware/case/camera-node-case-v4-lid.scad`
|
||||||
- `hardware/case/camera-node-case-v4-preview.scad`
|
- `hardware/case/camera-node-case-v4-preview.scad`
|
||||||
|
- `hardware/case/camera-node-case-v4-front-review.scad`
|
||||||
- `hardware/case/camera-node-case-v4-body.stl`
|
- `hardware/case/camera-node-case-v4-body.stl`
|
||||||
- `hardware/case/camera-node-case-v4-lid.stl`
|
- `hardware/case/camera-node-case-v4-lid.stl`
|
||||||
- `hardware/case/camera-node-case-v4-preview.stl`
|
- `hardware/case/camera-node-case-v4-preview.stl`
|
||||||
|
- `hardware/case/camera-node-case-v4-front-review.stl`
|
||||||
|
|
||||||
**Design direction:**
|
**Design direction:**
|
||||||
|
|
||||||
@@ -31,6 +33,7 @@
|
|||||||
- single 3 mm RGB status LED replacing red/green status LEDs.
|
- single 3 mm RGB status LED replacing red/green status LEDs.
|
||||||
- small rocker on/off switch.
|
- small rocker on/off switch.
|
||||||
- two long rounded lower front slots styled after the reference.
|
- two long rounded lower front slots styled after the reference.
|
||||||
|
- Front-panel screen, LED, rocker, cable-relief, 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, bottom cable exit/strain-relief notch, 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, bottom cable exit/strain-relief notch, and two rear horizontal external belt-loop strap channels to resist rotation on a stand.
|
||||||
- Internal envelope is sized for known module dimensions plus service clearance:
|
- Internal envelope is sized for known module dimensions plus service clearance:
|
||||||
- ESP32-C3 Super Mini: 22.5 × 18 mm.
|
- ESP32-C3 Super Mini: 22.5 × 18 mm.
|
||||||
@@ -83,9 +86,10 @@ BAT 87% LINK OK
|
|||||||
openscad -o /tmp/camera-node-case-v4-body.stl hardware/case/camera-node-case-v4-body.scad
|
openscad -o /tmp/camera-node-case-v4-body.stl hardware/case/camera-node-case-v4-body.scad
|
||||||
openscad -o /tmp/camera-node-case-v4-lid.stl hardware/case/camera-node-case-v4-lid.scad
|
openscad -o /tmp/camera-node-case-v4-lid.stl hardware/case/camera-node-case-v4-lid.scad
|
||||||
openscad -o /tmp/camera-node-case-v4-preview.stl hardware/case/camera-node-case-v4-preview.scad
|
openscad -o /tmp/camera-node-case-v4-preview.stl hardware/case/camera-node-case-v4-preview.scad
|
||||||
|
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, and preview 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.
|
||||||
|
|
||||||
Or with the main parametric selector:
|
Or with the main parametric selector:
|
||||||
|
|
||||||
@@ -93,6 +97,7 @@ Or with the main parametric selector:
|
|||||||
openscad -D 'part="body"' -o /tmp/camera-node-case-v4-body.stl hardware/case/camera-node-case-v4.scad
|
openscad -D 'part="body"' -o /tmp/camera-node-case-v4-body.stl hardware/case/camera-node-case-v4.scad
|
||||||
openscad -D 'part="lid"' -o /tmp/camera-node-case-v4-lid.stl hardware/case/camera-node-case-v4.scad
|
openscad -D 'part="lid"' -o /tmp/camera-node-case-v4-lid.stl hardware/case/camera-node-case-v4.scad
|
||||||
openscad -D 'part="preview"' -o /tmp/camera-node-case-v4-preview.stl hardware/case/camera-node-case-v4.scad
|
openscad -D 'part="preview"' -o /tmp/camera-node-case-v4-preview.stl hardware/case/camera-node-case-v4.scad
|
||||||
|
openscad -D 'part="front_review"' -o /tmp/camera-node-case-v4-front-review.stl hardware/case/camera-node-case-v4.scad
|
||||||
```
|
```
|
||||||
|
|
||||||
## Prior prototype reference
|
## Prior prototype reference
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ Simple per-part OpenSCAD wrappers are included:
|
|||||||
- `hardware/case/camera-node-case-v4-body.scad`
|
- `hardware/case/camera-node-case-v4-body.scad`
|
||||||
- `hardware/case/camera-node-case-v4-lid.scad`
|
- `hardware/case/camera-node-case-v4-lid.scad`
|
||||||
- `hardware/case/camera-node-case-v4-preview.scad`
|
- `hardware/case/camera-node-case-v4-preview.scad`
|
||||||
|
- `hardware/case/camera-node-case-v4-front-review.scad`
|
||||||
|
|
||||||
Example CLI exports, if OpenSCAD is installed:
|
Example CLI exports, if OpenSCAD is installed:
|
||||||
|
|
||||||
@@ -75,6 +76,7 @@ Example CLI exports, if OpenSCAD is installed:
|
|||||||
openscad -o hardware/case/camera-node-case-v4-body.stl hardware/case/camera-node-case-v4-body.scad
|
openscad -o hardware/case/camera-node-case-v4-body.stl hardware/case/camera-node-case-v4-body.scad
|
||||||
openscad -o hardware/case/camera-node-case-v4-lid.stl hardware/case/camera-node-case-v4-lid.scad
|
openscad -o hardware/case/camera-node-case-v4-lid.stl hardware/case/camera-node-case-v4-lid.scad
|
||||||
openscad -o hardware/case/camera-node-case-v4-preview.stl hardware/case/camera-node-case-v4-preview.scad
|
openscad -o hardware/case/camera-node-case-v4-preview.stl hardware/case/camera-node-case-v4-preview.scad
|
||||||
|
openscad -o hardware/case/camera-node-case-v4-front-review.stl hardware/case/camera-node-case-v4-front-review.scad
|
||||||
```
|
```
|
||||||
|
|
||||||
Or render the main file directly:
|
Or render the main file directly:
|
||||||
@@ -83,8 +85,11 @@ Or render the main file directly:
|
|||||||
openscad -D 'part="body"' -o hardware/case/camera-node-case-v4-body.stl hardware/case/camera-node-case-v4.scad
|
openscad -D 'part="body"' -o hardware/case/camera-node-case-v4-body.stl hardware/case/camera-node-case-v4.scad
|
||||||
openscad -D 'part="lid"' -o hardware/case/camera-node-case-v4-lid.stl hardware/case/camera-node-case-v4.scad
|
openscad -D 'part="lid"' -o hardware/case/camera-node-case-v4-lid.stl hardware/case/camera-node-case-v4.scad
|
||||||
openscad -D 'part="preview"' -o hardware/case/camera-node-case-v4-preview.stl hardware/case/camera-node-case-v4.scad
|
openscad -D 'part="preview"' -o hardware/case/camera-node-case-v4-preview.stl hardware/case/camera-node-case-v4.scad
|
||||||
|
openscad -D 'part="front_review"' -o hardware/case/camera-node-case-v4-front-review.stl hardware/case/camera-node-case-v4.scad
|
||||||
```
|
```
|
||||||
|
|
||||||
|
`camera-node-case-v4-preview.stl` is the seated fit-check assembly. `camera-node-case-v4-front-review.stl` is a non-print review layout with the body and front panel separated so the OLED, LED, rocker, cable-relief, and lower-slot cutouts are obvious in a slicer.
|
||||||
|
|
||||||
### Print Settings
|
### Print Settings
|
||||||
|
|
||||||
- **Material:** PETG preferred for heat/outdoor use and strap-tab durability.
|
- **Material:** PETG preferred for heat/outdoor use and strap-tab durability.
|
||||||
|
|||||||
+4024
-4024
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,4 @@
|
|||||||
|
// Export wrapper for RemoteRig camera node case v4 front-facing review layout.
|
||||||
|
use <camera-node-case-v4.scad>
|
||||||
|
|
||||||
|
camera_node_front_review_v4();
|
||||||
File diff suppressed because it is too large
Load Diff
+7971
-3547
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -166,6 +166,9 @@ module camera_node_body_v4() {
|
|||||||
|
|
||||||
// ----- Printable front service lid / status panel -----
|
// ----- Printable front service lid / status panel -----
|
||||||
module camera_node_lid_v4() {
|
module camera_node_lid_v4() {
|
||||||
|
panel_through_d = lid_t + lid_lip_t + 2.4;
|
||||||
|
panel_through_y = 0.25;
|
||||||
|
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
// Visible full-height flush panel; restrained and not a busy slab.
|
// Visible full-height flush panel; restrained and not a busy slab.
|
||||||
@@ -179,29 +182,34 @@ module camera_node_lid_v4() {
|
|||||||
// OLED window and shallow black-bezel-style recess near the top.
|
// OLED window and shallow black-bezel-style recess near the top.
|
||||||
translate([0, -lid_t/2 + 0.35, oled_z])
|
translate([0, -lid_t/2 + 0.35, oled_z])
|
||||||
xz_rounded_prism(oled_bezel_w, 0.9, oled_bezel_h, r=1.3);
|
xz_rounded_prism(oled_bezel_w, 0.9, oled_bezel_h, r=1.3);
|
||||||
translate([0, -0.2, oled_z])
|
translate([0, panel_through_y, oled_z])
|
||||||
xz_rounded_prism(oled_window_w, lid_t + lid_lip_t + 0.9, oled_window_h, r=0.5);
|
xz_rounded_prism(oled_window_w, panel_through_d, oled_window_h, r=0.5);
|
||||||
|
|
||||||
// Subtle secondary indicators flanking the rocker, below the OLED bezel.
|
// Subtle secondary indicators flanking the rocker, below the OLED bezel.
|
||||||
translate([-15.0, -0.2, 33.0]) y_cylinder(d=led_hole_d, h=lid_t + lid_lip_t + 1.0);
|
translate([-15.0, panel_through_y, 33.0]) y_cylinder(d=led_hole_d, h=panel_through_d);
|
||||||
translate([ 15.0, -0.2, 33.0]) y_cylinder(d=led_hole_d, h=lid_t + lid_lip_t + 1.0);
|
translate([ 15.0, panel_through_y, 33.0]) y_cylinder(d=led_hole_d, h=panel_through_d);
|
||||||
|
|
||||||
// Small rocker lower on the panel, offset away from the OLED, screws, and slots.
|
// Small rocker lower on the panel, offset away from the OLED, screws, and slots.
|
||||||
translate([0, -0.2, 33.0])
|
translate([0, panel_through_y, 33.0])
|
||||||
xz_rounded_prism(rocker_w, lid_t + lid_lip_t + 1.0, rocker_h, r=0.8);
|
xz_rounded_prism(rocker_w, panel_through_d, rocker_h, r=0.8);
|
||||||
|
|
||||||
|
// Bottom-center cable relief in the removable front panel so the cable
|
||||||
|
// exit is obvious and not visually hidden by the service lid.
|
||||||
|
translate([0, panel_through_y, 0.8])
|
||||||
|
xz_rounded_prism(cable_notch_w, panel_through_d, cable_notch_h, r=1.8);
|
||||||
|
|
||||||
// Two long rounded horizontal slots near the lower front, matching the reference.
|
// Two long rounded horizontal slots near the lower front, matching the reference.
|
||||||
translate([0, -0.2, 17.0])
|
translate([0, panel_through_y, 17.0])
|
||||||
xz_rounded_prism(front_slot_w, lid_t + lid_lip_t + 1.0, front_slot_h, r=front_slot_h/2);
|
xz_rounded_prism(front_slot_w, panel_through_d, front_slot_h, r=front_slot_h/2 - 0.15);
|
||||||
translate([0, -0.2, 11.0])
|
translate([0, panel_through_y, 11.0])
|
||||||
xz_rounded_prism(front_slot_w, lid_t + lid_lip_t + 1.0, front_slot_h, r=front_slot_h/2);
|
xz_rounded_prism(front_slot_w, panel_through_d, front_slot_h, r=front_slot_h/2 - 0.15);
|
||||||
|
|
||||||
// Screw clearance/counterbore holes.
|
// Screw clearance/counterbore holes.
|
||||||
screw_x = lid_w/2 - 5.0;
|
screw_x = lid_w/2 - 5.0;
|
||||||
screw_z_low = 5.0;
|
screw_z_low = 5.0;
|
||||||
screw_z_high = lid_h - screw_z_low;
|
screw_z_high = lid_h - screw_z_low;
|
||||||
for (x=[-screw_x, screw_x], z=[screw_z_low, screw_z_high]) {
|
for (x=[-screw_x, screw_x], z=[screw_z_low, screw_z_high]) {
|
||||||
translate([x, -0.2, z]) y_cylinder(d=screw_d + 0.4, h=lid_t + lid_lip_t + 1.0);
|
translate([x, panel_through_y, z]) y_cylinder(d=screw_d + 0.4, h=panel_through_d);
|
||||||
translate([x, -lid_t/2 + 0.55, z]) y_cylinder(d=screw_head_d, h=1.3);
|
translate([x, -lid_t/2 + 0.55, z]) y_cylinder(d=screw_head_d, h=1.3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -224,13 +232,24 @@ module camera_node_preview_v4(show_lid=true) {
|
|||||||
color([0,0.2,0.8,0.35]) translate([9, -1, 45]) cube([24.7, 14.3, 12], center=true);
|
color([0,0.2,0.8,0.35]) translate([9, -1, 45]) cube([24.7, 14.3, 12], center=true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Non-print review layout: separates the body and front lid while keeping both
|
||||||
|
// front faces oriented toward -Y. Use this STL when checking that the screen,
|
||||||
|
// LED, rocker, cable, and lower-slot cutouts are visible in a slicer.
|
||||||
|
module camera_node_front_review_v4() {
|
||||||
|
translate([-34, 0, 0]) color("lightgray") camera_node_body_v4();
|
||||||
|
translate([34, -case_d/2 + lid_t/2 + 0.03, (case_h - lid_h)/2])
|
||||||
|
color("gainsboro") camera_node_lid_v4();
|
||||||
|
}
|
||||||
|
|
||||||
// Select part to render from OpenSCAD CLI with: -D 'part="body"'
|
// Select part to render from OpenSCAD CLI with: -D 'part="body"'
|
||||||
part = "preview"; // "body", "lid", or "preview"
|
part = "preview"; // "body", "lid", "preview", or "front_review"
|
||||||
|
|
||||||
if (part == "body") {
|
if (part == "body") {
|
||||||
camera_node_body_v4();
|
camera_node_body_v4();
|
||||||
} else if (part == "lid") {
|
} else if (part == "lid") {
|
||||||
camera_node_lid_v4();
|
camera_node_lid_v4();
|
||||||
|
} else if (part == "front_review") {
|
||||||
|
camera_node_front_review_v4();
|
||||||
} else {
|
} else {
|
||||||
camera_node_preview_v4();
|
camera_node_preview_v4();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user