summaryrefslogtreecommitdiff
path: root/body/veye_imx287.scad
diff options
context:
space:
mode:
Diffstat (limited to 'body/veye_imx287.scad')
-rw-r--r--body/veye_imx287.scad104
1 files changed, 104 insertions, 0 deletions
diff --git a/body/veye_imx287.scad b/body/veye_imx287.scad
new file mode 100644
index 0000000..c9f0f70
--- /dev/null
+++ b/body/veye_imx287.scad
@@ -0,0 +1,104 @@
+include <design.scad>
+include <helpers.scad>
+
+veye_imx287_pcb_w = 29;
+veye_imx287_pcb_h = 29;
+veye_imx287_pcb_thickness = 1.6;
+veye_imx287_pcb_stack_h = 11;
+imx287_thickness = 1.3;
+
+module veye_imx287_wo_holes()
+{
+ pcb_w = veye_imx287_pcb_w;
+ pcb_h = veye_imx287_pcb_h;
+ pcb_stack_h = veye_imx287_pcb_stack_h;
+
+ // connector size
+ conn_w = 23;
+ conn_h = 8;
+ conn_d = 19;
+
+ translate([0, -pcb_stack_h / 2, 0])
+ cube([pcb_w, pcb_stack_h, pcb_h], center = true);
+
+ translate([0, -conn_d / 2 - pcb_stack_h, -conn_h / 2 + pcb_h / 2])
+ cube([conn_w, conn_d, conn_h], center = true);
+}
+
+module veye_imx287()
+{
+ hole_d = 2.05;
+ center_to_hole_dist = 12.5;
+ pcb_stack_h = veye_imx287_pcb_stack_h;
+
+ difference()
+ {
+ veye_imx287_wo_holes();
+ union()
+ for (x_mult = [-1, 1], z_mult = [-1, 1])
+ {
+ dx = center_to_hole_dist * x_mult;
+ dy = $tiny_padding;
+ dz = center_to_hole_dist * z_mult;
+
+ translate([dx, dy, dz])
+ rotate([90, 0, 0])
+ cylinder($fn = diameterToFn(hole_d), d = hole_d, h = pcb_stack_h + $tiny_padding * 2);
+ }
+ }
+}
+
+module veye_imx287_stl_front()
+{
+ pcb_w = veye_imx287_pcb_w;
+ pcb_h = veye_imx287_pcb_h;
+
+ rotate([90, 0, 0])
+ translate([-pcb_w / 2, -pcb_h / 2, veye_imx287_pcb_thickness])
+ import("PCB-RAW-IMX287-V11-0105-3D.stl");
+}
+
+module veye_imx287_stl_back(with_connector = true)
+{
+ pcb_w = veye_imx287_pcb_w;
+ pcb_h = veye_imx287_pcb_h;
+
+ rotate([90, 90, 0])
+ translate([-pcb_w / 2, -pcb_h / 2, -veye_imx287_pcb_thickness])
+ // fix not-centered source model
+ //rotate([0, 0, 90])
+ translate([-50, 121 + pcb_h])
+ import("ADP-MV1-STEP.stl");
+
+ if (with_connector)
+ {
+ // connector size
+ conn_w = 23;
+ conn_h = 8;
+ conn_d = 19;
+
+ // a bit of hardcode for connector
+ cyl_d = 6;
+ cyl_z_offset = -2;
+
+ translate([0, -conn_d + cyl_d / 2, veye_imx287_pcb_h / 2 - cyl_d / 2 + cyl_z_offset])
+ rotate([0, 90, 0])
+ cylinder($fn = diameterToFn(cyl_d), d = cyl_d, h = conn_w, center = true);
+ }
+}
+
+*#veye_imx287();
+
+// centered in senser center
+module veye_imx287_natural()
+{
+ translate([0, -imx287_thickness, 0])
+ union()
+ {
+ veye_imx287_stl_front();
+ translate([0, -veye_imx287_pcb_stack_h, 0])
+ veye_imx287_stl_back();
+ }
+}
+
+veye_imx287_natural(); \ No newline at end of file