Skip to content

Commit d32f247

Browse files
committed
sensibly rename lite case files
1 parent 56efb68 commit d32f247

File tree

3 files changed

+166
-227
lines changed

3 files changed

+166
-227
lines changed

src/LiteCase/LiteCase.scad

Lines changed: 166 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
1+
use <../../lib/Round-Anything/polyround.scad>
2+
3+
use <../Mounting/StandardMountAdapter.scad>
4+
5+
6+
corner_x = 24;
7+
boardcorner_x = 17;
8+
boardcorner_y = 23;
9+
square_x = 5;
10+
lite_l = 45;
11+
lite_w = 80 - 18;
12+
13+
114
// 0,0,0: Mitte des Lite-PCB, auf der Seite mit dem OpenBIkeSensor logo, x: Richtung USB-Port, Z: Richtung Ultraschallsensoren
2-
$fn = 100;
15+
$fn = 120;
316

417
Lite_PCB_x = 44;
518
Lite_PCB_y = 29.2;
@@ -8,54 +21,183 @@ Lite_PCB_Dimensions = [Lite_PCB_x, Lite_PCB_y, Lite_PCB_z];
821

922
Lite_ESP_socket_x = 38;
1023
Lite_ESP_socket_y = 2.54;
11-
Lite_ESP_socket_z = 9;
24+
Lite_ESP_socket_z = 9 + Lite_PCB_z + 1.8;
1225
Lite_ESP_socket_dimensions = [Lite_ESP_socket_x, Lite_ESP_socket_y, Lite_ESP_socket_z];
1326

14-
Lite_transducer_position = [23.8, 0, 20.1];
15-
Lite_transducer_variance = 0.8;
27+
Lite_transducer_position = [23.8, 0, 20.6];
28+
Lite_transducer_variance = 1.2;
1629
Lite_transducer_diameter = 16 + Lite_transducer_variance;
1730
Lite_transducer_diameter_small = 12.5 + Lite_transducer_variance;
1831

19-
20-
2132
Lite_ESP_position_x = 0;
2233
Lite_ESP_position_y = 0;
23-
Lite_ESP_position_z = - 15.2;
34+
Lite_ESP_position_z = - 16.2;
35+
36+
Lite_ESP_dimensions = [53, 29, 4.8];
2437

25-
Lite_USB_position_x = 0;
38+
Lite_USB_position_x = 55;
2639
Lite_USB_position_y = 0;
27-
Lite_USB_position_z = 0;
40+
Lite_USB_position_z = - 14.5;
41+
42+
Lite_screwmount_top = 4;
43+
Lite_screwmount_bottom = 6;
44+
Lite_screwmount_height = Lite_screwmount_top + Lite_screwmount_bottom;
45+
46+
Lite_USB = [Lite_USB_position_x, Lite_USB_position_y, Lite_USB_position_z];
2847

