PopufareHousingCommon.scad 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  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 = 165;
  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 = 145 + _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 = 165;
  43. POPUFARE_SCREEN_HEIGHT = 100;
  44. POPUFARE_SCREEN_SCREW_WIDTH = 157;
  45. POPUFARE_SCREEN_SCREW_HEIGHT = 115;
  46. POPUFARE_GLAND_DIAMETER = 37;
  47. POPUFARE_SCREEN_OUTER_WIDTH = 122;
  48. POPUFARE_SCREEN_OUTER_HEIGHT = 78;
  49. POPUFARE_FRONT_HEIGHT = 60;
  50. POPUFARE_FIXTURE_DX = 65;
  51. POPUFARE_FIXTURE_DY = 65;
  52. POPUFARE_FIXTURE_SCREW_D = 7.5;
  53. // bracket
  54. //
  55. // center of bracket to end
  56. //
  57. POPUFARE_BRACKET_CX = 20;
  58. // screw size to fit through bracket (bracket itself is 6mm in diameter)
  59. //
  60. POPUFARE_BRACKET_D = 5;
  61. POPUFARE_BRACKET_WIDTH = 16;
  62. POPUFARE_BRACKET_DS = 100;
  63. POPUFARE_BRACKET_DE = 40;
  64. POPUFARE_BRACKET_DE_MEDIUM = 30;
  65. POPUFARE_BRACKET_DE_SHORT = 20;
  66. // buck
  67. //
  68. POPUFARE_BUCK_HOLE_WIDTH0 = 53.6 + (59.8-53.6)/2;
  69. POPUFARE_BUCK_HOLE_WIDTH1 = 39 + (45-39)/2;
  70. POPUFARE_BUCK_HOLE_LEN1 = 6.2;
  71. POPUFARE_BUCK_HOLE_R = 3.0/2;
  72. POPUFARE_BUCK_WIDTH = 49.8;
  73. POPUFARE_BUCK_HEIGHT = 52.9;
  74. POPUFARE_BUCK_HOLE_DH = 25 + (6.25)/2 - 3.0/2;
  75. // 117 - 111 = 6
  76. // 111 + 3 = 114
  77. //
  78. // 87 - 81 = 6
  79. // 81 + 3 = 84
  80. // inner plates
  81. //
  82. POPUFARE_INNER_PLATE_WIDTH = 90;
  83. POPUFARE_INNER_PLATE_HEIGHT = 70;
  84. //POPUFARE_INNER_PLATE_HOLE_WIDTH = POPUFARE_SCREEN_OUTER_WIDTH + 0;
  85. //POPUFARE_INNER_PLATE_HOLE_HEIGHT = POPUFARE_SCREEN_OUTER_HEIGHT + 20;
  86. POPUFARE_INNER_PLATE_HOLE_WIDTH = 114;
  87. POPUFARE_INNER_PLATE_HOLE_HEIGHT = 84;
  88. //POPUFARE_SPEAKER_HOLE_R = 2.5/2;
  89. //POPUFARE_SPEAKER_HOLE_WIDTH = 34.5 + ((39.5 - 34.5) / 2);
  90. // diagonal inner: 59.5
  91. // diagonal outer: 65.5
  92. // diagonal screw: 62.5
  93. // length/width = sqrt(2)*62.5/2
  94. //
  95. // diagonal inner: 55.0
  96. // diagonal outer: 65.0
  97. // diagonal screw: 60.0
  98. // length/width = sqrt(2)*60/2
  99. //
  100. POPUFARE_SPEAKER_HOLE_R = 4.5/2;
  101. POPUFARE_SPEAKER_HOLE_WIDTH = sqrt(2)*60.0/2;
  102. POPUFARE_SPEAKER_HOLE_HEIGHT = sqrt(2)*60.0/2;
  103. // Raspberry Pi measurements
  104. //
  105. _RASPBERRY_PI_B_HOLE_DX = 58;
  106. _RASPBERRY_PI_B_HOLE_DY = 48;
  107. _SCREEN_HOLE_DX = 93;
  108. _SCREEN_HOLE_DY = 69;
  109. // Center for raspberry pi from screen
  110. // that sits on top of it.
  111. //
  112. _SCREEN_OUTER_CENTER = [ POPUFARE_SCREEN_OUTER_WIDTH/2, POPUFARE_SCREEN_OUTER_HEIGHT/2 ];
  113. // offset of left screen m2 screws
  114. // as seen from the back, front ribbon down
  115. //
  116. _SCREEN_LL_M2_C = [ 5,5 ];
  117. _SCREEN_UL_M2_C = [ 5, POPUFARE_SCREEN_OUTER_HEIGHT - 4 ];
  118. _SCREEN_CX = _SCREEN_HOLE_DX/2 + _SCREEN_LL_M2_C[0] - _SCREEN_OUTER_CENTER[0];
  119. _SCREEN_CY = _SCREEN_HOLE_DY/2 + _SCREEN_LL_M2_C[1] - _SCREEN_OUTER_CENTER[1];
  120. _RASPBERRY_PI_B_CX = (_SCREEN_HOLE_DX - _RASPBERRY_PI_B_HOLE_DX/2) + _SCREEN_LL_M2_C[0] - _SCREEN_OUTER_CENTER[0];
  121. _RASPBERRY_PI_B_CY = (_SCREEN_HOLE_DY - _RASPBERRY_PI_B_HOLE_DY/2) + _SCREEN_LL_M2_C[1] - _SCREEN_OUTER_CENTER[1];
  122. // Bounding box width of rouned rect is w and h,
  123. // so this function compensates for the rounded corner
  124. // radius.
  125. //
  126. // w - width or rectangle
  127. // h - height of rectangle
  128. // r - corner radius
  129. //
  130. // rounded rectangle has center of mass (center) at (0,0)
  131. //
  132. module rounded_rect(w,h,r) {
  133. _w = w-2*r;
  134. _h = h-2*r;
  135. x2 = _w/2;
  136. y2 = _h/2;
  137. hull() {
  138. translate([-x2, y2]) circle(r);
  139. translate([ x2, y2]) circle(r);
  140. translate([ x2,-y2]) circle(r);
  141. translate([-x2,-y2]) circle(r);
  142. }
  143. }
  144. // adapter dimensions
  145. //
  146. _POWER_CONNECTOR_WIDTH = 36.5;
  147. _POWER_CONNECTOR_HEIGHT = 10.5;
  148. _POWER_CONNECTOR_DEPTH = 14.5;
  149. _POWER_USB_HOLE_DW = 9.11 + (15.11-9.11)/2;
  150. _POWER_USB_HOLE_R = 3/2;
  151. _PIU_USB_HOLE_DW = 9.25 + (12.5-9.25)/2;
  152. _PIU_USB_HOLE_DE = 8.5;
  153. _PIU_USB_HOLE_R = 2/2;
  154. _PIU_USB_WIDTH = 12;
  155. _POWER_BOX_R = 3/2;
  156. _POWER_BOX_WIDTH = _POWER_CONNECTOR_WIDTH + 12*_POWER_BOX_R;
  157. _POWER_BOX_HEIGHT = 3*_POWER_CONNECTOR_WIDTH + 12*_POWER_BOX_R;
  158. _POWER_BOX_PIU_USB_H = -_POWER_BOX_HEIGHT/4;
  159. _POWER_BOX_STRAP_DW = 18;
  160. _POWER_BOX_STRAP_DH = 22;
  161. _POWER_BOX_STRAP_R = 3/2;