PopufareHousingCommon.scad 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. // License: CC0
  2. //
  3. // To the extent possible under law, Clementine Computing LLC has waived
  4. // all copyright and related or neighboring rights to this file.
  5. //
  6. // This work is published from: United States.
  7. //
  8. $fs = 1.0/64.0;
  9. // ...
  10. //
  11. // 1/8 inch sheet thickness
  12. //
  13. //_MATERIAL_THICKNESS = 3.175
  14. // 1/4 inch sheet thickness
  15. //
  16. _MATERIAL_THICKNESS = 6.35;
  17. _M2 = 2.0;
  18. _M2r = 2.0/2;
  19. _M3 = 3.0;
  20. _M3r = 3.0/2;
  21. _M4 = 4.0;
  22. _M4r = 4.0/2;
  23. _M5 = 5.0;
  24. _M5r = 5.0/2;
  25. // in mm
  26. //
  27. POPUFARE_HOUSING_WIDTH = 190;
  28. POPUFARE_HOUSING_DEPTH = 165;
  29. POPUFARE_HOUSING_HEIGHT = 135;
  30. POPUFARE_SCREEN_WIDTH_CAPACITIVE = 122;
  31. POPUFARE_SCREEN_HEIGHT_CAPACITIVE = 78;
  32. POPUFARE_SCREEN_WIDTH_RESISTIVE = 119;
  33. POPUFARE_SCREEN_HEIGHT_RESISTIVE = 71;
  34. POPUFARE_GLAND_DIAMETER = 37;
  35. POPUFARE_SCREEN_OUTER_WIDTH = 122;
  36. //POPUFARE_SCREEN_WIDTH = 118 + 1;
  37. //POPUFARE_SCREEN_HEIGHT = 70 + 1;
  38. POPUFARE_SCREEN_OUTER_HEIGHT = 78;
  39. POPUFARE_FRONT_HEIGHT = 60;
  40. POPUFARE_FIXTURE_DX = 65;
  41. POPUFARE_FIXTURE_DY = 65;
  42. POPUFARE_FIXTURE_SCREW_D = 7.5;
  43. POPUFARE_HINGE1_DE = 8.25 + 3.75/2;
  44. POPUFARE_HINGE1_DH = (22 - 3.75*2) + 3.75;
  45. POPUFARE_HINGE1_DW = 27.75 + (35.5 - 27.75)/2;
  46. POPUFARE_HINGE1_R = 2;
  47. // bracket
  48. //
  49. POPUFARE_BRACKET_CX = 20;
  50. POPUFARE_BRACKET_D = 5;
  51. POPUFARE_BRACKET_DS = 100;
  52. POPUFARE_BRACKET_DE = 40;
  53. POPUFARE_BRACKET_DE_SHORT = 20;
  54. // buck
  55. //
  56. POPUFARE_BUCK_HOLE_WIDTH0 = 53.6 + (59.8-53.6)/2;
  57. POPUFARE_BUCK_HOLE_WIDTH1 = 39 + (45-39)/2;
  58. POPUFARE_BUCK_HOLE_LEN1 = 6.2;
  59. POPUFARE_BUCK_HOLE_R = 3.0/2;
  60. POPUFARE_BUCK_WIDTH = 49.8;
  61. POPUFARE_BUCK_HEIGHT = 52.9;
  62. POPUFARE_BUCK_HOLE_DH = 25 + (6.25)/2 + 3.0/2;
  63. // 117 - 111 = 6
  64. // 111 + 3 = 114
  65. //
  66. // 87 - 81 = 6
  67. // 81 + 3 = 84
  68. // inner plates
  69. //
  70. POPUFARE_INNER_PLATE_WIDTH = 90;
  71. POPUFARE_INNER_PLATE_HEIGHT = 70;
  72. //POPUFARE_INNER_PLATE_HOLE_WIDTH = POPUFARE_SCREEN_OUTER_WIDTH + 0;
  73. //POPUFARE_INNER_PLATE_HOLE_HEIGHT = POPUFARE_SCREEN_OUTER_HEIGHT + 20;
  74. POPUFARE_INNER_PLATE_HOLE_WIDTH = 114;
  75. POPUFARE_INNER_PLATE_HOLE_HEIGHT = 84;
  76. POPUFARE_SPEAKER_HOLE_R = 2.5/2;
  77. POPUFARE_SPEAKER_HOLE_WIDTH = 34.5 + ((39.5 - 34.5) / 2);
  78. // hinge
  79. //
  80. POPUFARE_HINGE_TOP_HOLE_WIDTH = 32;
  81. POPUFARE_HINGE_TOP_HOLE_DE = 36;
  82. POPUFARE_HINGE_BACK_HOLE_WIDTH = 45;
  83. POPUFARE_HINGE_BACK_HOLE_DE = 28;
  84. POPUFARE_HINGE_D = _M4;
  85. // Raspberry Pi measurements
  86. //
  87. _RASPBERRY_PI_B_HOLE_DX = 58;
  88. _RASPBERRY_PI_B_HOLE_DY = 48;
  89. _SCREEN_HOLE_DX = 93;
  90. _SCREEN_HOLE_DY = 69;
  91. // Center for raspberry pi from screen
  92. // that sits on top of it.
  93. //
  94. _SCREEN_OUTER_CENTER = [ POPUFARE_SCREEN_OUTER_WIDTH/2, POPUFARE_SCREEN_OUTER_HEIGHT/2 ];
  95. // offset of left screen m2 screws
  96. // as seen from the back, front ribbon down
  97. //
  98. _SCREEN_LL_M2_C = [ 5,5 ];
  99. _SCREEN_UL_M2_C = [ 5, POPUFARE_SCREEN_OUTER_HEIGHT - 4 ];
  100. _SCREEN_CX = _SCREEN_HOLE_DX/2 + _SCREEN_LL_M2_C[0] - _SCREEN_OUTER_CENTER[0];
  101. _SCREEN_CY = _SCREEN_HOLE_DY/2 + _SCREEN_LL_M2_C[1] - _SCREEN_OUTER_CENTER[1];
  102. _RASPBERRY_PI_B_CX = (_SCREEN_HOLE_DX - _RASPBERRY_PI_B_HOLE_DX/2) + _SCREEN_LL_M2_C[0] - _SCREEN_OUTER_CENTER[0];
  103. _RASPBERRY_PI_B_CY = (_SCREEN_HOLE_DY - _RASPBERRY_PI_B_HOLE_DY/2) + _SCREEN_LL_M2_C[1] - _SCREEN_OUTER_CENTER[1];
  104. // Bounding box width of rouned rect is w and h,
  105. // so this function compensates for the rounded corner
  106. // radius.
  107. //
  108. // w - width or rectangle
  109. // h - height of rectangle
  110. // r - corner radius
  111. //
  112. // rounded rectangle has center of mass (center) at (0,0)
  113. //
  114. module rounded_rect(w,h,r) {
  115. _w = w-2*r;
  116. _h = h-2*r;
  117. x2 = _w/2;
  118. y2 = _h/2;
  119. hull() {
  120. translate([-x2, y2]) circle(r);
  121. translate([ x2, y2]) circle(r);
  122. translate([ x2,-y2]) circle(r);
  123. translate([-x2,-y2]) circle(r);
  124. }
  125. }