aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremias Stotter <jeremias@stotter.eu>2021-12-23 15:20:01 +0100
committerJeremias Stotter <jeremias@stotter.eu>2021-12-23 15:20:01 +0100
commit667f8a15f0aab1e213eedc4d9f2b4aac87adbb66 (patch)
tree09326870a1abf2738c249af384c0b3a5d17fa4b2
parent20b635450e0b000a06b4b6b8cdc3a2e51dc6357d (diff)
downloadQuartz64_SCAD-667f8a15f0aab1e213eedc4d9f2b4aac87adbb66.tar.gz
Quartz64_SCAD-667f8a15f0aab1e213eedc4d9f2b4aac87adbb66.tar.bz2
Quartz64_SCAD-667f8a15f0aab1e213eedc4d9f2b4aac87adbb66.zip
Added the case
-rw-r--r--Case.scad136
-rw-r--r--Quartz64.scad163
-rw-r--r--readme.html9
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>
Jeremias Stotters git repositories generated by CGIT