3ddruck/d1mini/Wemos D1 mini pir home Assi.../files/esp8266.scad

452 lines
12 KiB
OpenSCAD

$fa = 0.5;
$fs = 0.5;
esp_w = 26;
esp_l = 34.5;
esp_t = 4.8;
esp_tt = 8;
wall = 2;
overlap = 9.5;
// Pir sizes
pirL = 33;
pirH = 25;
pirP = 15;
pirHole = 24;
screw_holes = [
[esp_w - overlap / 2, overlap / 2],
[overlap / 2, esp_l + overlap * 0.5]
];
// color("WHITE")
// entire_case();
rotate([180, 0, 0])
lid();
//case();
//entire_case();
//mount();
//pir();
module mount() {
union() {
difference() {
minkowski() {
cube([esp_w, esp_l + overlap, 12]);
sphere(r = wall * 2);
}
minkowski() {
cube([esp_w, esp_l + overlap, 12]);
sphere(r = wall + 0.1);
}
translate([esp_w / 2, (esp_l + overlap) / 2 + 1.1, -4.08])
cylinder(d1 = 4.3, d2 = 7.3, h = 2);
// ================ 0.2
translate([-5, -5, 2])
cube([100, 100, 100]);
translate([-5, -5, -5])
cube([100, esp_l / 2 + 6, 100]);
translate([-5, esp_l / 2 + 10.7, -5])
cube([100, esp_l / 2 + 5, 100]);
// ================ 0.1
// translate([-0.5, -10, -wall])
// cube([esp_w + 1, esp_l + overlap, 30]);
// translate([-0.5, -10, -wall])
// cube([esp_w - 3, esp_l + overlap + 20, 30]);
// translate([-10, 4, -wall])
// cube([esp_w + 20, esp_l + overlap - 8, 30]);
// translate([5, 10, -wall])
// cube([esp_w + 20, esp_l + overlap - 10, 30]);
}
// =================== 0.2
translate([-2, esp_l / 2 + 3, 2])
difference() {
scale([0.5, 1, 1])
sphere(r = 1.5);
translate([-5, -5, 0])
cube([10, 10, 10]);
}
translate([-2, esp_l / 2 + 8.7, 2])
difference() {
scale([0.5, 1, 1])
sphere(r = 1.5);
translate([-5, -5, 0])
cube([10, 10, 10]);
}
translate([esp_w + 2, esp_l / 2 + 3, 2])
difference() {
scale([0.5, 1, 1])
sphere(r = 1.5);
translate([-5, -5, 0])
cube([10, 10, 10]);
}
translate([esp_w + 2, esp_l / 2 + 8.7, 2])
difference() {
scale([0.5, 1, 1])
sphere(r = 1.5);
translate([-5, -5, 0])
cube([10, 10, 10]);
}
}
}
module entire_case(){
case();
translate([0,0,20]) lid();
}
/** tsl sensor **
color("GRAY")
translate([esp_w, esp_l + overlap, esp_t + 6 - 1.6])
rotate([0, 0, 180])
tsl2561();
/* */
/** dht sensor **
color("GRAY")
translate([15.4, 25.3 + pirH, esp_t + 6 - 1.6])
rotate([0, 0, 180])
dht22();
/* */
module lid(){
union(){
difference() {
// base
minkowski() {
cube([pirL, esp_l + overlap+pirH, 13]);
sphere(r = wall);
}
translate([-5, -5, -5])
cube([100, 100, esp_t + 6 + 5]);
//tsl sensor
difference(){
translate([esp_w, esp_l + overlap+pirH, esp_t + 6 - 0.6])
rotate([0, 0, 180])
tsl2561();
translate([esp_w, esp_l + overlap+pirH, esp_t + 6 - 0.6])
rotate([0, 0, 180])
cube([20, 11, 4]);
}
translate([esp_w - 5.5, esp_l + overlap - 4.1+pirH, esp_t + 6 - 0.1])
rotate([0, 0, 180])
cube([3, 2, 0.9]);
//tsl sensor window
translate([esp_w - 8.3, esp_l + overlap - 9.1+pirH, esp_t + 6 - 0.1])
hull(){
cube([3, 2, 0.1]);
translate([-2.5, -3, 4])
cube([8, 8, 0.1]);
}
//dht sensor
translate([15.4, 25.3+pirH, esp_t + 6 - 1.6])
rotate([0, 0, 180])
hull(){
difference() {
dht22();
translate([0, 20.5, 0])
cube([20, 8, 5]);
}
sphere(r = 0.2);
}
//pir sensor
translate([16.5, 12, esp_t + 6 - 1.6 - pirP+5])
rotate([0, 0, 180])
pir();
translate([wall + 0.3, 25.2+pirH, esp_t + 6 - 0.1])
cube([13.1, 5.1, 1.5]);
//screws
translate([0, pirH, 10])
cylinders(d = 3.2, h = 5, pos = screw_holes);
translate([0, pirH, 13])
cylinders(d = 6, h = 5, pos = screw_holes);
translate([0, pirH, 12.41])
cylinders(d2 = 6, d1 = 3.2, h = 0.6, pos = screw_holes);
}
}
}
module case(){
union() {
difference() {
// base
minkowski() {
cube([pirL, esp_l + overlap + pirH, 20]);
sphere(r = wall);
}
//slot for esp
translate([7, overlap+pirH, 0])
difference(){
cube([esp_w, esp_l, esp_t]);
cube([esp_w, 4, 2.7]);
translate([esp_w / 2 - 1.5, 0, 2.7])
cube([3, 1, 1]);
}
//chamfered edge for inserting esp
translate([0, overlap+pirH, 0])
hull() {
translate([0, 10, 0])
cube([pirL, esp_l - overlap, esp_t]);
translate([0, 10, 0])
cube([pirL, esp_l - 10 - overlap, esp_t + 3.2]);
}
//hole to insert esp
translate([0, overlap+pirH, 4])
cube([pirL, esp_l - overlap, 20]);
//cut off the top
translate([-10, -10, esp_t + 6])
cube([100, 100, 100]);
//tsl sensor
translate([esp_w+7, esp_l + overlap+pirH, esp_t + 6 - 1.6])
rotate([0, 0, 180])
tsl2561();
//dht sensor
translate([15.4, 25.3+pirH, esp_t + 6 - 1.6])
rotate([0, 0, 180])
dht22();
//pir sensor
translate([16.5, 12, esp_t + 6 - 1.6 - pirP+5])
rotate([0, 0, 180])
pir();
translate([0, 0+pirH, esp_t + 1])
cylinders(4.6, 6, screw_holes);
//cross cut
//translate([-5, -5, -5])
//cube([esp_w / 2 + 5, 100, 100]);
//reset button
translate([esp_w - 0.1 + 7, esp_l + overlap - 10 - 2 +pirH, 0])
cube([5, 10, 0.4]);
translate([esp_w - 0.1 + 7, esp_l + overlap - 10 - 2 +pirH, 3.5])
cube([5, 10, 0.4]);
translate([esp_w - 0.1 + 7, esp_l + overlap - 2+pirH, 0])
cube([5, 0.4, 3.9]);
//usb port
translate([9.75 + 7, esp_l + overlap - 1+pirH, 1.5])
hull(){
translate([1.75, 5, 0])
rotate([90, 0, 0])
cylinder(d = 3.5, h = 5);
translate([7.5-1.75, 5, 0])
rotate([90, 0, 0])
cylinder(d = 3.5, h = 5);
}
//vents
translate([-5, esp_l / 2 + 3+pirH, 0])
rotate([45, 0, 0]){
translate([16, 0, 0])
cube([100, 3, 3]);
translate([16, -4, 4])
cube([100, 3, 3]);
translate([16, -4, 8])
cube([100, 3, 3]);
translate([0, 4, 0])
cube([100, 3, 3]);
translate([0,4, 4])
cube([100, 3, 3]);
translate([0, 0, 8])
cube([100, 3, 3]);
translate([16, 0, 4])
cube([100, 3, 3]);
translate([0, 4, -4])
cube([100, 3, 3]);
translate([0, 8, -4])
cube([100, 3, 3]);
translate([0, 8, 0])
cube([100, 3, 3]);
}
//extra sensor cable guide
translate([7, -5+pirH, esp_t-1 ])
cube([4, 20, 3.6]);
}
//extra wemos positiong block
translate([0, (pirH*2)+9, 0 ])
cube([7, 10, 3]);
//extra pin to positioning
translate([5, pirH + esp_l + overlap + 3, esp_t ]) rotate([90,0,0]) cylinder(r1=2,r2=3,h=4,center=true,$fn=96);
translate([5, -3, esp_t ]) rotate([90,0,0]) cylinder(r1=3,r2=2,h=4,center=true,$fn=96);
//reset button
translate([esp_w - 0.9 + 7, esp_l + overlap - 6.5+pirH, 0.5])
hull() {
translate([0, 0, 1])
cube([0.9, 4.5, 2]);
translate([0.9, 0, 0])
cube([0.1, 4.5, 3]);
}
translate([esp_w + wall + 7, esp_l + overlap - 3.5+pirH, 2])
scale([0.5, 1, 1])
sphere(d = 3);
}
}
module dht22() {
dht_w = 15.4;
dht_l = 20.3;
dht_t = 8;
dht_lip = 5;
dht_lip_t = 1.7;
union(){
cube([dht_w, dht_l, dht_t]);
translate([0, dht_l, 0])
difference() {
hull() {
translate([0, -0.1, 0])
cube([dht_w, 0.1, dht_lip_t]);
translate([(dht_w - 10.5) / 2, dht_lip - 0.1, 0])
cube([10.5, 0.1, dht_lip_t]);
}
translate([dht_w / 2, 2.4, -1])
cylinder(d = 2.8, h = 3);
}
}
}
module tsl2561(){
tsl_w = 13.4;
tsl_l = 18.6;
tsl_t = 1.6;
tsl_hoh = 8.5;
difference() {
cube([tsl_w, tsl_l, tsl_t + 0.01]);
translate([(tsl_w - tsl_hoh) / 2, 3, -1])
cylinder(d = 2.9, h = 3);
translate([(tsl_w - tsl_hoh) / 2 + tsl_hoh, 3, -1])
cylinder(d = 2.9, h = 3);
}
}
module pir(){
difference(){
union() {
translate([0,0,pirP/2]) cube([pirL+1,pirH+1,pirP],center=true);
translate([0,0,pirP+1]) sphere(r=pirHole/2,$fn=25);
}
translate([(pirL/2)-2,0,pirP/2])cylinder(r=1,h=pirP*2,center=true,$fn=96);
translate([-(pirL/2)+2,0,pirP/2])cylinder(r=1,h=pirP*2,center=true,$fn=96);
translate([(pirL/2)-2,0,(pirP)-.4])cylinder(r1=1,r2=3,h=2,center=true,$fn=96);
translate([-(pirL/2)+2,0,(pirP)-.4])cylinder(r1=1,r2=3,h=2,center=true,$fn=96);
translate([(pirL/2)-2,0,2.4])cylinder(r1=2,r2=1,h=5,center=true,$fn=96);
translate([-(pirL/2)+2,0,2.4])cylinder(r1=2,r2=1,h=5,center=true,$fn=96);
}
// trimmer sensivity
translate([4,20,pirP-8]) rotate([90,0,0]) cylinder(r=3,h=15,center=true,$fn=96);
translate([-2.5,20,pirP-8]) rotate([90,0,0]) cylinder(r=3,h=15,center=true,$fn=96);
}
module cylinders(d, h, pos, d1, d2){
for(p = pos){
x = p[0];
y = p[1];
translate([x, y, 0])
if(d == undef){
cylinder(d1 = d1, d2 = d2, h = h);
} else {
cylinder(d = d, h = h);
}
}
}