diff --git a/3d/remote.scad b/3d/remote.scad index 00ed8d7..65e5e83 100644 --- a/3d/remote.scad +++ b/3d/remote.scad @@ -10,23 +10,23 @@ use ; $fn=64; show_top =0; -show_bottom =0; +show_bottom =1; show_strapholder =0; -show_joysticks =0; -show_grip =1; +show_joysticks =1; +show_grip =0; enable_text_engrave =0; -show_switch =0; +show_switch =1; show_lcd =0; show_sticks =0; -show_stm32 =0; +show_stm32 =1; show_antenna =0; show_cc2500 =0; show_batery_charger =0; show_batery =0; show_joysticks_pcb =0; -show_usb_connector =0; +show_usb_connector =1; show_stands=0; @@ -64,14 +64,16 @@ grip_h=14; name=""; -text_pos=[[-6.75,-17,0], [6.75,-17,0], [-43,55,0], [-20,55,0], [0,39,0], [20,55,0], [43,55,0] ]; -top_text=["on", "arm", "mode", "beeper", "failsave", "prearm", "led" ]; -bot_text=["off", "", "", "", "", "", "" ]; + +sw_is_double= [ true, false, false, false, false, false, false]; +sw_pos= [[-6.75,-17,0], [6.75,-17,0], [-43,55,0], [-20,55,0], [0,39,0], [20,55,0], [43,55,0] ]; +top_text= ["on", "arm", "mode", "beeper", "failsave", "prearm", "led" ]; +bot_text= ["off", "", "", "", "", "", "" ]; bottom_h=25; pos_sticks=[40,26,0]; pos_cc2500=[0,12,-7]; -pos_stm32=[40.5,-13.5,-4.5]; +pos_stm32=[40.0,-13.5,-4.5]; pos_antenna=[0,130/2+8.20,-15]; pos_lcd=[0,-43,-8.75]; pos_batery_charger=[-50,-40,-7]; @@ -93,7 +95,7 @@ bottom_wall=3; ps2_pcb_size=[26.15, 34.15, 1.6]; charger_pcb_size_small=[14.75, 26, 1.6]; charger_pcb_size=[18, 26.6, 1.6]; -stm32_pcb_size=[52.3, 22.6, 1.6]; +stm32_pcb_size=[52.7, 22.6, 1.6]; cc2500_pcb_size=[34.3, 21.4, 0.9]; batery_size=[24, 50, 15]; @@ -139,11 +141,11 @@ module remote() { LCD_1602_I2C(3, "RSSI 99 A99 ", " ARMED A99 "); } - if(show_switch){ - for(i=[0:1:len(text_pos)-1]) { - translate(text_pos[i]) - translate([0,0,-5]) - switch(thick); + if(show_switch) { + for(i=[0:1:len(sw_pos)-1]) { + translate(sw_pos[i]) + translate([0,0,-3.5]) + switch(sw_is_double[i]); } } if(show_batery_charger) { @@ -299,30 +301,38 @@ module top_case() { translate([-40.6,-20.25,0]) { d_top=8.75; - d_bot=7.75; + d_bot=7.40; // screwsholders h=10; translate([0,1,thick-h]){ translate([2.5,4,-1]) rotate([0,0,0]) difference() {cylinder(d=d_bot,h=h); translate([0,0,-eps]) cylinder(d=screw_d, h=4);}; translate([2.5,35,-1]) rotate([0,0,0]) - difference() {cylinder(d=d_top,h=h); translate([0,0,-eps]) cylinder(d=screw_d, h=4);}; + difference() {cylinder(d=d_bot,h=h); translate([0,0,-eps]) cylinder(d=screw_d, h=4);}; translate([78.5,4,-1]) rotate([0,0,0]) difference() {cylinder(d=d_bot,h=h); translate([0,0,-eps]) cylinder(d=screw_d, h=4);}; translate([78.5,35,-1]) rotate([0,0,0]) - difference() {cylinder(d=d_top,h=h); translate([0,0,-eps]) cylinder(d=screw_d, h=4);}; + difference() {cylinder(d=d_bot,h=h); translate([0,0,-eps]) cylinder(d=screw_d, h=4);}; } } // button holders { - for(i=[0:1:len(text_pos)-1]) { + for(i=[0:1:len(sw_pos)-1]) { translate([0,0,thick-10]) - translate(text_pos[i]) - difference() { - aligned_cube([15,10,8]); - translate([0,0,-7.25]) - aligned_cube([8.5,13,10]); + translate(sw_pos[i]) + if(sw_is_double[i]) { + difference() { + aligned_cube([17.5,10,8]); + translate([0,0,-7.25]) + aligned_cube([13.5,13,10]); + } + } else { + difference() { + aligned_cube([13.5,10,8]); + translate([0,0,-7.25]) + aligned_cube([8.5,13,10]); + } } } } @@ -507,14 +517,16 @@ module top_case() { text_engave(thick, font_size=font_size_name, text_=name); // switches - for(i=[0:1:len(text_pos)-1]) { - translate(text_pos[i]) { + for(i=[0:1:len(sw_pos)-1]) { + translate(sw_pos[i]) { switch_with_text(thick=thick+2*eps, top_text=top_text[i], - bottom_text=bot_text[i]); + bottom_text=bot_text[i], + is_double=sw_is_double[i] + ); + } } } - } } } @@ -534,7 +546,7 @@ module switch_with_text(thick=4,top_text="on",bottom_text="off") } if(enable_text_engrave) { - translate([0,dist_text,0]) + translate([0,dist_text,0]) text_engave(thick, text_=top_text); translate([0,1-dist_text-2.5,0]) text_engave(thick, text_=bottom_text); @@ -619,6 +631,22 @@ module bottom_case() { } } } + // usb connector wall + color("red") { + translate(pos_usb_connector) + rotate(rot_usb_connector) { + for(i=[1,-1]) { + // left right + translate([8, 9*i,-1]) { + aligned_cube([10,4,8], [0,1,1]); + } + //back + translate([16, 7*i,-1]) { + aligned_cube([4,8,8], [0,1,1]); + } + } + } + } } // ps2 holder for(i=[1,-1]) { @@ -689,7 +717,7 @@ module bottom_case() { } -module switch() { +module switch(is_double=false) { // screw color("silver") cylinder(d=6.4,h=8.75); @@ -706,17 +734,32 @@ module switch() { // body color([0.3,0.3,0.6,1]) - aligned_cube([8.05,13,10],[1,1,2]); + if (is_double) + aligned_cube([12.6,13.1,10],[1,1,2]); + else + aligned_cube([8.05,13.1,10],[1,1,2]); // pins color("silver") - 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([90,0,0]) - cylinder(d=1, h=2, center=true); + for(y=[1,0,-1]) { + if (is_double) { + for(x=[1,-1]) { + translate([x*2.5, y*4.5,-10]) + difference() { + aligned_cube([2,0.7, 4.2], [1,1,2]); + translate([0,0,-3]) + rotate([90,0,0]) + cylinder(d=1, h=2, center=true); + } + } + } else { + translate([0, y*4.5,-10]) + difference() { + aligned_cube([2,0.7, 4.2], [1,1,2]); + translate([0,0,-3]) + rotate([90,0,0]) + cylinder(d=1, h=2, center=true); + } } } diff --git a/3d/stick.scad b/3d/stick.scad index 65ef2bc..b9492b8 100644 --- a/3d/stick.scad +++ b/3d/stick.scad @@ -7,7 +7,7 @@ use // draw itself stick(); -module stick(h=20) +module stick(h=10,is_ps2_shaft=0) { $fn=32; translate([0,0,15-3]) { @@ -18,12 +18,13 @@ module stick(h=20) } // stick holder with cutout translate([0,0,0]) { - stick_mount(); + stick_mount(is_ps2_shaft); } // dust protector - translate([0,0,-3]) { - protector_cone(thickness=1.25); + translate([0,0,-3+2.9]) { + resize([30,30,22]) + protector_cone(thickness=0.4*2.5); } } @@ -67,13 +68,17 @@ module gabber_part() { } module stick_mount(is_ps2_shaft=0) { - ps2_dia=4*1.269; - ps2_hight=5; - ps2_width=3*1.276; + ps2_dia=4+0.4; + ps2_width=3+0.4; + + + mount_h=5; eps = 0.01; difference() { color([1,0,1]) { + translate([0,0,5]) + cylinder_flange_sphere($fn=32,r2=5, r1=3, h=5); if ( is_ps2_shaft ) { cylinder(d=6.75,h=10); } else { @@ -84,9 +89,9 @@ module stick_mount(is_ps2_shaft=0) { if ( is_ps2_shaft ) { intersection() { cube(center=true,[ps2_width,100,100]); - cylinder(d=ps2_dia,h=ps2_hight); + cylinder(d=ps2_dia,h=mount_h); } - translate([0,0,ps2_hight]) + translate([0,0,mount_h]) cylinder(d1=ps2_dia,d2=1.5,h=1.5); } else { aligned_cube([1.9,1.15,6]); @@ -94,21 +99,22 @@ module stick_mount(is_ps2_shaft=0) { } } module protector_cone(thickness) { + d=30; //dust protector difference() { union() { - sphere(d=30); + sphere(d=d+2*thickness); translate([0,0,12.1]) //cylinder(d2=3,d1=17.5,h=7); cylinder_flange_sphere($fn=32,r2=4/2, r1=17.5/2, h=20); } // cut lower half - translate([-15,-15,-30]) - cube([30,30,30]); + translate([-d,-d,-30]) + cube([2*d,2*d,30]); // cut innerpart so its a shell - sphere(d=30-2*thickness); + sphere(d=d); } }