3d-printing/tapo-ceiling-mount/tapo_ceiling_camera_connector.scad

63 lines
2.7 KiB
OpenSCAD

// ============================================
// Tapo Ceiling Mount - Camera Connector Collar
// ============================================
// A modular collar that hangs below the exterior plate. It carries no ceiling
// load. It routes cables and joins two bayonet interfaces of the same kind:
// top -> the collar is the cup. It wraps around the plate ring and
// hides it.
// bottom -> the collar is the fixed part. A short ring with outward load
// tabs hangs from its flat bottom face. The adapter cup wraps
// around it.
//
// Fitting: push the collar up over the plate ring (it fits one way only),
// turn it until it clicks. The latch beam in the rim snaps over a bump on the
// plate and blocks the reverse turn. To remove it, press the release nub
// toward the floor, turn back and pull down.
//
// The cable exit is open at the rim. It lines up with a window in the plate
// ring, so the cables can leave sideways right under the ceiling.
//
// Print orientation: top rim on the bed. The upper lugs and the latch beam
// print on the bed; the slit over the beam is a short bridge. The floor is
// flat (connector_shelf_angle = 0) to keep the collar short, so it needs
// support inside the collar. The three lower load tabs face down at the top of
// the print and need support too.
parameters_only = false;
include <tapo_ceiling_mount_parameters.scad>;
// Collar floor: the flat bottom face, and an inner shelf that ties the
// bottom ring to the wall.
module connector_floor() {
run = connector_r_i - li_ring_r_i;
translate([0, 0, conn_bottom_z])
difference() {
cylinder(r = connector_r_i + 0.01, h = conn_shelf_top_z - conn_bottom_z);
translate([0, 0, -1])
cylinder(r = li_ring_r_i, h = connector_floor_t + conn_shelf_h + 2);
// Shelf: a cone from the ring edge out to the wall, at the shelf angle.
translate([0, 0, connector_floor_t])
cylinder(r1 = li_ring_r_i, r2 = connector_r_i + 1,
h = (run + 1) * tan(connector_shelf_angle) + 0.01);
}
}
module camera_connector() {
difference() {
union() {
// Outer collar wall. It wraps around the plate bayonet ring.
ring_wall(connector_r_i, connector_wall_t,
conn_bottom_z, conn_top_z - conn_bottom_z);
// Upper lugs (onto the plate tabs) and the upper release nub.
bay_lugs(ui_bay);
bay_latch_nub(ui_bay);
// Floor, bottom ring, load tabs, back stops and lower latch bump.
connector_floor();
bay_ring(li_bay);
}
cable_slot();
bay_latch_cuts(ui_bay);
}
}
camera_connector();