Skip to content

Instantly share code, notes, and snippets.

@ryankurte
Created January 18, 2016 05:51
Show Gist options
  • Save ryankurte/267d7fe0813e1a96257a to your computer and use it in GitHub Desktop.
Save ryankurte/267d7fe0813e1a96257a to your computer and use it in GitHub Desktop.
CMUCam 5 Pixy Case
conv = 25.4;
pixy_width = 54;
pixy_height = 51;
wall = 3;
clearance = 1;
thickness = 2;
hole_size = 4;
standoff = 3;
wall_thickness = 6;
top_x = 23.749;
top_y = 22.225;
bottom_y = top_y;
bottom_x = 10.414;
mid_y = 10.922;
pixy_holes = [[top_x, -top_y], [-top_x, -top_y], [-bottom_x, bottom_y], [bottom_x, bottom_y], [-top_x, mid_y]];
mount_spacing = 35;
mounting_holes = [[mount_spacing/2, mount_spacing/2],
[-mount_spacing/2, mount_spacing/2],
[mount_spacing/2, -mount_spacing/2],
[-mount_spacing/2, -mount_spacing/2]];
camera_box = 16;
camera_screw_rad = 8;
led_box = 4;
difference() {
union() {
difference() {
//Addition
translate([0, 0, (thickness + wall_thickness) / 2]) {
cube(size = [pixy_width + wall * 2 + clearance * 2, pixy_height + wall * 2 + clearance * 2, thickness + wall_thickness], center=true);
}
//Subtraction
union() {
//Main cutout
translate([0, 0, thickness + (wall_thickness / 2)]) {
cube(size = [pixy_width + clearance * 2, pixy_height + clearance * 2, wall_thickness], center=true);
}
}
}
//Pixy attachment standoffs
for(hole = pixy_holes) {
translate([hole[0], hole[1], thickness]) {
cylinder(h=standoff, r1=(hole_size + thickness * 2)/2, r2=(hole_size + thickness)/2, $fa=1, $fs=0.5);
}
}
}
union() {
//Camera module cutout
translate([0, -15, thickness/2]) {
cube(size = [camera_box + clearance, camera_box + clearance, thickness], center=true);
}
translate([camera_box/2, -15, thickness/2]) {
cylinder(h=thickness, r=camera_screw_rad/2, center=true, $fa=1, $fs=0.5);
}
translate([-camera_box/2, -15, thickness/2]) {
cylinder(h=thickness, r=camera_screw_rad/2, center=true, $fa=1, $fs=0.5);
}
//LED cutout
translate([0, 20.5, thickness/2]) {
cube(size = [led_box + clearance, led_box + clearance, thickness], center=true);
}
//Pixy attachment holes
for(hole = pixy_holes) {
translate([hole[0], hole[1], 0]) {
cylinder(h=10, r=hole_size/2, center=true, $fa=1, $fs=0.5);
}
}
//Mounting holes
for(hole = mounting_holes) {
translate([hole[0], hole[1], 0]) {
cylinder(h=10, r=hole_size/2, center=true, $fa=1, $fs=0.5);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment