summaryrefslogtreecommitdiff
path: root/body
diff options
context:
space:
mode:
authorNikita Kostovsky <nikita@kostovsky.me>2026-01-26 22:47:37 +0100
committerNikita Kostovsky <nikita@kostovsky.me>2026-01-26 22:47:37 +0100
commit37723da199664201d0a24b526f1056b572bcadb0 (patch)
tree3d7a0c25819268b71f95d8d4a3c38b1fc3cf13cc /body
parent3939d642549b13760e53686b516e48022f37eb10 (diff)
add holes
Diffstat (limited to 'body')
-rw-r--r--body/body.scad194
-rw-r--r--body/holes.scad2
-rw-r--r--body/m12_lense_holder.scad38
-rw-r--r--body/veye_imx287.scad37
4 files changed, 204 insertions, 67 deletions
diff --git a/body/body.scad b/body/body.scad
index 15faa18..a3ec753 100644
--- a/body/body.scad
+++ b/body/body.scad
@@ -42,79 +42,94 @@ module cam_and_lense_new()
//tpw = $m12_lense_holder_size;
tpw = veye_imx287_pcb_w;
- color("pink", 0.6)
- union()
+ //color("pink", 0.6)
+ difference()
{
- //color("green", 0.3)
- difference()
+ union()
{
- //color("blue", 0.3)
- hull()
+ //color("green", 0.3)
+ difference()
{
- translate([0, 0, $lenseYPosMm])
- rotate([-$opticalAxisAngleDegrees, 0, 0])
- translate([0, -$lenseSensorDistanceMm, 0])
- rotate([$sensorLenseAngleDegrees, 0, 0])
- veye_imx287_mount_plate_outer();
-
- translate([0, 0, $lenseYPosMm])
- rotate([-$opticalAxisAngleDegrees, 0, 0])
+ //color("blue", 0.3)
+ hull()
{
- //color("blue", 0.3)
+ translate([0, 0, $lenseYPosMm])
+ rotate([-$opticalAxisAngleDegrees, 0, 0])
+ translate([0, -$lenseSensorDistanceMm, 0])
+ rotate([$sensorLenseAngleDegrees, 0, 0])
+ veye_imx287_mount_plate_outer();
+
+ translate([0, 0, $lenseYPosMm])
+ rotate([-$opticalAxisAngleDegrees, 0, 0])
{
-
- m12_lense_holder_base();
- color("blue", 0.3)
- %m12_lense_holder();
+ //color("blue", 0.3)
+ {
+
+ m12_lense_holder_base();
+ //color("blue", 0.3)
+ *%m12_lense_holder();
+ }
}
}
- }
-
- hull()
- translate([0, 0, $lenseYPosMm])
- rotate([-$opticalAxisAngleDegrees, 0, 0])
- {
- m12_lense_circle();
- translate([0, -$lenseSensorDistanceMm, 0])
- rotate([$sensorLenseAngleDegrees, 0, 0])
- veye_imx287_mount_plate_inner();
- }
- }
-
- // top part
- hull()
- {
- // lense holder helper
- {
- //color("red", 0.3)
+
+ hull()
translate([0, 0, $lenseYPosMm])
rotate([-$opticalAxisAngleDegrees, 0, 0])
- //translate([0, -$lenseSensorDistanceMm, 0])
- //rotate([$sensorLenseAngleDegrees, 0, 0])
- m12_lense_holder_top();
- }
-
- // cam holder helper
- {
- pcb_w = veye_imx287_pcb_w;
- pcb_h = veye_imx287_pcb_h;
- //color("yellow", 0.5)
+ {
+ m12_lense_circle();
+ translate([0, -$lenseSensorDistanceMm, 0])
+ rotate([$sensorLenseAngleDegrees, 0, 0])
+ veye_imx287_mount_plate_inner();
+ }
+
translate([0, 0, $lenseYPosMm])
rotate([-$opticalAxisAngleDegrees, 0, 0])
- translate([0, -$lenseSensorDistanceMm, 0])
- rotate([$sensorLenseAngleDegrees, 0, 0])
- //cube([pcb_w + $tiny_padding * 2, 1, 1]);
- veye_imx287_mount_plate_outer_top();
+ scale([1, 2, 1])
+ m12_lense_holder_screw_holes();
}
- // wall near body
+ // top part
+ hull()
{
- //color("orange", 0.3)
- translate([-pcb_w / 2, -$sbfwo, 116])
- rotate([90, 0, 0])
- cube([pcb_w, 14, 1]);
+ // lense holder helper
+ {
+ //color("red", 0.3)
+ translate([0, 0, $lenseYPosMm])
+ rotate([-$opticalAxisAngleDegrees, 0, 0])
+ //translate([0, -$lenseSensorDistanceMm, 0])
+ //rotate([$sensorLenseAngleDegrees, 0, 0])
+ m12_lense_holder_top();
+ }
+
+ // cam holder helper
+ {
+ pcb_w = veye_imx287_pcb_w;
+ pcb_h = veye_imx287_pcb_h;
+ //color("yellow", 0.5)
+ translate([0, 0, $lenseYPosMm])
+ rotate([-$opticalAxisAngleDegrees, 0, 0])
+ translate([0, -$lenseSensorDistanceMm, 0])
+ rotate([$sensorLenseAngleDegrees, 0, 0])
+ //cube([pcb_w + $tiny_padding * 2, 1, 1]);
+ veye_imx287_mount_plate_outer_top();
+ }
+
+ // wall near body
+ {
+ //color("orange", 0.3)
+ translate([-pcb_w / 2, -$sbfwo, 116])
+ rotate([90, 0, 0])
+ cube([pcb_w, 14, 1]);
+ }
}
}
+
+
+ translate([0, 0, $lenseYPosMm])
+ rotate([-$opticalAxisAngleDegrees, 0, 0])
+ translate([0, -$lenseSensorDistanceMm, 0])
+ rotate([$sensorLenseAngleDegrees, 0, 0])
+ veye_imx287_mount_holes();
}
}
@@ -397,6 +412,27 @@ module laser_holder_screw_holes()
}
}
+module cam_lense_holder_screw_holes()
+{
+ id = 4;
+ // scanner coords
+ x_offset = 10;
+ y_center = 123;
+ y_offset = 3;
+
+ for (x = [x_offset, -x_offset], yo = [y_offset, -y_offset])
+ {
+ translate([x, -wzo, y_center + yo])
+ screw_hole(
+ m = m2,
+ id = id,
+ il = hole_insert_height,
+ hd = m2_head_diameter,
+ hh = m2_head_height,
+ hs = hole_side_front);
+ }
+}
+
module visualize_yz_range()
{
lenseY = $lenseYPosMm;
@@ -573,19 +609,55 @@ module radxa()
module other()
{
//cam_and_lense();
- cam_and_lense_new();
+ difference()
+ {
+ cam_and_lense_new();
+ //translate([-$tiny_padding*100, 0, 0])
+ translate([0, $tiny_padding, 0])
+ cam_lense_holder_screw_holes();
+ }
//visualize_yz_range();
//visualize_xz_range();
visualize_range();
laser_with_holder();
- radxa();
+ %radxa();
}
-*other();
+// visual block
+
+union()
+{
+ *other();
+
+ *cam_lense_holder_screw_holes();
+
+ difference()
+ {
+ scanner_main_frame();
+ camera_hole();
+ laser_glass_hole();
+ laser_holder_screw_holes();
+ m12_connectors();
+ cam_lense_holder_screw_holes();
+ }
+}
+
+// printing cam/lense holder
+*union()
+{
+ difference()
+ {
+ cam_and_lense_new();
+ //translate([-$tiny_padding*100, 0, 0])
+ translate([0, $tiny_padding, 0])
+ cam_lense_holder_screw_holes();
+ }
+}
-difference()
+// printing body
+*difference()
{
scanner_main_frame();
camera_hole();
diff --git a/body/holes.scad b/body/holes.scad
index f464570..83d3777 100644
--- a/body/holes.scad
+++ b/body/holes.scad
@@ -130,7 +130,7 @@ module screw_hole(m, id, il, hd, hh, hs, wt = $scannerBodyWallThicknessMm)
// full screw diameter
fsd = m + sdd;
translate([0, 0, -$tiny_padding])
- %cylinder($fn = dToFn(fsd), d = fsd, h = wt + $tiny_padding * 2);
+ cylinder($fn = dToFn(fsd), d = fsd, h = wt + $tiny_padding * 2);
// screw head cutter
// full head diameter
diff --git a/body/m12_lense_holder.scad b/body/m12_lense_holder.scad
index 5907720..26a4a10 100644
--- a/body/m12_lense_holder.scad
+++ b/body/m12_lense_holder.scad
@@ -1,4 +1,5 @@
use <helpers.scad>
+include <helpers.scad>
include <veye_imx287.scad>
// m12 cam holder size
@@ -64,7 +65,8 @@ module m12_lense_holder_base()
//m12_lense_holder_wo_holes(th = 0.001, bh = 0.001);
$S = $m12_lense_holder_size;
//$cube_size = [$S, $S, 1];
- $cube_size = [veye_imx287_pcb_w, $S, 1];
+ padding = 2;
+ $cube_size = [veye_imx287_pcb_w + padding * 2, $S, 1];
rotate([-90, 0, 0])
{
@@ -87,6 +89,28 @@ module m12_lense_holder_top()
}
}
+module m12_lense_holder_screw_holes()
+{
+ rotate([-90, 0, 0])
+ {
+ // left screw hole
+ translate($m12_lense_holder_l_hole_offset)
+ cylinder(
+ $fn = diameterToFn($m12_lense_holder_sh_inner_d),
+ h = $m12_lense_holder_bottom_h * 3,
+ d = $m12_lense_holder_sh_inner_d,
+ center = true);
+
+ // right screw hole
+ translate($m12_lense_holder_r_hole_offset)
+ cylinder(
+ $fn = diameterToFn($m12_lense_holder_sh_inner_d),
+ h = $m12_lense_holder_bottom_h * 3,
+ d = $m12_lense_holder_sh_inner_d,
+ center = true);
+ }
+}
+
module m12_lense_holder_holes()
{
rotate([-90, 0, 0])
@@ -126,7 +150,19 @@ module m12_lense_holder()
}
}
+module m12_lense_holder_mount_holes()
+{
+ m = 2;
+ h = 4;
+
+ rotate([90, 0, 0])
+ cylinder($fn = dToFn(m), h = h * 2, d = m, center = true);
+}
+
*m12_lense_holder();
+*m12_lense_holder_holes();
+*m12_lense_holder_screw_holes();
+*m12_lense_holder_mount_holes();
*m12_lense_holder_wo_holes();
*m12_lense_holder_base();
*m12_lense_holder_top(); \ No newline at end of file
diff --git a/body/veye_imx287.scad b/body/veye_imx287.scad
index dd08c0b..aed7db0 100644
--- a/body/veye_imx287.scad
+++ b/body/veye_imx287.scad
@@ -1,5 +1,6 @@
include <design.scad>
include <helpers.scad>
+include <holes.scad>
veye_imx287_pcb_w = 29;
veye_imx287_pcb_h = 29;
@@ -113,8 +114,9 @@ module veye_imx287_natural()
module veye_imx287_mount_plate_outer()
{
- w = veye_imx287_pcb_w;
- h = veye_imx287_pcb_h;
+ padding = 2;
+ w = veye_imx287_pcb_w + padding * 2;
+ h = veye_imx287_pcb_h + padding * 2;
t = veye_imx287_mount_plate_thickness;
cr = veye_imx287_mount_plate_corner_radius;
@@ -229,16 +231,43 @@ module veye_imx287_mount_plate()
}
}
-color("yellow", 0.4)
+
+module veye_imx287_mount_holes()
+{
+ id = 4;
+ m2 = 2;
+
+ // distance between holes
+ h_delta = 25;
+
+ translate([0, -imx287_thickness - $tiny_padding, 0])
+ for (
+ dx = [h_delta / 2, -h_delta / 2],
+ dy = [h_delta / 2, -h_delta / 2])
+ {
+ translate([dx, 0, dy])
+ screw_hole(
+ m = m2,
+ id = id,
+ il = hole_insert_height,
+ hd = m2_head_diameter,
+ hh = m2_head_height,
+ hs = hole_side_back);
+ }
+}
+
+color("green", 0.1)
*veye_imx287_natural();
color("green", 0.4)
*veye_imx287_mount_plate();
-color("red", 0.4)
+color("red", 0.1)
*veye_imx287_mount_plate_outer();
color("green", 0.3)
*veye_imx287_mount_plate_inner();
+*veye_imx287_mount_holes();
+
*difference()
{
//color("brown", 0.4)