// ============================================ // 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 ; // 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();