From a5e691eab315f707cdb23563efbb4d9d69d1e3fe Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Sat, 11 Jun 2022 16:58:37 -0600 Subject: [PATCH] Pretty good piggy --- case/Makefile | 2 +- case/adapter-case.scad | 77 +++++++++++++++++++++++++++++------ case/adapter-lid.scad | 20 ++++++++++ case/adapter-lid.stl | 86 ++++++++++++++++++++++++++++++++++++++++ case/seeed_xaio_lid.stl | Bin 0 -> 34284 bytes 5 files changed, 171 insertions(+), 14 deletions(-) create mode 100644 case/adapter-lid.scad create mode 100644 case/adapter-lid.stl create mode 100644 case/seeed_xaio_lid.stl diff --git a/case/Makefile b/case/Makefile index c8dd4c0..213c18e 100644 --- a/case/Makefile +++ b/case/Makefile @@ -1,4 +1,4 @@ -default: adapter-case.stl +default: adapter-case.stl adapter-lid.stl %.stl: %.scad openscad -o $@ $< diff --git a/case/adapter-case.scad b/case/adapter-case.scad index 957203e..6b99aa9 100644 --- a/case/adapter-case.scad +++ b/case/adapter-case.scad @@ -14,6 +14,13 @@ module stacker() { } } +module lid() { + intersection() { + import("seeed_xaio_case.stl", convexity=3); + cube([30, 30, 4], center=true); + } +} + module trs_support() { intersection() { cube([12, 25, 12], center=true); @@ -21,6 +28,13 @@ module trs_support() { } } +module pig_ear() { + intersection() { + cylinder(h=4, r1=2, r2=1, center=true); + translate([0, -10, 0]) cube([20, 20, 20]); + } +} + difference() { union() { import("seeed_xaio_case.stl", convexity=3); @@ -34,6 +48,7 @@ difference() { translate([0, 0, 15.0]) stacker(); translate([0, 0, 17.5]) stacker(); translate([0, 0, 20.0]) stacker(); + translate([0, 0, 23]) lid(); // Add some support for inserting the TRS plug intersection() { @@ -41,29 +56,65 @@ difference() { translate([13, 10, 16]) rotate(60, [0, 0, 1]) trs_support(); translate([13, -10, 16]) rotate(-60, [0, 0, 1]) trs_support(); } - cube([22.5, 18, 60], center=true); + cube([21.8, 19, 60], center=true); + } + + // Shelf for board to rest against + difference() { + translate([-8, 0, 9.2]) cube([6, 19, 1], center=true); + translate([-6, 0, 9.2]) rotate(45, [0, 0, 1]) cube(15, center=true); + } + + // Pig Parts + translate([-12, 4, 22]) sphere(r=1.3); + translate([-12, -4, 22]) sphere(r=1.3); + if (false) { + translate([-8, 5, 25]) pig_ear(); + translate([-8, -5, 25]) pig_ear(); } } - // Carve out above USB C port - translate([10, -4.79, 4.79]) cube([5, 9.58, 3]); - - // Carve out space to slide the XIAO in + // Pig grin intersection() { - translate([10, 0, 10]) cube([10, 18.36, 8], center=true); - translate([10, 0, 6]) rotate(45, [1, 0, 0]) cube(15, center=true); + translate([0, 0, 15]) rotate(90, [0, 1, 0]) { + difference() { + cylinder(h=50, d=20, center=true); + cylinder(h=50, d=19, center=true); + } + } + translate([-18.7, 0, 0]) cube(7); } - // Hookup wire - translate([0, 0, 9.5]) cube([1, 30, 0.8], center=true); + // Cut off the bottom + cube([30, 30, 4.01], center=true); - // 8-32x 1/4 screws - translate([0, 0, 12]) rotate(90, [1, 0, 0]) cylinder(h=30, d=4.0, center=true); + // Channel in the back to make it easier to squeeze in the XIAO + translate([-4.5, 0, 7.6]) intersection() { + cube([13, 18.3, 1.8], center=true); + cylinder(d=21, h=300, center=true); + } + + // Channels for bottom insertion part thingy + translate([0, 0, 3.6]) cube([17, 18.8, 1.2], center=true); + + // Carve out above USB C port + translate([10, -4.79, 0]) cube([5, 9.58, 5]); + + // Paddle contacts + translate([0, 0, 12]) { + // 8-32x 1/4 screws + rotate(90, [1, 0, 0]) cylinder(h=30, d=4.0, center=true); + + // Hookup wire + translate([0, 0, -2.5]) cube([1, 30, 0.8], center=true); + } // 3.5mm TRS jack translate([10, 0, 18]) rotate(90, [0, 1, 0]) cylinder(h=3, d=6.0); // Piezo buzzer - translate([-12, 3.5, 15]) cube([5, 1, 1], center=true); - translate([-12, -3.5, 15]) cube([5, 1, 1], center=true); + translate([0, 0, 13]) { + translate([-12, 3.5, 0]) cube([5, 1, 1], center=true); + translate([-12, -3.5, 0]) cube([5, 1, 1], center=true); + } } diff --git a/case/adapter-lid.scad b/case/adapter-lid.scad new file mode 100644 index 0000000..78e52c7 --- /dev/null +++ b/case/adapter-lid.scad @@ -0,0 +1,20 @@ +// Make circles lovely and round +$fa = 1; $fs = 0.5; + +module fancycube(vec, h) { + translate([r / 2, r / 2, 0]) { + difference() { + cube([r + 0.01, r + 0.01, h], center = true); + + translate([r/2, r/2, 0]) + cylinder(r = r, h = h + 1, center = true); + + } + } +} + +union() { + translate([0, 0, 11]) rotate(180, [1, 0, 0]) import("seeed_xaio_lid.stl", convexity=3); + translate([2, -4.5, 0]) cube([8, 9, 4]); + fillet(200, 1); +} diff --git a/case/adapter-lid.stl b/case/adapter-lid.stl new file mode 100644 index 0000000..847be36 --- /dev/null +++ b/case/adapter-lid.stl @@ -0,0 +1,86 @@ +solid OpenSCAD_Model + facet normal -1 0 0 + outer loop + vertex 2 -4.5 0 + vertex 2 4.5 4 + vertex 2 4.5 0 + endloop + endfacet + facet normal -1 -0 0 + outer loop + vertex 2 4.5 4 + vertex 2 -4.5 0 + vertex 2 -4.5 4 + endloop + endfacet + facet normal 1 -0 0 + outer loop + vertex 10 -4.5 4 + vertex 10 4.5 0 + vertex 10 4.5 4 + endloop + endfacet + facet normal 1 0 0 + outer loop + vertex 10 4.5 0 + vertex 10 -4.5 4 + vertex 10 -4.5 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 2 4.5 4 + vertex 10 -4.5 4 + vertex 10 4.5 4 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 10 -4.5 4 + vertex 2 4.5 4 + vertex 2 -4.5 4 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex 10 4.5 0 + vertex 2 4.5 4 + vertex 10 4.5 4 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 2 4.5 4 + vertex 10 4.5 0 + vertex 2 4.5 0 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 2 -4.5 0 + vertex 10 4.5 0 + vertex 10 -4.5 0 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 10 4.5 0 + vertex 2 -4.5 0 + vertex 2 4.5 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 2 -4.5 0 + vertex 10 -4.5 4 + vertex 2 -4.5 4 + endloop + endfacet + facet normal 0 -1 -0 + outer loop + vertex 10 -4.5 4 + vertex 2 -4.5 0 + vertex 10 -4.5 0 + endloop + endfacet +endsolid OpenSCAD_Model diff --git a/case/seeed_xaio_lid.stl b/case/seeed_xaio_lid.stl new file mode 100644 index 0000000000000000000000000000000000000000..4a346979a0c5bab4fc17a5f5c893af2fe04302b5 GIT binary patch literal 34284 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 EKTiwEuK)l5 literal 0 HcmV?d00001