diff options
author | Jeremias Stotter <jeremias@stotter.eu> | 2021-12-23 15:20:01 +0100 |
---|---|---|
committer | Jeremias Stotter <jeremias@stotter.eu> | 2021-12-23 15:20:01 +0100 |
commit | 667f8a15f0aab1e213eedc4d9f2b4aac87adbb66 (patch) | |
tree | 09326870a1abf2738c249af384c0b3a5d17fa4b2 | |
parent | 20b635450e0b000a06b4b6b8cdc3a2e51dc6357d (diff) | |
download | Quartz64_SCAD-667f8a15f0aab1e213eedc4d9f2b4aac87adbb66.tar.gz Quartz64_SCAD-667f8a15f0aab1e213eedc4d9f2b4aac87adbb66.tar.bz2 Quartz64_SCAD-667f8a15f0aab1e213eedc4d9f2b4aac87adbb66.zip |
Added the case
-rw-r--r-- | Case.scad | 136 | ||||
-rw-r--r-- | Quartz64.scad | 163 | ||||
-rw-r--r-- | readme.html | 9 |
3 files changed, 227 insertions, 81 deletions
diff --git a/Case.scad b/Case.scad new file mode 100644 index 0000000..8c08820 --- /dev/null +++ b/Case.scad @@ -0,0 +1,136 @@ +// If you don't want additional space above the USB Ports for a SATA cable make this false +SATA_CUTOUT=true; + +$fn=50; + +// Board dimensions +B_L=126.9; +B_W=79.4; +B_H=1.4; + +// Screw holes +HOLE_R=1.5; +// Distance from edges is +// 2.7+1.5 = 4.2 +HOLE_DISTANCE=4.2; + +// Box +translate([0,0,-5]) +difference() { + translate([1.8,1.8,0]) + linear_extrude(50) + minkowski() { + square([B_L-3.6, B_W-3.6]); + circle(6); + }; + translate([1.8,1.8,3]) + linear_extrude(50) + minkowski() { + square([B_L-3.6, B_W-3.6]); + circle(4); + }; + // USB cutouts + translate([0,37.5,5]) + cube([B_L+50, 33, 18.5]); + + // SATA Cutout + if(SATA_CUTOUT) { + translate([B_L,54,23.4]) + rotate([0,0,45]) + cylinder(6,23.4,16,$fn=4); + } + + // Button / Audio cutout + translate([0,9,5]) + cube([B_L+50, 27, 9.5]); + + // Ethernet cutout + translate([-10,31.5,5]) { + cube([50,17,16]); + } + + // DC Cutout + translate([-10,11,5]) + cube([50,10.5,9.5]); + + // HDMI cutout + translate([-10,52.5,5]) + cube([50,16,8.2]); + + // SD Cutout + translate([99,-5,3]) + cube([13,16,2.5]); + +} + +translate([HOLE_DISTANCE,HOLE_DISTANCE,-5]) +pin(); +translate([B_L - HOLE_DISTANCE,HOLE_DISTANCE,-5]) +pin(); +translate([HOLE_DISTANCE,B_W - HOLE_DISTANCE,-5]) +pin(); +translate([B_L - HOLE_DISTANCE,B_W - HOLE_DISTANCE,-5]) +pin(); + + +translate([0,-20,45.5]) +rotate([180,0,0]) +// Cap +difference() { + translate([1.8,1.8,42.5]) + linear_extrude(5) + minkowski() { + square([B_L-3.6, B_W-3.6]); + circle(8); + }; + translate([1.8,1.8,1]) + linear_extrude(45) + minkowski() { + square([B_L-3.6, B_W-3.6]); + circle(6.05); + }; + + // Fan Holes + translate([45,22,0]) { + translate([6,5,0]) + for( i = [0:1:23] ) { + translate([i%6*4.7,floor(i/6)*7.4,0]) + rotate([0,0, floor(i / 6) % 2 ? - 45 : 45]) + linear_extrude(100) + minkowski() { + square([7,0.1], center = true); + circle(r=1); + } + } + + translate([0,0,40]) { + cylinder(15,d=4); + translate([32,0,0]) + cylinder(15,d=4); + translate([32,32,0]) + cylinder(15,d=4); + translate([0,32,0]) + cylinder(15,d=4); + } + } +} + + +module pin() { + cylinder(10, r=HOLE_R-0.1); + cylinder(5, r=3); +} + +// Buttons +module button() { + cube([5.4,7.55,7]); + BTN_R=3.4/2; + translate([5.4,7.55/2,2.35+BTN_R]) + rotate([0,90,0]) + cylinder(r=BTN_R, h=1.4); +} + +use <Quartz64.scad> +if($preview) { + board(); +}
\ No newline at end of file diff --git a/Quartz64.scad b/Quartz64.scad index b0ddaf7..7c23313 100644 --- a/Quartz64.scad +++ b/Quartz64.scad @@ -6,97 +6,100 @@ B_L=126.9; B_W=79.4; B_H=1.4; -difference() { - // Main board - translate([3,3,0]) - { - linear_extrude(B_H) - minkowski() { - square([B_L-6,B_W-6]); - circle(r=3); - } - } - - // Screw holes - HOLE_R=1.5; - // Distance from edges is - // 2.7+1.5 = 4.2 - HOLE_DISTANCE=4.2; - - translate([HOLE_DISTANCE,HOLE_DISTANCE,-1]) - cylinder(r=HOLE_R,h=5); - - translate([HOLE_DISTANCE,B_W-HOLE_DISTANCE,-1]) - cylinder(r=HOLE_R,h=5); - - translate([B_L-HOLE_DISTANCE,HOLE_DISTANCE,-1]) - cylinder(r=HOLE_R,h=5); - - translate([B_L-HOLE_DISTANCE,B_W-HOLE_DISTANCE,-1]) - cylinder(r=HOLE_R,h=5); +// Buttons +module button() { + cube([5.4,7.55,7]); + BTN_R=3.4/2; + translate([5.4,7.55/2,2.35+BTN_R]) + rotate([0,90,0]) + cylinder(r=BTN_R, h=1.4); } -// AC Port -translate([-2,11.34,1.4]) -cube([11.46,9.55,7.1]); +module board() { + difference() { + // Main board + translate([3,3,0]) + { + linear_extrude(B_H) + minkowski() { + square([B_L-6,B_W-6]); + circle(r=3); + } + } + + // Screw holes + HOLE_R=1.5; + // Distance from edges is + // 2.7+1.5 = 4.2 + HOLE_DISTANCE=4.2; + + translate([HOLE_DISTANCE,HOLE_DISTANCE,-1]) + cylinder(r=HOLE_R,h=5); + + translate([HOLE_DISTANCE,B_W-HOLE_DISTANCE,-1]) + cylinder(r=HOLE_R,h=5); + + translate([B_L-HOLE_DISTANCE,HOLE_DISTANCE,-1]) + cylinder(r=HOLE_R,h=5); + + translate([B_L-HOLE_DISTANCE,B_W-HOLE_DISTANCE,-1]) + cylinder(r=HOLE_R,h=5); + } -// Ethernet -translate([-1.5,31.87,B_H]) -cube([21.1,16,13]); + // AC Port + translate([-2,11.34,1.4]) + cube([11.46,9.55,7.1]); -// HDMI -translate([-1.2,53.15,B_H]) -cube([11,15,6]); + // Ethernet + translate([-1.5,31.87,B_H]) + cube([21.1,16,13]); -// USB Dimensions -USB_L=17.6; -USB_W=14.6; -USB_H=15.9; + // HDMI + translate([-1.2,53.15,B_H]) + cube([11,15,6]); -// USB 3.0 -translate([B_L-USB_L+2.15, B_W-9.6-USB_W, B_H]) -cube([USB_L,USB_W,USB_H]); + // USB Dimensions + USB_L=17.6; + USB_W=14.6; + USB_H=15.9; -// USB 2.0 -translate([B_L-USB_L+2.15, B_W-12.4-2*USB_W, B_H]) -cube([USB_L,USB_W,USB_H]); + // USB 3.0 + translate([B_L-USB_L+2.15, B_W-9.6-USB_W, B_H]) + cube([USB_L,USB_W,USB_H]); -// Headphone -translate([B_L-12,9.7,B_H]) -{ - HF_R=5.5/2; - translate([12,3.45,2.5]) - rotate([0,90,0]) - cylinder(h=2,r=HF_R); - cube([12,6.9,5]); -} + // USB 2.0 + translate([B_L-USB_L+2.15, B_W-12.4-2*USB_W, B_H]) + cube([USB_L,USB_W,USB_H]); -// Buttons -module button() { - cube([5.4,7.55,7]); - BTN_R=3.4/2; - translate([5.4,7.55/2,2.35+BTN_R]) - rotate([0,90,0]) - cylinder(r=BTN_R, h=1.4); -} + // Headphone + translate([B_L-12,9.7,B_H]) + { + HF_R=5.5/2; + translate([12,3.45,2.5]) + rotate([0,90,0]) + cylinder(h=2,r=HF_R); + cube([12,6.9,5]); + } -translate([B_L-5,19.35,B_H]) -button(); -translate([B_L-5,28.9,B_H]) -button(); + translate([B_L-5,19.35,B_H]) + button(); + translate([B_L-5,28.9,B_H]) + button(); -// PCI-E -translate([43.2,0,B_H]) -cube([39,8.8,12.5]); + // PCI-E + translate([43.2,0,B_H]) + cube([39,8.8,12.5]); -// GPIO -translate([B_L-44.8-25.15,B_W-6.2,B_H]) -cube([25.15,5,8.5]); + // GPIO + translate([B_L-44.8-25.15,B_W-6.2,B_H]) + cube([25.15,5,8.5]); -// SD Slot -translate([B_L-30,0,-B_H]) -cube([14.9,15,1.65]); + // SD Slot + translate([B_L-30,0,-B_H]) + cube([14.9,15,1.65]); -// SD Card -translate([B_L-27,-2.6,-B_H]) -cube([11,15,1]);
\ No newline at end of file + // SD Card + translate([B_L-27,-2.6,-B_H]) + cube([11,15,1]); +} +board(); diff --git a/readme.html b/readme.html index 7409a8d..b2ed3bf 100644 --- a/readme.html +++ b/readme.html @@ -1,9 +1,16 @@ -<h1>Quartz64 Model A OpenSCAD model</h1> +<h1>Quartz64 Model A OpenSCAD model and case</h1> <p>This is a very crude model of the <a href="https://wiki.pine64.org/wiki/Quartz64">Quartz64</a> Model A by <a href="https://www.pine64.org/">Pine64</a>. You can export it to perhaps more usable formats using OpenSCAD!</p> <p>It is mainly designed to design cases around it. The measurements were taken by (very shaky) hand using calipers, don't expect high accuracy!</p> <img src="/img/Quartz64-Model.png"/> +<h2>The case</h2> +<p>There is also a case in this repository. It is a very simple box. The board is fixed with 4 plastic pins. This means this will only work if you are going to use the case in its intended orientation</p> +<p>The cap has screw holes and ventilation holes for a 40mm fan.</p> +<p>There are no additional cutouts for GPIO or the PCIe slot. There is a variable at the top of the file with which you can configure if you intend to have a cutout for a SATA cable.</p> + +<img src="/img/Quartz64-Case.png"/> + <h2>LICENSE</h2> <p>The files in this repository are distributed under the CC BY-SA 4.0 License. See file <b>LICENSE</b> or <a href="https://creativecommons.org/licenses/by-sa/2.0/legalcode">https://creativecommons.org/licenses/by-sa/4.0/legalcode</a>.</p> <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons Lizenzvertrag" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a> |