63 lines
2.7 KiB
OpenSCAD
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();
|