287 lines
16 KiB
OpenSCAD
Executable file
287 lines
16 KiB
OpenSCAD
Executable file
Detailgrad = 15;
|
|
$fn=Detailgrad;
|
|
holewithorigin=false;
|
|
module NodeMCU_Lua_Amica(){
|
|
board_thickness = 1.600;
|
|
eta = 0.2;
|
|
board_polygon = [[0.000,47.308],[1.270,48.578],[24.448,48.578],[25.718,47.308],[25.718,1.270],[24.448,0.000],[1.270,0.000],[0.000,1.270]];
|
|
board_size = [25.718,48.578];
|
|
fn = Detailgrad;
|
|
board_origin = [0.000,0.000];
|
|
translate([0,0,0]) union(){ // PCB whith parts and text
|
|
color("green")linear_extrude(height=board_thickness,center=false, convexity=10)
|
|
union(){ // PCB
|
|
difference(){
|
|
translate(board_origin) polygon(points = board_polygon); //Board
|
|
translate([2.540,2.540]) circle(r=1.450,$fn=fn); //Hole
|
|
translate([22.860,2.540]) circle(r=1.450,$fn=fn); //Hole
|
|
translate([2.540,45.720]) circle(r=1.450,$fn=fn); //Hole
|
|
translate([22.860,45.720]) circle(r=1.450,$fn=fn); //Hole
|
|
if (Detailgrad > 9) { // Print part holes
|
|
translate([1.270,6.350])circle(r=0.508,$fn=fn); //1X15-CB 1
|
|
translate([1.270,8.890])circle(r=0.508,$fn=fn); //1X15-CB 2
|
|
translate([1.270,11.430])circle(r=0.508,$fn=fn); //1X15-CB 3
|
|
translate([1.270,13.970])circle(r=0.508,$fn=fn); //1X15-CB 4
|
|
translate([1.270,16.510])circle(r=0.508,$fn=fn); //1X15-CB 5
|
|
translate([1.270,19.050])circle(r=0.508,$fn=fn); //1X15-CB 6
|
|
translate([1.270,21.590])circle(r=0.508,$fn=fn); //1X15-CB 7
|
|
translate([1.270,24.130])circle(r=0.508,$fn=fn); //1X15-CB 8
|
|
translate([1.270,26.670])circle(r=0.508,$fn=fn); //1X15-CB 9
|
|
translate([1.270,29.210])circle(r=0.508,$fn=fn); //1X15-CB 10
|
|
translate([1.270,31.750])circle(r=0.508,$fn=fn); //1X15-CB 11
|
|
translate([1.270,34.290])circle(r=0.508,$fn=fn); //1X15-CB 12
|
|
translate([1.270,36.830])circle(r=0.508,$fn=fn); //1X15-CB 13
|
|
translate([1.270,39.370])circle(r=0.508,$fn=fn); //1X15-CB 14
|
|
translate([1.270,41.910])circle(r=0.508,$fn=fn); //1X15-CB 15
|
|
translate([24.130,6.350])circle(r=0.508,$fn=fn); //1X15-CB 1
|
|
translate([24.130,8.890])circle(r=0.508,$fn=fn); //1X15-CB 2
|
|
translate([24.130,11.430])circle(r=0.508,$fn=fn); //1X15-CB 3
|
|
translate([24.130,13.970])circle(r=0.508,$fn=fn); //1X15-CB 4
|
|
translate([24.130,16.510])circle(r=0.508,$fn=fn); //1X15-CB 5
|
|
translate([24.130,19.050])circle(r=0.508,$fn=fn); //1X15-CB 6
|
|
translate([24.130,21.590])circle(r=0.508,$fn=fn); //1X15-CB 7
|
|
translate([24.130,24.130])circle(r=0.508,$fn=fn); //1X15-CB 8
|
|
translate([24.130,26.670])circle(r=0.508,$fn=fn); //1X15-CB 9
|
|
translate([24.130,29.210])circle(r=0.508,$fn=fn); //1X15-CB 10
|
|
translate([24.130,31.750])circle(r=0.508,$fn=fn); //1X15-CB 11
|
|
translate([24.130,34.290])circle(r=0.508,$fn=fn); //1X15-CB 12
|
|
translate([24.130,36.830])circle(r=0.508,$fn=fn); //1X15-CB 13
|
|
translate([24.130,39.370])circle(r=0.508,$fn=fn); //1X15-CB 14
|
|
translate([24.130,41.910])circle(r=0.508,$fn=fn); //1X15-CB 15
|
|
translate([16.285,2.505])circle(r=0.750,$fn=fn); //ZX62D-B-5PA8 S1
|
|
translate([9.085,2.505])circle(r=0.750,$fn=fn); //ZX62D-B-5PA8 S2
|
|
translate([10.260,5.405])circle(r=0.350,$fn=fn); //ZX62D-B-5PA8 S3
|
|
translate([15.110,5.405])circle(r=0.350,$fn=fn); //ZX62D-B-5PA8 S4
|
|
} // end Print part holes
|
|
} //end difference() PCB - Holes
|
|
if (holewithorigin)
|
|
{
|
|
//Print a little cross in PCB holes
|
|
translate([2.540,2.540]) { polygon([[0,0],[-0.36,-0.36],[-0.36,0.36]]); polygon([[0,0],[0.36,0.36],[0.36,-0.36]]);} //Hole
|
|
translate([22.860,2.540]) { polygon([[0,0],[-0.36,-0.36],[-0.36,0.36]]); polygon([[0,0],[0.36,0.36],[0.36,-0.36]]);} //Hole
|
|
translate([2.540,45.720]) { polygon([[0,0],[-0.36,-0.36],[-0.36,0.36]]); polygon([[0,0],[0.36,0.36],[0.36,-0.36]]);} //Hole
|
|
translate([22.860,45.720]) { polygon([[0,0],[-0.36,-0.36],[-0.36,0.36]]); polygon([[0,0],[0.36,0.36],[0.36,-0.36]]);} //Hole
|
|
}
|
|
} //end union() // PCB
|
|
color("Goldenrod",0.7) translate([0,0,board_thickness-0.017]) linear_extrude(height=0.035,center=false, convexity=10) difference() {
|
|
union() {
|
|
translate([1.270,6.350]) circle(r=0.889,$fn=$fn);
|
|
translate([1.270,8.890]) circle(r=0.889,$fn=$fn);
|
|
translate([1.270,11.430]) circle(r=0.889,$fn=$fn);
|
|
translate([1.270,13.970]) circle(r=0.889,$fn=$fn);
|
|
translate([1.270,16.510]) circle(r=0.889,$fn=$fn);
|
|
translate([1.270,19.050]) circle(r=0.889,$fn=$fn);
|
|
translate([1.270,21.590]) circle(r=0.889,$fn=$fn);
|
|
translate([1.270,24.130]) circle(r=0.889,$fn=$fn);
|
|
translate([1.270,26.670]) circle(r=0.889,$fn=$fn);
|
|
translate([1.270,29.210]) circle(r=0.889,$fn=$fn);
|
|
translate([1.270,31.750]) circle(r=0.889,$fn=$fn);
|
|
translate([1.270,34.290]) circle(r=0.889,$fn=$fn);
|
|
translate([1.270,36.830]) circle(r=0.889,$fn=$fn);
|
|
translate([1.270,39.370]) circle(r=0.889,$fn=$fn);
|
|
translate([1.270,41.910]) circle(r=0.889,$fn=$fn);
|
|
translate([24.130,6.350]) circle(r=0.889,$fn=$fn);
|
|
translate([24.130,8.890]) circle(r=0.889,$fn=$fn);
|
|
translate([24.130,11.430]) circle(r=0.889,$fn=$fn);
|
|
translate([24.130,13.970]) circle(r=0.889,$fn=$fn);
|
|
translate([24.130,16.510]) circle(r=0.889,$fn=$fn);
|
|
translate([24.130,19.050]) circle(r=0.889,$fn=$fn);
|
|
translate([24.130,21.590]) circle(r=0.889,$fn=$fn);
|
|
translate([24.130,24.130]) circle(r=0.889,$fn=$fn);
|
|
translate([24.130,26.670]) circle(r=0.889,$fn=$fn);
|
|
translate([24.130,29.210]) circle(r=0.889,$fn=$fn);
|
|
translate([24.130,31.750]) circle(r=0.889,$fn=$fn);
|
|
translate([24.130,34.290]) circle(r=0.889,$fn=$fn);
|
|
translate([24.130,36.830]) circle(r=0.889,$fn=$fn);
|
|
translate([24.130,39.370]) circle(r=0.889,$fn=$fn);
|
|
translate([24.130,41.910]) circle(r=0.889,$fn=$fn);
|
|
translate([5.565,5.365]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 1
|
|
translate([7.165,5.365]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 2
|
|
translate([5.565,1.365]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 3
|
|
translate([7.165,1.365]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 4
|
|
translate([18.168,5.365]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 1
|
|
translate([19.768,5.365]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 2
|
|
translate([18.168,1.365]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 3
|
|
translate([19.768,1.365]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 4
|
|
translate([5.200,40.060]) square([2.000,1.200], center = true); //ESP-12 1
|
|
translate([5.200,38.060]) square([2.000,1.200], center = true); //ESP-12 2
|
|
translate([5.200,36.060]) square([2.000,1.200], center = true); //ESP-12 3
|
|
translate([5.200,34.060]) square([2.000,1.200], center = true); //ESP-12 4
|
|
translate([5.200,32.060]) square([2.000,1.200], center = true); //ESP-12 5
|
|
translate([5.200,30.060]) square([2.000,1.200], center = true); //ESP-12 6
|
|
translate([5.200,28.060]) square([2.000,1.200], center = true); //ESP-12 7
|
|
translate([5.200,26.060]) square([2.000,1.200], center = true); //ESP-12 8
|
|
translate([20.200,26.060]) square([2.000,1.200], center = true); //ESP-12 9
|
|
translate([20.200,28.060]) square([2.000,1.200], center = true); //ESP-12 10
|
|
translate([20.200,30.060]) square([2.000,1.200], center = true); //ESP-12 11
|
|
translate([20.200,32.060]) square([2.000,1.200], center = true); //ESP-12 12
|
|
translate([20.200,34.060]) square([2.000,1.200], center = true); //ESP-12 13
|
|
translate([20.200,36.060]) square([2.000,1.200], center = true); //ESP-12 14
|
|
translate([20.200,38.060]) square([2.000,1.200], center = true); //ESP-12 15
|
|
translate([20.200,40.060]) square([2.000,1.200], center = true); //ESP-12 16
|
|
translate([11.385,5.180]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 1
|
|
translate([12.035,5.180]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 2
|
|
translate([12.685,5.180]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 3
|
|
translate([13.335,5.180]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 4
|
|
translate([13.985,5.180]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 5
|
|
translate([16.285,2.505]) circle(r=1.125,$fn=$fn);
|
|
translate([9.085,2.505]) circle(r=1.125,$fn=$fn);
|
|
translate([10.260,5.405]) rotate([0,0,180.000]) EaglePad([1.208,2.416], 100); //ZX62D-B-5PA8 S3
|
|
translate([15.110,5.405]) rotate([0,0,180.000]) EaglePad([1.208,2.416], 100); //ZX62D-B-5PA8 S4
|
|
}
|
|
translate([1.270,6.350]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,8.890]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,11.430]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,13.970]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,16.510]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,19.050]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,21.590]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,24.130]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,26.670]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,29.210]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,31.750]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,34.290]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,36.830]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,39.370]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,41.910]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,6.350]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,8.890]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,11.430]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,13.970]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,16.510]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,19.050]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,21.590]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,24.130]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,26.670]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,29.210]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,31.750]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,34.290]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,36.830]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,39.370]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,41.910]) circle(r=0.508,$fn=fn);
|
|
translate([16.285,2.505]) circle(r=0.750,$fn=fn);
|
|
translate([9.085,2.505]) circle(r=0.750,$fn=fn);
|
|
translate([10.260,5.405]) circle(r=0.350,$fn=fn);
|
|
translate([15.110,5.405]) circle(r=0.350,$fn=fn);
|
|
|
|
}
|
|
color("Goldenrod",0.7) translate([0,0,-0.017]) linear_extrude(height=0.035,center=false, convexity=10) difference() {
|
|
union() {
|
|
translate([1.270,6.350]) circle(r=0.889,$fn=fn);
|
|
translate([1.270,8.890]) circle(r=0.889,$fn=fn);
|
|
translate([1.270,11.430]) circle(r=0.889,$fn=fn);
|
|
translate([1.270,13.970]) circle(r=0.889,$fn=fn);
|
|
translate([1.270,16.510]) circle(r=0.889,$fn=fn);
|
|
translate([1.270,19.050]) circle(r=0.889,$fn=fn);
|
|
translate([1.270,21.590]) circle(r=0.889,$fn=fn);
|
|
translate([1.270,24.130]) circle(r=0.889,$fn=fn);
|
|
translate([1.270,26.670]) circle(r=0.889,$fn=fn);
|
|
translate([1.270,29.210]) circle(r=0.889,$fn=fn);
|
|
translate([1.270,31.750]) circle(r=0.889,$fn=fn);
|
|
translate([1.270,34.290]) circle(r=0.889,$fn=fn);
|
|
translate([1.270,36.830]) circle(r=0.889,$fn=fn);
|
|
translate([1.270,39.370]) circle(r=0.889,$fn=fn);
|
|
translate([1.270,41.910]) circle(r=0.889,$fn=fn);
|
|
translate([24.130,6.350]) circle(r=0.889,$fn=fn);
|
|
translate([24.130,8.890]) circle(r=0.889,$fn=fn);
|
|
translate([24.130,11.430]) circle(r=0.889,$fn=fn);
|
|
translate([24.130,13.970]) circle(r=0.889,$fn=fn);
|
|
translate([24.130,16.510]) circle(r=0.889,$fn=fn);
|
|
translate([24.130,19.050]) circle(r=0.889,$fn=fn);
|
|
translate([24.130,21.590]) circle(r=0.889,$fn=fn);
|
|
translate([24.130,24.130]) circle(r=0.889,$fn=fn);
|
|
translate([24.130,26.670]) circle(r=0.889,$fn=fn);
|
|
translate([24.130,29.210]) circle(r=0.889,$fn=fn);
|
|
translate([24.130,31.750]) circle(r=0.889,$fn=fn);
|
|
translate([24.130,34.290]) circle(r=0.889,$fn=fn);
|
|
translate([24.130,36.830]) circle(r=0.889,$fn=fn);
|
|
translate([24.130,39.370]) circle(r=0.889,$fn=fn);
|
|
translate([24.130,41.910]) circle(r=0.889,$fn=fn);
|
|
translate([16.285,2.505]) circle(r=1.125,$fn=fn);
|
|
translate([9.085,2.505]) circle(r=1.125,$fn=fn);
|
|
translate([10.260,5.405]) rotate([0,0,180.000]) EaglePad([1.208,2.416], 100); //ZX62D-B-5PA8 S3
|
|
translate([15.110,5.405]) rotate([0,0,180.000]) EaglePad([1.208,2.416], 100); //ZX62D-B-5PA8 S4
|
|
}
|
|
translate([1.270,6.350]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,8.890]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,11.430]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,13.970]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,16.510]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,19.050]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,21.590]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,24.130]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,26.670]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,29.210]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,31.750]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,34.290]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,36.830]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,39.370]) circle(r=0.508,$fn=fn);
|
|
translate([1.270,41.910]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,6.350]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,8.890]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,11.430]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,13.970]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,16.510]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,19.050]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,21.590]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,24.130]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,26.670]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,29.210]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,31.750]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,34.290]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,36.830]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,39.370]) circle(r=0.508,$fn=fn);
|
|
translate([24.130,41.910]) circle(r=0.508,$fn=fn);
|
|
translate([16.285,2.505]) circle(r=0.750,$fn=fn);
|
|
translate([9.085,2.505]) circle(r=0.750,$fn=fn);
|
|
translate([10.260,5.405]) circle(r=0.350,$fn=fn);
|
|
translate([15.110,5.405]) circle(r=0.350,$fn=fn);
|
|
|
|
}
|
|
union(){ // parts
|
|
translate([1.270,24.130,0])rotate([180,0,90])1X15_CB(); //JP1
|
|
translate([24.130,24.130,0])rotate([180,0,90])1X15_CB(); //JP2
|
|
translate([6.365,3.365,board_thickness])rotate([0,0,90])KMR2(); //SW1 SPST_TACT-KMR2
|
|
translate([18.968,3.365,board_thickness])rotate([0,0,90])KMR2(); //SW2 SPST_TACT-KMR2
|
|
translate([12.700,35.560,board_thickness])ESP_12(); //X1
|
|
translate([12.685,0.355,board_thickness])rotate([0,0,90])ZX62D_B_5PA8(); //X2 ZX62D-B-5PA8
|
|
}
|
|
} //endunion()
|
|
module 1X15_CB() //JP1
|
|
{
|
|
union(); //No Dimension
|
|
}
|
|
module KMR2() //SW1 SPST_TACT-KMR2
|
|
{
|
|
rotate([0,0,270]) translate([-1.400,-2.100,0]) linear_extrude(10) square([2.800,4.200]); //Dummy Package
|
|
}
|
|
module ESP_12() //X1
|
|
{
|
|
translate([-8.000,-11.000,0]) linear_extrude(10) square([16.000,24.000]); //Dummy Package
|
|
}
|
|
module ZX62D_B_5PA8() //X2 ZX62D-B-5PA8
|
|
{
|
|
rotate([0,0,270]) translate([-4.000,-0.600,0]) linear_extrude(10) square([8.000,5.600]); //Dummy Package
|
|
}
|
|
include <../packages/packages.scad>;
|
|
|
|
} // end module
|
|
|
|
|
|
module EaglePad(size,roundness,$fn=16)
|
|
{
|
|
function bogen(point=[0,0], r = 1 ,phase = 0, winkel = 90, $fn=$fn) = [let(num=abs($fn*winkel/360)) for (i=[0:num], x=i*winkel/num) [point[0]+r*cos(x+phase),point[1]+r*sin(x+phase)]];
|
|
r = ((size[0] < size[1]) ? size[0] / 2: size[1] / 2) * roundness / 100;
|
|
dim = [size[0] / 2 - r, size[1] / 2 - r];
|
|
if ((size[0] == size[1]) && (roundness == 100))
|
|
{
|
|
circle(r);
|
|
}
|
|
else
|
|
{
|
|
polygon(concat(bogen(point=[-dim[0],-dim[1]], r = r, phase = 180, $fn=$fn ), bogen(point=[dim[0],-dim[1]], r = r, phase = 270, $fn=$fn ), bogen(point=[dim[0],dim[1]], r = r, phase = 0, $fn=$fn ), bogen(point=[-dim[0],dim[1]], r = r, phase = 90, $fn=$fn )));
|
|
}
|
|
}
|
|
NodeMCU_Lua_Amica(); //Show module
|
|
//Created by generate-scad.ulp version 1.2
|