2948
Lite_ESP_position = [Lite_ESP_position_x, Lite_ESP_position_y, Lite_ESP_position_z];
30-
module ESP() color("black")translate([25, 0, 0])cube([51.5, 28.5, 4.5], center = true);
31-
module Ultrasonic(i) {
32-
color("blue") translate([23.9, i * 7.3, 17.99])cube([41.5, 1.4, 36], center = true);
33-
#translate([23.9, 0, 16.99])cube([41.5, 19.5, 35], center = true);
3449

35-
translate(Lite_transducer_position - [0, 8 * i, 100])rotate([i * 90, 0, 0])cylinder(d2 = Lite_transducer_diameter, h = 8.5);
50+
sensor_x = - Lite_transducer_position[2] + .5;
51+
sensor_y = Lite_transducer_position[0];
52+
53+
function angle_three_points_2d(pa, pb, pc) = asin(cross(pb - pa, pb - pc) / (norm(pb - pa) * norm(pb - pc)));
54+
55+
module rounded_cube(x, y, z, r, r2, center = true) {
56+
t = center ? - [x / 2, y / 2, z / 2]: [0, 0, 0];
57+
translate(t)polyRoundExtrude([[0, 0, max(r, r2)], [0, y, max(r, r2)], [x, y, max(r, r2)], [x, 0, max(r, r2)]], z, r, r2);
58+
}
3659

60+
module SidePolygon() {
61+
corners = [
62+
[square_x, - lite_w / 2, 9],
63+
// chose radius so the corners match
64+
[- corner_x, - 0, (corner_x - boardcorner_x) / (1 / sin(angle_three_points_2d([0, 0], [- corner_x, - 0], [square_x, lite_w / 2])) - 1)],
65+
[square_x, lite_w / 2, 9],
66+
[lite_l, lite_w / 2, 5],
67+
[lite_l, - lite_w / 2, 5]
68+
];
69+
translate([sensor_x, sensor_y])polygon(polyRound(corners, fn = 150));
70+
}
3771

38-
#translate(Lite_transducer_position - [0, 8 * i, 0])rotate([i * 90, 0, 0])cylinder(d = Lite_transducer_diameter_small, h = 40);
72+
module MidPolygon() {
73+
corners = [[square_x, - lite_w / 2, 5], [- boardcorner_x, - boardcorner_y, 5], [- boardcorner_x, boardcorner_y, 5], [square_x, lite_w / 2, 5], [lite_l, lite_w / 2, 5], [lite_l, -
74+
lite_w / 2, 5]];
75+
translate([sensor_x, sensor_y]) polygon(polyRound(corners));
76+
}
77+
78+
module LidCutter() {
79+
translate([40, 0, Lite_ESP_position_z + 0.8])cube([120, 90, 0.1], center = true);
80+
}
81+
82+
module Box() {
83+
hull() {
84+
for (i = [- 1, 1]) {
85+
translate([0, 0, i * 9 - (i + 1) / 2])linear_extrude(1)MidPolygon();
86+
translate([0, 0, i * 18 - (i + 1) / 2])linear_extrude(1)SidePolygon();
87+
}
88+
}
89+
}
90+
91+
module ESP() {
92+
difference() {
93+
color("black")translate([24.6, 0, 0.2])cube(Lite_ESP_dimensions, center = true);
94+
for (i = [- 1, 1])for (j = [- 1, 1]) {
95+
translate([i * 24.6 + 22.6, j * 12.5 - 2.5, - 4.7])cube([4, 5, 5]);
96+
}
97+
}
98+
}
99+
100+
module Ultrasonic(i, onlyboards = false, h = 30) {
101+
translate([0, 0, - h / 2 + 34 / 2]) {
102+
color("blue") translate([23.9, i * 7.3, 17.99])cube([42.5, 1.4, h], center = true);
103+
hull() {
104+
translate([Lite_transducer_position[0], 0, 14.99])cube([42.5, 21.5, h], center = true);
105+
translate([Lite_transducer_position[0], 0, 16.99])cube([42.5, 16.5, h], center = true);
106+
translate([Lite_transducer_position[0], 0, 10.99])cube([49.5, 18.5, h], center = true);
107+
}
108+
intersection() {
109+
translate([0, 0, + h / 2 - 34 / 2])hull() {
110+
translate(Lite_transducer_position - [0, 8 * i, 100])rotate([i * 90, 0, 0])cylinder(d1 = Lite_transducer_diameter + 12, d2 = Lite_transducer_diameter, h = 8.5);
111+
translate(Lite_transducer_position - [0, 8 * i, 0])rotate([i * 90, 0, 0])cylinder(d1 = Lite_transducer_diameter + 12, d2 = Lite_transducer_diameter, h = 8.5);
112+
}
113+
color("blue") translate([23.9, i * 7, 17.99])cube([41.5, 60, h + 14], center = true);
114+
115+
}
116+
}
117+
translate(Lite_transducer_position - [0, 8 * i, 0])rotate([i * 90, 0, 0])cylinder(d = Lite_transducer_diameter_small, h = 40);
118+
}
119+
120+
module USB_hole() {
121+
translate(Lite_USB) {
122+
translate([0, 0, - 2.25])
123+
rounded_cube(45, 12.5, 8, 0, 0, center = true);
124+
rounded_cube(45, 5, 12.5, 2.5, 0, center = true);
125+
}
126+
}
127+
128+
module Screwbump(size = 6, hole_diameter = 3.8, height = 6, bottom = true, toppart = 2.1, insert = 4) {
129+
outer_polygon = [[size, 0, 0], [- size, 0, 0], [- size, size, size], [0, 3 * size, size], [size, size, size]];
130+
difference() {
131+
hull() {
132+
translate([0, 0, 0])polyRoundExtrude(outer_polygon, 1, 0, 0);
133+
134+
translate([0, 0, height - 1])polyRoundExtrude(outer_polygon, 1, 0, 0);
135+
if (bottom)translate([0, - 0.01, 1.3 * height])rotate([90, 0, 0])cylinder(d = size, h = 0.1);
136+
}
137+
translate([0, size, toppart])cylinder(d = insert, h = height - toppart);
138+
translate([0, size, - .01])cylinder(d = hole_diameter, h = toppart);
139+
}
39140
}
40141

41142

42143
module LiteElectronics(onlyboards = false) {
43144
// the rendered model from stls (not closed, only for preview)
44-
translate([15, 0, 0])rotate([180, 00, 00])rotate([0, 0, 90])import("../../lib/OpenBikeSensor-Lite-PCB-0.1.2.stl");
145+
//if (!$preview) translate([15, 0, 0])rotate([180, 00, 00])rotate([0, 0, 90])import("../../lib/OpenBikeSensor-Lite-PCB-0.1.2.stl");
45146

46147
// board cube
47148
color("green")translate(- [0, Lite_PCB_y / 2, Lite_PCB_z])cube(Lite_PCB_Dimensions, center = false);
149+
color("green")translate(- [0.2, Lite_PCB_y / 2 + 0.2, Lite_PCB_z + 14])cube(Lite_PCB_Dimensions + [0.4, 0.4, 14], center = false);
150+
48151

49152
// sockets for ESP
50-
for (i = [- 1, 1]) color("darkgrey")translate([3.5, i * Lite_PCB_y / 2 - (i + 1) * Lite_ESP_socket_y / 2 - i * 0.45, - Lite_ESP_socket_dimensions[2] - Lite_PCB_Dimensions[2]])
153+
for (i = [- 1, 1]) color("darkgrey")translate([3.5, i * Lite_PCB_y / 2 - (i + 1) * Lite_ESP_socket_y / 2 - i * 0.45, - Lite_ESP_socket_dimensions[2] + 1.8])
51154
cube(Lite_ESP_socket_dimensions);
52155

53-
#translate(Lite_ESP_position)ESP();
54-
55-
for (i = [- 1, 1])Ultrasonic(i);
156+
translate(Lite_ESP_position)ESP();
157+
158+
// printability chamfers above ESP
159+
hull() {
160+
translate([24.6, 0, Lite_ESP_position_z - 2])cube([45, 29, 1], center = true);
161+
translate([24.6, 0, Lite_ESP_position_z - 4.3])cube([45, 18.5, 5.01], center = true);
162+
}
163+
translate([0, 0, 0])hull() {
164+
translate([24.6, 0, Lite_ESP_position_z - 2])cube([Lite_ESP_dimensions[0], 20, 0.5], center = true);
165+
translate([25., 0, Lite_ESP_position_z - 4.3])cube([45, 18.5, 0.1], center = true);
166+
}
167+
for (i = [- 1, 1])Ultrasonic(i, onlyboards = onlyboards, h = 50);
168+
USB_hole();
56169
}
57-
LiteElectronics();
170+
58171
difference() {
59-
//translate([12.5, - 18, 9])cube([23, 36, 28]);
60-
for (i = [- 1, 1])Ultrasonic(i);
61-
}
172+
union() {
173+
translate([- 7, 0, Lite_ESP_position_z + 0.8 + 0.05 - Lite_screwmount_top])rotate([0, 0, 90])
174+
Screwbump(size = 4, hole_diameter = 3.2, height = Lite_screwmount_height, bottom = true, toppart = Lite_screwmount_top);
175+
translate([lite_w - 7.3, 12, Lite_ESP_position_z + 0.8 + 0.05 - Lite_screwmount_top])rotate([0, 0, - 90])
176+
Screwbump(size = 4, hole_diameter = 3.2, height = Lite_screwmount_height, bottom = true, toppart = Lite_screwmount_top);
177+
translate([lite_w - 7.3, - 12, Lite_ESP_position_z + 0.8 + 0.05 - Lite_screwmount_top])rotate([0, 0, - 90])
178+
Screwbump(size = 4, hole_diameter = 3.2, height = Lite_screwmount_height, bottom = true, toppart = Lite_screwmount_top);
179+
translate([23.8, - 3.5, - 17.9])rotate([180, 0, 90])StandardMountAdapter(screwholes = false, channels = false, twoholes = false);
180+
difference() {
181+
union() {
182+
rotate([90, 90, 0])Box();
183+
difference() {
184+
translate(Lite_USB + [0, 0, - 3.5 - 1.6 + 1]) {
185+
rounded_cube(28, 16.5, 6.5, 0, 1.5, center = true);
186+
187+
difference() {
188+
#rounded_cube(30, 15, 6.5, 0, 1.5, center = true);
189+
translate([8, - 20, - 5])cube([4, 60, 20]);
190+
}
191+
}
192+
translate(Lite_USB + [10, 0, 0])cube([4, 20, 12.5], center = true);
193+
}
194+
}
195+
hull() translate([23.8, - 3.5, - 18])rotate([180, 0, 90])StandardMountAdapter(screwholes = false, channels = false);
196+
197+
}
198+
}
199+
LiteElectronics();
200+
LidCutter();
201+
}
202+
203+
if ($preview) translate([80, 0, 0])LiteElectronics();

0 commit comments

Comments
 (0)