From 0c847ab62897c220203ac03fc604d4c9e6a68e0d Mon Sep 17 00:00:00 2001 From: "Schoenberger, Philipp" Date: Sat, 12 Jan 2019 22:24:46 +0100 Subject: [PATCH] add 3d model for remote, antenna, i2c lcd and cc2500 design top plate in order to place the boards --- 3d/lib/Arduino_nano.scad | 693 ++++++++++++++++++++++++++++ 3d/lib/Capacitors.scad | 188 ++++++++ 3d/lib/Diode.scad | 173 +++++++ 3d/lib/Dupont_connector_female.scad | 65 +++ 3d/lib/I2C_interface_LCD1602.scad | 276 +++++++++++ 3d/lib/IC_DIP.scad | 160 +++++++ 3d/lib/IC_TO220.scad | 161 +++++++ 3d/lib/IC_TO92.scad | 94 ++++ 3d/lib/LCD_1602_I2C.scad | 180 ++++++++ 3d/lib/LCD_1602_Serial.scad | 179 +++++++ 3d/lib/LDR.scad | 164 +++++++ 3d/lib/Led.scad | 459 ++++++++++++++++++ 3d/lib/Micro_push_button.scad | 374 +++++++++++++++ 3d/lib/OLED_13_128_64.scad | 159 +++++++ 3d/lib/PCB.scad | 82 ++++ 3d/lib/Pin_header.scad | 335 ++++++++++++++ 3d/lib/Resistor.scad | 540 ++++++++++++++++++++++ 3d/lib/Screw_terminal.scad | 51 ++ 3d/lib/Solder.scad | 64 +++ 3d/lib/aligned_cube.scad | 31 -- 3d/lib/antenna.scad | 53 +++ 3d/lib/cube.scad | 141 ++++++ 3d/lib/cylinder.scad | 14 + 3d/lib/example.scad | 101 ++++ 3d/remote.scad | 526 +++++++++++++++++++++ 3d/stick.scad | 106 +++++ 26 files changed, 5338 insertions(+), 31 deletions(-) create mode 100644 3d/lib/Arduino_nano.scad create mode 100644 3d/lib/Capacitors.scad create mode 100644 3d/lib/Diode.scad create mode 100644 3d/lib/Dupont_connector_female.scad create mode 100644 3d/lib/I2C_interface_LCD1602.scad create mode 100644 3d/lib/IC_DIP.scad create mode 100644 3d/lib/IC_TO220.scad create mode 100644 3d/lib/IC_TO92.scad create mode 100644 3d/lib/LCD_1602_I2C.scad create mode 100644 3d/lib/LCD_1602_Serial.scad create mode 100644 3d/lib/LDR.scad create mode 100644 3d/lib/Led.scad create mode 100644 3d/lib/Micro_push_button.scad create mode 100644 3d/lib/OLED_13_128_64.scad create mode 100644 3d/lib/PCB.scad create mode 100644 3d/lib/Pin_header.scad create mode 100644 3d/lib/Resistor.scad create mode 100644 3d/lib/Screw_terminal.scad create mode 100644 3d/lib/Solder.scad delete mode 100644 3d/lib/aligned_cube.scad create mode 100644 3d/lib/antenna.scad create mode 100644 3d/lib/cube.scad create mode 100644 3d/lib/cylinder.scad create mode 100644 3d/lib/example.scad create mode 100644 3d/remote.scad create mode 100644 3d/stick.scad diff --git a/3d/lib/Arduino_nano.scad b/3d/lib/Arduino_nano.scad new file mode 100644 index 0000000..459acb5 --- /dev/null +++ b/3d/lib/Arduino_nano.scad @@ -0,0 +1,693 @@ + +$fn=36; +//0=false 1=true +Connection_pins_enabled=1; +Connection_pins_up=0; +6_pins_enabled=0; +6_pins_up=0; + +module Pins(Pins_number,Offset) + { + translate([0,-2.54*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([0,2.54*a,-3]) + cube([0.6,0.6,10],center=true); + color("Silver") + translate([0,2.54*a,-1.5]) + cylinder(r1=0,r2=1,h=1); + color("Silver") + translate([0,2.54*a,0.5]) + cylinder(r1=1,r2=0,h=1); + color("Black") + translate([0,2.54*a,-2]) + Component(2,2,1.25); + + if(a==0) + { + Text="D12"; + %color("Black") + translate([1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==1) + { + Text="D11"; + %color("Black") + translate([1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==2) + { + Text="D10"; + %color("Black") + translate([1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==3) + { + Text="D9"; + %color("Black") + translate([1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==4) + { + Text="D8"; + %color("Black") + translate([1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==5) + { + Text="D7"; + %color("Black") + translate([1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==6) + { + Text="D6"; + %color("Black") + translate([1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==7) + { + Text="D5"; + %color("Black") + translate([1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==8) + { + Text="D4"; + %color("Black") + translate([1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==9) + { + Text="D3"; + %color("Black") + translate([1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==10) + { + Text="D2"; + %color("Black") + translate([1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==11) + { + Text="GND"; + %color("Black") + translate([1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==12) + { + Text="RST"; + %color("Black") + translate([1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==13) + { + Text="RX0"; + %color("Black") + translate([1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==14) + { + Text="TX1"; + %color("Black") + translate([1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + + } + } + +module Pins1(Pins_number,Offset) + { + translate([0,-2.54*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([0,2.54*a,-3]) + cube([0.6,0.6,10],center=true); + color("Silver") + translate([0,2.54*a,-1.5]) + cylinder(r1=0,r2=1,h=1); + color("Silver") + translate([0,2.54*a,0.5]) + cylinder(r1=1,r2=0,h=1); + color("Black") + translate([0,2.54*a,-2]) + Component(2,2,1.25); + + if(a==0) + { + Text="D13"; + %color("Black") + translate([-1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==1) + { + Text="3V3"; + %color("Black") + translate([-1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==2) + { + Text="REF"; + %color("Black") + translate([-1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==3) + { + Text="A0"; + %color("Black") + translate([-1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==4) + { + Text="A1"; + %color("Black") + translate([-1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==5) + { + Text="A2"; + %color("Black") + translate([-1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==6) + { + Text="A3"; + %color("Black") + translate([-1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==7) + { + Text="A4"; + %color("Black") + translate([-1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==8) + { + Text="A5"; + %color("Black") + translate([-1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==9) + { + Text="A6"; + %color("Black") + translate([-1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==10) + { + Text="A7"; + %color("Black") + translate([-1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==11) + { + Text="5V"; + %color("Black") + translate([-1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==12) + { + Text="RST"; + %color("Black") + translate([-1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==13) + { + Text="GND"; + %color("Black") + translate([-1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + if(a==14) + { + Text="VIN"; + %color("Black") + translate([-1.75,2.54*a,0]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=0.8,valign="center",halign="center"); + } + + } + } + +module Pins_holes(Pins_number) + { + translate([0,-2.54*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([0,2.54*a,-3]) + cylinder(r=0.55,h=10,center=true); + } + } + +module Pins_copper_rings(Pins_number) + { + translate([0,-2.54*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([0,2.54*a,-3]) + cylinder(r=1,h=1.6,center=true); + } + } + +module 6_pins(Pins_number) + { + translate([0,-2.54*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([1.252,2.54*a+1.252,-3]) + cube([0.6,0.6,10],center=true); + color("Silver") + translate([1.252,2.54*a+1.252,-1.5]) + cylinder(r1=0,r2=1,h=1); + color("Silver") + translate([1.252,2.54*a+1.252,0.5]) + cylinder(r1=1,r2=0,h=1); + color("Black") + translate([1.252,2.54*a+1.252,-2]) + Component(2,2,1.25); + color("Goldenrod") + translate([-1.252,2.54*a+1.252,-3]) + cube([0.6,0.6,10],center=true); + color("Silver") + translate([-1.252,2.54*a+1.252,-1.5]) + cylinder(r1=0,r2=1,h=1); + color("Silver") + translate([-1.252,2.54*a+1.252,0.5]) + cylinder(r1=1,r2=0,h=1); + color("Black") + translate([-1.252,2.54*a+1.252,-2]) + Component(2,2,1.25); + } + } + +module 6_pins_holes(Pins_number) + { + translate([0,-2.54*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([1.252,2.54*a+1.252,-3]) + cylinder(r=0.55,h=10,center=true); + color("Goldenrod") + translate([-1.252,2.54*a+1.252,-3]) + cylinder(r=0.55,h=10,center=true); + } + } + +module 6_pins_copper_rings(Pins_number) + { + translate([0,-2.54*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([1.252,2.54*a+1.252,-3]) + cylinder(r=1,h=1.6,center=true); + color("Goldenrod") + translate([-1.252,2.54*a+1.252,-3]) + cylinder(r=1,h=1.6,center=true); + } + } + +module Component(X,Y,Z) + { + hull() + { + translate([X/2,Y/2,0]) + sphere(r=0.25,$fn=18); + translate([-X/2,Y/2,0]) + sphere(r=0.25,$fn=18); + translate([X/2,-Y/2,0]) + sphere(r=0.25,$fn=18); + translate([-X/2,-Y/2,0]) + sphere(r=0.25,$fn=18); + + translate([X/2,Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + translate([-X/2,Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + translate([X/2,-Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + translate([-X/2,-Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + } + } + +module USBmini() + { + difference() + { + hull() + { + translate([4,4.5,3]) + sphere(r=0.5,$fn=18); + translate([-4,4.5,3]) + sphere(r=0.5,$fn=18); + translate([4,-4.5,3]) + sphere(r=0.5,$fn=18); + translate([-4,-4.5,3]) + sphere(r=0.5,$fn=18); + + translate([3,4.5,0]) + sphere(r=0.5,$fn=18); + translate([-3,4.5,0]) + sphere(r=0.5,$fn=18); + translate([3,-4.5,0]) + sphere(r=0.5,$fn=18); + translate([-3,-4.5,0]) + sphere(r=0.5,$fn=18); + } + + translate([0,-1,0]) + hull() + { + translate([3.25,4.5,2.5]) + sphere(r=0.5,$fn=18); + translate([-3.25,4.5,2.5]) + sphere(r=0.5,$fn=18); + translate([3.25,-4.5,2.5]) + sphere(r=0.5,$fn=18); + translate([-3.25,-4.5,2.5]) + sphere(r=0.5,$fn=18); + + translate([2.5,4.5,0.5]) + sphere(r=0.5,$fn=18); + translate([-2.5,4.5,0.5]) + sphere(r=0.5,$fn=18); + translate([2.5,-4.5,0.5]) + sphere(r=0.5,$fn=18); + translate([-2.5,-4.5,0.5]) + sphere(r=0.5,$fn=18); + } + } + } + + +//-------------------------------------------------------------------------------------------------------------------------------- +//-------------------------------------------------------------------------------------------------------------------------------- +//-------------------------------------------------------------------------------------------------------------------------------- +module Arduino_nano(Connection_pins_enabled,Connection_pins_up,6_pins_enabled,6_pins_up) + { + translate([0,1.257,4]) + union() + { + difference() + { + union() + { + color("RoyalBlue") + translate([0,-1.252,0]) + cube([18,43,1.5],center=true); + + translate([2.54*3,0,-3]) + rotate([0,180,0]) + Pins_copper_rings(15); + + translate([-2.54*3,0,-3]) + rotate([0,180,0]) + Pins_copper_rings(15); + + translate([0,2.54*7,-3]) + rotate([0,180,90]) + 6_pins_copper_rings(3); + } + + translate([2.54*3,2.54*7+1.252,0]) + cylinder(r=0.75,h=5,center=true); + translate([2.54*3,-2.54*9+1.252,0]) + cylinder(r=0.75,h=5,center=true); + translate([-2.54*3,2.54*7+1.252,0]) + cylinder(r=0.75,h=5,center=true); + translate([-2.54*3,-2.54*9+1.252,0]) + cylinder(r=0.75,h=5,center=true); + + translate([2.54*3,0,0]) + rotate([0,180,0]) + Pins_holes(15); + + translate([-2.54*3,0,0]) + rotate([0,180,0]) + Pins_holes(15); + + translate([0,2.54*7,0]) + rotate([0,180,90]) + 6_pins_holes(3); + + } + + color("Silver") + translate([0,-20,1.25]) + USBmini(); + + + + if(Connection_pins_up==0 && Connection_pins_enabled==1) + translate([2.54*3,0,0]) + rotate([0,0,0]) + Pins1(15); + + if(Connection_pins_up==0 && Connection_pins_enabled==1) + translate([-2.54*3,0,0]) + rotate([0,0,0]) + Pins(15); + + + if(Connection_pins_up==1 && Connection_pins_enabled==1) + translate([2.54*3,0,0]) + rotate([0,180,0]) + Pins(15); + + if(Connection_pins_up==1 && Connection_pins_enabled==1) + translate([-2.54*3,0,0]) + rotate([0,180,0]) + Pins(15); + + if(6_pins_up==1 && 6_pins_enabled==1) + translate([0,2.54*7,0]) + rotate([0,180,90]) + 6_pins(3); + + if(6_pins_up==0 && 6_pins_enabled==1) + translate([0,2.54*7,0]) + rotate([0,0,90]) + 6_pins(3); + + color("Black") + translate([0,-6.5,0]) + rotate([0,0,45]) + Component(5,5,1.5); + color("Silver") + translate([0,-6.5,-0.5]) + rotate([0,0,45]) + Component(5.5,4,1.5); + color("Silver") + translate([0,-6.5,-0.5]) + rotate([0,0,-45]) + Component(5.5,4,1.5); + + color("Silver") + translate([-5,-5,0]) + rotate([0,0,135]) + Component(0.5,2.3,1.25); + + color("White") + translate([-1,12,0]) + Component(0.7,1.8,1.25); + color("White") + translate([1,12,0]) + Component(0.7,1.8,1.25); + color("White") + translate([3,12,0]) + Component(0.7,1.8,1.25); + color("White") + translate([-3,12,0]) + Component(0.7,1.8,1.25); + + color("Saddlebrown") + translate([-1,9,0]) + Component(0.7,1.8,1.25); + color("Saddlebrown") + translate([1,9,0]) + Component(0.7,1.8,1.25); + color("Saddlebrown") + translate([3,9,0]) + Component(0.7,1.8,1.25); + color("Saddlebrown") + translate([-3,9,0]) + Component(0.7,1.8,1.25); + + color("Silver") + translate([0,2.9,0]) + Component(7,3,2); + color("Silver") + translate([0,2.9,0]) + Component(5,2,2.1); + color("Saddlebrown") + translate([0,2.9,0]) + Component(3,1,2.5); + color("Brown") + translate([0,2.9,0]) + Component(3,1,2.5); + + //Underneath + + color("Saddlebrown") + translate([1.5,-21,-1.25]) + Component(0.4,1.5,1); + + color("Saddlebrown") + translate([4,-21,-1.25]) + Component(0.4,1.5,1); + + color("Black") + translate([-1,-20.75,-1.5]) + Component(1.25,2.5,1); + + color("Saddlebrown") + translate([-4,-19.75,-1.25]) + Component(2,4.5,1); + + color("Saddlebrown") + translate([4.5,-7,-1.25]) + Component(0.4,1.5,1); + + color("Saddlebrown") + translate([4,-2,-1.25]) + Component(0.4,1.5,1); + + color("Saddlebrown") + translate([2.5,-2,-1.25]) + Component(0.4,1.5,1); + + color("Black") + translate([0,-9.75,-1.75]) + Component(3.5,10,1.5); + color("Silver") + translate([0,-9.75,-0.75]) + Component(5.5,9,1.5); + + color("Black") + translate([2,9.75,-1.75]) + Component(5.5,3,1.75); + color("Silver") + translate([2,8,-1]) + Component(3,3,0.75); + color("Silver") + translate([2,11,-1]) + Component(0.6,3,0.5); + color("Silver") + translate([4,11,-1]) + Component(0.6,3,0.5); + color("Silver") + translate([0,11,-1]) + Component(0.6,3,0.5); + + color("Saddlebrown") + translate([-3,10.5,-1.25]) + Component(2.25,4.5,1); + + color("Saddlebrown") + translate([-5,8.5,-1]) + Component(0.4,1.5,0.5); + + color("Saddlebrown") + translate([-5,12.25,-1]) + Component(0.4,1.5,0.5); + } + } + + +Arduino_nano(Connection_pins_enabled,Connection_pins_up,6_pins_enabled,6_pins_up); \ No newline at end of file diff --git a/3d/lib/Capacitors.scad b/3d/lib/Capacitors.scad new file mode 100644 index 0000000..319a0b7 --- /dev/null +++ b/3d/lib/Capacitors.scad @@ -0,0 +1,188 @@ + +$fn=36; +Text="10uF"; +Capacitor_diameter=2.54*2; +Capacitor_height=13; +Type=0; //0=Electrolitic 1=Ceramic 2=Poliester +Solder=0; + +module Capacitor(Text,Capacitor_diameter,Capacitor_height,Type,Solder) + { + if(Type==0) + translate([1.257,0,2.75]) + { + + color("Black") + translate([0,0,Capacitor_height/2]) + rotate([0,0,0]) + cylinder(r=Capacitor_diameter,h=Capacitor_height,center=true); + + color("Silver") + translate([0,0,Capacitor_height+0.01]) + rotate([0,0,0]) + cylinder(r=Capacitor_diameter-1,h=0.1,center=true); + + color("Silver") + translate([0,0,-0.01]) + rotate([0,0,0]) + cylinder(r=Capacitor_diameter-2,h=0.1,center=true); + + color("Silver") + translate([1.257,0,-4.5]) + rotate([0,0,0]) + cylinder(d=0.55,h=10,center=true); + + color("Silver") + translate([-1.257,0,-4.5]) + rotate([0,0,0]) + cylinder(d=0.55,h=10,center=true); + + color("White") + translate([-Capacitor_diameter+0.9,0,Capacitor_height/2]) + rotate([0,0,180]) + rotate([90,90,90]) + linear_extrude(1) + text(Text,size=2,valign="center",halign="center"); + + if(Solder==1) + { + color("Silver") + translate([2.54*0.5,0,-2.25]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54*0.5,0,-2.25]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + + color("White") + %translate([0.15,0,0]) + intersection() + { + translate([Capacitor_diameter/2,0,0]) + rotate([0,0,0]) + cube([Capacitor_diameter,Capacitor_diameter,Capacitor_height*3],center=true); + color("Black") + translate([0,0,Capacitor_height/2+0.02]) + rotate([0,0,0]) + cylinder(r=Capacitor_diameter-0.1,h=Capacitor_height,center=true); + } + } + +if(Type==1) + { + translate([0,0,2.75]) + { + color("Sienna") + hull() + { + color("Black") + translate([0,0,Capacitor_height/2]) + rotate([90,90,0]) + cylinder(r=Capacitor_diameter,h=0.5,center=true); + + difference() + { + translate([0,-Capacitor_diameter+1.5,Capacitor_height/2]) + rotate([90,90,0]) + sphere(Capacitor_diameter); + + translate([0,-50,0]) + cube([100,100,100],center=true); + } + + difference() + { + translate([0,Capacitor_diameter-1.5,Capacitor_height/2]) + rotate([90,90,0]) + sphere(Capacitor_diameter); + + translate([0,50,0]) + cube([100,100,100],center=true); + } + } + + color("Silver") + translate([2.54,0,-4.5]) + rotate([0,0,0]) + cylinder(d=0.55,h=20,center=true); + + color("Silver") + translate([-2.54,0,-4.5]) + rotate([0,0,0]) + cylinder(d=0.55,h=20,center=true); + + if(Solder==1) + { + color("Silver") + translate([2.54*1,0,-2.25]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54*1,0,-2.25]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + + color("White") + translate([0,-0.5,Capacitor_height/2]) + rotate([90,0,0]) + %linear_extrude(1) + text(Text,size=2,valign="center",halign="center"); + } +} + +if(Type==2) + { + translate([0,0,2.75]) + { + color("DodgerBlue") + hull() + { + color("Black") + translate([0,0,2]) + rotate([0,0,0]) + cube([2.54*3,2.5,2.54*2],center=true); + } + + color("Silver") + translate([2.54,0,-4.5]) + rotate([0,0,0]) + cylinder(d=0.55,h=10,center=true); + + color("Silver") + translate([-2.54,0,-4.5]) + rotate([0,0,0]) + cylinder(d=0.55,h=10,center=true); + + + if(Solder==1) + { + color("Silver") + translate([2.54*1,0,-2.25]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54*1,0,-2.25]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + + color("White") + %translate([0,-0.3,2]) + rotate([90,0,0]) + linear_extrude(1) + text(Text,size=2,valign="center",halign="center"); + } +} +} + +Capacitor(Text,Capacitor_diameter,Capacitor_height,Type,Solder); + diff --git a/3d/lib/Diode.scad b/3d/lib/Diode.scad new file mode 100644 index 0000000..0ccfac0 --- /dev/null +++ b/3d/lib/Diode.scad @@ -0,0 +1,173 @@ + + +$fn=36; +Text="1N4007"; +Size=1; +Solder=1; + +module Diode(Text,Size,Solder) + { + if(Size==0) + translate([0,0,2.75]) + { + color("Black") + translate([0,0,0]) + rotate([0,90,0]) + cylinder(r=1.45,h=2.54*3,center=true); + + color("White") + translate([-2.54*1.49,0,0]) + rotate([0,90,0]) + cylinder(r=1.5,h=1); + + color("Silver") + translate([0,0,0]) + rotate([0,90,0]) + cylinder(d=0.55,h=2.54*4,center=true); + color("Silver") + translate([2.54*2,0,-5]) + rotate([0,0,0]) + cylinder(d=0.55,h=10,center=true); +color("Silver") + translate([-2.54*2,0,-5]) + rotate([0,0,0]) + cylinder(d=0.55,h=10,center=true); + color("Silver") + translate([2.54*2,0,0]) + rotate([0,0,0]) + sphere(d=0.55); +color("Silver") + translate([-2.54*2,0,0]) + rotate([0,0,0]) + sphere(d=0.55); + +if(Solder==1) + { + color("Silver") + translate([2.54*2,0,-2.25]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54*2,0,-2.25]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + + color("Gray") + %translate([0,0,0.5]) + linear_extrude(1) + text(Text,size=1,valign="center",halign="center"); + } +if(Size==1) + translate([0,0,3.75]) + { + color("Black") + translate([-1,0,0]) + rotate([0,90,0]) + cylinder(r=2,h=2.54*3.5,center=true); + + color("White") + translate([-2.54*1.99-0.3,0,0]) + rotate([0,90,0]) + cylinder(r=2.05,h=1); + + color("Silver") + translate([-1.257,0,0]) + rotate([0,90,0]) + cylinder(d=0.55,h=2.54*5,center=true); + color("Silver") + translate([2.54*2,0,-5]) + rotate([0,0,0]) + cylinder(d=0.55,h=10,center=true); +color("Silver") + translate([-2.54*3,0,-5]) + rotate([0,0,0]) + cylinder(d=0.55,h=10,center=true); + color("Silver") + translate([2.54*2,0,0]) + rotate([0,0,0]) + sphere(d=0.55); +color("Silver") + translate([-2.54*3,0,0]) + rotate([0,0,0]) + sphere(d=0.55); + +if(Solder==1) + { + color("Silver") + translate([2.54*2,0,-3.25]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54*3,0,-3.25]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + + color("Gray") + %translate([-1,0,1.05]) + linear_extrude(1) + text(Text,size=1.5,valign="center",halign="center"); + } + +if(Size==2) + translate([0,0,4.25]) + { + color("Black") + translate([0,0,0]) + rotate([0,90,0]) + cylinder(r=2.5,h=2.54*4,center=true); + + color("White") + translate([-2.54*1.99,0,0]) + rotate([0,90,0]) + cylinder(r=2.55,h=1.5); + + color("Silver") + translate([0,0,0]) + rotate([0,90,0]) + cylinder(d=0.55,h=2.54*6,center=true); + color("Silver") + translate([2.54*3,0,-5]) + rotate([0,0,0]) + cylinder(d=0.55,h=10,center=true); +color("Silver") + translate([-2.54*3,0,-5]) + rotate([0,0,0]) + cylinder(d=0.55,h=10,center=true); + color("Silver") + translate([2.54*3,0,0]) + rotate([0,0,0]) + sphere(d=0.55); +color("Silver") + translate([-2.54*3,0,0]) + rotate([0,0,0]) + sphere(d=0.55); + +if(Solder==1) + { + color("Silver") + translate([2.54*3,0,-3.75]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54*3,0,-3.75]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + + color("Gray") + %translate([0,0,1.7]) + linear_extrude(1) + text(Text,size=1.5,valign="center",halign="center"); + } +} + +Diode(Text,Size,Solder); + diff --git a/3d/lib/Dupont_connector_female.scad b/3d/lib/Dupont_connector_female.scad new file mode 100644 index 0000000..18c682a --- /dev/null +++ b/3d/lib/Dupont_connector_female.scad @@ -0,0 +1,65 @@ +$fn=36; +Pitch=2.54; +Positions=6; +Solder=1; + +module Dupont_connector_female(Pitch,Positions,Solder) + { + translate([0,-Pitch*round(Positions/2),0]) + rotate([0,180,0]) + for(a=[0:1:Positions-1]) + { + color("Goldenrod") + translate([0,Pitch*a,1]) + cube([0.6,0.6,4],center=true); + if(Solder==1) + { + color("Silver") + translate([0,Pitch*a,-2]) + cylinder(r1=0,r2=1,h=1); + color("Silver") + translate([0,Pitch*a,0.5]) + cylinder(r1=1,r2=0,h=1); + } + difference() + { + color("Black") + translate([0,Pitch*a,-11]) + Component(2,2.55,10); + color("grey") + translate([0,Pitch*a,-12]) + Component(1.25,1.25,10); + } + + } + } + +module Component(X,Y,Z) + { + hull() + { + translate([X/2,Y/2,0]) + sphere(r=0.25,$fn=18); + translate([-X/2,Y/2,0]) + sphere(r=0.25,$fn=18); + translate([X/2,-Y/2,0]) + sphere(r=0.25,$fn=18); + translate([-X/2,-Y/2,0]) + sphere(r=0.25,$fn=18); + + translate([X/2,Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + translate([-X/2,Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + translate([X/2,-Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + translate([-X/2,-Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + } + } + +//--------------------------------------------------------------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------------------------------------- + +Dupont_connector_female(Pitch,Positions,Solder); \ No newline at end of file diff --git a/3d/lib/I2C_interface_LCD1602.scad b/3d/lib/I2C_interface_LCD1602.scad new file mode 100644 index 0000000..51f8cfc --- /dev/null +++ b/3d/lib/I2C_interface_LCD1602.scad @@ -0,0 +1,276 @@ + +$fn=36; +//0=false 1=true +Connection_pins_enabled=1; +Connection_pins_up=0; +I2C_pins_enabled=1; +I2C_pins_up=3; +Led_pins_enabled=1; +Led_pins_up=0; + +module Pins_holes(Pins_number) + { + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([0,2.54*a,0]) + cylinder(r=0.55,h=10,center=true); + } + } + +module Pins_copper_rings(Pins_number) + { + + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([0,2.54*a,0]) + cylinder(r=1,h=1.05,center=true); + } + } + +module Pins(Pins_number,Pitch,Solder) + { + translate([0,-(Pitch*round(Pins_number/2))+Pitch,0]) + for(a=[0:1:Pins_number-1]) + { + translate([0,0,-10/6]) + { + color("Goldenrod") + translate([0,Pitch*a,-2]) + cube([0.6,0.6,10],center=true); + color("Goldenrod") + translate([0,Pitch*a,-7.6]) + rotate([0,0,45]) + cylinder(r1=0,r2=0.425,h=0.6,$fn=4); + color("Goldenrod") + translate([0,Pitch*a,3]) + rotate([0,0,45]) + cylinder(r2=0,r1=0.425,h=0.6,$fn=4); + } + color("Black") + translate([0,Pitch*a,-2]) + Component(2,2,1.25); + if(a4) + color("White") + translate([4,2.54*Pins_number/4+0.5,3.45]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=1,valign="center",halign="center"); + + if(Pins_number<5) + color("White") + translate([3.5,2.54*Pins_number/4,3.45]) + rotate([0,0,0]) + linear_extrude(1) + text(Text,size=1,valign="center",halign="center"); + + color("White") + translate([4,0,3.4]) + cylinder(r=1,h=1); + color("White") + translate([6,1,3.4]) + cylinder(r=0.5,h=1); + + } + +if(Type==1) +translate([0.25,1.252-(round(Pins_number/4)*2.54),3]) +{ +difference() + { + for(a=[0:1:Pins_number/2-1]) + translate([0,a*2.54,0]) + { + color("Black") + translate([0,0,0]) + cube([14.7,2.54,3.5]); + + color("Silver") + translate([-0.45,1.252-0.5,1.5]) + cube([5,1,0.3]); + color("Silver") + translate([10.15,1.252-0.5,1.5]) + cube([5,1,0.3]); + + color("Silver") + translate([-0.45,1.252-0.3,-4.2]) + cube([0.3,0.6,6]); + color("Silver") + translate([14.85,1.252-0.3,-4.2]) + cube([0.3,0.6,6]); + + color("Silver") + translate([-0.45,1.252-0.5,-0.4]) + cube([0.3,1,2]); + color("Silver") + translate([14.85,1.252-0.5,-0.4]) + cube([0.3,1,2]); + +if(Solder==1) + { + color("Silver") + translate([2.54*6-0.25,1.257,-1.5]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54*0-0.25,1.257,-1.5]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + } + + if(Pins_number>4) + color("White") + translate([7,2.54*Pins_number/4+0.5,3.45]) + rotate([0,0,90]) + linear_extrude(1) + text(Text,size=1,valign="center",halign="center"); + + if(Pins_number<5) + color("White") + translate([3.5,2.54*Pins_number/4,3.45]) + rotate([0,0,0]) + linear_extrude(1) + text(Text,size=1,valign="center",halign="center"); + + color("White") + translate([7.5,0,3.4]) + cylinder(r=1,h=1); + color("White") + translate([13,1,3.4]) + cylinder(r=0.5,h=1); + } +} + + + +} + +IC_DIP(Pins_number,Text,Type,Solder); + diff --git a/3d/lib/IC_TO220.scad b/3d/lib/IC_TO220.scad new file mode 100644 index 0000000..3c56791 --- /dev/null +++ b/3d/lib/IC_TO220.scad @@ -0,0 +1,161 @@ + +$fn=36; +Text="NDP"; +Text1="6020P"; +Type=0; //0=vertical 1=90 degrees +Solder=1; + + +module TO220(Text,Text1,Type,Solder) + { +if(Type==0) + translate([0.1+2.54,0.03-2.54*2,6]) + rotate([0,-90,0]) + difference() + { + union() + { + color("silver") + translate([0.1,0.1,0]) + cube([15,9.8,1.2]); + + color("Black") + translate([0,0,0.01]) + cube([8.5,10,4.5]); + + color("Silver") + translate([-2,2,2.5]) + cube([5,1,0.3]); + color("Silver") + translate([-2,2+2.54,2.5]) + cube([5,1,0.3]); + color("Silver") + translate([-2,2+2.54*2,2.5]) + cube([5,1,0.3]); + + color("Silver") + translate([-14,2+0.2,2.5]) + cube([13,0.6,0.3]); + color("Silver") + translate([-14,2+2.54+0.2,2.5]) + cube([13,0.6,0.3]); + color("Silver") + translate([-14,2+2.54*2+0.2,2.5]) + cube([13,0.6,0.3]); + } + + translate([12,5,-2]) + cylinder(d=3.5,h=10); + + color("White") + translate([6,5,4.45]) + rotate([0,0,-90]) + linear_extrude(1) + text(Text,size=2,valign="center",halign="center"); + color("White") + translate([3,5,4.45]) + rotate([0,0,-90]) + linear_extrude(1) + text(Text1,size=2,valign="center",halign="center"); + } + if(Solder==1) + translate([0,0,4.25]) + rotate([0,0,90]) + { + color("Silver") + translate([2.54*1,0,-3.75]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54*0,0,-3.75]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54*1,0,-3.75]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + +if(Type==1) + { + translate([0.1+2.54,0.03-2.54*2,2]) + rotate([0,0,0]) + difference() + { + union() + { + color("silver") + translate([0.1,0.1,0]) + cube([15,9.8,1.2]); + + color("Black") + translate([0,0,0.01]) + cube([8.5,10,4.5]); + + color("Silver") + translate([-2.8,2,2.5]) + cube([5,1,0.3]); + color("Silver") + translate([-2.8,2+2.54,2.5]) + cube([5,1,0.3]); + color("Silver") + translate([-2.8,2+2.54*2,2.5]) + cube([5,1,0.3]); + + color("Silver") + translate([-2.8,2+0.2,2.5]) + rotate([0,90,0]) + cube([13,0.6,0.3]); + color("Silver") + translate([-2.8,2+2.54+0.2,2.5]) + rotate([0,90,0]) + cube([13,0.6,0.3]); + color("Silver") + translate([-2.8,2+2.54*2+0.2,2.5]) + rotate([0,90,0]) + cube([13,0.6,0.3]); + } + + translate([12,5,-2]) + cylinder(d=3.5,h=10); + + color("White") + translate([6,5,4.45]) + rotate([0,0,-90]) + linear_extrude(1) + text(Text,size=2,valign="center",halign="center"); + color("White") + translate([3,5,4.45]) + rotate([0,0,-90]) + linear_extrude(1) + text(Text1,size=2,valign="center",halign="center"); + } + if(Solder==1) + translate([0,0,4.25]) + rotate([0,0,90]) + { + color("Silver") + translate([2.54*1,0,-3.75]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54*0,0,-3.75]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54*1,0,-3.75]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + } + } + + +TO220(Text,Text1,Type,Solder); + diff --git a/3d/lib/IC_TO92.scad b/3d/lib/IC_TO92.scad new file mode 100644 index 0000000..0f1ea5e --- /dev/null +++ b/3d/lib/IC_TO92.scad @@ -0,0 +1,94 @@ +$fn=36; +Pitch=2.54; +Text="BC"; +Text1="337"; +P1="B"; +P2="C"; +P3="E"; +Color="Black"; +Solder=1; + +module TO92(Text,Text1,P1,P2,P3,Color,Solder) + { translate([0,0,3]) + difference() + { + union() + { + color("Silver") + translate([Pitch,0,-18]) + cube([0.5,0.5,30],center=true); + color("Silver") + translate([-Pitch,0,-18]) + cube([0.5,0.5,30],center=true); + color("Silver") + translate([1.75,0,-1]) + rotate([0,-20,0]) + cube([0.5,0.5,5],center=true); + color("Silver") + translate([-1.75,0,-1]) + rotate([0,20,0]) + cube([0.5,0.5,5],center=true); + color("Silver") + translate([0,0,-16]) + cube([0.5,0.5,34],center=true); + + if(Solder==1) + { + color("Silver") + translate([Pitch,0,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([0,0,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-Pitch,0,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + + } + + color(Color) + { + translate([0,0,1]) + cylinder(d=5,h=4); + } + } + color("SlateGray") + translate([0,-6.5,4]) + cube([10,10,10],center=true); + + color("White") + translate([0,-1.48,3.75]) + rotate([90,0,0]) + linear_extrude(1) + text(Text,size=1,valign="center",halign="center"); + color("White") + translate([0,-1.48,2.5]) + rotate([90,0,0]) + linear_extrude(1) + text(Text1,size=1,valign="center",halign="center"); + + color("White") + translate([-1.5,-1.48,1.5]) + rotate([90,0,0]) + linear_extrude(1) + text(P1,size=0.5,valign="center",halign="center"); + color("White") + translate([0,-1.48,1.5]) + rotate([90,0,0]) + linear_extrude(1) + text(P2,size=0.5,valign="center",halign="center"); + color("White") + translate([1.5,-1.48,1.5]) + rotate([90,0,0]) + linear_extrude(1) + text(P3,size=0.5,valign="center",halign="center"); + } + } + +TO92(Text,Text1,P1,P2,P3,Color,Solder); \ No newline at end of file diff --git a/3d/lib/LCD_1602_I2C.scad b/3d/lib/LCD_1602_I2C.scad new file mode 100644 index 0000000..acec280 --- /dev/null +++ b/3d/lib/LCD_1602_I2C.scad @@ -0,0 +1,180 @@ +use; +use; + +$fn=36; +Pitch=2.54; +PinsDown=1; +Text1="ABCDEFG"; +Text2="HIJKLMNOPQ"; + + + +module Pins(Pins_number,Pitch) + { + translate([0,-Pitch*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([0,Pitch*a,-3]) + cube([0.6,0.6,10],center=true); + color("Silver") + translate([0,Pitch*a,-1.5]) + cylinder(r1=0,r2=1,h=1); + color("Silver") + translate([0,Pitch*a,0.5]) + cylinder(r1=1,r2=0,h=1); + color("Black") + translate([0,Pitch*a,-2]) + Component(2,2,1.25); + } + } + +module Pins_holes(Pins_number,Pitch,Diameter) + { + translate([0,-Pitch*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([0,Pitch*a,-3]) + cylinder(r=Diameter,h=10,center=true); + } + } + +module Pins_copper_rings(Pins_number,Pitch,Diameter) + { + translate([0,-Pitch*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([0,Pitch*a,-3]) + cylinder(r=Diameter,h=1.6,center=true); + } + } + +module Component(X,Y,Z) + { + hull() + { + translate([X/2,Y/2,0]) + sphere(r=0.25,$fn=18); + translate([-X/2,Y/2,0]) + sphere(r=0.25,$fn=18); + translate([X/2,-Y/2,0]) + sphere(r=0.25,$fn=18); + translate([-X/2,-Y/2,0]) + sphere(r=0.25,$fn=18); + + translate([X/2,Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + translate([-X/2,Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + translate([X/2,-Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + translate([-X/2,-Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + } + } + +//--------------------------------------------------------------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------------------------------------- + +module LCD_1602_I2C(PinsDown,Text1,Text2) +translate([-2.54*16,-2.54*7-1.27,0]) + { + translate([0,-1.252,0]) + difference() + { + union() + { + color("Royalblue") + translate([0,1.5,0]) + cube([81,36,1.5]); + + translate([Pitch*11,Pitch*14,-2.25]) + rotate([0,180,90]) + Pins_copper_rings(16,Pitch,1); + + color("silver") + translate([2.5,4,-0.05]) + rotate([0,0,0]) + cylinder(d=3.5,h=1.6); + color("silver") + translate([2.5,35,-0.05]) + rotate([0,0,0]) + cylinder(d=3.5,h=1.6); + color("silver") + translate([78.5,4,-0.05]) + rotate([0,0,0]) + cylinder(d=3.5,h=1.6); + color("silver") + translate([78.5,35,-0.05]) + rotate([0,0,0]) + cylinder(d=3.5,h=1.6); + + color("Black") + translate([40.5,19.5,9.5]) + rotate([0,180,0]) + Component(71.5,27,8); + } + + translate([Pitch*11,Pitch*14,0.5]) + rotate([0,180,90]) + Pins_holes(16,Pitch,0.55); + + color("OliveDrab") + translate([40.5,19.5,12.5]) + rotate([0,180,0]) + Component(64,16,3); + + color("Black") + translate([10,20.5,9.5]) + rotate([0,0,0]) + linear_extrude(1) + text(Text1,size=4.5,font="Linux Libertine Mono O:style=Mono"); + color("Black") + translate([10,14.5,9.5]) + rotate([0,0,0]) + linear_extrude(1) + text(Text2,size=4.5,font="Linux Libertine Mono O:style=Mono"); + + color("silver") + translate([2.5,4,-1]) + rotate([0,0,0]) + cylinder(d=2.75,h=10); + color("silver") + translate([2.5,35,-1]) + rotate([0,0,0]) + cylinder(d=2.75,h=10); + color("silver") + translate([78.5,4,-1]) + rotate([0,0,0]) + cylinder(d=2.75,h=10); + color("silver") + translate([78.5,35,-1]) + rotate([0,0,0]) + cylinder(d=2.75,h=10); + } + + + + difference() + { +//I2C_interface_LCD1602(Connection_pins_enabled,Connection_pins_up,I2C_pin_enabled,I2C_pins_up,Led_pins_enabled,Led_pins_up); + translate([2.54*11,2.54*10+1.27,0]) + rotate([0,180,-90]) + I2C_interface_LCD1602(1,0,1,PinsDown,1,PinsDown,1,3); + translate([0,0,52.5]) + cube([100,100,100],center=true); + } + + translate([2.54*4,2.54*13.5,0.75]) + scale([1,1,1.2]) + Solder(16,1); + + + +} + + +LCD_1602_I2C(PinsDown,Text1,Text2); diff --git a/3d/lib/LCD_1602_Serial.scad b/3d/lib/LCD_1602_Serial.scad new file mode 100644 index 0000000..29661a3 --- /dev/null +++ b/3d/lib/LCD_1602_Serial.scad @@ -0,0 +1,179 @@ +//I have two version of this display, one from an original Arduino kit and one from Aliexpress, and the display case (the black part) differ in size so I placed an option to select wich one to visualize. The original one size 26.5x71.5x8.5mm while non original one size 24x71x7mm.The board and pin positions are identical. + + +$fn=36; +Pitch=2.54; +Pins_enabled=0; +Pins_up=0; +Version=0; //0=Original display from Arduino kit, LCM1602C 1=Generic eBay or Aliexpress +Text1="ABCDEFGHIJKLMNOP"; +Text2="QRSTUVWXYZ123456"; + + +module Pins(Pins_number,Pitch) + { + translate([0,-Pitch*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([0,Pitch*a,-3]) + cube([0.6,0.6,10],center=true); + color("Silver") + translate([0,Pitch*a,-1.5]) + cylinder(r1=0,r2=1,h=1); + color("Silver") + translate([0,Pitch*a,0.5]) + cylinder(r1=1,r2=0,h=1); + + color("Black") + translate([0,Pitch*a,-2]) + Component(2,2,1.25); + } + } + +module Pins_holes(Pins_number,Pitch,Diameter) + { + translate([0,-Pitch*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([0,Pitch*a,-3]) + cylinder(r=Diameter,h=10,center=true); + } + } + +module Pins_copper_rings(Pins_number,Pitch,Diameter) + { + translate([0,-Pitch*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([0,Pitch*a,-3]) + cylinder(r=Diameter,h=1.6,center=true); + } + } + +module Component(X,Y,Z) + { + hull() + { + translate([X/2,Y/2,0]) + sphere(r=0.25,$fn=18); + translate([-X/2,Y/2,0]) + sphere(r=0.25,$fn=18); + translate([X/2,-Y/2,0]) + sphere(r=0.25,$fn=18); + translate([-X/2,-Y/2,0]) + sphere(r=0.25,$fn=18); + + translate([X/2,Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + translate([-X/2,Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + translate([X/2,-Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + translate([-X/2,-Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + } + } + +//--------------------------------------------------------------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------------------------------------- + +module LCD_1602_Serial(Pins_enabled,Pins_up,Version,Text1,Text2) +translate([-Pitch*15-Pitch/2,-Pitch*7-Pitch/2,2.5]) + { + translate([0,-1.252,0]) + difference() + { + union() + { + color("Royalblue") + translate([0,1.5,0]) + cube([80,36,1.5]); + + translate([Pitch*10.5,Pitch*14,-2.25]) + rotate([0,180,90]) + Pins_copper_rings(16,Pitch,0.75); + + color("silver") + translate([2.5,4,-0.05]) + rotate([0,0,0]) + cylinder(d=3.5,h=1.6); + color("silver") + translate([2.5,35,-0.05]) + rotate([0,0,0]) + cylinder(d=3.5,h=1.6); + color("silver") + translate([77.5,4,-0.05]) + rotate([0,0,0]) + cylinder(d=3.5,h=1.6); + color("silver") + translate([77.5,35,-0.05]) + rotate([0,0,0]) + cylinder(d=3.5,h=1.6); + + if(Version==0) + color("Black") + translate([40,19,9.5]) + rotate([0,180,0]) + Component(71.5,27,8); + if(Version==1) + color("Black") + translate([40,19,8.5]) + rotate([0,180,0]) + Component(71,24,7); + } + + translate([Pitch*10.5,Pitch*14,0.5]) + rotate([0,180,90]) + Pins_holes(16,Pitch,0.55); + + color("OliveDrab") + translate([40,19,11.5]) + rotate([0,180,0]) + Component(64,16,3); + + color("Black") + translate([10,20,8.45]) + rotate([0,0,0]) + linear_extrude(1) + text(Text1,size=4.25); + color("Black") + translate([10,14,8.45]) + rotate([0,0,0]) + linear_extrude(1) + text(Text2,size=4.25); + + color("silver") + translate([2.5,4,-1]) + rotate([0,0,0]) + cylinder(d=2.75,h=10); + color("silver") + translate([2.5,35,-1]) + rotate([0,0,0]) + cylinder(d=2.75,h=10); + color("silver") + translate([77.5,4,-1]) + rotate([0,0,0]) + cylinder(d=2.75,h=10); + color("silver") + translate([77.5,35,-1]) + rotate([0,0,0]) + cylinder(d=2.75,h=10); + } + + if(Pins_enabled==1 && Pins_up==0) + translate([Pitch*10.5,Pitch*14-1.257,1]) + rotate([0,0,90]) + Pins(16,Pitch); + if(Pins_enabled==1 && Pins_up==1) + translate([Pitch*11,Pitch*14-1.257,0.8]) + rotate([0,180,90]) + Pins(16,Pitch); + +} + + +LCD_1602_Serial(Pins_enabled,Pins_up,Version,Text1,Text2); \ No newline at end of file diff --git a/3d/lib/LDR.scad b/3d/lib/LDR.scad new file mode 100644 index 0000000..b6801d9 --- /dev/null +++ b/3d/lib/LDR.scad @@ -0,0 +1,164 @@ +$fn=36; + + +module traks() + translate([0.15,0,0]) + { + color("Silver") + hull() + { + translate([1.9,0,1.95]) + cylinder(d=0.2,h=0.1); + translate([-1.9,0,1.95]) + cylinder(d=0.2,h=0.1); + } + + translate([0,0.5,0]) + color("Silver") + hull() + { + translate([1.8,0,1.95]) + cylinder(d=0.2,h=0.1); + translate([-1.8,0,1.95]) + cylinder(d=0.2,h=0.1); + } +translate([0,-0.5,0]) + color("Silver") + hull() + { + translate([1.8,0,1.95]) + cylinder(d=0.2,h=0.1); + translate([-1.8,0,1.95]) + cylinder(d=0.2,h=0.1); + } + + translate([0,1,0]) + color("Silver") + hull() + { + translate([1.65,0,1.95]) + cylinder(d=0.2,h=0.1); + translate([-1.55,0,1.95]) + cylinder(d=0.2,h=0.1); + } +translate([0,-1,0]) + color("Silver") + hull() + { + translate([1.65,0,1.95]) + cylinder(d=0.2,h=0.1); + translate([-1.65,0,1.95]) + cylinder(d=0.2,h=0.1); + } + + translate([0,1.5,0]) + color("Silver") + hull() + { + translate([1.4,0,1.95]) + cylinder(d=0.2,h=0.1); + translate([-1.4,0,1.95]) + cylinder(d=0.2,h=0.1); + } +translate([0,-1.5,0]) + color("Silver") + hull() + { + translate([1.4,0,1.95]) + cylinder(d=0.2,h=0.1); + translate([-1.4,0,1.95]) + cylinder(d=0.2,h=0.1); + } + +translate([0,-1.5,0]) + color("Silver") + hull() + { + translate([1.4,0,1.95]) + cylinder(d=0.2,h=0.1); + translate([1.7,0.5,1.95]) + cylinder(d=0.2,h=0.1); + } +translate([0,-1,0]) + color("Silver") + hull() + { + translate([1.7,0,1.95]) + cylinder(d=0.2,h=0.1); + translate([1.85,0.5,1.95]) + cylinder(d=0.2,h=0.1); + } +translate([0,-0.5,0]) + color("Silver") + hull() + { + translate([1.85,0,1.95]) + cylinder(d=0.2,h=0.1); + translate([1.9,0.5,1.95]) + cylinder(d=0.2,h=0.1); + } +translate([0,1.5,0]) + color("Silver") + hull() + { + translate([1.4,0,1.95]) + cylinder(d=0.2,h=0.1); + translate([1.7,-0.5,1.95]) + cylinder(d=0.2,h=0.1); + } +translate([0,1,0]) + color("Silver") + hull() + { + translate([1.7,0,1.95]) + cylinder(d=0.2,h=0.1); + translate([1.85,-0.5,1.95]) + cylinder(d=0.2,h=0.1); + } +translate([0,0.5,0]) + color("Silver") + hull() + { + translate([1.85,0,1.95]) + cylinder(d=0.2,h=0.1); + translate([1.9,-0.5,1.95]) + cylinder(d=0.2,h=0.1); + } + } + +module LDR() +difference() + { + union() + { + color("SaddleBrown") + translate([0,0,0]) + cylinder(d=5,h=2); + + color("Silver") + translate([1.27,0,-40]) + cylinder(d=0.6,h=40); + color("Silver") + translate([-1.27,0,-40]) + cylinder(d=0.6,h=40); + + } +color("SaddleBrown") + translate([0,7,0]) + cube([10,10,10],center=true); +color("SaddleBrown") + translate([0,-7,0]) + cube([10,10,10],center=true); + + color("Silver") + translate([0,0.126,0]) + traks(); + +color("Silver") + translate([0,-0.126,0]) + rotate([0,0,180]) + traks(); + } + + +LDR(); \ No newline at end of file diff --git a/3d/lib/Led.scad b/3d/lib/Led.scad new file mode 100644 index 0000000..afea249 --- /dev/null +++ b/3d/lib/Led.scad @@ -0,0 +1,459 @@ +$fn=36; +Pitch=2.54; +Color="white"; +Size=1; //0=5mm 1=5mm bicolor 2=5mm RGB 3=3mm 4=3mm bicolor 5=3mm rgb +Solder=1; + +module Led(Color,Size,,Solder) + { + if(Size==0) + translate([1.27,0,3]) + difference() + { + union() + { + color("Silver") + translate([Pitch/2-0.25,-0.25,-28],center=true) + cube([0.5,0.5,30]); + color("Silver") + translate([-Pitch/2-0.25,-0.25,-26],center=true) + cube([0.5,0.5,28.5]); + color("Silver") + translate([0,0,3],center=true) + cylinder(d1=0,d2=2,center=true); + + color("Silver") + difference() + { + translate([-Pitch/2-0.25,-0.25,1.5]) + cube([Pitch+0.5,0.5,2]); + translate([0.65,-0.25,3]) + rotate([0,35,0]) + cube([0.5,5,5],center=true); + } + + if(Solder==1) + { + color("Silver") + translate([Pitch*0.5,0,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-Pitch*0.5,0,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + + color(Color,0.8) + { + hull() + { + translate([0,0,6]) + sphere(d=5); + translate([0,0,1]) + cylinder(d=5,h=1); + } + cylinder(d=6,h=1); + } + } + color(Color,0.6) + translate([-7.5,0,-1]) + cube([10,10,10],center=true); + } + + + if(Size==1) + translate([0,0,3]) + difference() + { + union() + { + color("Silver") + translate([Pitch,0,-18]) + cube([0.5,0.5,30],center=true); + color("Silver") + translate([-Pitch,0,-17.4]) + cube([0.5,0.5,28.5],center=true); + color("Silver") + translate([1.75,0,-1]) + rotate([0,-20,0]) + cube([0.5,0.5,5],center=true); + color("Silver") + translate([-1.75,0,-1]) + rotate([0,20,0]) + cube([0.5,0.5,5],center=true); + color("Silver") + translate([0,0,-15.5]) + cube([0.5,0.5,34],center=true); + + color("Silver") + translate([0,0,2.5]) + cylinder(d1=0,d2=2,center=true); + + color("Silver") + difference() + { + translate([-Pitch/2-0.25,-0.25,1]) + cube([Pitch+0.5,0.5,2]); + translate([0.65,-0.25,2.5]) + rotate([0,35,0]) + cube([0.5,5,5],center=true); + } + + if(Solder==1) + { + color("Silver") + translate([Pitch,0,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([0,0,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-Pitch,0,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + + } + + color(Color,0.8) + { + hull() + { + translate([0,0,6]) + sphere(d=5); + translate([0,0,1]) + cylinder(d=5,h=1); + } + cylinder(d=6,h=1); + } + } + color(Color,0.6) + translate([-7.5,0,4]) + cube([10,10,10],center=true); + } + + +if(Size==2) + translate([Pitch/2,Pitch/2,3]) + difference() + { + union() + { + color("Silver") + translate([Pitch/2,-Pitch/2,-18.15]) + cube([0.5,0.5,30],center=true); + color("Silver") + translate([-Pitch/2,-Pitch/2,-17.4]) + cube([0.5,0.5,28.5],center=true); + color("Silver") + translate([Pitch/2,Pitch/2,-18.15]) + cube([0.5,0.5,30],center=true); + color("Silver") + translate([-Pitch/2,Pitch/2,-18.15]) + cube([0.5,0.5,30],center=true); + + color("Silver") + translate([0.73,0.73,-1]) + rotate([13,-13,0]) + cube([0.5,0.5,5],center=true); + color("Silver") + translate([-0.73,0.73,-1]) + rotate([13,13,0]) + cube([0.5,0.5,5],center=true); + color("Silver") + translate([-0.73,-0.73,-1]) + rotate([-13,13,0]) + cube([0.5,0.5,5],center=true); + color("Silver") + translate([0.73,-0.73,-1]) + rotate([-13,-13,0]) + cube([0.5,0.5,5],center=true); + + color("Silver") + translate([0,0,2.5]) + cylinder(d1=0,d2=2,center=true); + + color("Silver") + difference() + { + translate([-Pitch/2-0.25,-0.25,1]) + cube([Pitch+0.4,0.4,2]); + translate([0.65,-0.25,2.5]) + rotate([0,35,0]) + cube([0.5,5,5],center=true); + } + if(Solder==1) + { + color("Silver") + translate([Pitch/2,Pitch/2,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-Pitch/2,Pitch/2,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([Pitch/2,-Pitch/2,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-Pitch/2,-Pitch/2,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + + color(Color,0.8) + { + hull() + { + translate([0,0,6]) + sphere(d=5); + translate([0,0,1]) + cylinder(d=5,h=1); + } + cylinder(d=6,h=1); + } + + } + color(Color,0.6) + translate([-7.5,0,4.95]) + cube([10,10,10],center=true); + } + +if(Size==3) + translate([Pitch/2,0,3]) + difference() + { + union() + { + color("Silver") + translate([Pitch/2,0,-14],center=true) + cube([0.4,0.4,30],center=true); + color("Silver") + translate([-Pitch/2,0,-13],center=true) + cube([0.4,0.4,28.5],center=true); + color("Silver") + translate([0,0,2.2],center=true) + cylinder(d1=0,d2=2,center=true); + + color("Silver") + difference() + { + translate([0,0,1.5]) + cube([Pitch,0.5,2],center=true); + translate([1.2,-0.25,3]) + rotate([0,35,0]) + cube([0.5,5,6.5],center=true); + } + + if(Solder==1) + { + color("Silver") + translate([Pitch*0.5,0,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-Pitch*0.5,0,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + + color(Color,0.8) + { + hull() + { + translate([0,0,3.5]) + sphere(d=3); + translate([0,0,1]) + cylinder(d=3,h=1); + } + cylinder(d=4,h=1); + } + + } + color(Color,0.6) + translate([-7.5,0,-1]) + cube([10,10,10],center=true); + } + + +if(Size==4) + translate([0,0,3]) + difference() + { + union() + { + color("Silver") + translate([Pitch,0,-18.15]) + cube([0.5,0.5,30],center=true); + color("Silver") + translate([-Pitch,0,-17.4]) + cube([0.5,0.5,28.5],center=true); + color("Silver") + translate([1.6,0,-1]) + rotate([0,-23,0]) + cube([0.5,0.5,5],center=true); + color("Silver") + translate([-1.6,0,-1]) + rotate([0,23,0]) + cube([0.5,0.5,5],center=true); + color("Silver") + translate([0,0,-15.5]) + cube([0.5,0.5,34],center=true); + + color("Silver") + translate([0,0,2.5]) + cylinder(d1=0,d2=2,center=true); + + color("Silver") + difference() + { + translate([0,0,2]) + cube([Pitch+0.4,0.4,2],center=true); + translate([0.65,-0.25,2.5]) + rotate([0,35,0]) + cube([0.5,5,5],center=true); + } + if(Solder==1) + { + color("Silver") + translate([Pitch,0,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-Pitch,0,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([0,0,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + + color(Color,0.8) + { + hull() + { + translate([0,0,3.5]) + sphere(d=3); + translate([0,0,1]) + cylinder(d=3,h=1); + } + cylinder(d=4,h=1); + } + + } + color(Color,0.6) + translate([-6.5,0,4.95]) + cube([10,10,10],center=true); + } + +if(Size==5) + translate([Pitch/2,Pitch/2,3]) + difference() + { + union() + { + color("Silver") + translate([Pitch/2,-Pitch/2,-18.15]) + cube([0.5,0.5,30],center=true); + color("Silver") + translate([-Pitch/2,-Pitch/2,-17.4]) + cube([0.5,0.5,28.5],center=true); + color("Silver") + translate([Pitch/2,Pitch/2,-18.15]) + cube([0.5,0.5,30],center=true); + color("Silver") + translate([-Pitch/2,Pitch/2,-18.15]) + cube([0.5,0.5,30],center=true); + + color("Silver") + translate([0.73,0.73,-1]) + rotate([13,-13,0]) + cube([0.5,0.5,5],center=true); + color("Silver") + translate([-0.73,0.73,-1]) + rotate([13,13,0]) + cube([0.5,0.5,5],center=true); + color("Silver") + translate([-0.73,-0.73,-1]) + rotate([-13,13,0]) + cube([0.5,0.5,5],center=true); + color("Silver") + translate([0.73,-0.73,-1]) + rotate([-13,-13,0]) + cube([0.5,0.5,5],center=true); + + color("Silver") + translate([0,0,2.5]) + cylinder(d1=0,d2=2,center=true); + + color("Silver") + difference() + { + translate([-Pitch/2-0.25,-0.25,1]) + cube([Pitch+0.4,0.4,2]); + translate([0.65,-0.25,2.5]) + rotate([0,35,0]) + cube([0.5,5,5],center=true); + } + if(Solder==1) + { + color("Silver") + translate([Pitch/2,Pitch/2,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-Pitch/2,Pitch/2,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([Pitch/2,-Pitch/2,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-Pitch/2,-Pitch/2,-3]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + + color(Color,0.8) + { + hull() + { + translate([0,0,3.5]) + sphere(d=3); + translate([0,0,1]) + cylinder(d=3,h=1); + } + cylinder(d=4,h=1); + } + + } + color(Color,0.6) + translate([-6.5,0,4.95]) + cube([10,10,10],center=true); + } + } + +Led(Color,Size,Solder); \ No newline at end of file diff --git a/3d/lib/Micro_push_button.scad b/3d/lib/Micro_push_button.scad new file mode 100644 index 0000000..83f3dcd --- /dev/null +++ b/3d/lib/Micro_push_button.scad @@ -0,0 +1,374 @@ +$fn=36; + +use + +Type=0; //0=6x6 horizontal 1=6x6 vertical 2=12x12 horizontal 3=12x12 vertical +Knob_height=10; //Only knob height +Solder=0; + + +module Push_button(Type,Knob_height,Solder) + { + if(Type==0) + translate([0,1.27,1]) + difference() + { + union() + { + color("Black") + hull() + { + translate([3,3,0.25]) + sphere(d=0.5); + translate([3,-3,0.25]) + sphere(d=0.5); + translate([-3,3,0.25]) + sphere(d=0.5); + translate([-3,-3,0.25]) + sphere(d=0.5); + translate([3,3,3-0.25]) + sphere(d=0.5); + translate([3,-3,3-0.25]) + sphere(d=0.5); + translate([-3,3,3-0.25]) + sphere(d=0.5); + translate([-3,-3,3-0.25]) + sphere(d=0.5); + } + color("Silver") + hull() + { + translate([3-0.5,3-0.5,3-0.15]) + sphere(d=0.5); + translate([3-0.5,-3+0.5,3-0.15]) + sphere(d=0.5); + translate([-3+0.5,3-0.5,3-0.15]) + sphere(d=0.5); + translate([-3+0.5,-3+0.5,3-0.15]) + sphere(d=0.5); + } + color("Black") + { + translate([3-1,3-1,3+0.1]) + scale([1,1,0.5]) + sphere(d=1); + translate([3-1,-3+1,3+0.1]) + scale([1,1,0.5]) + sphere(d=1); + translate([-3+1,3-1,3+0.1]) + scale([1,1,0.5]) + sphere(d=1); + translate([-3+1,-3+1,3+0.1]) + scale([1,1,0.5]) + sphere(d=1); + } + color("Silver") + { + translate([2.54,0,0.5]) + cube([0.6,7.93,0.3],center=true); + translate([-2.54,0,0.5]) + cube([0.6,7.93,0.3],center=true); + translate([-2.54,-2.54*1.5,-1.5]) + cube([0.6,0.3,4],center=true); + translate([2.54,-2.54*1.5,-1.5]) + cube([0.6,0.3,4],center=true); + translate([-2.54,2.54*1.5,-1.5]) + cube([0.6,0.3,4],center=true); + translate([2.54,2.54*1.5,-1.5]) + cube([0.6,0.3,4],center=true); + } + + color("Black") + translate([0,0,1]) + cylinder(d=3.5,h=2+Knob_height); + + if(Solder==1) + { + color("Silver") + translate([2.54,2.54*1.5,-1]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54,2.54*1.5,-1]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([2.54,-2.54*1.5,-1]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54,-2.54*1.5,-1]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + } + } + + if(Type==1) + translate([0,0.5,5]) + rotate([90,0,0]) + union() + { + color("Black") + hull() + { + translate([3,3,0.25]) + sphere(d=0.5); + translate([3,-3,0.25]) + sphere(d=0.5); + translate([-3,3,0.25]) + sphere(d=0.5); + translate([-3,-3,0.25]) + sphere(d=0.5); + translate([3,3,3-0.25]) + sphere(d=0.5); + translate([3,-3,3-0.25]) + sphere(d=0.5); + translate([-3,3,3-0.25]) + sphere(d=0.5); + translate([-3,-3,3-0.25]) + sphere(d=0.5); + } + color("Silver") + hull() + { + translate([3-0.5,3-0.5,3-0.15]) + sphere(d=0.5); + translate([3-0.5,-3+0.5,3-0.15]) + sphere(d=0.5); + translate([-3+0.5,3-0.5,3-0.15]) + sphere(d=0.5); + translate([-3+0.5,-3+0.5,3-0.15]) + sphere(d=0.5); + } + color("Black") + { + translate([3-1,3-1,3+0.1]) + scale([1,1,0.5]) + sphere(d=1); + translate([3-1,-3+1,3+0.1]) + scale([1,1,0.5]) + sphere(d=1); + translate([-3+1,3-1,3+0.1]) + scale([1,1,0.5]) + sphere(d=1); + translate([-3+1,-3+1,3+0.1]) + scale([1,1,0.5]) + sphere(d=1); + } + color("Silver") + { + translate([2.54,-7,0.5]) + cube([0.6,9,0.3],center=true); + translate([-2.54,-7,0.5]) + cube([0.6,9,0.3],center=true); + } + + color("Black") + translate([0,0,1]) + cylinder(d=3.5,h=2+Knob_height); + + if(Solder==1) + { + color("Silver") + translate([2.54,-2.54*1.96,0.5]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54,-2.54*1.96,0.5]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + } + + if(Type==2) + translate([0,1.27,1]) + difference() + { + union() + { + color("Black") + hull() + { + translate([6,6,0.25]) + sphere(d=0.5); + translate([6,-6,0.25]) + sphere(d=0.5); + translate([-6,6,0.25]) + sphere(d=0.5); + translate([-6,-6,0.25]) + sphere(d=0.5); + translate([6,6,3.45]) + sphere(d=0.5); + translate([6,-6,3.45]) + sphere(d=0.5); + translate([-6,6,3.45]) + sphere(d=0.5); + translate([-6,-6,3.45]) + sphere(d=0.5); + } + color("Silver") + hull() + { + translate([5.5,5.5,3.55]) + sphere(d=0.5); + translate([5.5,-5.5,3.55]) + sphere(d=0.5); + translate([-5.5,5.5,3.55]) + sphere(d=0.5); + translate([-5.5,-5.5,3.55]) + sphere(d=0.5); + } + color("Black") + { + translate([4.5,4.5,3.75]) + scale([1,1,0.5]) + sphere(d=1.5); + translate([4.5,-4.5,3.75]) + scale([1,1,0.5]) + sphere(d=1.5); + translate([-4.5,4.5,3.75]) + scale([1,1,0.5]) + sphere(d=1.5); + translate([-4.5,-4.5,3.75]) + scale([1,1,0.5]) + sphere(d=1.5); + } + color("Silver") + { + translate([2.54,0,0.5]) + cube([0.6,7.93,0.3],center=true); + translate([-2.54,0,0.5]) + cube([0.6,7.93,0.3],center=true); + translate([-2.54,-2.54*2.5,-1]) + cube([0.6,0.3,3],center=true); + translate([2.54,-2.54*2.5,-1]) + cube([0.6,0.3,3],center=true); + translate([-2.54,2.54*2.5,-1]) + cube([0.6,0.3,3],center=true); + translate([2.54,2.54*2.5,-1]) + cube([0.6,0.3,3],center=true); + } + + color("Black") + translate([0,0,1]) + cylinder(d=6.7,h=2.5+Knob_height); + + if(Solder==1) + { + color("Silver") + translate([2.54,2.54*2.5,-1]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54,2.54*2.5,-1]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([2.54,-2.54*2.5,-1]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54,-2.54*2.5,-1]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + } + } + + if(Type==3) + translate([0,0.5,8]) + rotate([90,0,0]) + difference() + { + union() + { + color("Black") + hull() + { + translate([6,6,0.25]) + sphere(d=0.5); + translate([6,-6,0.25]) + sphere(d=0.5); + translate([-6,6,0.25]) + sphere(d=0.5); + translate([-6,-6,0.25]) + sphere(d=0.5); + translate([6,6,3.45]) + sphere(d=0.5); + translate([6,-6,3.45]) + sphere(d=0.5); + translate([-6,6,3.45]) + sphere(d=0.5); + translate([-6,-6,3.45]) + sphere(d=0.5); + } + color("Silver") + hull() + { + translate([5.5,5.5,3.55]) + sphere(d=0.5); + translate([5.5,-5.5,3.55]) + sphere(d=0.5); + translate([-5.5,5.5,3.55]) + sphere(d=0.5); + translate([-5.5,-5.5,3.55]) + sphere(d=0.5); + } + color("Black") + { + translate([4.5,4.5,3.75]) + scale([1,1,0.5]) + sphere(d=1.5); + translate([4.5,-4.5,3.75]) + scale([1,1,0.5]) + sphere(d=1.5); + translate([-4.5,4.5,3.75]) + scale([1,1,0.5]) + sphere(d=1.5); + translate([-4.5,-4.5,3.75]) + scale([1,1,0.5]) + sphere(d=1.5); + } + color("Silver") + { + translate([2.54,-9,0.5]) + cube([0.6,7.93,0.3],center=true); + translate([-2.54,-9,0.5]) + cube([0.6,7.93,0.3],center=true); + } + + color("Black") + translate([0,0,1]) + cylinder(d=6.7,h=2.5+Knob_height); + + if(Solder==1) + { + color("Silver") + translate([2.54,-2.54*3.15,0.5]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + color("Silver") + translate([-2.54,-2.54*3.15,0.5]) + rotate([0,0,0]) + scale([1,1,1.1]) + sphere(d=2); + } + } + } + } + +Push_button(Type,Knob_height,Solder); + +*PCB(100,100,1,2.54,1); \ No newline at end of file diff --git a/3d/lib/OLED_13_128_64.scad b/3d/lib/OLED_13_128_64.scad new file mode 100644 index 0000000..fdcbf8d --- /dev/null +++ b/3d/lib/OLED_13_128_64.scad @@ -0,0 +1,159 @@ +$fn=36; +Pitch=2.54; +Pins_enabled=0; +Pins_up=0; + +module Pins(Pins_number,Pitch) + { + translate([0,-Pitch*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([0,Pitch*a,-3]) + cube([0.6,0.6,10],center=true); + color("Silver") + translate([0,Pitch*a,-1.5]) + cylinder(r1=0,r2=1,h=1); + color("Silver") + translate([0,Pitch*a,0.5]) + cylinder(r1=1,r2=0,h=1); + color("Black") + translate([0,Pitch*a,-2]) + Component(2,2,1.25); + } + } + +module Pins_holes(Pins_number,Pitch,Diameter) + { + translate([0,-Pitch*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([0,Pitch*a,-3]) + cylinder(r=Diameter,h=10,center=true); + } + } + +module Pins_copper_rings(Pins_number,Pitch,Diameter) + { + translate([0,-Pitch*Pins_number/2,0]) + for(a=[0:1:Pins_number-1]) + { + color("Goldenrod") + translate([0,Pitch*a,-3]) + cylinder(r=Diameter,h=1.6,center=true); + } + } + +module Component(X,Y,Z) + { + hull() + { + translate([X/2,Y/2,0]) + sphere(r=0.25,$fn=18); + translate([-X/2,Y/2,0]) + sphere(r=0.25,$fn=18); + translate([X/2,-Y/2,0]) + sphere(r=0.25,$fn=18); + translate([-X/2,-Y/2,0]) + sphere(r=0.25,$fn=18); + + translate([X/2,Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + translate([-X/2,Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + translate([X/2,-Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + translate([-X/2,-Y/2,Z-0.25]) + sphere(r=0.25,$fn=18); + } + } + +//--------------------------------------------------------------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------------------------------------- + +module OLED_13_128_64_I2C(Pins_enabled,Pins_up) + { + translate([0,-1.252,0]) + difference() + { + union() + { + color("Royalblue") + translate([1.252,0.5,0]) + cube([34,35,1.5]); + + translate([Pitch,Pitch*7.5,-2.25]) + rotate([0,180,0]) + Pins_copper_rings(4,Pitch,0.75); + + color("silver") + translate([4,3,-0.05]) + rotate([0,0,0]) + cylinder(d=3.5,h=1.6); + color("silver") + translate([4,33,-0.05]) + rotate([0,0,0]) + cylinder(d=3.5,h=1.6); + color("silver") + translate([32,3,-0.05]) + rotate([0,0,0]) + cylinder(d=3.5,h=1.6); + color("silver") + translate([32,33,-0.05]) + rotate([0,0,0]) + cylinder(d=3.5,h=1.6); + + color("Black") + translate([18,18,2.5]) + rotate([0,180,90]) + Component(35,22,1); + } + + translate([Pitch,Pitch*7.5,0.5]) + rotate([0,180,0]) + Pins_holes(4,Pitch,0.55); + + color("white") + translate([18,8,2]) + rotate([0,0,90]) + linear_extrude(1) + text("OLED 1.3",size=3); + color("white") + translate([23,11,2]) + rotate([0,0,90]) + linear_extrude(1) + text("128x64",size=3); + + color("silver") + translate([4,3,-1]) + rotate([0,0,0]) + cylinder(d=2.75,h=10); + color("silver") + translate([4,33,-1]) + rotate([0,0,0]) + cylinder(d=2.75,h=10); + color("silver") + translate([32,3,-1]) + rotate([0,0,0]) + cylinder(d=2.75,h=10); + color("silver") + translate([32,33,-1]) + rotate([0,0,0]) + cylinder(d=2.75,h=10); + } + + if(Pins_enabled==1 && Pins_up==0) + translate([Pitch,Pitch*7,1]) + rotate([0,0,0]) + Pins(4,Pitch); + if(Pins_enabled==1 && Pins_up==1) + translate([Pitch,Pitch*7,0.8]) + rotate([0,180,0]) + Pins(4,Pitch); + +} + + +OLED_13_128_64_I2C(Pins_enabled,Pins_up); \ No newline at end of file diff --git a/3d/lib/PCB.scad b/3d/lib/PCB.scad new file mode 100644 index 0000000..e95d5a3 --- /dev/null +++ b/3d/lib/PCB.scad @@ -0,0 +1,82 @@ +$fn=36; + +PCB_style=1; //1=Cutted board 2=with frame border +PCB_size_X=2.54*20; +PCB_size_Y=2.54*19; +PCB_size_Z=1; +PCB_pitch=2.54; +PCB_holes_diameter=1; +PCB_copper_rings_diameter=2.15; +PCB_copper_rings_thickness=0.1; +PCB_color="Green"; +PCB_rings_color="DarkGoldenrod"; + +module PCB(PCB_size_X,PCB_size_Y,PCB_size_Z,PCB_pitch) +translate([-PCB_pitch*round(PCB_size_X/PCB_pitch/2),-PCB_pitch*round(PCB_size_Y/PCB_pitch/2),0]) +{ +if(PCB_style==1) + difference() + { + union() + { + color(PCB_color) + cube([PCB_size_X,PCB_size_Y,PCB_size_Z]); + + color(PCB_rings_color) + intersection() + { + for(a=[0:PCB_pitch:PCB_size_X+PCB_pitch]) + { + for(b=[0:PCB_pitch:PCB_size_Y+PCB_pitch]) + { + translate([a,b,-PCB_copper_rings_thickness]) + cylinder(d=PCB_copper_rings_diameter,h=PCB_size_Z+PCB_copper_rings_thickness*2); + } + } + translate([0,0,-PCB_size_Z/2]) + cube([PCB_size_X,PCB_size_Y,PCB_size_Z*2]); + } + } + color(PCB_rings_color) + for(a=[0:PCB_pitch:PCB_size_X+PCB_pitch]) + { + for(b=[0:PCB_pitch:PCB_size_Y+PCB_pitch]) + { + translate([a,b,-PCB_size_Z/2]) + cylinder(d=PCB_holes_diameter,h=PCB_size_Z*2); + } + } + } + +if(PCB_style==2) + difference() + { + union() + { + color(PCB_color) + cube([PCB_size_X,PCB_size_Y,PCB_size_Z]); + + color(PCB_rings_color) + for(a=[PCB_pitch:PCB_pitch:PCB_size_X-PCB_pitch/2]) + { + for(b=[PCB_pitch:PCB_pitch:PCB_size_Y-PCB_pitch/2]) + { + translate([a,b,-PCB_copper_rings_thickness]) + cylinder(d=PCB_copper_rings_diameter,h=PCB_size_Z+PCB_copper_rings_thickness*2); + } + } + } + + color(PCB_rings_color) + for(a=[PCB_pitch:PCB_pitch:PCB_size_X-PCB_pitch/2]) + { + for(b=[PCB_pitch:PCB_pitch:PCB_size_Y-PCB_pitch/2]) + { + translate([a,b,-PCB_size_Z/2]) + cylinder(d=PCB_holes_diameter,h=PCB_size_Z*2); + } + } + } +} + +PCB(PCB_size_X,PCB_size_Y,PCB_size_Z,PCB_pitch); diff --git a/3d/lib/Pin_header.scad b/3d/lib/Pin_header.scad new file mode 100644 index 0000000..afcdb77 --- /dev/null +++ b/3d/lib/Pin_header.scad @@ -0,0 +1,335 @@ +$fn=36; +Pitch=2.54; +Pins_number=10; +Pins_up=1; +Type=0; // 0=vertical 1 row 1=vertical 2 rows 2=90 degrees 1 row 3=90 degrees 2 rows +Solder=1; + +module Pins(Pins_number,Pitch,Solder) + { + translate([0,-(Pitch*round(Pins_number/2))+Pitch,0]) + for(a=[0:1:Pins_number-1]) + { + translate([0,0,-10/6]) + { + color("Goldenrod") + translate([0,Pitch*a,-2]) + cube([0.6,0.6,10],center=true); + color("Goldenrod") + translate([0,Pitch*a,-7.6]) + rotate([0,0,45]) + cylinder(r1=0,r2=0.425,h=0.6,$fn=4); + color("Goldenrod") + translate([0,Pitch*a,3]) + rotate([0,0,45]) + cylinder(r2=0,r1=0.425,h=0.6,$fn=4); + } + color("Black") + translate([0,Pitch*a,-2]) + Component(2,2,1.25); + if(a; +use; +use; +use; +use; +use; +use; +use; + +difference() + { + union() + { +//PCB(PCB_size_X,PCB_size_Y,PCB_size_Z,PCB_pitch,PCB_style); + + translate([0,0,0]) + PCB(2.54*35,2.54*27,1,2.54,2); + +//---------------------------------------------------------------------------------------------------------- + +//Arduino_nano(Connection_pins_enabled,Connection_pins_up,6_pins_enabled,6_pins_up); + + translate([2.54*9,-2.54*8,0]) + rotate([0,0,90]) + Arduino_nano(1,0,0,0); + + +//---------------------------------------------------------------------------------------------------------- + +//LCD_1602_Serial(Pins_enabled,Pins_up,Version,Text1,Text2); + translate([-2.54*11,-2.54,10]) + rotate([0,0,90]) + LCD_1602_I2C(1); + + +//Top Side solder track + +//5V track + translate([2.54*5,-2.54*6,0]) + rotate([0,0,90]) + Solder(2,0); +translate([-2.54*14,-2.54*13,0]) + rotate([0,0,90]) + Solder(8,0); +translate([-2.54*15,-2.54*4,0]) + rotate([0,0,0]) + Solder(19,0); + +//GND track + translate([2.54*3,-2.54*5,0]) + rotate([0,0,90]) + Solder(2,0,0); +translate([-2.54*15,-2.54*13,0]) + rotate([0,0,90]) + Solder(10,0); +translate([-2.54*14,-2.54*6,0]) + rotate([0,0,0]) + Solder(20,0); + + } + +//Chopping off lower part of legs +translate([0,0,-51.5]) +cube([200,200,100],center=true); + } + +//Lower side components +//Needs to be a different thread to cut the legs of the components +difference() + { + union() + { + +//Bottom side solder tracks + translate([-2.54*13,-2.54*4,0]) + rotate([0,180,90]) + Solder(10,0); +translate([2.54*9,-2.54*4,0]) + rotate([0,180,90]) + Solder(2,0); +translate([2.54*9,-2.54*4,0]) + rotate([0,180,0]) + Solder(23,0); + + translate([-2.54*12,-2.54*6,0]) + rotate([0,180,90]) + Solder(8,2); +translate([2.54*8,-2.54*5,0]) + rotate([0,180,90]) + Solder(2,2); +translate([2.54*8,-2.54*6,0]) + rotate([0,180,0]) + Solder(21,2); + } + +//Chopping off lower part of legs +translate([0,0,51.5]) +cube([200,200,100],center=true); + } \ No newline at end of file diff --git a/3d/remote.scad b/3d/remote.scad new file mode 100644 index 0000000..8a4468c --- /dev/null +++ b/3d/remote.scad @@ -0,0 +1,526 @@ +use ; +use ; +use ; +use ; +use ; +use ; +use ; +use ; + +show_switch=1; +show_lcd=1; +show_sticks=1; + +name="phschoen"; + +text_pos=[[-10,-18,0], [10,-18,0], [-55,49,0], [-25,49,0], [0,40,0], [25,49,0], [55,49,0] ]; +top_text=["on", "armed", "some", "thing", "needs", "to be", "configur"]; +bot_text=["off", "disarmed", "", "", "", "", "" ]; + +eps=0.1; +$fn=32; + +module lcd_1602() { + pcb=[80,36,1.6]; + metal_case=[71.2, 24.2, 6.5]; + case_lcd_cut=[64.5, 14.5, 6.5+2*eps]; + + // metal case + difference() { + translate([0,0,pcb[2]]) + aligned_cube(metal_case,[1,1,0]); + + translate([0,0,pcb[2]]) + aligned_cube(case-2,[1,1,0]); + + // glas cut + translate([0,0,pcb[2]-eps]) + aligned_cube(case_lcd_cut,[1,1,0]); + } + + // glas cut + color("blue") + translate([0,0,0]) + aligned_cube(case_lcd_cut,[1,1,0]); + + // pcb + color("green") + aligned_cube(pcb,[1,1,0]); +} + + + +module ps2_pad() { + // pcb + difference() + { + pcb=[26, 34, 1.6]; + color([0.2, 0.2, 0.2]) { + aligned_cube(pcb,[0,0,0]); + } + + // mounting holes + r=3.4/2; + color([0.8, 0.8, 0.8]) + for (i = [ + [ 1.4+r, 3.3+r, -0.1], // bot left + [pcb[0]-(1.4+r), 3.3+r, -0.1], // bot right + [pcb[0]-(1.4+r), pcb[1]-(1.6+r), -0.1], // top right + [ (1.4+r), pcb[1]-(1.6+r), -0.1], // top left + ]) { + translate(i) + cylinder($fn=16, r=r, h=0.2 + pcb[2]); + } + } + + // pins + + { + } + +} +//ps2_pad(); +//pin_angled(); + +module pin_angled(pins=4, angled=true) { + w=0.65; + pin_angled=[w, 7-w, w]; + pin_vertical=[w, w, 7.2-w]; + + plastic=[2.16,12.6]; + + color([0.8,0.8,0.8]) { + // vertical pin part + translate([0,0,0]) + aligned_cube(pin_vertical, [1,0,0]); + + // angled pin part + translate([0,w,7.2]) + aligned_cube(pin_angled, [1,0,2]); + + difference() { + d=1.5; + + translate([0,d/2,7.2-d/2]) + rotate([0,90,0]) + translate([0,0,-w/2]) + cylinder($fn=32,d=d, h=w); + + translate([0,w+d/2,7.2-d/2-w]) + rotate([0,90,0]) + translate([0,0,-w/2-eps]) + cylinder($fn=32,d=d, h=w+2*eps); + } + } +} + + +module remote() { + bottom_case(); + top_case(); + if (show_sticks) { + if($t < 0.25) + sticks($t*4,0); + else if($t < 0.5) + sticks(1,($t-0.25)*4); + else if($t < 0.75) + sticks(1-($t-0.5)*4,1); + else + sticks(0,1-($t-0.75)*4); + } + +} + +module sticks(l1,l2) +{ + max_angle=30; + color("orange") + for(i=[1,-1]) { + translate([40*i,20,-10]) { + rotate([max_angle*(l1*2-1),max_angle*(l2*2-1),0]) + translate([0,0,8]) { + stick(h=20); + } + } + } +} + +module top_case() { + difference() { + thick=2.5; + union() { + hull() { + remote_top_plate_1=[150,110,1]; + remote_top_plate_2=[140,120,thick]; + remote_top_plate_3=[100,135,thick]; + + aligned_rounded_cube(remote_top_plate_1,2,[1,1,0],[1,1,0]); + aligned_rounded_cube(remote_top_plate_2,2,[1,1,0],[1,1,0]); + aligned_rounded_cube(remote_top_plate_3,2,[1,1,0],[1,1,0]); + + } + { + for(i=[0:1:len(text_pos)-1]) { + translate(text_pos[i]) + button_with_text(thick=thick+2*eps, + text_size=4, + top_text=top_text[i], + bottom_text=bot_text[i]); + } + } + // lcd screw holder + translate([0, -45,0]) + translate([-40.6,-20.25,0]) + { + // screwsholders + h=9.75; + translate([0,1,thick-h]){ + translate([2.5,4,-1]) rotate([0,0,0]) + difference() {cylinder(d=5.1,h=h); translate([0,0,-eps]) cylinder(d=2.9, h=4);}; + translate([2.5,35,-1]) rotate([0,0,0]) + difference() {cylinder(d=5.1,h=h); translate([0,0,-eps]) cylinder(d=2.9, h=4);}; + translate([78.5,4,-1]) rotate([0,0,0]) + difference() {cylinder(d=5.1,h=h); translate([0,0,-eps]) cylinder(d=2.9, h=4);}; + translate([78.5,35,-1]) rotate([0,0,0]) + difference() {cylinder(d=5.1,h=h); translate([0,0,-eps]) cylinder(d=2.9, h=4);}; + } + } + // button holders + { + for(i=[0:1:len(text_pos)-1]) { + translate([0,0,thick-10]) + translate(text_pos[i]) + difference() { + aligned_cube([11,10,8]); + translate([0,0,-7.25]) + aligned_cube([8.5,13,10]); + } + } + } + // stm32 holder + // TODO + + translate([48,-15,0]) { + rotate([0,180,180]) + %stm32_bluepill(); + } + translate([0,70,-15]) { + rotate([90,0,0]) + color("darkgray") + %antenna(); + } + translate([0,10,-3]) { + rotate([0,0,90]) + %cc2500(); + } + } + //lcdcutout + translate([0,-45,-eps]) { + color("green") { + aligned_rounded_cube(size=[64,14,5+2*eps], r=2, rounding=[1,1,0]); + hull() { + e=10; + translate([0,0,0.6]) + aligned_rounded_cube(size=[65,15,eps], r=2, rounding=[1,1,0]); + translate([0,0,0.6+thick]) + aligned_rounded_cube(size=[65+e,15+e,eps], r=2, rounding=[1,1,0]); + } + } + if(show_lcd) + { + translate([0,1,-10]) + %LCD_1602_I2C(PinsDown, + "RSSI 99 A99 ", + " ARMED A99 "); + } + } + // stick cutouts + color("orange") + for(i=[1,-1]) { + w=36; + r=14; + translate([40*i,20,-eps]) { + //aligned_rounded_cube(size=[w,w,thick+2*eps], r=2, rounding=[1,1,0]); + aligned_rounded_cube(size=[w,w,thick+2*eps], r=r, rounding=[1,1,0]); + hull() { + e=5; + translate([0,0,thick]) + aligned_rounded_cube(size=[w,w,eps], r=r, rounding=[1,1,0]); + translate([0,0,0]) + aligned_rounded_cube(size=[w+e,w+e,eps], r=r, rounding=[1,1,0]); + } + hull() { + e=2; + translate([0,0,thick+0.3]) + aligned_rounded_cube(size=[w+e,w+e,eps], r=r, rounding=[1,1,0]); + translate([0,0,thick-1]) + aligned_rounded_cube(size=[w,w,eps], r=r, rounding=[1,1,0]); + } + } + } + // buttons cutouts and naming + translate([0,0,-eps]) { + translate([0,61,0]) + text_engave(thick, text_size=5, text_=name); + + translate([0,-61,0]) + text_engave(thick, text_size=5, text_="toolbox v1"); + + // buttons + for(i=[0:1:len(text_pos)-1]) { + translate(text_pos[i]) + button_with_text(thick=thick+2*eps, + text_size=4, + top_text=top_text[i], + bottom_text=bot_text[i]); + } + } + + } +} + +module button_with_text(thick=4,text_size=5, top_text="on",bottom_text="off") +{ + dist_text=10.5; + cylinder(d=5.8, h=thick+2*eps); + + translate([0,0,-5]) + if(show_switch) { + %switch(thick); + } + + // + color("gray") + translate([0,0,thick-1]) + union() { + cylinder(d=12, h=1); + aligned_cube([2.6,8,1],[1,0,0]); + } + + translate([0,dist_text,0]) + text_engave(thick, text_size=text_size, text_=top_text); + translate([0,1-dist_text,0]) + text_engave(thick, text_size=text_size, text_=bottom_text); +} + +module text_engave(thick, text_size, text_) +{ + color("black") + translate([0,0,thick-0.5]) { + linear_extrude(height = 0.75) { + translate([0,dist_text,0]) { + text( + halign="center", + valign="center", + $fn=$fn, + size=text_size, + font="Linux Libertine O", + text_ + ); + } + } + } +} + +module bottom_case() { + +} +module switch() { + // screw + cylinder(d=5.75,h=8.75); + translate([0,0,8.75]) + rotate([24,0,0]) { + // stick + sphere(d=3); + cylinder(d=3,h=8.5); + translate([0,0,8.5]) + sphere(d=3); + } + // body + aligned_cube([8.05,13,10],[1,1,2]); + // pins + for(i=[1,0,-1]) { + translate([0, i*4.5,-10]) + difference() { + aligned_cube([2,0.7, 4.2], [1,1,2]); + translate([0,0,-3]) + rotate([0,90,0]) + cylinder(d=1, h=2, center=true); + } + } + + // screw place + /* difference() { */ + /* cylinder(d=10.2, h=1); */ + /* translate([0,0,-0.1]) */ + /* cylinder(d=6.1, h=2); */ + /* } */ + + // top plate + translate([0,0,7]) + difference() { + union() { + cylinder(d=12, h=0.7); + aligned_cube([2.6, 8, 0.7],[0,1,0]); + } + translate([0,0,-0.1]) + cylinder(d=6.1, h=2); + } + // top screw + translate([0,0,7.7]) + difference() { + cylinder($fn=6, d=9.4, h=0.7); + translate([0,0,-0.1]) + cylinder(d=6.1, h=2); + } +} +module stm32_bluepill() { + eps=0.1; + pitch=2.54; + + pcb_size=[52.3, 22.6, 1.6]; + pin_offset=[ [2.35,3.65], [2.35, 18.6]]; + + pin_names=[ [ + "G", "G", "3.3", "R", "B11", "B10", "B1", "B0", "A7", "A6", + "A5", "A4", "A3", "A2", "A1", "A0", "C15", "C14", "C13", "VB", + ], [ + "B12", "B13", "B14", "B15", "A8", "A9", "A10", "A11", "A12", + "A15", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "5V", "G", "3.3", + ]]; + + difference() { + union() { + //pcb + color("LightBlue") { + aligned_cube(pcb_size); + } + // IC + color("black") + rotate([0,0,45]) + translate([0,0,pcb_size[2]]) + aligned_cube([7,7,2],[1,1,0]); + + // IC pins + color("silver") + rotate([0,0,45]) + translate([0,0,pcb_size[2]]) + aligned_cube([8,8,1],[1,1,0]); + + translate([pcb_size[0]/2,0 ,pcb_size[2]]) + usb_micro(); + + // pins pads + for(p=[0,1]) + for(i=[0:1:len(pin_names[p])-1]) { + translate([-pcb_size[0]/2+pin_offset[p][0]+i*pitch, + -pcb_size[1]/2+pin_offset[p][1],-eps]) + { + color("silver") { + cylinder(d=1.5,h=pcb_size[2]+2*eps); + } + color("black") { + translate([0,(p-0.5)*2*2,pcb_size[2]+eps]) + linear_extrude(height = eps) + text( + halign="center", + valign="center", + $fn=$fn, + size=1, + font="Linux Libertine O", + pin_names[p][i] + ); + } + } + } + } + // pin drill hole + for(p=[0,1]) + for(i=[0:1:len(pin_names[p])-1]) { + translate([-pcb_size[0]/2+pin_offset[p][0]+i*pitch, + -pcb_size[1]/2+pin_offset[p][1],-2*eps]) + color("Silver") { + cylinder(d=0.7,h=pcb_size[2]+4*eps); + } + } + + } +} + +module usb_micro() { + + color("Silver") + difference() { + size= [7.45, 6, 2.5]; + aligned_cube(size,[2,1,0]); + + } +} +module cc2500() { + eps=0.1; + pitch=2; + + pcb_size=[34.3, 21.4, 0.9]; + pin_offset=[0.25,2]; + + pin_names=[ + "LNA_EN", + "PA_EN", + "CSn", + "GDO0", + "GND", + "GDO2", + "SO", + "SCLK", + "SI", + "VCC" + ]; + + difference() { + union() { + //pcb + color("LightBlue") { + aligned_cube(pcb_size); + } + // hf cage + color("silver") + translate([0,0,pcb_size[2]]) + aligned_cube([26.84,19.75,3.2],[1,1,0]); + + // pins pads + for(i=[0:1:len(pin_names)-1]) { + translate([-pcb_size[0]/2+pin_offset[0], + -pcb_size[1]/2+pin_offset[1]+i*pitch,-eps]) + { + color("silver") { + cylinder(d=1.5,h=pcb_size[2]+2*eps); + } + color("black") { + rotate([180,0]) + translate([1,0,-eps]) + linear_extrude(height = eps) + text( + halign="left", + valign="center", + $fn=$fn, + size=1, + font="Linux Libertine O", + pin_names[i] + ); + } + } + } + } + // pin drill hole + for(p=[0,1]) + for(i=[0:1:len(pin_names)-1]) { + translate([-pcb_size[0]/2+pin_offset[0], + -pcb_size[1]/2+pin_offset[1]+i*pitch,-2*eps]) + color("Silver") { + cylinder(d=0.7,h=pcb_size[2]+4*eps); + } + } + + } +} +remote(); diff --git a/3d/stick.scad b/3d/stick.scad new file mode 100644 index 0000000..b4e2d83 --- /dev/null +++ b/3d/stick.scad @@ -0,0 +1,106 @@ +// hight of stick from the cone +// throttle has different mounting slot at the bottom then the roll stick +// throttle has a metal stick and roll has a ps2 plastic shaft +use + +// draw itself +stick(); + +module stick(h=25) +{ + $fn=32; + translate([0,0,15]) { + cylinder(d=5,h=h); + translate([0,0,h]) + // top nob to grab + gabber_part(); + } + // stick holder with cutout + stick_mount(); + + // dust protector + protector_cone(); +} + +module gabber_part() { + difference() { + union() { + cylinder(d1=5,d2=8,h=4); + translate([0,0,4]) + cylinder(d1=8,d2=8,h=4); + translate([0,0,8]) + cylinder(d1=8,d2=4,h=3); + } + for (rot=[0:15:360]) { + r=0.5; + // top grips + translate([0,0,8]) + rotate([0,0,rot]) + rotate([0,90,0]) + translate([-3,0,0]) + cylinder($fn=4,r=r,h=40); + + // head grips + translate([0,0,8.5]) + rotate([0,0,rot]) + rotate([0,35,0]) + translate([-3,0,-10]) + cylinder($fn=4,r=r,h=40); + + // vertiacal grips + rotate([0,0,rot]) + translate([4,0,0]) + cylinder($fn=4,r=r,h=10); + // bottom grips + translate([0,0,2]) + rotate([0,0,rot]) + rotate([0,21,0]) + translate([3,0,0]) + cylinder($fn=4,r=r,h=20); + } + } +} + +module stick_mount(is_ps2_shaft=1) { + ps2_dia=4*1.269; + ps2_hight=5; + ps2_width=3*1.276; + eps = 0.01; + + difference() { + color([1,0,1]) { + if ( is_ps2_shaft ) { + cylinder(d=6.75,h=15); + } else { + cylinder(d=6,h=15); + } + } + translate([0,0,-eps]) + if ( is_ps2_shaft ) { + intersection() { + cube(center=true,[ps2_width,100,100]); + cylinder(d=ps2_dia,h=ps2_hight); + } + translate([0,0,ps2_hight]) + cylinder(d1=ps2_dia,d2=1.5,h=1.5); + } else { + aligned_cube([1.9,1.15,6],[0,0,0]); + } + } +} +module protector_cone() { + //dust protector + difference() { + union() { + sphere(d=30); + translate([0,0,12]) + cylinder(d2=3,d1=17.5,h=7); + } + translate([-15,-15,-30]) + cube([30,30,30]); + sphere(d=26); + } +} + + +