Eagle/example/NodeMCU_Lua_Amica.scad
2023-06-10 11:22:50 +02:00

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