This commit is contained in:
martin 2023-06-10 11:22:50 +02:00
parent 2c32049784
commit 6d3e0dd080
7 changed files with 8760 additions and 0 deletions

286
example/NodeMCU_Lua_Amica.scad Executable file
View file

@ -0,0 +1,286 @@
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

540
example/NodeMCU_Lua_Lolin.scad Executable file
View file

@ -0,0 +1,540 @@
Detailgrad = 15;
$fn=Detailgrad;
module NodeMCU_Lua_Lolin(){
board_thickness = 1.600000;
eta = 0.2;
board_polygon = [[0.000000,57.308750],[1.587500,58.102500],[29.845000,58.102500],[31.432500,57.308750],[31.432500,0.793750],[29.845000,0.000000],[1.587500,0.000000],[0.000000,0.793750]];
board_size = [31.432500,58.102500];
fn = Detailgrad;
board_origin = [0.000000,0.000000];
translate([0,0,0]) union(){ // PCB whith parts and text
color("DarkSlateGray")linear_extrude(height=board_thickness,center=false, convexity=10)
union(){ // PCB
difference(){
translate(board_origin) polygon(points = board_polygon); //Board
if (Detailgrad > 9) { // Print part holes
translate([3.016,3.016])circle(r=1.600000,$fn=fn); //3,2-PAD B3,2
translate([28.416,3.016])circle(r=1.600000,$fn=fn); //3,2-PAD B3,2
translate([3.016,55.086])circle(r=1.600000,$fn=fn); //3,2-PAD B3,2
translate([28.416,55.086])circle(r=1.600000,$fn=fn); //3,2-PAD B3,2
translate([2.540,11.430])circle(r=0.508000,$fn=fn); //1X15-CB 1
translate([2.540,13.970])circle(r=0.508000,$fn=fn); //1X15-CB 2
translate([2.540,16.510])circle(r=0.508000,$fn=fn); //1X15-CB 3
translate([2.540,19.050])circle(r=0.508000,$fn=fn); //1X15-CB 4
translate([2.540,21.590])circle(r=0.508000,$fn=fn); //1X15-CB 5
translate([2.540,24.130])circle(r=0.508000,$fn=fn); //1X15-CB 6
translate([2.540,26.670])circle(r=0.508000,$fn=fn); //1X15-CB 7
translate([2.540,29.210])circle(r=0.508000,$fn=fn); //1X15-CB 8
translate([2.540,31.750])circle(r=0.508000,$fn=fn); //1X15-CB 9
translate([2.540,34.290])circle(r=0.508000,$fn=fn); //1X15-CB 10
translate([2.540,36.830])circle(r=0.508000,$fn=fn); //1X15-CB 11
translate([2.540,39.370])circle(r=0.508000,$fn=fn); //1X15-CB 12
translate([2.540,41.910])circle(r=0.508000,$fn=fn); //1X15-CB 13
translate([2.540,44.450])circle(r=0.508000,$fn=fn); //1X15-CB 14
translate([2.540,46.990])circle(r=0.508000,$fn=fn); //1X15-CB 15
translate([29.210,11.430])circle(r=0.508000,$fn=fn); //1X15-CB 1
translate([29.210,13.970])circle(r=0.508000,$fn=fn); //1X15-CB 2
translate([29.210,16.510])circle(r=0.508000,$fn=fn); //1X15-CB 3
translate([29.210,19.050])circle(r=0.508000,$fn=fn); //1X15-CB 4
translate([29.210,21.590])circle(r=0.508000,$fn=fn); //1X15-CB 5
translate([29.210,24.130])circle(r=0.508000,$fn=fn); //1X15-CB 6
translate([29.210,26.670])circle(r=0.508000,$fn=fn); //1X15-CB 7
translate([29.210,29.210])circle(r=0.508000,$fn=fn); //1X15-CB 8
translate([29.210,31.750])circle(r=0.508000,$fn=fn); //1X15-CB 9
translate([29.210,34.290])circle(r=0.508000,$fn=fn); //1X15-CB 10
translate([29.210,36.830])circle(r=0.508000,$fn=fn); //1X15-CB 11
translate([29.210,39.370])circle(r=0.508000,$fn=fn); //1X15-CB 12
translate([29.210,41.910])circle(r=0.508000,$fn=fn); //1X15-CB 13
translate([29.210,44.450])circle(r=0.508000,$fn=fn); //1X15-CB 14
translate([29.210,46.990])circle(r=0.508000,$fn=fn); //1X15-CB 15
translate([19.143,1.552])circle(r=0.750000,$fn=fn); //ZX62D-B-5PA8 S1
translate([11.943,1.552])circle(r=0.750000,$fn=fn); //ZX62D-B-5PA8 S2
translate([13.118,4.453])circle(r=0.350000,$fn=fn); //ZX62D-B-5PA8 S3
translate([17.968,4.453])circle(r=0.350000,$fn=fn); //ZX62D-B-5PA8 S4
} // end Print part holes
} //end difference() PCB - Holes
//Print a little cross in PCB holes
} //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([3.016,3.016]) circle(r=2.921,$fn=fn);
translate([28.416,3.016]) circle(r=2.921,$fn=fn);
translate([3.016,55.086]) circle(r=2.921,$fn=fn);
translate([28.416,55.086]) circle(r=2.921,$fn=fn);
translate([2.540,11.430]) circle(r=0.889,$fn=fn);
translate([2.540,13.970]) circle(r=0.889,$fn=fn);
translate([2.540,16.510]) circle(r=0.889,$fn=fn);
translate([2.540,19.050]) circle(r=0.889,$fn=fn);
translate([2.540,21.590]) circle(r=0.889,$fn=fn);
translate([2.540,24.130]) circle(r=0.889,$fn=fn);
translate([2.540,26.670]) circle(r=0.889,$fn=fn);
translate([2.540,29.210]) circle(r=0.889,$fn=fn);
translate([2.540,31.750]) circle(r=0.889,$fn=fn);
translate([2.540,34.290]) circle(r=0.889,$fn=fn);
translate([2.540,36.830]) circle(r=0.889,$fn=fn);
translate([2.540,39.370]) circle(r=0.889,$fn=fn);
translate([2.540,41.910]) circle(r=0.889,$fn=fn);
translate([2.540,44.450]) circle(r=0.889,$fn=fn);
translate([2.540,46.990]) circle(r=0.889,$fn=fn);
translate([29.210,11.430]) circle(r=0.889,$fn=fn);
translate([29.210,13.970]) circle(r=0.889,$fn=fn);
translate([29.210,16.510]) circle(r=0.889,$fn=fn);
translate([29.210,19.050]) circle(r=0.889,$fn=fn);
translate([29.210,21.590]) circle(r=0.889,$fn=fn);
translate([29.210,24.130]) circle(r=0.889,$fn=fn);
translate([29.210,26.670]) circle(r=0.889,$fn=fn);
translate([29.210,29.210]) circle(r=0.889,$fn=fn);
translate([29.210,31.750]) circle(r=0.889,$fn=fn);
translate([29.210,34.290]) circle(r=0.889,$fn=fn);
translate([29.210,36.830]) circle(r=0.889,$fn=fn);
translate([29.210,39.370]) circle(r=0.889,$fn=fn);
translate([29.210,41.910]) circle(r=0.889,$fn=fn);
translate([29.210,44.450]) circle(r=0.889,$fn=fn);
translate([29.210,46.990]) circle(r=0.889,$fn=fn);
translate([6.676,6.000]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 1
translate([8.276,6.000]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 2
translate([6.676,2.000]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 3
translate([8.276,2.000]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 4
translate([22.771,6.000]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 1
translate([24.371,6.000]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 2
translate([22.771,2.000]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 3
translate([24.371,2.000]) rotate([0,0,90.000]) square([1.000,1.000], center = true); //KMR2 4
translate([7.740,49.268])square([2.000,1.200], center = true); //ESP-12 1
translate([7.740,47.268])square([2.000,1.200], center = true); //ESP-12 2
translate([7.740,45.268])square([2.000,1.200], center = true); //ESP-12 3
translate([7.740,43.268])square([2.000,1.200], center = true); //ESP-12 4
translate([7.740,41.268])square([2.000,1.200], center = true); //ESP-12 5
translate([7.740,39.268])square([2.000,1.200], center = true); //ESP-12 6
translate([7.740,37.267])square([2.000,1.200], center = true); //ESP-12 7
translate([7.740,35.267])square([2.000,1.200], center = true); //ESP-12 8
translate([22.740,35.267])square([2.000,1.200], center = true); //ESP-12 9
translate([22.740,37.267])square([2.000,1.200], center = true); //ESP-12 10
translate([22.740,39.268])square([2.000,1.200], center = true); //ESP-12 11
translate([22.740,41.268])square([2.000,1.200], center = true); //ESP-12 12
translate([22.740,43.268])square([2.000,1.200], center = true); //ESP-12 13
translate([22.740,45.268])square([2.000,1.200], center = true); //ESP-12 14
translate([22.740,47.268])square([2.000,1.200], center = true); //ESP-12 15
translate([22.740,49.268])square([2.000,1.200], center = true); //ESP-12 16
translate([14.243,4.228]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 1
translate([14.893,4.228]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 2
translate([15.543,4.228]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 3
translate([16.192,4.228]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 4
translate([16.843,4.228]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 5
translate([19.143,1.552]) circle(r=1.125,$fn=fn);
translate([11.943,1.552]) circle(r=1.125,$fn=fn);
translate([13.118,4.453]) circle(r=0.604,$fn=fn);
translate([17.968,4.453]) circle(r=0.604,$fn=fn);
}
translate([3.016,3.016]) circle(r=1.600,$fn=fn);
translate([28.416,3.016]) circle(r=1.600,$fn=fn);
translate([3.016,55.086]) circle(r=1.600,$fn=fn);
translate([28.416,55.086]) circle(r=1.600,$fn=fn);
translate([2.540,11.430]) circle(r=0.508,$fn=fn);
translate([2.540,13.970]) circle(r=0.508,$fn=fn);
translate([2.540,16.510]) circle(r=0.508,$fn=fn);
translate([2.540,19.050]) circle(r=0.508,$fn=fn);
translate([2.540,21.590]) circle(r=0.508,$fn=fn);
translate([2.540,24.130]) circle(r=0.508,$fn=fn);
translate([2.540,26.670]) circle(r=0.508,$fn=fn);
translate([2.540,29.210]) circle(r=0.508,$fn=fn);
translate([2.540,31.750]) circle(r=0.508,$fn=fn);
translate([2.540,34.290]) circle(r=0.508,$fn=fn);
translate([2.540,36.830]) circle(r=0.508,$fn=fn);
translate([2.540,39.370]) circle(r=0.508,$fn=fn);
translate([2.540,41.910]) circle(r=0.508,$fn=fn);
translate([2.540,44.450]) circle(r=0.508,$fn=fn);
translate([2.540,46.990]) circle(r=0.508,$fn=fn);
translate([29.210,11.430]) circle(r=0.508,$fn=fn);
translate([29.210,13.970]) circle(r=0.508,$fn=fn);
translate([29.210,16.510]) circle(r=0.508,$fn=fn);
translate([29.210,19.050]) circle(r=0.508,$fn=fn);
translate([29.210,21.590]) circle(r=0.508,$fn=fn);
translate([29.210,24.130]) circle(r=0.508,$fn=fn);
translate([29.210,26.670]) circle(r=0.508,$fn=fn);
translate([29.210,29.210]) circle(r=0.508,$fn=fn);
translate([29.210,31.750]) circle(r=0.508,$fn=fn);
translate([29.210,34.290]) circle(r=0.508,$fn=fn);
translate([29.210,36.830]) circle(r=0.508,$fn=fn);
translate([29.210,39.370]) circle(r=0.508,$fn=fn);
translate([29.210,41.910]) circle(r=0.508,$fn=fn);
translate([29.210,44.450]) circle(r=0.508,$fn=fn);
translate([29.210,46.990]) circle(r=0.508,$fn=fn);
translate([19.143,1.552]) circle(r=0.750,$fn=fn);
translate([11.943,1.552]) circle(r=0.750,$fn=fn);
translate([13.118,4.453]) circle(r=0.350,$fn=fn);
translate([17.968,4.453]) 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([3.016,3.016]) circle(r=2.921,$fn=fn);
translate([28.416,3.016]) circle(r=2.921,$fn=fn);
translate([3.016,55.086]) circle(r=2.921,$fn=fn);
translate([28.416,55.086]) circle(r=2.921,$fn=fn);
translate([2.540,11.430]) circle(r=0.889,$fn=fn);
translate([2.540,13.970]) circle(r=0.889,$fn=fn);
translate([2.540,16.510]) circle(r=0.889,$fn=fn);
translate([2.540,19.050]) circle(r=0.889,$fn=fn);
translate([2.540,21.590]) circle(r=0.889,$fn=fn);
translate([2.540,24.130]) circle(r=0.889,$fn=fn);
translate([2.540,26.670]) circle(r=0.889,$fn=fn);
translate([2.540,29.210]) circle(r=0.889,$fn=fn);
translate([2.540,31.750]) circle(r=0.889,$fn=fn);
translate([2.540,34.290]) circle(r=0.889,$fn=fn);
translate([2.540,36.830]) circle(r=0.889,$fn=fn);
translate([2.540,39.370]) circle(r=0.889,$fn=fn);
translate([2.540,41.910]) circle(r=0.889,$fn=fn);
translate([2.540,44.450]) circle(r=0.889,$fn=fn);
translate([2.540,46.990]) circle(r=0.889,$fn=fn);
translate([29.210,11.430]) circle(r=0.889,$fn=fn);
translate([29.210,13.970]) circle(r=0.889,$fn=fn);
translate([29.210,16.510]) circle(r=0.889,$fn=fn);
translate([29.210,19.050]) circle(r=0.889,$fn=fn);
translate([29.210,21.590]) circle(r=0.889,$fn=fn);
translate([29.210,24.130]) circle(r=0.889,$fn=fn);
translate([29.210,26.670]) circle(r=0.889,$fn=fn);
translate([29.210,29.210]) circle(r=0.889,$fn=fn);
translate([29.210,31.750]) circle(r=0.889,$fn=fn);
translate([29.210,34.290]) circle(r=0.889,$fn=fn);
translate([29.210,36.830]) circle(r=0.889,$fn=fn);
translate([29.210,39.370]) circle(r=0.889,$fn=fn);
translate([29.210,41.910]) circle(r=0.889,$fn=fn);
translate([29.210,44.450]) circle(r=0.889,$fn=fn);
translate([29.210,46.990]) circle(r=0.889,$fn=fn);
translate([19.143,1.552]) circle(r=1.125,$fn=fn);
translate([11.943,1.552]) circle(r=1.125,$fn=fn);
translate([13.118,4.453]) circle(r=0.604,$fn=fn);
translate([17.968,4.453]) circle(r=0.604,$fn=fn);
}
translate([3.016,3.016]) circle(r=1.600,$fn=fn);
translate([28.416,3.016]) circle(r=1.600,$fn=fn);
translate([3.016,55.086]) circle(r=1.600,$fn=fn);
translate([28.416,55.086]) circle(r=1.600,$fn=fn);
translate([2.540,11.430]) circle(r=0.508,$fn=fn);
translate([2.540,13.970]) circle(r=0.508,$fn=fn);
translate([2.540,16.510]) circle(r=0.508,$fn=fn);
translate([2.540,19.050]) circle(r=0.508,$fn=fn);
translate([2.540,21.590]) circle(r=0.508,$fn=fn);
translate([2.540,24.130]) circle(r=0.508,$fn=fn);
translate([2.540,26.670]) circle(r=0.508,$fn=fn);
translate([2.540,29.210]) circle(r=0.508,$fn=fn);
translate([2.540,31.750]) circle(r=0.508,$fn=fn);
translate([2.540,34.290]) circle(r=0.508,$fn=fn);
translate([2.540,36.830]) circle(r=0.508,$fn=fn);
translate([2.540,39.370]) circle(r=0.508,$fn=fn);
translate([2.540,41.910]) circle(r=0.508,$fn=fn);
translate([2.540,44.450]) circle(r=0.508,$fn=fn);
translate([2.540,46.990]) circle(r=0.508,$fn=fn);
translate([29.210,11.430]) circle(r=0.508,$fn=fn);
translate([29.210,13.970]) circle(r=0.508,$fn=fn);
translate([29.210,16.510]) circle(r=0.508,$fn=fn);
translate([29.210,19.050]) circle(r=0.508,$fn=fn);
translate([29.210,21.590]) circle(r=0.508,$fn=fn);
translate([29.210,24.130]) circle(r=0.508,$fn=fn);
translate([29.210,26.670]) circle(r=0.508,$fn=fn);
translate([29.210,29.210]) circle(r=0.508,$fn=fn);
translate([29.210,31.750]) circle(r=0.508,$fn=fn);
translate([29.210,34.290]) circle(r=0.508,$fn=fn);
translate([29.210,36.830]) circle(r=0.508,$fn=fn);
translate([29.210,39.370]) circle(r=0.508,$fn=fn);
translate([29.210,41.910]) circle(r=0.508,$fn=fn);
translate([29.210,44.450]) circle(r=0.508,$fn=fn);
translate([29.210,46.990]) circle(r=0.508,$fn=fn);
translate([19.143,1.552]) circle(r=0.750,$fn=fn);
translate([11.943,1.552]) circle(r=0.750,$fn=fn);
translate([13.118,4.453]) circle(r=0.350,$fn=fn);
translate([17.968,4.453]) circle(r=0.350,$fn=fn);
}
color("white",0.7) union() {
translate([3.810,46.355,board_thickness-0.025])linear_extrude(0.05) text("A0", font = "Liberation Sans", size = 1.295);
translate([4.128,43.815,board_thickness-0.025])linear_extrude(0.05) text("G", font = "Liberation Sans", size = 1.295);
translate([3.810,41.275,board_thickness-0.025])linear_extrude(0.05) text("VV", font = "Liberation Sans", size = 1.295);
translate([3.810,38.735,board_thickness-0.025])linear_extrude(0.05) text("S3", font = "Liberation Sans", size = 1.295);
translate([3.810,36.195,board_thickness-0.025])linear_extrude(0.05) text("S2", font = "Liberation Sans", size = 1.295);
translate([3.810,33.655,board_thickness-0.025])linear_extrude(0.05) text("S1", font = "Liberation Sans", size = 1.295);
translate([3.810,31.115,board_thickness-0.025])linear_extrude(0.05) text("SC", font = "Liberation Sans", size = 1.295);
translate([3.810,28.575,board_thickness-0.025])linear_extrude(0.05) text("S0", font = "Liberation Sans", size = 1.295);
translate([3.810,26.035,board_thickness-0.025])linear_extrude(0.05) text("SK", font = "Liberation Sans", size = 1.295);
translate([4.128,23.495,board_thickness-0.025])linear_extrude(0.05) text("G", font = "Liberation Sans", size = 1.295);
translate([3.810,20.955,board_thickness-0.025])linear_extrude(0.05) text("3V", font = "Liberation Sans", size = 1.295);
translate([3.810,18.415,board_thickness-0.025])linear_extrude(0.05) text("EN", font = "Liberation Sans", size = 1.295);
translate([3.810,15.875,board_thickness-0.025])linear_extrude(0.05) text("RST", font = "Liberation Sans", size = 1.295);
translate([4.128,13.335,board_thickness-0.025])linear_extrude(0.05) text("G", font = "Liberation Sans", size = 1.295);
translate([3.810,10.795,board_thickness-0.025])linear_extrude(0.05) text("VIN", font = "Liberation Sans", size = 1.295);
translate([10.478,3.175,board_thickness-0.025])rotate([0,0,90])linear_extrude(0.05) text("RST", font = "Liberation Sans", size = 1.295);
translate([11.430,6.033,board_thickness-0.025])linear_extrude(0.05) text("LOL1n", font = "Liberation Sans", size = 1.295);
translate([21.908,0.318,board_thickness-0.025])rotate([0,0,90])linear_extrude(0.05) text("FLASH", font = "Liberation Sans", size = 1.295);
translate([25.718,10.795,board_thickness-0.025])linear_extrude(0.05) text("3V", font = "Liberation Sans", size = 1.295);
translate([26.035,13.335,board_thickness-0.025])linear_extrude(0.05) text("G", font = "Liberation Sans", size = 1.295);
translate([25.718,15.875,board_thickness-0.025])linear_extrude(0.05) text("TX", font = "Liberation Sans", size = 1.295);
translate([25.718,18.415,board_thickness-0.025])linear_extrude(0.05) text("RX", font = "Liberation Sans", size = 1.295);
translate([25.718,20.955,board_thickness-0.025])linear_extrude(0.05) text("D8", font = "Liberation Sans", size = 1.295);
translate([25.718,23.495,board_thickness-0.025])linear_extrude(0.05) text("D7", font = "Liberation Sans", size = 1.295);
translate([25.718,26.035,board_thickness-0.025])linear_extrude(0.05) text("D6", font = "Liberation Sans", size = 1.295);
translate([25.718,28.575,board_thickness-0.025])linear_extrude(0.05) text("D5", font = "Liberation Sans", size = 1.295);
translate([25.718,36.195,board_thickness-0.025])linear_extrude(0.05) text("D4", font = "Liberation Sans", size = 1.295);
translate([25.718,38.735,board_thickness-0.025])linear_extrude(0.05) text("D3", font = "Liberation Sans", size = 1.295);
translate([25.718,41.275,board_thickness-0.025])linear_extrude(0.05) text("D2", font = "Liberation Sans", size = 1.295);
translate([25.718,43.815,board_thickness-0.025])linear_extrude(0.05) text("D1", font = "Liberation Sans", size = 1.295);
translate([25.718,46.355,board_thickness-0.025])linear_extrude(0.05) text("D0", font = "Liberation Sans", size = 1.295);
translate([26.035,31.115,board_thickness-0.025])linear_extrude(0.05) text("G", font = "Liberation Sans", size = 1.295);
translate([25.718,33.655,board_thickness-0.025])linear_extrude(0.05) text("3V", font = "Liberation Sans", size = 1.295);
translate([6.350,46.355,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("A0", font = "Liberation Sans", size = 1.295);
translate([6.033,43.815,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("G", font = "Liberation Sans", size = 1.295);
translate([6.350,41.275,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("VV", font = "Liberation Sans", size = 1.295);
translate([6.350,38.735,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("S3", font = "Liberation Sans", size = 1.295);
translate([6.350,36.195,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("S2", font = "Liberation Sans", size = 1.295);
translate([6.350,33.655,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("S1", font = "Liberation Sans", size = 1.295);
translate([6.350,31.115,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("SC", font = "Liberation Sans", size = 1.295);
translate([6.350,28.575,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("S0", font = "Liberation Sans", size = 1.295);
translate([6.350,26.035,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("SK", font = "Liberation Sans", size = 1.295);
translate([6.033,23.495,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("G", font = "Liberation Sans", size = 1.295);
translate([6.350,20.955,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("3V", font = "Liberation Sans", size = 1.295);
translate([6.350,18.415,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("EN", font = "Liberation Sans", size = 1.295);
translate([7.303,15.875,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("RST", font = "Liberation Sans", size = 1.295);
translate([5.715,13.335,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("G", font = "Liberation Sans", size = 1.295);
translate([6.985,10.795,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("VIN", font = "Liberation Sans", size = 1.295);
translate([27.623,10.795,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("3V", font = "Liberation Sans", size = 1.295);
translate([27.305,13.335,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("G", font = "Liberation Sans", size = 1.295);
translate([27.623,15.875,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("TX", font = "Liberation Sans", size = 1.295);
translate([27.623,18.415,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("RX", font = "Liberation Sans", size = 1.295);
translate([27.623,20.955,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("D8", font = "Liberation Sans", size = 1.295);
translate([27.623,23.495,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("D7", font = "Liberation Sans", size = 1.295);
translate([27.623,26.035,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("D6", font = "Liberation Sans", size = 1.295);
translate([27.623,28.575,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("D5", font = "Liberation Sans", size = 1.295);
translate([27.623,36.195,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("D4", font = "Liberation Sans", size = 1.295);
translate([27.623,38.735,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("D3", font = "Liberation Sans", size = 1.295);
translate([27.623,41.275,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("D2", font = "Liberation Sans", size = 1.295);
translate([27.940,43.815,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("D1", font = "Liberation Sans", size = 1.295);
translate([27.940,46.355,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("D0", font = "Liberation Sans", size = 1.295);
translate([27.305,31.115,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("G", font = "Liberation Sans", size = 1.295);
translate([27.623,33.655,0+0.025])rotate([180,0,180])linear_extrude(0.05) text("3V", font = "Liberation Sans", size = 1.295);
} //end text union()
union(){ // parts
translate([3.016,3.016,board_thickness])3_2_PAD(); //H1 MOUNT-PAD-ROUND3.2
translate([28.416,3.016,board_thickness])3_2_PAD(); //H2 MOUNT-PAD-ROUND3.2
translate([3.016,55.086,board_thickness])3_2_PAD(); //H3 MOUNT-PAD-ROUND3.2
translate([28.416,55.086,board_thickness])3_2_PAD(); //H4 MOUNT-PAD-ROUND3.2
translate([2.540,29.210,0])rotate([180,0,90])1X15_CB(); //JP1
translate([29.210,29.210,0])rotate([180,0,90])1X15_CB(); //JP2
translate([7.476,4.000,board_thickness])rotate([0,0,90])KMR2(); //SW1 SPST_TACT-KMR2
translate([23.571,4.000,board_thickness])rotate([0,0,90])KMR2(); //SW2 SPST_TACT-KMR2
translate([15.240,44.768,board_thickness])ESP_12(); //X1
translate([15.543,-0.598,board_thickness])rotate([0,0,90])ZX62D_B_5PA8(); //X2 ZX62D-B-5PA8
}
} //endunion()
module 3_2_PAD() //H1 MOUNT-PAD-ROUND3.2
{
union();
}
module 1X15_CB()
{
LSTB(n=15,m=1);
}
module KMR2() { color("DarkSlateGray") cylinder(2.1,0.9,0.9, $fn=10); color("silver") translate([-2,-1.5,0]) cube([4,3,1.5]);// Button
}
module ZX62D_B_5PA8() // MICRO USB
{
translate([5,0,0]) rotate([-90,180,90]) union()
{
color("silver") union() { difference()
{
translate([-3.80,0,0])linear_extrude(5) polygon([[7.6,1.1],[7.6,1.9],[6.9,2.6],[0.7,2.6],[0,1.9],[0,1.1],[1.1,0],[6.5,0]]);
translate([-3.8+0.3,0.3,1]) linear_extrude(4.5) polygon([[0,0.9],[0,1.5],[0.5,2],[6.5,2],[7,1.5],[7,0.9],[6.1,0],[0.9,0]]);
}
translate([-3,2.3,5]) rotate([-30,0,0]) cube([6,0.3,0.6]);
translate([2.7,0.3,5]) rotate([-30,0,180]) cube([5.4,0.3,0.6]);
translate([-3.8+0.3,1.1,5]) rotate([-30,0,90]) cube([0.8,0.3,0.6]);
translate([+3.8-0.3,1.9,5]) rotate([-30,0,-90]) cube([0.8,0.3,0.6]);
}
color("DarkSlateGray") translate([-1.9,1.3,0.4]) cube([3.8,0.6,3.8]);
}
}
module ESP_12(){ // Eagle Adafruit
board_thicknessA = 1.000000;
eta = 0.2;
rotate([0,0,90]) translate([-12.065+1,-8.09625,0]) union(){ // PCB whith parts and text
color("DarkSlateGray")linear_extrude(height=board_thicknessA,center=false, convexity=10)
polygon(points = [[0,16.192500],[24.13,16.1925],[24.13,0],[0,0]]); //Board
color("Goldenrod",0.7) translate([0,0,board_thicknessA-0.017]) linear_extrude(height=0.035,center=false, convexity=10) difference() {
union() {
translate([17.463,3.004]) rotate([0,0,270.000]) square([1.092,1.397], center = true); //LED0805 A
translate([17.463,1.124]) rotate([0,0,270.000]) square([1.092,1.397], center = true); //LED0805 K
translate([1.558,1.318])square([1.270,2.540], center = true); //SMD1,27-2,54 1
translate([3.558,1.318])square([1.270,2.540], center = true); //SMD1,27-2,54 1
translate([5.558,1.318])square([1.270,2.540], center = true); //SMD1,27-2,54 1
translate([7.558,1.318])square([1.270,2.540], center = true); //SMD1,27-2,54 1
translate([9.558,1.318])square([1.270,2.540], center = true); //SMD1,27-2,54 1
translate([11.558,1.318])square([1.270,2.540], center = true); //SMD1,27-2,54 1
translate([13.558,1.318])square([1.270,2.540], center = true); //SMD1,27-2,54 1
translate([15.558,1.318])square([1.270,2.540], center = true); //SMD1,27-2,54 1
translate([15.558,14.953])square([1.270,2.540], center = true); //SMD1,27-2,54 1
translate([13.558,14.953])square([1.270,2.540], center = true); //SMD1,27-2,54 1
translate([11.558,14.953])square([1.270,2.540], center = true); //SMD1,27-2,54 1
translate([9.558,14.953])square([1.270,2.540], center = true); //SMD1,27-2,54 1
translate([7.558,14.953])square([1.270,2.540], center = true); //SMD1,27-2,54 1
translate([5.558,14.953])square([1.270,2.540], center = true); //SMD1,27-2,54 1
translate([3.558,14.953])square([1.270,2.540], center = true); //SMD1,27-2,54 1
translate([1.558,14.953])square([1.270,2.540], center = true); //SMD1,27-2,54 1
EagleWire([18.891,0.635],[23.336,0.635],width=0.610,$fn=8);
EagleWire([23.336,0.635],[23.336,3.334],width=0.610,$fn=8);
EagleWire([23.336,3.334],[20.320,3.334],width=0.610,$fn=8);
EagleWire([20.320,3.334],[20.320,6.033],width=0.610,$fn=8);
EagleWire([20.320,6.033],[23.336,6.033],width=0.610,$fn=8);
EagleWire([23.336,6.033],[23.336,8.731],width=0.610,$fn=8);
EagleWire([23.336,8.731],[20.320,8.731],width=0.610,$fn=8);
EagleWire([20.320,8.731],[20.320,11.430],width=0.610,$fn=8);
EagleWire([20.320,11.430],[23.336,11.430],width=0.610,$fn=8);
EagleWire([23.336,11.430],[23.336,13.494],width=0.610,$fn=8);
EagleWire([23.336,13.494],[23.336,15.558],width=0.610,$fn=8);
EagleWire([23.336,15.558],[18.574,15.558],width=0.610,$fn=8);
EagleWire([23.336,13.494],[18.574,13.494],width=0.610,$fn=8);
translate([1.510,15.000]) circle(r=0.453,$fn=fn);
translate([3.510,15.000]) circle(r=0.453,$fn=fn);
translate([5.510,15.000]) circle(r=0.453,$fn=fn);
translate([7.510,15.000]) circle(r=0.453,$fn=fn);
translate([9.510,15.000]) circle(r=0.453,$fn=fn);
translate([11.510,15.000]) circle(r=0.453,$fn=fn);
translate([13.510,15.000]) circle(r=0.453,$fn=fn);
translate([15.510,15.000]) circle(r=0.453,$fn=fn);
translate([1.525,1.143]) circle(r=0.453,$fn=fn);
translate([3.525,1.143]) circle(r=0.453,$fn=fn);
translate([5.525,1.143]) circle(r=0.453,$fn=fn);
translate([7.525,1.143]) circle(r=0.453,$fn=fn);
translate([9.525,1.143]) circle(r=0.453,$fn=fn);
translate([11.525,1.143]) circle(r=0.453,$fn=fn);
translate([13.525,1.143]) circle(r=0.453,$fn=fn);
translate([15.525,1.143]) circle(r=0.453,$fn=fn);
}
}
color("Goldenrod",0.7) translate([0,0,-0.017]) linear_extrude(height=0.035,center=false, convexity=10) difference() {
union() {
translate([1.510,15.000]) circle(r=0.453,$fn=fn);
translate([3.510,15.000]) circle(r=0.453,$fn=fn);
translate([5.510,15.000]) circle(r=0.453,$fn=fn);
translate([7.510,15.000]) circle(r=0.453,$fn=fn);
translate([9.510,15.000]) circle(r=0.453,$fn=fn);
translate([11.510,15.000]) circle(r=0.453,$fn=fn);
translate([13.510,15.000]) circle(r=0.453,$fn=fn);
translate([15.510,15.000]) circle(r=0.453,$fn=fn);
translate([1.525,1.143]) circle(r=0.453,$fn=fn);
translate([3.525,1.143]) circle(r=0.453,$fn=fn);
translate([5.525,1.143]) circle(r=0.453,$fn=fn);
translate([7.525,1.143]) circle(r=0.453,$fn=fn);
translate([9.525,1.143]) circle(r=0.453,$fn=fn);
translate([11.525,1.143]) circle(r=0.453,$fn=fn);
translate([13.525,1.143]) circle(r=0.453,$fn=fn);
translate([15.525,1.143]) circle(r=0.453,$fn=fn);
}
}
union(){ // parts
translate([8.731,8.096,board_thicknessA])rotate([0,0,90])SHIELD12X15(); //CA1 SHIELD12X15
translate([17.463,2.064,board_thicknessA])rotate([0,0,270])LED0805(); //LED1 LED0805
}
} //endunion()
module SHIELD12X15() //CA1 SHIELD12X15
{
rotate([0,0,270])
{
color ("silver")
linear_extrude(2.3) translate([-7.500000,-6.000000,0]) square([ 15.000000,12.000000]); //Board
}
}
module LED0805(Enable = false)
{
rotate([0,0,90])
{
color("gray") translate([0,0,0.125/2]) cube([1.2,2,0.125], center = true);
if (!Enable)
{
color("green") linear_extrude(0.65,scale = 0.9) square([1.2,1.8],center = true);
}
else
{
color("lightgreen") linear_extrude(0.65,scale = 0.9) square([1.2,1.8],center = true);
}
}
}
} // end ESP12
} // end module
module EagleWire(start,end,width=0.4,$fn=5) // hull() n.a. in FreeCAD Importer
{
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)]];
function winkel(a,b=[0,0]) = atan2(a[1]-b[1],a[0]-b[0]);
polygon(concat(bogen(point=start, r=width/2 ,phase = winkel(start,end)-90, winkel = 180, $fn=$fn), bogen(point=end, r=width/2 ,phase = winkel(end,start)-90, winkel = 180, $fn=$fn)));
}
module make_line_of(pitch, count)
{
for (a = [0 : count - 1]) {
pos = a*pitch;
translate([pos, 0, 0])
children();
}
}
module offset_square(size = [1,1], r = 0, delta = 0, chamfer=false, center = false, $fn = Detailgrad) // offset() n.a. in FreeCAD Importer
{
num = round($fn/4);
plus = delta*0.41425;
function bogen(point=[0,0],phase = 0) = [for (i=[0:num], x=i*90/num) [point[0]+r*sin(x+phase),point[1]+r*cos(x+phase)]];
function poli_round() = concat(bogen([0,0],180),bogen([0,size[1]],-90),bogen([size[0],size[1]],0),bogen([size[0],0],90));
function poli_phase() = concat([[0-delta,0-plus],[0-delta,size[1]+plus],[0-plus,size[1]+delta],[size[0]+plus,size[1]+delta],[size[0]+delta,size[1]+plus],[size[0]+delta,0-plus],[size[0]+plus,-delta],[0-plus,-delta]]);
if (r==0)
{
if (chamfer)
{
if (center)
translate([-size[0]/2,-size[1]/2]) polygon(poli_phase());
else
polygon(poli_phase());
}
else
{
if (center) square([size[0]+2*delta,size[1]+2*delta], center = center);
else
translate([-delta,-delta]) square([size[0]+2*delta,size[1]+2*delta], center = center);
}
}
else
{
if (center)
translate([-size[0]/2,-size[1]/2]) polygon(poli_round());
else
polygon(poli_round());
}
}
module LSTB(n=20,m=1)
{
offs = 0.9;
height = 11.6;
pitch = 2.54;
pin = 0.6;
translate([-(pitch/2)*n+offs,-(pitch/2)*m+offs,0]) make_line_of(pitch, n) color("lightgreen") linear_extrude(2.6) offset_square(size=[pitch-2*offs,pitch*m-2*offs], delta = offs, chamfer=true);
translate([-(pitch/2)*(n-1),-(pitch/2)*(m-1),0]) make_line_of(pitch, n) color("Silver") translate([0,0,8.7-height/2]) cube([pin,pin,height], center = true);
if (m>1) translate([-(pitch/2)*(n-1),+(pitch/2)*(m-1),0]) make_line_of(pitch, n) color("Silver") translate([0,0,8.7-height/2]) cube([pin,pin,height], center = true);
if (m>2) translate([-(pitch/2)*(n-1),0,0]) make_line_of(pitch, n) color("Silver") translate([0,0,8.7-height/2]) cube([pin,pin,height], center = true);
}
NodeMCU_Lua_Lolin(); //Show module
//Created by generate-scad.ulp version 1.1

765
example/Pi-Zero-W.scad Executable file
View file

@ -0,0 +1,765 @@
Detailgrad = 15;
$fn=Detailgrad;
module Pi_Zero_W(){
board_thickness = 1.600000;
eta = 0.2;
board_polygon = [[61.912500,0.000000],[62.161606,0.009784],[62.409178,0.039088],[62.653688,0.087725],[62.893628,0.155394],[63.127519,0.241681],[63.353919,0.346053],[63.571431,0.467866],[63.778716,0.606369],[63.974497,0.760709],[64.157562,0.929934],[64.326788,1.113000],[64.481128,1.308781],[64.619631,1.516066],[64.741444,1.733578],[64.845816,1.959978],[64.932103,2.193869],[64.999772,2.433809],[65.048409,2.678319],[65.077713,2.925891],[65.087500,3.175000],[65.087500,26.987500],[65.066725,27.232813],[65.027928,27.475928],[64.971312,27.715522],[64.897191,27.950291],[64.805966,28.178956],[64.698131,28.400278],[64.574275,28.613044],[64.435075,28.816106],[64.281281,29.008350],[64.113737,29.188738],[63.933350,29.356281],[63.741106,29.510075],[63.538044,29.649275],[63.325278,29.773131],[63.103956,29.880966],[62.875291,29.972191],[62.640522,30.046313],[62.400928,30.102928],[62.157813,30.141725],[61.912500,30.162500],[3.175000,30.162500],[2.925891,30.152712],[2.678319,30.123409],[2.433809,30.074772],[2.193869,30.007103],[1.959978,29.920816],[1.733578,29.816444],[1.516066,29.694631],[1.308781,29.556128],[1.113000,29.401788],[0.929934,29.232563],[0.760709,29.049497],[0.606369,28.853716],[0.467866,28.646431],[0.346053,28.428919],[0.241681,28.202519],[0.155394,27.968628],[0.087725,27.728688],[0.039088,27.484178],[0.009784,27.236606],[0.000000,26.987500],[0.000000,3.175000],[0.010497,2.909434],[0.043113,2.645672],[0.097622,2.385550],[0.173641,2.130884],[0.270638,1.883447],[0.387944,1.644963],[0.524734,1.417097],[0.680056,1.201441],[0.852831,0.999491],[1.041850,0.812659],[1.245797,0.642247],[1.463250,0.489447],[1.692691,0.355319],[1.932525,0.240797],[2.181075,0.146687],[2.436609,0.073638],[2.697347,0.022163],[2.961472,-0.007378],[3.227141,-0.014781],[3.492500,0.000000]];
board_size = [65.087500,30.162500];
fn = Detailgrad;
board_origin = [0.000000,0.000000];
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([3.493,3.493]) circle(r=1.300000,$fn=fn); //Hole
translate([3.493,26.670]) circle(r=1.300000,$fn=fn); //Hole
translate([61.595,3.493]) circle(r=1.300000,$fn=fn); //Hole
translate([61.595,26.670]) circle(r=1.300000,$fn=fn); //Hole
if (Detailgrad > 9) { // Print part holes
translate([8.572,25.400])circle(r=0.508000,$fn=fn); //MA20-2 1
translate([8.572,27.940])circle(r=0.508000,$fn=fn); //MA20-2 2
translate([11.113,25.400])circle(r=0.508000,$fn=fn); //MA20-2 3
translate([11.113,27.940])circle(r=0.508000,$fn=fn); //MA20-2 4
translate([13.652,25.400])circle(r=0.508000,$fn=fn); //MA20-2 5
translate([13.652,27.940])circle(r=0.508000,$fn=fn); //MA20-2 6
translate([16.192,25.400])circle(r=0.508000,$fn=fn); //MA20-2 7
translate([16.192,27.940])circle(r=0.508000,$fn=fn); //MA20-2 8
translate([18.733,25.400])circle(r=0.508000,$fn=fn); //MA20-2 9
translate([18.733,27.940])circle(r=0.508000,$fn=fn); //MA20-2 10
translate([21.273,25.400])circle(r=0.508000,$fn=fn); //MA20-2 11
translate([21.273,27.940])circle(r=0.508000,$fn=fn); //MA20-2 12
translate([23.813,25.400])circle(r=0.508000,$fn=fn); //MA20-2 13
translate([23.813,27.940])circle(r=0.508000,$fn=fn); //MA20-2 14
translate([26.353,25.400])circle(r=0.508000,$fn=fn); //MA20-2 15
translate([26.353,27.940])circle(r=0.508000,$fn=fn); //MA20-2 16
translate([28.893,25.400])circle(r=0.508000,$fn=fn); //MA20-2 17
translate([28.893,27.940])circle(r=0.508000,$fn=fn); //MA20-2 18
translate([31.433,25.400])circle(r=0.508000,$fn=fn); //MA20-2 19
translate([31.433,27.940])circle(r=0.508000,$fn=fn); //MA20-2 20
translate([33.973,25.400])circle(r=0.508000,$fn=fn); //MA20-2 21
translate([33.973,27.940])circle(r=0.508000,$fn=fn); //MA20-2 22
translate([36.513,25.400])circle(r=0.508000,$fn=fn); //MA20-2 23
translate([36.513,27.940])circle(r=0.508000,$fn=fn); //MA20-2 24
translate([39.053,25.400])circle(r=0.508000,$fn=fn); //MA20-2 25
translate([39.053,27.940])circle(r=0.508000,$fn=fn); //MA20-2 26
translate([41.593,25.400])circle(r=0.508000,$fn=fn); //MA20-2 27
translate([41.593,27.940])circle(r=0.508000,$fn=fn); //MA20-2 28
translate([44.133,25.400])circle(r=0.508000,$fn=fn); //MA20-2 29
translate([44.133,27.940])circle(r=0.508000,$fn=fn); //MA20-2 30
translate([46.672,25.400])circle(r=0.508000,$fn=fn); //MA20-2 31
translate([46.672,27.940])circle(r=0.508000,$fn=fn); //MA20-2 32
translate([49.213,25.400])circle(r=0.508000,$fn=fn); //MA20-2 33
translate([49.213,27.940])circle(r=0.508000,$fn=fn); //MA20-2 34
translate([51.753,25.400])circle(r=0.508000,$fn=fn); //MA20-2 35
translate([51.753,27.940])circle(r=0.508000,$fn=fn); //MA20-2 36
translate([54.293,25.400])circle(r=0.508000,$fn=fn); //MA20-2 37
translate([54.293,27.940])circle(r=0.508000,$fn=fn); //MA20-2 38
translate([56.833,25.400])circle(r=0.508000,$fn=fn); //MA20-2 39
translate([56.833,27.940])circle(r=0.508000,$fn=fn); //MA20-2 40
translate([57.560,1.870])circle(r=0.750000,$fn=fn); //ZX62D-B-5PA8 S1
translate([50.360,1.870])circle(r=0.750000,$fn=fn); //ZX62D-B-5PA8 S2
translate([51.535,4.770])circle(r=0.350000,$fn=fn); //ZX62D-B-5PA8 S3
translate([56.385,4.770])circle(r=0.350000,$fn=fn); //ZX62D-B-5PA8 S4
translate([44.875,1.833])circle(r=0.750000,$fn=fn); //ZX62D-B-5PA8 S1
translate([37.675,1.833])circle(r=0.750000,$fn=fn); //ZX62D-B-5PA8 S2
translate([38.850,4.732])circle(r=0.350000,$fn=fn); //ZX62D-B-5PA8 S3
translate([43.700,4.732])circle(r=0.350000,$fn=fn); //ZX62D-B-5PA8 S4
} // end Print part holes
} //end difference() PCB - Holes
//Print a little cross in PCB holes
translate([3.493,3.493]) { polygon([[0,0],[-0.33,-0.33],[-0.33,0.33]]); polygon([[0,0],[0.33,0.33],[0.33,-0.33]]);} //Hole
translate([3.493,26.670]) { polygon([[0,0],[-0.33,-0.33],[-0.33,0.33]]); polygon([[0,0],[0.33,0.33],[0.33,-0.33]]);} //Hole
translate([61.595,3.493]) { polygon([[0,0],[-0.33,-0.33],[-0.33,0.33]]); polygon([[0,0],[0.33,0.33],[0.33,-0.33]]);} //Hole
translate([61.595,26.670]) { polygon([[0,0],[-0.33,-0.33],[-0.33,0.33]]); polygon([[0,0],[0.33,0.33],[0.33,-0.33]]);} //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([20.535,18.835])square([0.340,0.340], center = true); //FBGA-168 A1
translate([21.035,18.835])square([0.340,0.340], center = true); //FBGA-168 A2
translate([21.535,18.835])square([0.340,0.340], center = true); //FBGA-168 A3
translate([22.035,18.835])square([0.340,0.340], center = true); //FBGA-168 A4
translate([22.535,18.835])square([0.340,0.340], center = true); //FBGA-168 A5
translate([23.035,18.835])square([0.340,0.340], center = true); //FBGA-168 A6
translate([23.535,18.835])square([0.340,0.340], center = true); //FBGA-168 A7
translate([24.035,18.835])square([0.340,0.340], center = true); //FBGA-168 A8
translate([24.535,18.835])square([0.340,0.340], center = true); //FBGA-168 A9
translate([25.035,18.835])square([0.340,0.340], center = true); //FBGA-168 A10
translate([25.535,18.835])square([0.340,0.340], center = true); //FBGA-168 A11
translate([26.035,18.835])square([0.340,0.340], center = true); //FBGA-168 A12
translate([26.535,18.835])square([0.340,0.340], center = true); //FBGA-168 A13
translate([27.035,18.835])square([0.340,0.340], center = true); //FBGA-168 A14
translate([27.535,18.835])square([0.340,0.340], center = true); //FBGA-168 A15
translate([28.035,18.835])square([0.340,0.340], center = true); //FBGA-168 A16
translate([28.535,18.835])square([0.340,0.340], center = true); //FBGA-168 A17
translate([29.035,18.835])square([0.340,0.340], center = true); //FBGA-168 A18
translate([29.535,18.835])square([0.340,0.340], center = true); //FBGA-168 A19
translate([30.035,18.835])square([0.340,0.340], center = true); //FBGA-168 A20
translate([30.535,18.835])square([0.340,0.340], center = true); //FBGA-168 A21
translate([31.035,18.835])square([0.340,0.340], center = true); //FBGA-168 A22
translate([31.535,18.835])square([0.340,0.340], center = true); //FBGA-168 A23
translate([20.535,8.835])square([0.340,0.340], center = true); //FBGA-168 AA1
translate([21.035,8.835])square([0.340,0.340], center = true); //FBGA-168 AA2
translate([31.035,8.835])square([0.340,0.340], center = true); //FBGA-168 AA22
translate([31.535,8.835])square([0.340,0.340], center = true); //FBGA-168 AA23
translate([20.535,8.335])square([0.340,0.340], center = true); //FBGA-168 AB1
translate([21.035,8.335])square([0.340,0.340], center = true); //FBGA-168 AB2
translate([21.535,8.335])square([0.340,0.340], center = true); //FBGA-168 AB3
translate([22.035,8.335])square([0.340,0.340], center = true); //FBGA-168 AB4
translate([22.535,8.335])square([0.340,0.340], center = true); //FBGA-168 AB5
translate([23.035,8.335])square([0.340,0.340], center = true); //FBGA-168 AB6
translate([23.535,8.335])square([0.340,0.340], center = true); //FBGA-168 AB7
translate([24.035,8.335])square([0.340,0.340], center = true); //FBGA-168 AB8
translate([24.535,8.335])square([0.340,0.340], center = true); //FBGA-168 AB9
translate([25.035,8.335])square([0.340,0.340], center = true); //FBGA-168 AB10
translate([25.535,8.335])square([0.340,0.340], center = true); //FBGA-168 AB11
translate([26.035,8.335])square([0.340,0.340], center = true); //FBGA-168 AB12
translate([26.535,8.335])square([0.340,0.340], center = true); //FBGA-168 AB13
translate([27.035,8.335])square([0.340,0.340], center = true); //FBGA-168 AB14
translate([27.535,8.335])square([0.340,0.340], center = true); //FBGA-168 AB15
translate([28.035,8.335])square([0.340,0.340], center = true); //FBGA-168 AB16
translate([28.535,8.335])square([0.340,0.340], center = true); //FBGA-168 AB17
translate([29.035,8.335])square([0.340,0.340], center = true); //FBGA-168 AB18
translate([29.535,8.335])square([0.340,0.340], center = true); //FBGA-168 AB19
translate([30.035,8.335])square([0.340,0.340], center = true); //FBGA-168 AB20
translate([30.535,8.335])square([0.340,0.340], center = true); //FBGA-168 AB21
translate([31.035,8.335])square([0.340,0.340], center = true); //FBGA-168 AB22
translate([31.535,8.335])square([0.340,0.340], center = true); //FBGA-168 AB23
translate([20.535,7.835])square([0.340,0.340], center = true); //FBGA-168 AC1
translate([21.035,7.835])square([0.340,0.340], center = true); //FBGA-168 AC2
translate([21.535,7.835])square([0.340,0.340], center = true); //FBGA-168 AC3
translate([22.035,7.835])square([0.340,0.340], center = true); //FBGA-168 AC4
translate([22.535,7.835])square([0.340,0.340], center = true); //FBGA-168 AC5
translate([23.035,7.835])square([0.340,0.340], center = true); //FBGA-168 AC6
translate([23.535,7.835])square([0.340,0.340], center = true); //FBGA-168 AC7
translate([24.035,7.835])square([0.340,0.340], center = true); //FBGA-168 AC8
translate([24.535,7.835])square([0.340,0.340], center = true); //FBGA-168 AC9
translate([25.035,7.835])square([0.340,0.340], center = true); //FBGA-168 AC10
translate([25.535,7.835])square([0.340,0.340], center = true); //FBGA-168 AC11
translate([26.035,7.835])square([0.340,0.340], center = true); //FBGA-168 AC12
translate([26.535,7.835])square([0.340,0.340], center = true); //FBGA-168 AC13
translate([27.035,7.835])square([0.340,0.340], center = true); //FBGA-168 AC14
translate([27.535,7.835])square([0.340,0.340], center = true); //FBGA-168 AC15
translate([28.035,7.835])square([0.340,0.340], center = true); //FBGA-168 AC16
translate([28.535,7.835])square([0.340,0.340], center = true); //FBGA-168 AC17
translate([29.035,7.835])square([0.340,0.340], center = true); //FBGA-168 AC18
translate([29.535,7.835])square([0.340,0.340], center = true); //FBGA-168 AC19
translate([30.035,7.835])square([0.340,0.340], center = true); //FBGA-168 AC20
translate([30.535,7.835])square([0.340,0.340], center = true); //FBGA-168 AC21
translate([31.035,7.835])square([0.340,0.340], center = true); //FBGA-168 AC22
translate([31.535,7.835])square([0.340,0.340], center = true); //FBGA-168 AC23
translate([20.535,18.335])square([0.340,0.340], center = true); //FBGA-168 B1
translate([21.035,18.335])square([0.340,0.340], center = true); //FBGA-168 B2
translate([21.535,18.335])square([0.340,0.340], center = true); //FBGA-168 B3
translate([22.035,18.335])square([0.340,0.340], center = true); //FBGA-168 B4
translate([22.535,18.335])square([0.340,0.340], center = true); //FBGA-168 B5
translate([23.035,18.335])square([0.340,0.340], center = true); //FBGA-168 B6
translate([23.535,18.335])square([0.340,0.340], center = true); //FBGA-168 B7
translate([24.035,18.335])square([0.340,0.340], center = true); //FBGA-168 B8
translate([24.535,18.335])square([0.340,0.340], center = true); //FBGA-168 B9
translate([25.035,18.335])square([0.340,0.340], center = true); //FBGA-168 B10
translate([25.535,18.335])square([0.340,0.340], center = true); //FBGA-168 B11
translate([26.035,18.335])square([0.340,0.340], center = true); //FBGA-168 B12
translate([26.535,18.335])square([0.340,0.340], center = true); //FBGA-168 B13
translate([27.035,18.335])square([0.340,0.340], center = true); //FBGA-168 B14
translate([27.535,18.335])square([0.340,0.340], center = true); //FBGA-168 B15
translate([28.035,18.335])square([0.340,0.340], center = true); //FBGA-168 B16
translate([28.535,18.335])square([0.340,0.340], center = true); //FBGA-168 B17
translate([29.035,18.335])square([0.340,0.340], center = true); //FBGA-168 B18
translate([29.535,18.335])square([0.340,0.340], center = true); //FBGA-168 B19
translate([30.035,18.335])square([0.340,0.340], center = true); //FBGA-168 B20
translate([30.535,18.335])square([0.340,0.340], center = true); //FBGA-168 B21
translate([31.035,18.335])square([0.340,0.340], center = true); //FBGA-168 B22
translate([31.535,18.335])square([0.340,0.340], center = true); //FBGA-168 B23
translate([20.535,17.835])square([0.340,0.340], center = true); //FBGA-168 C1
translate([21.035,17.835])square([0.340,0.340], center = true); //FBGA-168 C2
translate([31.035,17.835])square([0.340,0.340], center = true); //FBGA-168 C22
translate([31.535,17.835])square([0.340,0.340], center = true); //FBGA-168 C23
translate([20.535,17.335])square([0.340,0.340], center = true); //FBGA-168 D1
translate([21.035,17.335])square([0.340,0.340], center = true); //FBGA-168 D2
translate([31.035,17.335])square([0.340,0.340], center = true); //FBGA-168 D22
translate([31.535,17.335])square([0.340,0.340], center = true); //FBGA-168 D23
translate([20.535,16.835])square([0.340,0.340], center = true); //FBGA-168 E1
translate([21.035,16.835])square([0.340,0.340], center = true); //FBGA-168 E2
translate([31.035,16.835])square([0.340,0.340], center = true); //FBGA-168 E22
translate([31.535,16.835])square([0.340,0.340], center = true); //FBGA-168 E23
translate([20.535,16.335])square([0.340,0.340], center = true); //FBGA-168 F1
translate([21.035,16.335])square([0.340,0.340], center = true); //FBGA-168 F2
translate([31.035,16.335])square([0.340,0.340], center = true); //FBGA-168 F22
translate([31.535,16.335])square([0.340,0.340], center = true); //FBGA-168 F23
translate([20.535,15.835])square([0.340,0.340], center = true); //FBGA-168 G1
translate([21.035,15.835])square([0.340,0.340], center = true); //FBGA-168 G2
translate([31.035,15.835])square([0.340,0.340], center = true); //FBGA-168 G22
translate([31.535,15.835])square([0.340,0.340], center = true); //FBGA-168 G23
translate([20.535,15.335])square([0.340,0.340], center = true); //FBGA-168 H1
translate([21.035,15.335])square([0.340,0.340], center = true); //FBGA-168 H2
translate([31.035,15.335])square([0.340,0.340], center = true); //FBGA-168 H22
translate([31.535,15.335])square([0.340,0.340], center = true); //FBGA-168 H23
translate([20.535,14.835])square([0.340,0.340], center = true); //FBGA-168 J1
translate([21.035,14.835])square([0.340,0.340], center = true); //FBGA-168 J2
translate([31.035,14.835])square([0.340,0.340], center = true); //FBGA-168 J22
translate([31.535,14.835])square([0.340,0.340], center = true); //FBGA-168 J23
translate([20.535,14.335])square([0.340,0.340], center = true); //FBGA-168 K1
translate([21.035,14.335])square([0.340,0.340], center = true); //FBGA-168 K2
translate([31.035,14.335])square([0.340,0.340], center = true); //FBGA-168 K22
translate([31.535,14.335])square([0.340,0.340], center = true); //FBGA-168 K23
translate([20.535,13.835])square([0.340,0.340], center = true); //FBGA-168 L1
translate([21.035,13.835])square([0.340,0.340], center = true); //FBGA-168 L2
translate([31.035,13.835])square([0.340,0.340], center = true); //FBGA-168 L22
translate([31.535,13.835])square([0.340,0.340], center = true); //FBGA-168 L23
translate([20.535,13.335])square([0.340,0.340], center = true); //FBGA-168 M1
translate([21.035,13.335])square([0.340,0.340], center = true); //FBGA-168 M2
translate([31.035,13.335])square([0.340,0.340], center = true); //FBGA-168 M22
translate([31.535,13.335])square([0.340,0.340], center = true); //FBGA-168 M23
translate([20.535,12.835])square([0.340,0.340], center = true); //FBGA-168 N1
translate([21.035,12.835])square([0.340,0.340], center = true); //FBGA-168 N2
translate([31.035,12.835])square([0.340,0.340], center = true); //FBGA-168 N22
translate([31.535,12.835])square([0.340,0.340], center = true); //FBGA-168 N23
translate([20.535,12.335])square([0.340,0.340], center = true); //FBGA-168 P1
translate([21.035,12.335])square([0.340,0.340], center = true); //FBGA-168 P2
translate([31.035,12.335])square([0.340,0.340], center = true); //FBGA-168 P22
translate([31.535,12.335])square([0.340,0.340], center = true); //FBGA-168 P23
translate([20.535,11.835])square([0.340,0.340], center = true); //FBGA-168 R1
translate([21.035,11.835])square([0.340,0.340], center = true); //FBGA-168 R2
translate([31.035,11.835])square([0.340,0.340], center = true); //FBGA-168 R22
translate([31.535,11.835])square([0.340,0.340], center = true); //FBGA-168 R23
translate([20.535,11.335])square([0.340,0.340], center = true); //FBGA-168 T1
translate([21.035,11.335])square([0.340,0.340], center = true); //FBGA-168 T2
translate([31.035,11.335])square([0.340,0.340], center = true); //FBGA-168 T22
translate([31.535,11.335])square([0.340,0.340], center = true); //FBGA-168 T23
translate([20.535,10.835])square([0.340,0.340], center = true); //FBGA-168 U1
translate([21.035,10.835])square([0.340,0.340], center = true); //FBGA-168 U2
translate([31.035,10.835])square([0.340,0.340], center = true); //FBGA-168 U22
translate([31.535,10.835])square([0.340,0.340], center = true); //FBGA-168 U23
translate([20.535,10.335])square([0.340,0.340], center = true); //FBGA-168 V1
translate([21.035,10.335])square([0.340,0.340], center = true); //FBGA-168 V2
translate([31.035,10.335])square([0.340,0.340], center = true); //FBGA-168 V22
translate([31.535,10.335])square([0.340,0.340], center = true); //FBGA-168 V23
translate([20.535,9.835])square([0.340,0.340], center = true); //FBGA-168 W1
translate([21.035,9.835])square([0.340,0.340], center = true); //FBGA-168 W2
translate([31.035,9.835])square([0.340,0.340], center = true); //FBGA-168 W22
translate([31.535,9.835])square([0.340,0.340], center = true); //FBGA-168 W23
translate([20.535,9.335])square([0.340,0.340], center = true); //FBGA-168 Y1
translate([21.035,9.335])square([0.340,0.340], center = true); //FBGA-168 Y2
translate([31.035,9.335])square([0.340,0.340], center = true); //FBGA-168 Y22
translate([31.535,9.335])square([0.340,0.340], center = true); //FBGA-168 Y23
translate([61.119,9.808]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 1
translate([61.119,10.308]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 2
translate([61.119,10.808]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 3
translate([61.119,11.308]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 4
translate([61.119,11.808]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 5
translate([61.119,12.308]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 6
translate([61.119,12.808]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 7
translate([61.119,13.308]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 8
translate([61.119,13.808]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 9
translate([61.119,14.308]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 10
translate([61.119,14.808]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 11
translate([61.119,15.308]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 12
translate([61.119,15.808]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 13
translate([61.119,16.308]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 14
translate([61.119,16.808]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 15
translate([61.119,17.308]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 16
translate([61.119,17.808]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 17
translate([61.119,18.308]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 18
translate([61.119,18.808]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 19
translate([61.119,19.308]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 20
translate([61.119,19.808]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 21
translate([61.119,20.308]) rotate([0,0,180.000]) square([1.000,0.250], center = true); //XF2L-2235-1 22
translate([62.844,7.420]) rotate([0,0,180.000]) square([1.340,1.000], center = true); //XF2L-2235-1 M1
translate([62.844,22.695]) rotate([0,0,180.000]) square([1.340,1.000], center = true); //XF2L-2235-1 M2
translate([8.572,25.400]) circle(r=0.762,$fn=fn);
translate([8.572,27.940]) circle(r=0.762,$fn=fn);
translate([11.113,25.400]) circle(r=0.762,$fn=fn);
translate([11.113,27.940]) circle(r=0.762,$fn=fn);
translate([13.652,25.400]) circle(r=0.762,$fn=fn);
translate([13.652,27.940]) circle(r=0.762,$fn=fn);
translate([16.192,25.400]) circle(r=0.762,$fn=fn);
translate([16.192,27.940]) circle(r=0.762,$fn=fn);
translate([18.733,25.400]) circle(r=0.762,$fn=fn);
translate([18.733,27.940]) circle(r=0.762,$fn=fn);
translate([21.273,25.400]) circle(r=0.762,$fn=fn);
translate([21.273,27.940]) circle(r=0.762,$fn=fn);
translate([23.813,25.400]) circle(r=0.762,$fn=fn);
translate([23.813,27.940]) circle(r=0.762,$fn=fn);
translate([26.353,25.400]) circle(r=0.762,$fn=fn);
translate([26.353,27.940]) circle(r=0.762,$fn=fn);
translate([28.893,25.400]) circle(r=0.762,$fn=fn);
translate([28.893,27.940]) circle(r=0.762,$fn=fn);
translate([31.433,25.400]) circle(r=0.762,$fn=fn);
translate([31.433,27.940]) circle(r=0.762,$fn=fn);
translate([33.973,25.400]) circle(r=0.762,$fn=fn);
translate([33.973,27.940]) circle(r=0.762,$fn=fn);
translate([36.513,25.400]) circle(r=0.762,$fn=fn);
translate([36.513,27.940]) circle(r=0.762,$fn=fn);
translate([39.053,25.400]) circle(r=0.762,$fn=fn);
translate([39.053,27.940]) circle(r=0.762,$fn=fn);
translate([41.593,25.400]) circle(r=0.762,$fn=fn);
translate([41.593,27.940]) circle(r=0.762,$fn=fn);
translate([44.133,25.400]) circle(r=0.762,$fn=fn);
translate([44.133,27.940]) circle(r=0.762,$fn=fn);
translate([46.672,25.400]) circle(r=0.762,$fn=fn);
translate([46.672,27.940]) circle(r=0.762,$fn=fn);
translate([49.213,25.400]) circle(r=0.762,$fn=fn);
translate([49.213,27.940]) circle(r=0.762,$fn=fn);
translate([51.753,25.400]) circle(r=0.762,$fn=fn);
translate([51.753,27.940]) circle(r=0.762,$fn=fn);
translate([54.293,25.400]) circle(r=0.762,$fn=fn);
translate([54.293,27.940]) circle(r=0.762,$fn=fn);
translate([56.833,25.400]) circle(r=0.762,$fn=fn);
translate([56.833,27.940]) circle(r=0.762,$fn=fn);
translate([15.982,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 1
translate([15.583,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 2
translate([15.183,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 3
translate([14.783,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 4
translate([14.383,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 5
translate([13.982,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 6
translate([13.583,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 7
translate([13.183,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 8
translate([12.783,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 9
translate([12.383,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 10
translate([11.982,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 11
translate([11.583,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 12
translate([11.183,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 13
translate([10.783,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 14
translate([10.383,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 15
translate([9.982,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 16
translate([9.582,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 17
translate([9.183,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 18
translate([8.783,7.550]) rotate([0,0,90.000]) square([1.000,0.250], center = true); //MINI-HDMI 19
translate([52.660,4.545]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 1
translate([53.310,4.545]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 2
translate([53.960,4.545]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 3
translate([54.610,4.545]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 4
translate([55.260,4.545]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 5
translate([57.560,1.870]) circle(r=1.125,$fn=fn);
translate([50.360,1.870]) circle(r=1.125,$fn=fn);
translate([51.535,4.770]) circle(r=0.604,$fn=fn);
translate([56.385,4.770]) circle(r=0.604,$fn=fn);
translate([39.975,4.508]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 1
translate([40.625,4.508]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 2
translate([41.275,4.508]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 3
translate([41.925,4.508]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 4
translate([42.575,4.508]) rotate([0,0,90.000]) square([1.350,0.400], center = true); //ZX62D-B-5PA8 5
translate([44.875,1.833]) circle(r=1.125,$fn=fn);
translate([37.675,1.833]) circle(r=1.125,$fn=fn);
translate([38.850,4.732]) circle(r=0.604,$fn=fn);
translate([43.700,4.732]) circle(r=0.604,$fn=fn);
translate([5.397,13.970]) rotate([0,0,90.000]) square([0.800,1.500], center = true); //693071010811 1
translate([5.798,15.070]) rotate([0,0,90.000]) square([0.800,1.500], center = true); //693071010811 2
translate([5.397,16.170]) rotate([0,0,90.000]) square([0.800,1.500], center = true); //693071010811 3
translate([5.198,17.270]) rotate([0,0,90.000]) square([0.800,1.500], center = true); //693071010811 4
translate([5.397,18.370]) rotate([0,0,90.000]) square([0.800,1.500], center = true); //693071010811 5
translate([5.198,19.470]) rotate([0,0,90.000]) square([0.800,1.500], center = true); //693071010811 6
translate([5.397,20.570]) rotate([0,0,90.000]) square([0.800,1.500], center = true); //693071010811 7
translate([5.397,21.670]) rotate([0,0,90.000]) square([0.800,1.500], center = true); //693071010811 8
translate([1.548,9.310]) rotate([0,0,90.000]) square([1.400,1.900], center = true); //693071010811 Z1
translate([2.698,22.460]) rotate([0,0,90.000]) square([1.400,1.900], center = true); //693071010811 Z2
translate([15.698,15.170]) rotate([0,0,90.000]) square([1.800,1.400], center = true); //693071010811 Z3
translate([15.698,20.860]) rotate([0,0,90.000]) square([1.800,1.400], center = true); //693071010811 Z4
}
translate([8.572,25.400]) circle(r=0.508,$fn=fn);
translate([8.572,27.940]) circle(r=0.508,$fn=fn);
translate([11.113,25.400]) circle(r=0.508,$fn=fn);
translate([11.113,27.940]) circle(r=0.508,$fn=fn);
translate([13.652,25.400]) circle(r=0.508,$fn=fn);
translate([13.652,27.940]) circle(r=0.508,$fn=fn);
translate([16.192,25.400]) circle(r=0.508,$fn=fn);
translate([16.192,27.940]) circle(r=0.508,$fn=fn);
translate([18.733,25.400]) circle(r=0.508,$fn=fn);
translate([18.733,27.940]) circle(r=0.508,$fn=fn);
translate([21.273,25.400]) circle(r=0.508,$fn=fn);
translate([21.273,27.940]) circle(r=0.508,$fn=fn);
translate([23.813,25.400]) circle(r=0.508,$fn=fn);
translate([23.813,27.940]) circle(r=0.508,$fn=fn);
translate([26.353,25.400]) circle(r=0.508,$fn=fn);
translate([26.353,27.940]) circle(r=0.508,$fn=fn);
translate([28.893,25.400]) circle(r=0.508,$fn=fn);
translate([28.893,27.940]) circle(r=0.508,$fn=fn);
translate([31.433,25.400]) circle(r=0.508,$fn=fn);
translate([31.433,27.940]) circle(r=0.508,$fn=fn);
translate([33.973,25.400]) circle(r=0.508,$fn=fn);
translate([33.973,27.940]) circle(r=0.508,$fn=fn);
translate([36.513,25.400]) circle(r=0.508,$fn=fn);
translate([36.513,27.940]) circle(r=0.508,$fn=fn);
translate([39.053,25.400]) circle(r=0.508,$fn=fn);
translate([39.053,27.940]) circle(r=0.508,$fn=fn);
translate([41.593,25.400]) circle(r=0.508,$fn=fn);
translate([41.593,27.940]) circle(r=0.508,$fn=fn);
translate([44.133,25.400]) circle(r=0.508,$fn=fn);
translate([44.133,27.940]) circle(r=0.508,$fn=fn);
translate([46.672,25.400]) circle(r=0.508,$fn=fn);
translate([46.672,27.940]) circle(r=0.508,$fn=fn);
translate([49.213,25.400]) circle(r=0.508,$fn=fn);
translate([49.213,27.940]) circle(r=0.508,$fn=fn);
translate([51.753,25.400]) circle(r=0.508,$fn=fn);
translate([51.753,27.940]) circle(r=0.508,$fn=fn);
translate([54.293,25.400]) circle(r=0.508,$fn=fn);
translate([54.293,27.940]) circle(r=0.508,$fn=fn);
translate([56.833,25.400]) circle(r=0.508,$fn=fn);
translate([56.833,27.940]) circle(r=0.508,$fn=fn);
translate([57.560,1.870]) circle(r=0.750,$fn=fn);
translate([50.360,1.870]) circle(r=0.750,$fn=fn);
translate([51.535,4.770]) circle(r=0.350,$fn=fn);
translate([56.385,4.770]) circle(r=0.350,$fn=fn);
translate([44.875,1.833]) circle(r=0.750,$fn=fn);
translate([37.675,1.833]) circle(r=0.750,$fn=fn);
translate([38.850,4.732]) circle(r=0.350,$fn=fn);
translate([43.700,4.732]) 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([8.572,25.400]) circle(r=0.762,$fn=fn);
translate([8.572,27.940]) circle(r=0.762,$fn=fn);
translate([11.113,25.400]) circle(r=0.762,$fn=fn);
translate([11.113,27.940]) circle(r=0.762,$fn=fn);
translate([13.652,25.400]) circle(r=0.762,$fn=fn);
translate([13.652,27.940]) circle(r=0.762,$fn=fn);
translate([16.192,25.400]) circle(r=0.762,$fn=fn);
translate([16.192,27.940]) circle(r=0.762,$fn=fn);
translate([18.733,25.400]) circle(r=0.762,$fn=fn);
translate([18.733,27.940]) circle(r=0.762,$fn=fn);
translate([21.273,25.400]) circle(r=0.762,$fn=fn);
translate([21.273,27.940]) circle(r=0.762,$fn=fn);
translate([23.813,25.400]) circle(r=0.762,$fn=fn);
translate([23.813,27.940]) circle(r=0.762,$fn=fn);
translate([26.353,25.400]) circle(r=0.762,$fn=fn);
translate([26.353,27.940]) circle(r=0.762,$fn=fn);
translate([28.893,25.400]) circle(r=0.762,$fn=fn);
translate([28.893,27.940]) circle(r=0.762,$fn=fn);
translate([31.433,25.400]) circle(r=0.762,$fn=fn);
translate([31.433,27.940]) circle(r=0.762,$fn=fn);
translate([33.973,25.400]) circle(r=0.762,$fn=fn);
translate([33.973,27.940]) circle(r=0.762,$fn=fn);
translate([36.513,25.400]) circle(r=0.762,$fn=fn);
translate([36.513,27.940]) circle(r=0.762,$fn=fn);
translate([39.053,25.400]) circle(r=0.762,$fn=fn);
translate([39.053,27.940]) circle(r=0.762,$fn=fn);
translate([41.593,25.400]) circle(r=0.762,$fn=fn);
translate([41.593,27.940]) circle(r=0.762,$fn=fn);
translate([44.133,25.400]) circle(r=0.762,$fn=fn);
translate([44.133,27.940]) circle(r=0.762,$fn=fn);
translate([46.672,25.400]) circle(r=0.762,$fn=fn);
translate([46.672,27.940]) circle(r=0.762,$fn=fn);
translate([49.213,25.400]) circle(r=0.762,$fn=fn);
translate([49.213,27.940]) circle(r=0.762,$fn=fn);
translate([51.753,25.400]) circle(r=0.762,$fn=fn);
translate([51.753,27.940]) circle(r=0.762,$fn=fn);
translate([54.293,25.400]) circle(r=0.762,$fn=fn);
translate([54.293,27.940]) circle(r=0.762,$fn=fn);
translate([56.833,25.400]) circle(r=0.762,$fn=fn);
translate([56.833,27.940]) circle(r=0.762,$fn=fn);
translate([57.560,1.870]) circle(r=1.125,$fn=fn);
translate([50.360,1.870]) circle(r=1.125,$fn=fn);
translate([51.535,4.770]) circle(r=0.604,$fn=fn);
translate([56.385,4.770]) circle(r=0.604,$fn=fn);
translate([44.875,1.833]) circle(r=1.125,$fn=fn);
translate([37.675,1.833]) circle(r=1.125,$fn=fn);
translate([38.850,4.732]) circle(r=0.604,$fn=fn);
translate([43.700,4.732]) circle(r=0.604,$fn=fn);
}
translate([8.572,25.400]) circle(r=0.508,$fn=fn);
translate([8.572,27.940]) circle(r=0.508,$fn=fn);
translate([11.113,25.400]) circle(r=0.508,$fn=fn);
translate([11.113,27.940]) circle(r=0.508,$fn=fn);
translate([13.652,25.400]) circle(r=0.508,$fn=fn);
translate([13.652,27.940]) circle(r=0.508,$fn=fn);
translate([16.192,25.400]) circle(r=0.508,$fn=fn);
translate([16.192,27.940]) circle(r=0.508,$fn=fn);
translate([18.733,25.400]) circle(r=0.508,$fn=fn);
translate([18.733,27.940]) circle(r=0.508,$fn=fn);
translate([21.273,25.400]) circle(r=0.508,$fn=fn);
translate([21.273,27.940]) circle(r=0.508,$fn=fn);
translate([23.813,25.400]) circle(r=0.508,$fn=fn);
translate([23.813,27.940]) circle(r=0.508,$fn=fn);
translate([26.353,25.400]) circle(r=0.508,$fn=fn);
translate([26.353,27.940]) circle(r=0.508,$fn=fn);
translate([28.893,25.400]) circle(r=0.508,$fn=fn);
translate([28.893,27.940]) circle(r=0.508,$fn=fn);
translate([31.433,25.400]) circle(r=0.508,$fn=fn);
translate([31.433,27.940]) circle(r=0.508,$fn=fn);
translate([33.973,25.400]) circle(r=0.508,$fn=fn);
translate([33.973,27.940]) circle(r=0.508,$fn=fn);
translate([36.513,25.400]) circle(r=0.508,$fn=fn);
translate([36.513,27.940]) circle(r=0.508,$fn=fn);
translate([39.053,25.400]) circle(r=0.508,$fn=fn);
translate([39.053,27.940]) circle(r=0.508,$fn=fn);
translate([41.593,25.400]) circle(r=0.508,$fn=fn);
translate([41.593,27.940]) circle(r=0.508,$fn=fn);
translate([44.133,25.400]) circle(r=0.508,$fn=fn);
translate([44.133,27.940]) circle(r=0.508,$fn=fn);
translate([46.672,25.400]) circle(r=0.508,$fn=fn);
translate([46.672,27.940]) circle(r=0.508,$fn=fn);
translate([49.213,25.400]) circle(r=0.508,$fn=fn);
translate([49.213,27.940]) circle(r=0.508,$fn=fn);
translate([51.753,25.400]) circle(r=0.508,$fn=fn);
translate([51.753,27.940]) circle(r=0.508,$fn=fn);
translate([54.293,25.400]) circle(r=0.508,$fn=fn);
translate([54.293,27.940]) circle(r=0.508,$fn=fn);
translate([56.833,25.400]) circle(r=0.508,$fn=fn);
translate([56.833,27.940]) circle(r=0.508,$fn=fn);
translate([57.560,1.870]) circle(r=0.750,$fn=fn);
translate([50.360,1.870]) circle(r=0.750,$fn=fn);
translate([51.535,4.770]) circle(r=0.350,$fn=fn);
translate([56.385,4.770]) circle(r=0.350,$fn=fn);
translate([44.875,1.833]) circle(r=0.750,$fn=fn);
translate([37.675,1.833]) circle(r=0.750,$fn=fn);
translate([38.850,4.732]) circle(r=0.350,$fn=fn);
translate([43.700,4.732]) circle(r=0.350,$fn=fn);
}
color("white",0.7) union() {
translate([7.620,22.860,board_thickness-0.025])linear_extrude(0.05) text("3v3", font = "Liberation Sans", size = 0.829);
translate([9.843,22.860,board_thickness-0.025])linear_extrude(0.05) text("SDA", font = "Liberation Sans", size = 0.829);
translate([12.700,22.860,board_thickness-0.025])linear_extrude(0.05) text("SCL", font = "Liberation Sans", size = 0.829);
translate([15.558,22.860,board_thickness-0.025])linear_extrude(0.05) text("B4", font = "Liberation Sans", size = 0.829);
translate([17.463,22.860,board_thickness-0.025])linear_extrude(0.05) text("GND", font = "Liberation Sans", size = 0.829);
translate([20.320,22.860,board_thickness-0.025])linear_extrude(0.05) text("M17", font = "Liberation Sans", size = 0.829);
translate([22.860,22.860,board_thickness-0.025])linear_extrude(0.05) text("M27", font = "Liberation Sans", size = 0.829);
translate([25.400,22.860,board_thickness-0.025])linear_extrude(0.05) text("M22", font = "Liberation Sans", size = 0.829);
translate([27.940,22.860,board_thickness-0.025])linear_extrude(0.05) text("3v3", font = "Liberation Sans", size = 0.829);
translate([31.115,22.543,board_thickness-0.025])rotate([0,0,270])linear_extrude(0.05) text("MOSI", font = "Liberation Sans", size = 0.829);
translate([33.655,22.543,board_thickness-0.025])rotate([0,0,270])linear_extrude(0.05) text("MISO", font = "Liberation Sans", size = 0.829);
translate([36.195,22.543,board_thickness-0.025])rotate([0,0,270])linear_extrude(0.05) text("SCLK", font = "Liberation Sans", size = 0.829);
translate([38.100,22.860,board_thickness-0.025])linear_extrude(0.05) text("GND", font = "Liberation Sans", size = 0.829);
translate([40.958,22.860,board_thickness-0.025])linear_extrude(0.05) text("M0", font = "Liberation Sans", size = 0.829);
translate([43.498,22.860,board_thickness-0.025])linear_extrude(0.05) text("M5", font = "Liberation Sans", size = 0.829);
translate([46.038,22.860,board_thickness-0.025])linear_extrude(0.05) text("M6", font = "Liberation Sans", size = 0.829);
translate([48.578,22.543,board_thickness-0.025])rotate([0,0,270])linear_extrude(0.05) text("PWM1", font = "Liberation Sans", size = 0.829);
translate([30.480,22.860,board_thickness-0.025])linear_extrude(0.05) text("M10", font = "Liberation Sans", size = 0.829);
translate([33.337,22.860,board_thickness-0.025])linear_extrude(0.05) text("M9", font = "Liberation Sans", size = 0.829);
translate([35.560,22.860,board_thickness-0.025])linear_extrude(0.05) text("M11", font = "Liberation Sans", size = 0.829);
translate([48.260,22.860,board_thickness-0.025])linear_extrude(0.05) text("M13", font = "Liberation Sans", size = 0.829);
translate([50.800,22.860,board_thickness-0.025])linear_extrude(0.05) text("M19", font = "Liberation Sans", size = 0.829);
translate([51.435,22.225,board_thickness-0.025])rotate([0,0,270])linear_extrude(0.05) text("MISO", font = "Liberation Sans", size = 0.829);
translate([53.340,22.860,board_thickness-0.025])linear_extrude(0.05) text("M26", font = "Liberation Sans", size = 0.829);
translate([55.880,22.860,board_thickness-0.025])linear_extrude(0.05) text("GND", font = "Liberation Sans", size = 0.829);
translate([7.938,29.210,board_thickness-0.025])linear_extrude(0.05) text("5V", font = "Liberation Sans", size = 0.829);
translate([10.160,29.210,board_thickness-0.025])linear_extrude(0.05) text("5V", font = "Liberation Sans", size = 0.829);
translate([12.065,29.210,board_thickness-0.025])linear_extrude(0.05) text("GND", font = "Liberation Sans", size = 0.829);
translate([14.923,29.210,board_thickness-0.025])linear_extrude(0.05) text("M14", font = "Liberation Sans", size = 0.829);
translate([17.463,29.210,board_thickness-0.025])linear_extrude(0.05) text("M15", font = "Liberation Sans", size = 0.829);
translate([20.003,29.210,board_thickness-0.025])linear_extrude(0.05) text("M18", font = "Liberation Sans", size = 0.829);
translate([22.543,29.210,board_thickness-0.025])linear_extrude(0.05) text("GND", font = "Liberation Sans", size = 0.829);
translate([25.400,29.210,board_thickness-0.025])linear_extrude(0.05) text("M23", font = "Liberation Sans", size = 0.829);
translate([27.623,29.210,board_thickness-0.025])linear_extrude(0.05) text("M24", font = "Liberation Sans", size = 0.829);
translate([30.163,29.210,board_thickness-0.025])linear_extrude(0.05) text("GND", font = "Liberation Sans", size = 0.829);
translate([33.020,29.210,board_thickness-0.025])linear_extrude(0.05) text("M25", font = "Liberation Sans", size = 0.829);
translate([35.560,29.210,board_thickness-0.025])linear_extrude(0.05) text("M8", font = "Liberation Sans", size = 0.829);
translate([38.418,29.210,board_thickness-0.025])linear_extrude(0.05) text("M7", font = "Liberation Sans", size = 0.829);
translate([40.640,29.210,board_thickness-0.025])linear_extrude(0.05) text("M1", font = "Liberation Sans", size = 0.829);
translate([42.545,29.210,board_thickness-0.025])linear_extrude(0.05) text("GND", font = "Liberation Sans", size = 0.829);
translate([45.403,29.210,board_thickness-0.025])linear_extrude(0.05) text("M12", font = "Liberation Sans", size = 0.829);
translate([47.943,29.210,board_thickness-0.025])linear_extrude(0.05) text("GND", font = "Liberation Sans", size = 0.829);
translate([50.800,29.210,board_thickness-0.025])linear_extrude(0.05) text("M16", font = "Liberation Sans", size = 0.829);
translate([53.340,29.210,board_thickness-0.025])linear_extrude(0.05) text("M20", font = "Liberation Sans", size = 0.829);
translate([55.880,29.210,board_thickness-0.025])linear_extrude(0.05) text("M21", font = "Liberation Sans", size = 0.829);
} //end text union()
union(){ // parts
translate([26.035,13.335,board_thickness])FBGA_168(); //IC1 B4432BBPA-10-F-DUMMY
translate([63.024,15.558,board_thickness])rotate([0,0,180])XF2L_2235_1(); //J1 XF2L-2235-1
translate([32.703,26.670,board_thickness])MA20_2(); //SV1
translate([12.383,0.000,board_thickness])MINI_HDMI(); //U$1 HDMIMINI-H
translate([53.960,-0.280,board_thickness])rotate([0,0,90])ZX62D_B_5PA8(); //X2 ZX62D-B-5PA8
translate([41.275,-0.318,board_thickness])rotate([0,0,90])ZX62D_B_5PA8(); //X3 ZX62D-B-5PA8
translate([5.397,13.970,board_thickness])rotate([0,0,90])_693071010811(); //X8 693071010811
}
} //endunion()
module FBGA_168()
{
color ("DarkSlateGray", 0.5) translate([-6.000000,-6.000000,0.27]) linear_extrude(0.45)square([12.000000,12.000000]); //Board
}
module XF2L_2235_1()
{
translate([1.20,0.5,0]) rotate(90) FPC_L(size = [17.2,4,1.4]);
}
module MA20_2() //SV1
{
LSTB(n=20,m=2);
}
module MINI_HDMI() //U$1 HDMIMINI-H
{
translate([0,7.6,0]) rotate([-90,180,180]) union()
{
color("silver") union() { difference()
{
translate([-5.6,0,0])linear_extrude(7.6) polygon([[1.4,0],[9.8,0],[11.2,1.4],[11.2,3.2],[0,3.2],[0,1.4]]);
translate([-5.6+0.3,0.3,1]) linear_extrude(7.1) polygon([[10.6,2.6],[10.6,1.2],[9.4,0],[1.2,0],[0,1.2],[0,2.6]]);
}
}
color("DarkSlateGray") translate([-4.25,1.5,0.4]) cube([8.5,0.6,6.5]);
}
}
module ZX62D_B_5PA8() // MICRO USB
{
translate([5,0,0]) rotate([-90,180,90]) union()
{
color("silver") union() { difference()
{
translate([-3.80,0,0])linear_extrude(5) polygon([[7.6,1.1],[7.6,1.9],[6.9,2.6],[0.7,2.6],[0,1.9],[0,1.1],[1.1,0],[6.5,0]]);
translate([-3.8+0.3,0.3,1]) linear_extrude(4.5) polygon([[0,0.9],[0,1.5],[0.5,2],[6.5,2],[7,1.5],[7,0.9],[6.1,0],[0.9,0]]);
}
translate([-3,2.3,5]) rotate([-30,0,0]) cube([6,0.3,0.6]);
translate([2.7,0.3,5]) rotate([-30,0,180]) cube([5.4,0.3,0.6]);
translate([-3.8+0.3,1.1,5]) rotate([-30,0,90]) cube([0.8,0.3,0.6]);
translate([+3.8-0.3,1.9,5]) rotate([-30,0,-90]) cube([0.8,0.3,0.6]);
}
color("DarkSlateGray") translate([-1.9,1.3,0.4]) cube([3.8,0.6,3.8]);
}
}
module _693071010811() //SD Kartenhalter
{
rotate([0,0,270]) color("silver") translate([-4.5,-3.06,0]) cube([15.2,12,1.83]); //Board
}
} // end module
module EagleWire(start,end,width=0.4,$fn=5) // hull() n.a. in FreeCAD Importer
{
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)]];
function winkel(a,b=[0,0]) = atan2(a[1]-b[1],a[0]-b[0]);
polygon(concat(bogen(point=start, r=width/2 ,phase = winkel(start,end)-90, winkel = 180, $fn=$fn), bogen(point=end, r=width/2 ,phase = winkel(end,start)-90, winkel = 180, $fn=$fn)));
}
module make_line_of(pitch, count)
{
for (a = [0 : count - 1]) {
pos = a*pitch;
translate([pos, 0, 0])
children();
}
}
module offset_square(size = [1,1], r = 0, delta = 0, chamfer=false, center = false, $fn = Detailgrad) // offset() n.a. in FreeCAD Importer
{
num = round($fn/4);
plus = delta*0.41425;
function bogen(point=[0,0],phase = 0) = [for (i=[0:num], x=i*90/num) [point[0]+r*sin(x+phase),point[1]+r*cos(x+phase)]];
function poli_round() = concat(bogen([0,0],180),bogen([0,size[1]],-90),bogen([size[0],size[1]],0),bogen([size[0],0],90));
function poli_phase() = concat([[0-delta,0-plus],[0-delta,size[1]+plus],[0-plus,size[1]+delta],[size[0]+plus,size[1]+delta],[size[0]+delta,size[1]+plus],[size[0]+delta,0-plus],[size[0]+plus,-delta],[0-plus,-delta]]);
if (r==0)
{
if (chamfer)
{
if (center)
translate([-size[0]/2,-size[1]/2]) polygon(poli_phase());
else
polygon(poli_phase());
}
else
{
if (center) square([size[0]+2*delta,size[1]+2*delta], center = center);
else
translate([-delta,-delta]) square([size[0]+2*delta,size[1]+2*delta], center = center);
}
}
else
{
if (center)
translate([-size[0]/2,-size[1]/2]) polygon(poli_round());
else
polygon(poli_round());
}
}
module LSTB(n=20,m=1)
{
offs = 0.9;
height = 11.6;
pitch = 2.54;
pin = 0.6;
translate([-(pitch/2)*n+offs,-(pitch/2)*m+offs,0]) make_line_of(pitch, n) color("lightgreen") linear_extrude(2.6) offset_square(size=[pitch-2*offs,pitch*m-2*offs], delta = offs, chamfer=true);
translate([-(pitch/2)*(n-1),-(pitch/2)*(m-1),0]) make_line_of(pitch, n) color("Silver") translate([0,0,8.7-height/2]) cube([pin,pin,height], center = true);
if (m>1) translate([-(pitch/2)*(n-1),+(pitch/2)*(m-1),0]) make_line_of(pitch, n) color("Silver") translate([0,0,8.7-height/2]) cube([pin,pin,height], center = true);
if (m>2) translate([-(pitch/2)*(n-1),0,0]) make_line_of(pitch, n) color("Silver") translate([0,0,8.7-height/2]) cube([pin,pin,height], center = true);
}
module make_line_of(pitch, count)
{
for (a = [0 : count - 1]) {
pos = a*pitch;
translate([pos, 0, 0])
children();
}
}
module offset_square(size = [1,1], r = 0, delta = 0, chamfer=false, center = false, $fn = Detailgrad) // offset() n.a. in FreeCAD Importer
{
num = round($fn/4);
plus = delta*0.41425;
function bogen(point=[0,0],phase = 0) = [for (i=[0:num], x=i*90/num) [point[0]+r*sin(x+phase),point[1]+r*cos(x+phase)]];
function poli_round() = concat(bogen([0,0],180),bogen([0,size[1]],-90),bogen([size[0],size[1]],0),bogen([size[0],0],90));
function poli_phase() = concat([[0-delta,0-plus],[0-delta,size[1]+plus],[0-plus,size[1]+delta],[size[0]+plus,size[1]+delta],[size[0]+delta,size[1]+plus],[size[0]+delta,0-plus],[size[0]+plus,-delta],[0-plus,-delta]]);
if (r==0)
{
if (chamfer)
{
if (center)
translate([-size[0]/2,-size[1]/2]) polygon(poli_phase());
else
polygon(poli_phase());
}
else
{
if (center) square([size[0]+2*delta,size[1]+2*delta], center = center);
else
translate([-delta,-delta]) square([size[0]+2*delta,size[1]+2*delta], center = center);
}
}
else
{
if (center)
translate([-size[0]/2,-size[1]/2]) polygon(poli_round());
else
polygon(poli_round());
}
}
module LSTB(n=20,m=1)
{
offs = 0.9;
height = 11.6;
pitch = 2.54;
pin = 0.6;
translate([-(pitch/2)*n+offs,-(pitch/2)*m+offs,0]) make_line_of(pitch, n) color("lightgreen") linear_extrude(2.6) offset_square(size=[pitch-2*offs,pitch*m-2*offs], delta = offs, chamfer=true);
translate([-(pitch/2)*(n-1),-(pitch/2)*(m-1),0]) make_line_of(pitch, n) color("Silver") translate([0,0,8.7-height/2]) cube([pin,pin,height], center = true);
if (m>1) translate([-(pitch/2)*(n-1),+(pitch/2)*(m-1),0]) make_line_of(pitch, n) color("Silver") translate([0,0,8.7-height/2]) cube([pin,pin,height], center = true);
if (m>2) translate([-(pitch/2)*(n-1),0,0]) make_line_of(pitch, n) color("Silver") translate([0,0,8.7-height/2]) cube([pin,pin,height], center = true);
}
module FPC_L(size = [12,4.5,2], pitch=0.5)
{
NB_PINS = round((size[0]-6.4) / pitch);
pinlength = size[1];
pinheight = 0.3;
difference()
{
color("DarkSlateGray") translate([-size[0]/2,size[1]-1.3,0]) cube([size[0],1.3,2]);
translate([-(pitch*(NB_PINS+1))/2,size[1]-1.4,-0.05]) cube([pitch*(NB_PINS+1),1.5,1.25]);
}
difference()
{
color("Beige") translate([-(size[0]-2)/2,0,0]) cube([size[0]-2,size[1]-1.3,2]);
translate([-(pitch*(NB_PINS+1))/2,0.1,0.25]) cube([pitch*(NB_PINS+1),size[1]-1.3,0.8]);
}
translate([pitch/4-(NB_PINS*pitch)/2,-1.1,0]) color("silver") make_line_of(pitch, NB_PINS) cube([pitch/2,pinlength,pinheight]);
}
Pi_Zero_W(); //Show module
//Created by generate-scad.ulp version 1.1

4911
packages/packages.scad Executable file

File diff suppressed because it is too large Load diff

BIN
pictures/NodeMCU_Lua_Amica.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
pictures/Pi-Zero-W.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

2258
ulp/generate-scad.ulp Executable file

File diff suppressed because it is too large Load diff