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.scad71
1 files changed, 70 insertions, 1 deletions
diff --git a/body/veye_imx287.scad b/body/veye_imx287.scad
index 0b89873..3576105 100644
--- a/body/veye_imx287.scad
+++ b/body/veye_imx287.scad
@@ -101,4 +101,73 @@ module veye_imx287_natural()
}
}
-//veye_imx287_natural(); \ No newline at end of file
+module veye_imx287_mount_plate()
+{
+ w = veye_imx287_pcb_w;
+ h = veye_imx287_pcb_h;
+ frame_w = 6;
+ iw = w - frame_w;
+ ih = h - frame_w;
+ t = 2;
+ corner_radius = 2;
+ cr = corner_radius;
+
+ // holes
+ hd = 2.05;
+ hh = 10;
+ // distance between holes
+ h_delta = 25;
+ hr = hd / 2;
+
+ // sensor has non-zero thickness, so put holder
+ // closer to pcb
+ translate([0, -imx287_thickness, 0])
+ // move to zero
+ translate([0, t / 2, 0])
+ difference()
+ {
+ // outer shape
+ hull()
+ {
+ for (
+ dx = [w / 2 - cr, -w / 2 + cr],
+ dy = [w / 2 - cr, -w / 2 + cr])
+ {
+ translate([dx, 0, dy])
+ translate([0, t / 2, 0])
+ rotate([90, 0, 0])
+ cylinder($fn = dToFn(cr * 2), r = cr, h = t);
+ }
+ }
+ // to cut
+ hull()
+ {
+ for (
+ dx = [iw / 2 - cr, -iw / 2 + cr],
+ dy = [iw / 2 - cr, -iw / 2 + cr])
+ {
+ translate([dx, 0, dy])
+ translate([0, t, 0])
+ rotate([90, 0, 0])
+ cylinder($fn = dToFn(cr * 2), r = cr, h = t * 2);
+ }
+ }
+ // holes
+ {
+ for (
+ dx = [h_delta / 2, -h_delta / 2],
+ dy = [h_delta / 2, -h_delta / 2])
+ {
+ translate([dx, 0, dy])
+ translate([0, hh / 2, 0])
+ rotate([90, 0, 0])
+ cylinder($fn = dToFn(hd), d = hd, h = hh);
+ }
+ }
+ }
+}
+
+color("yellow", 0.3)
+*veye_imx287_natural();
+color("green", 0.3)
+*veye_imx287_mount_plate(); \ No newline at end of file