100 lines
2.9 KiB
OpenSCAD
100 lines
2.9 KiB
OpenSCAD
// This file contains the components used in Fabula.
|
|
// This is for test-fitting and shouldn't be printed.
|
|
|
|
/*
|
|
// 50mm speaker
|
|
module speaker_50() {
|
|
translate([0, 0, -2]) {
|
|
union() {
|
|
difference() {
|
|
// Mounting Plaque
|
|
cube([55, 55, 4], true);
|
|
// Screw holes
|
|
translate([-20, -20, 0]) cylinder(h = 100, d = 4, center = true);
|
|
translate([20, -20, 0]) cylinder(h = 100, d = 4, center = true);
|
|
translate([-20, 20, 0]) cylinder(h = 100, d = 4, center = true);
|
|
translate([20, 20, 0]) cylinder(h = 100, d = 4, center = true);
|
|
// Speaker cone (cosmetic)
|
|
translate([0, 0, 2]) cylinder(h = 1, d = 49, center = true);
|
|
}
|
|
translate([0, 0, - 16 - 2]) cylinder(h = 32, d = 44, center = true);
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
|
|
// 80mm flat speaker
|
|
module speaker_80() {
|
|
cylinder(h = 12, d1 = 78, d2 = 34);
|
|
translate([0, 0, 12]) cylinder(h = 12, d = 22);
|
|
}
|
|
|
|
|
|
// 4056-based li-ion charging module
|
|
module li_ion_4056_charger_module() {
|
|
cube([28, 17, 2], true);
|
|
translate([-14 + 3.25, 0, 2]) cube([6.5, 8.9, 3], true);
|
|
}
|
|
|
|
// 14x12mm rocker switch with 21x15mm flange
|
|
module switch() {
|
|
// Body
|
|
cube([14, 12, 11], true);
|
|
// Flange
|
|
translate([0, 0, 11/2]) cube([21, 15, 2], true);
|
|
// Rocker
|
|
translate([0, 0, 6]) rotate([0, 15, 0]) cube([12, 10, 5], true);
|
|
}
|
|
|
|
// Cherry MX (compatible) mechanical keyboard switch, i.e. Gatheron Blue
|
|
module mechanical_switch() {
|
|
// Body
|
|
cube([15.5, 15.5, 11.5], true);
|
|
// Stem
|
|
translate([0, 0, (11.5 + 3.5) / 2]){
|
|
cube([1, 3.8, 3.5], true);
|
|
cube([3.8, 1, 3.5], true);
|
|
}
|
|
}
|
|
|
|
// Mainboard. The highest component is the capacitor with a total height of 18mm, but we round to 20 for good measure.
|
|
module pcb() {
|
|
// Board
|
|
translate([-77.89 / 2 - 19.20, -148.35 / 2 - 49.71, 0]) {
|
|
linear_extrude(height = 1.4) {
|
|
difference() {
|
|
hull() {
|
|
/*
|
|
Center svg
|
|
Bounding box:
|
|
Min: 19.20, 49.71
|
|
Max: 97.09, 198.06
|
|
Size: 77.89, 148.35
|
|
*/
|
|
import("pcb.svg");
|
|
}
|
|
import("pcb.svg");
|
|
}
|
|
}
|
|
}
|
|
// Keys
|
|
translate([-13.4, -20.1, 11.5/2 + 1.4]) mechanical_switch();
|
|
translate([-23.4, -44.6, 11.5/2 + 1.4]) mechanical_switch();
|
|
translate([12.6, -35.6, 11.5/2 + 1.4]) mechanical_switch();
|
|
translate([2.05, -61.05, 11.5/2 + 1.4]) mechanical_switch();
|
|
// Box to account for the other various components
|
|
translate([-28, 4, 0]) cube([53, 70, 18]);
|
|
}
|
|
|
|
module battery_18650() {
|
|
cylinder(d = 18, h = 65, center = true);
|
|
}
|
|
|
|
//speaker_50();
|
|
//speaker_80();
|
|
//li_ion_4056_charger_module();
|
|
switch();
|
|
//pcb();
|
|
//battery_18650();
|
|
//mechanical_switch();
|