2026-02-13 10:49:46 +00:00
|
|
|
esp32_width = 25.8;
|
|
|
|
|
case_height = 12;
|
|
|
|
|
esp32_length = 65.8;
|
|
|
|
|
esp32_secondary_length = 60.2;
|
|
|
|
|
wall_thickness = 1;
|
2026-01-26 02:19:26 +00:00
|
|
|
usb_thickness = 3.3;
|
|
|
|
|
usb_width = 9.1;
|
2026-01-23 11:27:05 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
module generateCase() {
|
|
|
|
|
difference() {
|
|
|
|
|
// Generate Outer Shell
|
|
|
|
|
cube([(esp32_width+(wall_thickness*2)), (esp32_length+(wall_thickness*2)), (case_height+wall_thickness)]);
|
|
|
|
|
// Generate inner cutout for ESP32 PCB
|
|
|
|
|
translate([wall_thickness,wall_thickness,wall_thickness])
|
|
|
|
|
cube([esp32_width, esp32_secondary_length, case_height]);
|
|
|
|
|
// Generate cutout for ESP32 Antenna
|
|
|
|
|
translate([wall_thickness+3,wall_thickness,wall_thickness+1])
|
|
|
|
|
cube([esp32_width-6, esp32_length, case_height]);
|
|
|
|
|
// Generate slot for OTG Port
|
2026-02-13 10:49:46 +00:00
|
|
|
translate([wall_thickness+2.1,0,wall_thickness+1.1])
|
2026-01-26 02:19:26 +00:00
|
|
|
cube([usb_width,2,usb_thickness]);
|
2026-01-23 11:27:05 +00:00
|
|
|
// Generate slot for UART port
|
2026-02-13 10:49:46 +00:00
|
|
|
translate([(wall_thickness+esp32_width-usb_width-2.1),0,wall_thickness+1.1])
|
2026-01-26 02:19:26 +00:00
|
|
|
cube([usb_width,2,usb_thickness]);
|
2026-01-23 11:27:05 +00:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-13 10:49:46 +00:00
|
|
|
module generateLid() {
|
|
|
|
|
union() {
|
|
|
|
|
cube([(esp32_width+(wall_thickness*2)), (esp32_length+(wall_thickness*2)), 1.5]);
|
|
|
|
|
translate([wall_thickness, wall_thickness, 1.5])
|
|
|
|
|
cube([esp32_width, esp32_secondary_length, 1.0]);
|
|
|
|
|
translate([wall_thickness+3, esp32_secondary_length, 1.0])
|
|
|
|
|
cube([esp32_width-6, 5.5, 1.5]);
|
|
|
|
|
}
|
2026-01-26 02:19:26 +00:00
|
|
|
}
|
|
|
|
|
|
2026-01-23 11:27:05 +00:00
|
|
|
generateCase();
|
2026-02-13 10:49:46 +00:00
|
|
|
translate([esp32_width+5,0,0])
|
|
|
|
|
generateLid();
|