X-Git-Url: http://git.scottworley.com/tattlekey/blobdiff_plain/859fd2d98f0e858d7f769d1edf2441349526e34c..e3ff9e0d326c0dfce08c7b9fb7aaa2b11245a6a5:/housing/tattlekey.scad?ds=sidebyside diff --git a/housing/tattlekey.scad b/housing/tattlekey.scad index c6b0e73..1f5ea4c 100644 --- a/housing/tattlekey.scad +++ b/housing/tattlekey.scad @@ -4,16 +4,22 @@ key_interface_size = 18; key_interface_corner_r = 5; key_interface_thickness = 1.484; -housing_inner_h = 8; // Chosen to let board fit inside +// Chosen to let board fit inside +housing_inner_h = 6; housing_inner_w = 21; +housing_flat = 8; +housing_extra_l = 10; thickness = 1.7; +board_gap = 0.125; + wiring_l = 12; extra_flare = wiring_l; pico_board_l = 51.0; pico_board_w = 21.0; +pico_board_h = 1.0; pico_total_h = 3.7; $fs = .1; @@ -27,12 +33,16 @@ module pico_hole(d, x, y) { cylinder(h=slop, d = d); } +module pico_board(length = pico_board_l, gap = 0) { + translate([-gap - length + pico_board_l, 0, -gap]) + cube([length + 2*gap, pico_board_w, pico_board_h + 2*gap]); +} + module pico_w(hole_d = 2.1) { // Dimensions from measuring and/or // https://datasheets.raspberrypi.com/picow/pico-w-datasheet.pdf board_l = pico_board_l; board_w = pico_board_w; - board_h = 1.0; hole_x1 = 2.0; hole_x2 = board_l - 2.0; @@ -41,7 +51,7 @@ module pico_w(hole_d = 2.1) { difference() { color("green") - cube([board_l, board_w, board_h]); + pico_board(); pico_hole(hole_d, hole_x1, hole_y); pico_hole(hole_d, hole_x2, hole_y); @@ -104,19 +114,23 @@ module key_interface() { } module housing_shape(outline = thickness) { - inner_squish = housing_inner_h / housing_inner_w; housing_w = housing_inner_w + 2 * outline; housing_h = housing_inner_h + 2 * outline; - squish = housing_h / housing_w; + squish = housing_h / (housing_w - housing_flat); scale([1, squish]) - circle(d = housing_w); + minkowski() { + circle(d = housing_w - housing_flat); + square([housing_flat, epsilon], center=true); + } } -module housing(length = pico_board_l - extra_flare) { +module housing() { + length = pico_board_l - extra_flare; + translate([-housing_extra_l, 0, 0]) rotate([90, 0, 0]) rotate([0, 90, 0]) - linear_extrude(length) + linear_extrude(length + housing_extra_l) difference() { housing_shape(); housing_shape(0); @@ -144,6 +158,11 @@ module flare() { } } +module at_board() { + translate([0, -pico_board_w/2, -pico_board_h]) + children(); +} + module tattlekey_case() { key_interface(); @@ -152,9 +171,16 @@ module tattlekey_case() { housing(); flare(); } - translate([0, -pico_board_w/2, -1]) - pico_w(); + at_board() + pico_board(slop, board_gap); } } +module preview() { + at_board() pico_w(); + render() tattlekey_case(); +} + +//preview(); + tattlekey_case();