46 lines
2 KiB
OpenSCAD
46 lines
2 KiB
OpenSCAD
// ============================================
|
|
// Tapo Ceiling Mount - Adapter for the ORIGINAL Tapo Base
|
|
// ============================================
|
|
// The reliable option. Its top is a cup that locks onto the collar bottom
|
|
// ring. Its bottom is a flat surface that carries the genuine factory Tapo
|
|
// base with two screws. It reuses the project camera-mount parameters, so no
|
|
// unverified twist-lock geometry is needed.
|
|
//
|
|
// Bosses hold the base screws. They straddle the central cable hole and leave
|
|
// the center open for the RJ45 and DC cables. Each boss rises from the base
|
|
// plate to the rim plane, so it prints from the bed.
|
|
//
|
|
// Print orientation: rim on the bed. The lugs and the latch beam print on the
|
|
// bed. No support.
|
|
|
|
parameters_only = false;
|
|
include <tapo_ceiling_mount_parameters.scad>;
|
|
|
|
// Longest base screw that fits: base plate + pilot depth.
|
|
echo(str("Original base screws: ST3.5 up to ",
|
|
floor(tapo_base_plate_t + adapter_rim_z - (adapter_top_z - adapter_plate_t) - 1),
|
|
" mm long (the 20 mm factory screws are too long)"));
|
|
|
|
module tapo_camera_adapter_original_base() {
|
|
zb = adapter_top_z - adapter_plate_t; // base plate, camera side
|
|
difference() {
|
|
union() {
|
|
adapter_core();
|
|
// Solid bosses for the factory base screws, kept inside the inner wall.
|
|
intersection() {
|
|
union()
|
|
for (p = tapo_base_screw_xy())
|
|
translate([p[0], p[1], zb])
|
|
cylinder(d = camera_boss_d, h = adapter_rim_z - zb);
|
|
translate([0, 0, zb]) cylinder(r = adapter_spigot_r, h = adapter_rim_z - zb);
|
|
}
|
|
}
|
|
// Pilot holes from the camera side, through the whole boss but the last
|
|
// 1 mm, so longer base screws do not bottom out.
|
|
for (p = tapo_base_screw_xy())
|
|
translate([p[0], p[1], zb - 0.01])
|
|
cylinder(d = camera_mount_hole_diameter, h = adapter_rim_z - zb - 1);
|
|
}
|
|
}
|
|
|
|
tapo_camera_adapter_original_base();
|