PopufareHousingCommon.scad 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  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. _M2_5 = 2.5;
  20. _M2_5r = 2.5/2;
  21. _M3 = 3.0;
  22. _M3r = 3.0/2;
  23. _M4 = 4.0;
  24. _M4r = 4.0/2;
  25. _M5 = 5.0;
  26. _M5r = 5.0/2;
  27. // in mm
  28. //
  29. POPUFARE_HOUSING_WIDTH = 263;
  30. POPUFARE_HOUSING_FULL_DEPTH = 215;
  31. POPUFARE_HOUSING_HEIGHT = 135;
  32. _LIP_SCREW_D = 6.35;
  33. POPUFARE_HOUSING_BACK_LIP_HEIGHT = 49;
  34. POPUFARE_HOUSING_FRONT_LIP_HEIGHT = 7.25;
  35. POPUFARE_HOUSING_BACK_LIP_DEPTH = 23;
  36. POPUFARE_HOUSING_BACK_LIP_SCREW_DX = 147.25 + _LIP_SCREW_D;
  37. POPUFARE_HOUSING_BACK_LIP_SCREW_OFFSET_SIDE_X = 30 + _LIP_SCREW_D/2;
  38. POPUFARE_HOUSING_BACK_LIP_SCREW_OFFSET_BACK_Y = 13.75 + _LIP_SCREW_D/2;
  39. POPUFARE_HOUSING_BACK_LIP_SPACE = POPUFARE_HOUSING_BACK_LIP_DEPTH + 10;
  40. POPUFARE_HOUSING_BACK_LIP_INSET = 30;
  41. POPUFARE_HOUSING_DEPTH = POPUFARE_HOUSING_FULL_DEPTH - POPUFARE_HOUSING_BACK_LIP_SPACE;
  42. POPUFARE_SCREEN_WIDTH_CAPACITIVE = 122;
  43. POPUFARE_SCREEN_HEIGHT_CAPACITIVE = 78;
  44. POPUFARE_SCREEN_WIDTH_RESISTIVE = 119;
  45. POPUFARE_SCREEN_HEIGHT_RESISTIVE = 71;
  46. POPUFARE_SCREEN_INNER_WIDTH_RESISTIVE = 117.5;
  47. POPUFARE_SCREEN_INNER_HEIGHT_RESISTIVE = 70;
  48. POPUFARE_GLAND_DIAMETER = 37;
  49. POPUFARE_SCREEN_OUTER_WIDTH = 122;
  50. //POPUFARE_SCREEN_WIDTH = 118 + 1;
  51. //POPUFARE_SCREEN_HEIGHT = 70 + 1;
  52. POPUFARE_SCREEN_OUTER_HEIGHT = 78;
  53. POPUFARE_FRONT_HEIGHT = 60;
  54. POPUFARE_FIXTURE_DX = 65;
  55. POPUFARE_FIXTURE_DY = 65;
  56. POPUFARE_FIXTURE_SCREW_D = 7.5;
  57. POPUFARE_HINGE1_TOP_R = 2;
  58. POPUFARE_HINGE1_TOP_DE = 7.25 + POPUFARE_HINGE1_TOP_R;
  59. POPUFARE_HINGE1_TOP_DH = (25 - 2*POPUFARE_HINGE1_TOP_R);
  60. POPUFARE_HINGE1_TOP_DW = (28 + 2*POPUFARE_HINGE1_TOP_R);
  61. POPUFARE_HINGE1_BACK_R = 2;
  62. POPUFARE_HINGE1_BACK_DE = 8.5 + POPUFARE_HINGE1_BACK_R;
  63. POPUFARE_HINGE1_BACK_DH = (22 - 2*POPUFARE_HINGE1_BACK_R);
  64. POPUFARE_HINGE1_BACK_DW = (28 + 2*POPUFARE_HINGE1_BACK_R);
  65. // bracket
  66. //
  67. // center of bracket to end
  68. //
  69. POPUFARE_BRACKET_CX = 20;
  70. // screw size to fit through bracket (bracket itself is 6mm in diameter)
  71. //
  72. POPUFARE_BRACKET_D = 5;
  73. POPUFARE_BRACKET_DS = 100;
  74. POPUFARE_BRACKET_DE = 40;
  75. POPUFARE_BRACKET_DE_MEDIUM = 30;
  76. POPUFARE_BRACKET_DE_SHORT = 20;
  77. // buck
  78. //
  79. POPUFARE_BUCK_HOLE_WIDTH0 = 53.6 + (59.8-53.6)/2;
  80. POPUFARE_BUCK_HOLE_WIDTH1 = 39 + (45-39)/2;
  81. POPUFARE_BUCK_HOLE_LEN1 = 6.2;
  82. POPUFARE_BUCK_HOLE_R = 3.0/2;
  83. POPUFARE_BUCK_WIDTH = 49.8;
  84. POPUFARE_BUCK_HEIGHT = 52.9;
  85. POPUFARE_BUCK_HOLE_DH = 25 + (6.25)/2 - 3.0/2;
  86. // 117 - 111 = 6
  87. // 111 + 3 = 114
  88. //
  89. // 87 - 81 = 6
  90. // 81 + 3 = 84
  91. // inner plates
  92. //
  93. POPUFARE_INNER_PLATE_WIDTH = 90;
  94. POPUFARE_INNER_PLATE_HEIGHT = 70;
  95. //POPUFARE_INNER_PLATE_HOLE_WIDTH = POPUFARE_SCREEN_OUTER_WIDTH + 0;
  96. //POPUFARE_INNER_PLATE_HOLE_HEIGHT = POPUFARE_SCREEN_OUTER_HEIGHT + 20;
  97. POPUFARE_INNER_PLATE_HOLE_WIDTH = 114;
  98. POPUFARE_INNER_PLATE_HOLE_HEIGHT = 84;
  99. POPUFARE_SPEAKER_HOLE_R = 2.5/2;
  100. POPUFARE_SPEAKER_HOLE_WIDTH = 34.5 + ((39.5 - 34.5) / 2);
  101. // hinge
  102. //
  103. POPUFARE_HINGE_TOP_HOLE_WIDTH = 32;
  104. POPUFARE_HINGE_TOP_HOLE_DE = 36;
  105. POPUFARE_HINGE_BACK_HOLE_WIDTH = 45;
  106. POPUFARE_HINGE_BACK_HOLE_DE = 28;
  107. POPUFARE_HINGE_D = _M4;
  108. // Raspberry Pi measurements
  109. //
  110. _RASPBERRY_PI_B_HOLE_DX = 58;
  111. _RASPBERRY_PI_B_HOLE_DY = 48;
  112. _SCREEN_HOLE_DX = 93;
  113. _SCREEN_HOLE_DY = 69;
  114. // Center for raspberry pi from screen
  115. // that sits on top of it.
  116. //
  117. _SCREEN_OUTER_CENTER = [ POPUFARE_SCREEN_OUTER_WIDTH/2, POPUFARE_SCREEN_OUTER_HEIGHT/2 ];
  118. // offset of left screen m2 screws
  119. // as seen from the back, front ribbon down
  120. //
  121. _SCREEN_LL_M2_C = [ 5,5 ];
  122. _SCREEN_UL_M2_C = [ 5, POPUFARE_SCREEN_OUTER_HEIGHT - 4 ];
  123. _SCREEN_CX = _SCREEN_HOLE_DX/2 + _SCREEN_LL_M2_C[0] - _SCREEN_OUTER_CENTER[0];
  124. _SCREEN_CY = _SCREEN_HOLE_DY/2 + _SCREEN_LL_M2_C[1] - _SCREEN_OUTER_CENTER[1];
  125. _RASPBERRY_PI_B_CX = (_SCREEN_HOLE_DX - _RASPBERRY_PI_B_HOLE_DX/2) + _SCREEN_LL_M2_C[0] - _SCREEN_OUTER_CENTER[0];
  126. _RASPBERRY_PI_B_CY = (_SCREEN_HOLE_DY - _RASPBERRY_PI_B_HOLE_DY/2) + _SCREEN_LL_M2_C[1] - _SCREEN_OUTER_CENTER[1];
  127. // Bounding box width of rouned rect is w and h,
  128. // so this function compensates for the rounded corner
  129. // radius.
  130. //
  131. // w - width or rectangle
  132. // h - height of rectangle
  133. // r - corner radius
  134. //
  135. // rounded rectangle has center of mass (center) at (0,0)
  136. //
  137. module rounded_rect(w,h,r) {
  138. _w = w-2*r;
  139. _h = h-2*r;
  140. x2 = _w/2;
  141. y2 = _h/2;
  142. hull() {
  143. translate([-x2, y2]) circle(r);
  144. translate([ x2, y2]) circle(r);
  145. translate([ x2,-y2]) circle(r);
  146. translate([-x2,-y2]) circle(r);
  147. }
  148. }
  149. // adapter dimensions
  150. //
  151. _POWER_CONNECTOR_WIDTH = 36.5;
  152. _POWER_CONNECTOR_HEIGHT = 10.5;
  153. _POWER_CONNECTOR_DEPTH = 14.5;
  154. _POWER_USB_HOLE_DW = 9.11 + (15.11-9.11)/2;
  155. _POWER_USB_HOLE_R = 3/2;
  156. _PIU_USB_HOLE_DW = 9.25 + (12.5-9.25)/2;
  157. _PIU_USB_HOLE_DE = 8.5;
  158. _PIU_USB_HOLE_R = 2/2;
  159. _PIU_USB_WIDTH = 12;
  160. _POWER_BOX_R = 3/2;
  161. _POWER_BOX_WIDTH = _POWER_CONNECTOR_WIDTH + 12*_POWER_BOX_R;
  162. _POWER_BOX_HEIGHT = 3*_POWER_CONNECTOR_WIDTH + 12*_POWER_BOX_R;
  163. _POWER_BOX_PIU_USB_H = -_POWER_BOX_HEIGHT/4;
  164. _POWER_BOX_STRAP_DW = 18;
  165. _POWER_BOX_STRAP_DH = 22;
  166. _POWER_BOX_STRAP_R = 3/2;