PopufareHousingCommon.scad 4.4 KB

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