| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347 |
- // License: CC0
- //
- // units in mm
- $fn = 50;
- M3_H3_DRILL_R = 4.3127/2;
- RFID_screw_diam = 3;
- RFID_screw_dw = 103.5;
- RFID_access_diam = 15.5;
- MAG_PCB_screw_dw = 81.5;
- MAG_PCB_screw_diam = 2;
- MAG_READER_screw_dw = 93.75;
- MAG_READER_screw_diam = 3;
- MAG_ACCESS_total_width = 25;
- //MAG_ACCESS_small_width = 10;
- MAG_ACCESS_small_width = 7;
- MAG_ACCESS_total_height = 95;
- MAG_ACCESS_section = [17,24,18,24,17];
- SCREEN_screw_diam = 3;
- SCREEN_dw = 177;
- SCREEN_dh = 54;
- SCREEN_WINDOW_h = 46;
- SCREEN_WINDOW_w = 160;
- BOARD_screw_diam = 3;
- BOARD_screw_dh = 76.25;
- BOARD_screw_dw = 101.5;
- BOARD_mount_screw_dw = 175;
- BOARD_mount_screw_dh = 70;
- BOARD_mount_screw_diam = 3;
- // ...
- //PIU_width = 190;
- //PIU_height = 160;
- //PIU_side = 50;
- RAM_mount_pos_x = 0;
- RAM_mount_pos_y = 30;
- RAM_mount_dw = 3*25.4;
- RAM_mount_dh = (1 + 5/8)*25.4;
- RAM_mount_screw_diam = (1/4)*25.4;
-
- PIU_width = 200;
- PIU_height = 165;
- PIU_side = 70;
- _base_platform_width = 2*PIU_width/3;
- _base_platform_height = 2*PIU_height/5;
- module PIU_board_plate_simple() {
- _cr = 5;
- _cdx = BOARD_screw_dh + 10;
- _cdy = BOARD_screw_dw + 10;
- difference() {
- hull() {
- translate([-_cdx/2, -_cdy/2]) circle(_cr);
- translate([ _cdx/2, -_cdy/2]) circle(_cr);
- translate([ _cdx/2, _cdy/2]) circle(_cr);
- translate([-_cdx/2, _cdy/2]) circle(_cr);
- }
- translate([-BOARD_screw_dh/2, -BOARD_screw_dw/2]) circle(BOARD_screw_diam/2);
- translate([ BOARD_screw_dh/2, -BOARD_screw_dw/2]) circle(BOARD_screw_diam/2);
- translate([ BOARD_screw_dh/2, BOARD_screw_dw/2]) circle(BOARD_screw_diam/2);
- translate([-BOARD_screw_dh/2, BOARD_screw_dw/2]) circle(BOARD_screw_diam/2);
- }
- }
- module PIU_board_plate() {
- _cr = 2;
- _cdx = BOARD_screw_dh + 10;
- _cdy = BOARD_screw_dw + 10;
- _w = 14;
- px = _base_platform_width;
- py = _base_platform_height;
- difference() {
- union() {
- hull() {
- translate([-px/2 -_w, -_cdy/2]) circle(_cr);
- translate([ px/2 +_w, -_cdy/2]) circle(_cr);
- translate([ px/2 +_w, _cdy/2]) circle(_cr);
- translate([-px/2 -_w, _cdy/2]) circle(_cr);
- }
- }
- hull() {
- translate([-_cdx/2 + _w, -_cdy/2 + _w]) circle(_cr);
- translate([ _cdx/2 - _w, -_cdy/2 + _w]) circle(_cr);
- translate([ _cdx/2 - _w, _cdy/2 - _w]) circle(_cr);
- translate([-_cdx/2 + _w, _cdy/2 - _w]) circle(_cr);
- }
- translate([-BOARD_screw_dh/2, -BOARD_screw_dw/2]) circle(BOARD_screw_diam/2);
- translate([ BOARD_screw_dh/2, -BOARD_screw_dw/2]) circle(BOARD_screw_diam/2);
- translate([ BOARD_screw_dh/2, BOARD_screw_dw/2]) circle(BOARD_screw_diam/2);
- translate([-BOARD_screw_dh/2, BOARD_screw_dw/2]) circle(BOARD_screw_diam/2);
- translate([-px/2, py/2]) circle(M3_H3_DRILL_R);
- translate([-px/2,-py/2]) circle(M3_H3_DRILL_R);
- translate([-px/2, 0]) circle(M3_H3_DRILL_R);
- translate([ px/2, py/2]) circle(M3_H3_DRILL_R);
- translate([ px/2,-py/2]) circle(M3_H3_DRILL_R);
- translate([ px/2, 0]) circle(M3_H3_DRILL_R);
- }
- }
- module PIU_board_support_base() {
- _cr = 8;
- //px = 2*PIU_width/3;
- //py = 2*PIU_height/5;
- px = _base_platform_width;
- py = _base_platform_height;
- difference() {
- union() {
- hull() {
- translate([-px/2, py/2]) circle(_cr);
- translate([-px/2, -py/2]) circle(_cr);
- }
- hull() {
- translate([ px/2, py/2]) circle(_cr);
- translate([ px/2,-py/2]) circle(_cr);
- }
- hull() {
- translate([ -px/2, 0]) circle(_cr);
- translate([ px/2, 0]) circle(_cr);
- }
- }
- translate([-px/2, 0]) circle(M3_H3_DRILL_R);
- translate([-px/2, py/2]) circle(M3_H3_DRILL_R);
- translate([-px/2,-py/2]) circle(M3_H3_DRILL_R);
- translate([ px/2, 0]) circle(M3_H3_DRILL_R);
- translate([ px/2, py/2]) circle(M3_H3_DRILL_R);
- translate([ px/2,-py/2]) circle(M3_H3_DRILL_R);
- }
- }
- module PIU_face() {
- ang = 10;
- difference() {
- // central face
- //
- square([PIU_width, PIU_height], center=true);
- // screen
- //
- translate([0, PIU_height/2 - SCREEN_WINDOW_h/2 - 10])
- union() {
- square([SCREEN_WINDOW_w, SCREEN_WINDOW_h], center=true);
- translate([-SCREEN_dw/2, SCREEN_dh/2]) circle(SCREEN_screw_diam/2);
- translate([ SCREEN_dw/2, SCREEN_dh/2]) circle(SCREEN_screw_diam/2);
- translate([ SCREEN_dw/2,-SCREEN_dh/2]) circle(SCREEN_screw_diam/2);
- translate([-SCREEN_dw/2,-SCREEN_dh/2]) circle(SCREEN_screw_diam/2);
- }
- // mag
- //
- //translate([-40, -5])
- translate([0, -5])
- union() {
- square([MAG_ACCESS_total_height, MAG_ACCESS_small_width], center=true);
- translate([-MAG_ACCESS_section[1]/2 - MAG_ACCESS_section[2]/2, 0])
- square([MAG_ACCESS_section[1], MAG_ACCESS_total_width], center=true);
- translate([ MAG_ACCESS_section[3]/2 + MAG_ACCESS_section[2]/2, 0])
- square([MAG_ACCESS_section[3], MAG_ACCESS_total_width], center=true);
- rotate( ang, [0,0,1]) translate([-MAG_PCB_screw_dw/2, 0]) circle(MAG_PCB_screw_diam/2);
- rotate( ang, [0,0,1]) translate([ MAG_PCB_screw_dw/2, 0]) circle(MAG_PCB_screw_diam/2);
- rotate(-ang, [0,0,1]) translate([-MAG_PCB_screw_dw/2, 0]) circle(MAG_PCB_screw_diam/2);
- rotate(-ang, [0,0,1]) translate([ MAG_PCB_screw_dw/2, 0]) circle(MAG_PCB_screw_diam/2);
- rotate( ang, [0,0,1]) translate([-MAG_READER_screw_dw/2, 0]) circle(MAG_READER_screw_diam/2);
- rotate( ang, [0,0,1]) translate([ MAG_READER_screw_dw/2, 0]) circle(MAG_READER_screw_diam/2);
- rotate(-ang, [0,0,1]) translate([-MAG_READER_screw_dw/2, 0]) circle(MAG_READER_screw_diam/2);
- rotate(-ang, [0,0,1]) translate([ MAG_READER_screw_dw/2, 0]) circle(MAG_READER_screw_diam/2);
- }
- // RFID
- //
- //translate([-30,-55])
- translate([0,-55])
- union() {
- translate([-RFID_screw_dw/2,0]) circle(RFID_screw_diam/2);
- translate([ RFID_screw_dw/2,0]) circle(RFID_screw_diam/2);
- circle(RFID_access_diam/2);
- }
-
- // Blue Board mounting bracket
- //
- translate([0, -PIU_height/2 + BOARD_mount_screw_dh/2 + 15])
- union() {
- translate([-BOARD_mount_screw_dw/2, BOARD_mount_screw_dh/2]) circle(BOARD_mount_screw_diam/2);
- translate([ BOARD_mount_screw_dw/2, BOARD_mount_screw_dh/2]) circle(BOARD_mount_screw_diam/2);
- translate([ BOARD_mount_screw_dw/2,-BOARD_mount_screw_dh/2]) circle(BOARD_mount_screw_diam/2);
- translate([-BOARD_mount_screw_dw/2,-BOARD_mount_screw_dh/2]) circle(BOARD_mount_screw_diam/2);
- }
-
- }
- }
- module BOARD_mounting_plate() {
- //BOARD_screw_diam = 3;
- //BOARD_screw_dw = 76.25;
- //BOARD_screw_dh = 101.5;
- //BOARD_mount_screw_dw = 175;
- //BOARD_mount_screw_dh = 80;
- //BOARD_mount_screw_diam = 3;
-
- extra = BOARD_mount_screw_diam*4;
-
- difference() {
- union() {
- square([BOARD_mount_screw_dw+extra, BOARD_mount_screw_dh+extra], center=true);
- translate([0, 30])
- square([BOARD_screw_dw+extra, BOARD_screw_dh+extra], center=true);
- }
-
- translate([0,30])
- union() {
- square([30,30], center=true);
- translate([-BOARD_screw_dw/2, BOARD_screw_dh/2]) circle(BOARD_screw_diam/2);
- translate([ BOARD_screw_dw/2, BOARD_screw_dh/2]) circle(BOARD_screw_diam/2);
- translate([-BOARD_screw_dw/2,-BOARD_screw_dh/2]) circle(BOARD_screw_diam/2);
- translate([ BOARD_screw_dw/2,-BOARD_screw_dh/2]) circle(BOARD_screw_diam/2);
- }
-
-
- union() {
- translate([-BOARD_mount_screw_dw/2, BOARD_mount_screw_dh/2]) circle(BOARD_mount_screw_diam/2);
- translate([ BOARD_mount_screw_dw/2, BOARD_mount_screw_dh/2]) circle(BOARD_mount_screw_diam/2);
- translate([ BOARD_mount_screw_dw/2,-BOARD_mount_screw_dh/2]) circle(BOARD_mount_screw_diam/2);
- translate([-BOARD_mount_screw_dw/2,-BOARD_mount_screw_dh/2]) circle(BOARD_mount_screw_diam/2);
- }
- }
- }
- module PIU() {
- _c = 1;
- union() {
- PIU_face();
- // side left and right
- //
- translate([_c + PIU_width/2 + PIU_side/2, 0])
- square([PIU_side, PIU_height], center=true);
- translate([-(_c + PIU_width/2 + PIU_side/2), 0])
- square([PIU_side, PIU_height], center=true);
- // top and bottom
- //
- translate([0, _c + PIU_height/2 + PIU_side/2])
- square([PIU_width, PIU_side], center=true);
- translate([0, -(_c + PIU_height/2 + PIU_side/2)])
- square([PIU_width, PIU_side], center=true);
- // connecting strips
- //
- translate([-PIU_width/2 - _c/2, 0]) square([_c+0.25, PIU_height], center=true);
- translate([ PIU_width/2 + _c/2, 0]) square([_c+0.25, PIU_height], center=true);
- translate([ 0, PIU_height/2 + _c/2]) square([PIU_width, _c+0.25], center=true);
- translate([ 0, -(PIU_height/2 + _c/2)]) square([PIU_width, _c+0.25], center=true);
- }
- }
- module PIU_back_bracket() {
- _w = 20;
- _dx = PIU_width/2 - _w/2;
- _dy = PIU_height/2 - _w/2;
- _drill_r = M3_H3_DRILL_R;
- difference() {
- square([PIU_width, PIU_height], center=true);
- square([PIU_width - 2*_w, PIU_height - 2*_w], center=true);
- translate([ -_dx, -_dy]) circle(_drill_r);
- translate([ _dx, -_dy]) circle(_drill_r);
- translate([ _dx, _dy]) circle(_drill_r);
- translate([ -_dx, _dy]) circle(_drill_r);
- translate([ -_dx, 0]) circle(_drill_r);
- translate([ _dx, 0]) circle(_drill_r);
- translate([ 0, _dy]) circle(_drill_r);
- translate([ 0, -_dy]) circle(_drill_r);
- }
- }
- module PIU_back_panel() {
- difference() {
- // central face
- //
- square([PIU_width, PIU_height], center=true);
-
- translate([0,-30])
- circle(20);
-
- translate([RAM_mount_pos_x,RAM_mount_pos_y])
- union() {
- translate([-RAM_mount_dw/2, -RAM_mount_dh/2]) circle(RAM_mount_screw_diam/2);
- translate([ RAM_mount_dw/2, -RAM_mount_dh/2]) circle(RAM_mount_screw_diam/2);
- translate([-RAM_mount_dw/2, RAM_mount_dh/2]) circle(RAM_mount_screw_diam/2);
- translate([ RAM_mount_dw/2, RAM_mount_dh/2]) circle(RAM_mount_screw_diam/2);
- }
- }
- }
- module all() {
- PIU();
- translate([0,240]) PIU_back_bracket();
- translate([0,240]) PIU_board_support_base();
- translate([0,-180]) PIU_board_plate();
- //translate([0,-300]) PIU_board_support_base();
- /*
- translate([220,-35]) rotate(0, [0,0,1]) PIU_board_plate();
- translate([-230,-35]) rotate(0, [0,0,1]) PIU_board_support_base();
- */
- }
- //all();
- //PIU();
- PIU_face();
- translate([0,-160]) BOARD_mounting_plate();
- translate([0,180]) PIU_back_panel();
|