|
|
@@ -1,22 +1,10 @@
|
|
|
-/*
|
|
|
- * Copyright (c) 2019 Clementine Computing LLC.
|
|
|
- *
|
|
|
- * This file is part of PopuFare.
|
|
|
- *
|
|
|
- * PopuFare is free software: you can redistribute it and/or modify
|
|
|
- * it under the terms of the GNU Affero General Public License as published by
|
|
|
- * the Free Software Foundation, either version 3 of the License, or
|
|
|
- * (at your option) any later version.
|
|
|
- *
|
|
|
- * PopuFare is distributed in the hope that it will be useful,
|
|
|
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
- * GNU Affero General Public License for more details.
|
|
|
- *
|
|
|
- * You should have received a copy of the GNU Affero General Public License
|
|
|
- * along with PopuFare. If not, see <https://www.gnu.org/licenses/>.
|
|
|
- *
|
|
|
- */
|
|
|
+// License: CC0
|
|
|
+//
|
|
|
+// To the extent possible under law, Clementine Computing LLC has waived
|
|
|
+// all copyright and related or neighboring rights to this file.
|
|
|
+//
|
|
|
+// This work is published from: United States.
|
|
|
+//
|
|
|
|
|
|
$fs = 1.0/64.0;
|
|
|
|
|
|
@@ -28,15 +16,18 @@ POPUFARE_HOUSING_DEPTH = 180;
|
|
|
//POPUFARE_HOUSING_HEIGHT = 150;
|
|
|
POPUFARE_HOUSING_HEIGHT = 150;
|
|
|
|
|
|
-POPUFARE_GLAND_DIAMETER = 31.5;
|
|
|
-POPUFARE_SCREEN_WIDTH = 118;
|
|
|
-POPUFARE_SCREEN_HEIGHT = 70;
|
|
|
+POPUFARE_GLAND_DIAMETER = 37;
|
|
|
+POPUFARE_SCREEN_WIDTH = 118 + 1;
|
|
|
+POPUFARE_SCREEN_OUTER_WIDTH = 122;
|
|
|
+POPUFARE_SCREEN_HEIGHT = 70 + 1;
|
|
|
+POPUFARE_SCREEN_OUTER_HEIGHT = 78;
|
|
|
|
|
|
//POPUFARE_FRONT_HEIGHT = 35;
|
|
|
POPUFARE_FRONT_HEIGHT = 60;
|
|
|
|
|
|
-POPUFARE_FIXTURE_DX = 42.5;
|
|
|
-POPUFARE_FIXTURE_DY = 42.5;
|
|
|
+POPUFARE_FIXTURE_DX = 65;
|
|
|
+POPUFARE_FIXTURE_DY = 65;
|
|
|
+POPUFARE_FIXTURE_SCREW_D = 7.5;
|
|
|
|
|
|
POPUFARE_BRACKET_CX = 20;
|
|
|
POPUFARE_BRACKET_D = 5;
|
|
|
@@ -44,6 +35,38 @@ POPUFARE_BRACKET_D = 5;
|
|
|
POPUFARE_BRACKET_DS = 100;
|
|
|
POPUFARE_BRACKET_DE = 40;
|
|
|
|
|
|
+POPUFARE_INNER_PLATE_WIDTH = 90;
|
|
|
+POPUFARE_INNER_PLATE_HEIGHT = 70;
|
|
|
+
|
|
|
+POPUFARE_INNER_PLATE_HOLE_WIDTH = POPUFARE_SCREEN_OUTER_WIDTH + 0;
|
|
|
+POPUFARE_INNER_PLATE_HOLE_HEIGHT = POPUFARE_SCREEN_OUTER_HEIGHT + 20;
|
|
|
+
|
|
|
+// Raspberry Pi measurements
|
|
|
+//
|
|
|
+_RASPBERRY_PI_B_HOLE_DX = 58;
|
|
|
+_RASPBERRY_PI_B_HOLE_DY = 48;
|
|
|
+
|
|
|
+_SCREEN_HOLE_DX = 93;
|
|
|
+_SCREEN_HOLE_DY = 69;
|
|
|
+
|
|
|
+
|
|
|
+// Center for raspberry pi from screen
|
|
|
+// that sits on top of it.
|
|
|
+//
|
|
|
+_SCREEN_OUTER_CENTER = [ POPUFARE_SCREEN_OUTER_WIDTH/2, POPUFARE_SCREEN_OUTER_HEIGHT/2 ];
|
|
|
+
|
|
|
+// offset of left screen m2 screws
|
|
|
+// as seen from the back, front ribbon down
|
|
|
+//
|
|
|
+_SCREEN_LL_M2_C = [ 5,5 ];
|
|
|
+_SCREEN_UL_M2_C = [ 5, POPUFARE_SCREEN_OUTER_HEIGHT - 4 ];
|
|
|
+
|
|
|
+_SCREEN_CX = _SCREEN_HOLE_DX/2 + _SCREEN_LL_M2_C[0] - _SCREEN_OUTER_CENTER[0];
|
|
|
+_SCREEN_CY = _SCREEN_HOLE_DY/2 + _SCREEN_LL_M2_C[1] - _SCREEN_OUTER_CENTER[1];
|
|
|
+
|
|
|
+_RASPBERRY_PI_B_CX = (_SCREEN_HOLE_DX - _RASPBERRY_PI_B_HOLE_DX/2) + _SCREEN_LL_M2_C[0] - _SCREEN_OUTER_CENTER[0];
|
|
|
+_RASPBERRY_PI_B_CY = (_SCREEN_HOLE_DY - _RASPBERRY_PI_B_HOLE_DY/2) + _SCREEN_LL_M2_C[1] - _SCREEN_OUTER_CENTER[1];
|
|
|
+
|
|
|
// ...
|
|
|
//
|
|
|
_MATERIAL_THICKNESS = 1.0/8.0;
|
|
|
@@ -61,4 +84,27 @@ _M5 = 5.0;
|
|
|
_M5r = 5.0/2;
|
|
|
|
|
|
|
|
|
-
|
|
|
+// Bounding box width of rouned rect is w and h,
|
|
|
+// so this function compensates for the rounded corner
|
|
|
+// radius.
|
|
|
+//
|
|
|
+// w - width or rectangle
|
|
|
+// h - height of rectangle
|
|
|
+// r - corner radius
|
|
|
+//
|
|
|
+// rounded rectangle has center of mass (center) at (0,0)
|
|
|
+//
|
|
|
+module rounded_rect(w,h,r) {
|
|
|
+ _w = w-2*r;
|
|
|
+ _h = h-2*r;
|
|
|
+
|
|
|
+ x2 = _w/2;
|
|
|
+ y2 = _h/2;
|
|
|
+
|
|
|
+ hull() {
|
|
|
+ translate([-x2, y2]) circle(r);
|
|
|
+ translate([ x2, y2]) circle(r);
|
|
|
+ translate([ x2,-y2]) circle(r);
|
|
|
+ translate([-x2,-y2]) circle(r);
|
|
|
+ }
|
|
|
+}
|