basisprints

This commit is contained in:
Julian Vollmer 2026-03-08 12:47:48 +01:00
parent 9be4503da9
commit 9cf6bfbc73
46 changed files with 8054 additions and 0 deletions

BIN
angeln/Topwater_Lure.STL Normal file

Binary file not shown.

BIN
beer_crate_AA.stl Normal file

Binary file not shown.

BIN
beer_crate_AAA.stl Normal file

Binary file not shown.

BIN
cute unicorn.stl Normal file

Binary file not shown.

View File

@ -0,0 +1 @@
This thing was created by Thingiverse user alanjames1987, and is licensed under Creative Commons - Attribution

View File

@ -0,0 +1,4 @@
D1 Mini Lite + PIR (HC-SR501) Enclosure by alanjames1987 on Thingiverse: https://www.thingiverse.com/thing:3366814
Summary:
An enclosure to hold a D1 Mini Lite and HC-SR501 PIR sensor.The HC-SR501 can give a lot of false positives because of signals from the ESP8266. This enclosure can make that worse because the D1 Mini antenna sits right below the HC-SR501. For this reason you shouldn't use this enclosure as a motion sensor to control things like lights, but it works very well for triggering cameras to record security footage or other things where a false positive wouldn't be unwelcome.For light motion sensors I've heard the AM312 is a better sensor but I haven't tested it yet.

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 602 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

View File

@ -0,0 +1 @@
This thing was created by Thingiverse user mauroalfieri, and is licensed under Creative Commons - Attribution - Non-Commercial - Share Alike

View File

@ -0,0 +1,4 @@
Wemos D1 mini pir home Assistant case by mauroalfieri on Thingiverse: https://www.thingiverse.com/thing:5842725
Summary:
The enclosure also fits a DHT22 and a pir motion sensor starting from the Wemos D1 mini enclosure project by Dendrowen ( https://www.thingiverse.com/thing:4905266 ).In my customization I wanted to put the motion sensor directly into the wemos case to have a compact, single case with no external cables.As done by the author I shared the modified .scad file for future customizations.Bill of materialsn.1 wemos D1 mini ( https://www.amazon.it/AZDelivery-D1-NodeMCU-ESP8266-12E-compatibile/dp/B01N9RXGHY?__mk_it_IT=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=2NM602FFYEGFM&keywords=wemos+di+mini&qid=1675956817&refinements=p_76:490210031&rnid=490209031&rps=1&sprefix=wemos+di+mini,aps,87&sr=8-6&linkCode=sl1&tag=mauroalfieri-21&linkId=7228cbc973656d77f3574fba8a44685d&language=it_IT&ref_=as_li_ss_tl )n.1 Pir motion sensor ( https://www.amazon.it/AZDelivery-D1-NodeMCU-ESP8266-12E-compatibile/dp/B01N9RXGHY?__mk_it_IT=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=2NM602FFYEGFM&keywords=wemos+di+mini&qid=1675956817&refinements=p_76:490210031&rnid=490209031&rps=1&sprefix=wemos+di+mini,aps,87&sr=8-6&linkCode=sl1&tag=mauroalfieri-21&linkId=7228cbc973656d77f3574fba8a44685d&language=it_IT&ref_=as_li_ss_tl )n.1 DHT22 temperature and humidity sensor ( https://www.amazon.it/AZDelivery-D1-NodeMCU-ESP8266-12E-compatibile/dp/B01N9RXGHY?__mk_it_IT=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=2NM602FFYEGFM&keywords=wemos+di+mini&qid=1675956817&refinements=p_76:490210031&rnid=490209031&rps=1&sprefix=wemos+di+mini,aps,87&sr=8-6&linkCode=sl1&tag=mauroalfieri-21&linkId=7228cbc973656d77f3574fba8a44685d&language=it_IT&ref_=as_li_ss_tl )n.1 10Kohm resistor ( https://www.amazon.it/AZDelivery-D1-NodeMCU-ESP8266-12E-compatibile/dp/B01N9RXGHY?__mk_it_IT=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=2NM602FFYEGFM&keywords=wemos+di+mini&qid=1675956817&refinements=p_76:490210031&rnid=490209031&rps=1&sprefix=wemos+di+mini,aps,87&sr=8-6&linkCode=sl1&tag=mauroalfieri-21&linkId=7228cbc973656d77f3574fba8a44685d&language=it_IT&ref_=as_li_ss_tl )n.1 0,1uF capacitor ( https://www.amazon.it/AZDelivery-D1-NodeMCU-ESP8266-12E-compatibile/dp/B01N9RXGHY?__mk_it_IT=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=2NM602FFYEGFM&keywords=wemos+di+mini&qid=1675956817&refinements=p_76:490210031&rnid=490209031&rps=1&sprefix=wemos+di+mini,aps,87&sr=8-6&linkCode=sl1&tag=mauroalfieri-21&linkId=7228cbc973656d77f3574fba8a44685d&language=it_IT&ref_=as_li_ss_tl  )

View File

@ -0,0 +1,452 @@
$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);
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
pokemonecase/Base_white.stl Normal file

Binary file not shown.

Binary file not shown.

BIN
pokemonecase/Cap_black.stl Normal file

Binary file not shown.

Binary file not shown.

BIN
pokemonecase/Cap_purple.stl Normal file

Binary file not shown.

Binary file not shown.

BIN
pokemonecase/M_white.stl Normal file

Binary file not shown.

Binary file not shown.

BIN
unicorn.stl Normal file

Binary file not shown.