From fb54a06fe1365ebbce7ca19bea34358ebe94917d Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Sat, 23 Nov 2019 19:56:15 +0100 Subject: [PATCH] RS485 convertor case: 1st try --- rs485-case/case.scad | 102 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 rs485-case/case.scad diff --git a/rs485-case/case.scad b/rs485-case/case.scad new file mode 100644 index 0000000..1f60dd3 --- /dev/null +++ b/rs485-case/case.scad @@ -0,0 +1,102 @@ +wall_thickness = 1.5; + +pcb_length = 53.5; +pcb_width = 18.5; +pcb_thickness = 1; +pcb_depth = 3; +pcb_rail_width = 1; + +box_height = 12; +box_depth = pcb_thickness + pcb_depth; + +usb_width = 10.5; +usb_height = 11; + +rs485_width = 16.5; +rs485_height = 8; + +lock_thickness = 1; +lock_height = 4; + +over = 0.1; +clearance = 0.3; + +module bottom() { + difference() { + // Exterior + translate([-wall_thickness, -wall_thickness, -box_depth-wall_thickness]) + cube([2*wall_thickness + pcb_length, 2*wall_thickness + pcb_width, wall_thickness + box_depth + box_height]); + + // Interior + cube([pcb_length, pcb_width, box_height+1]); + + // USB connector hole + translate([pcb_length-over, (pcb_width-usb_width)/2, 0]) + cube([wall_thickness+2, usb_width, box_height+over]); + + // RS485 connector hole + translate([-wall_thickness-over, (pcb_width-rs485_width)/2, 0]) + cube([wall_thickness+2*over, rs485_width, box_height+over]); + + // PCB + translate([0, 0, -pcb_thickness]) + cube([pcb_length, pcb_width, pcb_thickness+over]); + + // Sub-PCB holes + translate([0, pcb_rail_width, -pcb_thickness-pcb_depth]) + cube([10, pcb_width - 2*pcb_rail_width, pcb_thickness + pcb_depth + over]); + translate([24, pcb_rail_width, -pcb_thickness-pcb_depth]) + cube([9, pcb_width - 2*pcb_rail_width, pcb_thickness + pcb_depth + over]); + translate([pcb_length - 9, pcb_rail_width, -pcb_thickness-pcb_depth]) + cube([8, pcb_width - 2*pcb_rail_width, pcb_thickness + pcb_depth + over]); + } + + // Locks + /* + translate([0, -wall_thickness-lock_thickness, box_height - lock_height]) + cube([pcb_length, lock_thickness + wall_thickness/2, lock_height]); + translate([0, pcb_width + wall_thickness/2, box_height - lock_height]) + cube([pcb_length, lock_thickness + wall_thickness/2, lock_height]); + */ +} + +module top() { + difference() { + union() { + // Lid + translate([-wall_thickness, -wall_thickness, 0]) + cube([pcb_length + 2*wall_thickness, pcb_width + 2*wall_thickness, wall_thickness]); + + // USB connector roof + translate([pcb_length, (pcb_width - usb_width)/2 + clearance, usb_height - box_height + clearance]) + cube([wall_thickness, usb_width - 2*clearance, box_height - usb_height - clearance + over]); + + // RS485 connector roof + translate([-wall_thickness, (pcb_width - rs485_width)/2 + clearance, rs485_height - box_height + clearance]) + cube([wall_thickness, rs485_width - 2*clearance, box_height - rs485_height - clearance + over]); + } + + // LED holes + translate([32, 1, -over]) + cube([4, 2, wall_thickness + 2*over]); + translate([32, pcb_width - 3, -over]) + cube([4, 2, wall_thickness + 2*over]); + + // USB label + translate([pcb_length-3, pcb_width/2, wall_thickness/2]) + rotate(90) + scale([0.4, 0.4, 1]) + linear_extrude(wall_thickness/2 + over) + text("USB", font = "Liberation Serif", halign="center"); + + // RS485 label + translate([3, pcb_width/2, wall_thickness/2]) + rotate(-90) + scale([0.4, 0.4, 1]) + linear_extrude(wall_thickness/2 + over) + text("RS 485", font = "Liberation Serif", halign="center"); + } +} + +color([0.7, 0, 0]) bottom(); +color([0, 1, 0]) translate([0, 0, box_height]) top(); -- 2.39.5