Thingiverse

Solar-Soil-Sensor with Battery by makerbotschmidtienet
by Thingiverse
Last crawled date: 4 years ago
This is a enclosure designed for
130x150 mm Solar Cell like this: https://aliexpress.com/item/32876110183.html
MH-ET Live (ESP32) or LoLin Lite (not really necessary because the DFR Charges the Battery) -see file name!
DFRobot DFR0559 Solar Power Manager https://eckstein-shop.de/DFRobot-Solar-Power-Manager-5V-fuer-Solarpanel-max-900mA-Ladestrom
61x47mm 2500mAh LiPo Akku like this: https://eckstein-shop.de/LiPo-Akku-Lithium-Ion-Polymer-Batterie-37V-2500mAh-JST-PH-Connector
BME280
4x or 5x JST-XH 2,54 / 3PIN like this https://de.aliexpress.com/item/32741723157.html
very(!) Short USB-A to MicroUSB Cable
Wire the Solar Power Manager to the solar cell throught the hole in the middle with 2 short cables
Solder the 4x JST-XH PIN 1 together to Ground, PIN 2 to 3.3V (maybe with a line-grid-PCB), PIN 3 each to 32,33,34,35 on the ESP32
Solder the BME280 to the ESP32, connect the Battery to the Solar Power Manager.
Finally connect up to 4 Soil Sensors to the JST Connectors, the 5. Connector can be used to charge the Battery without sunlight (for indoor or winter usage) - maybe use another Connector - a 2 PIN would be ideal.
Flash ESPHome with config for Sensors:
sensor:
platform: bme280
temperature:
name: "BME280 Temperature"
oversampling: 16x
pressure:
name: "BME280 Pressure"
humidity:
name: "BME280 Humidity"
address: 0x77
update_interval: 60s
platform: adc
pin: 32
name: "Bodenfeuchte1"
update_interval: 120s
unit_of_measurement: "%"
attenuation: 11db
filters:
lambda: |-
if (x > 3.3) {
return 0;
} else if (x < 1.10) {
return 100;
} else {
return (3.3-x) / (3.3-1.10) * 100.0;
}
platform: adc
pin: 33
name: "Bodenfeuchte2"
update_interval: 120s
unit_of_measurement: "%"
attenuation: 11db
filters:
lambda: |-
if (x > 3.3) {
return 0;
} else if (x < 1.10) {
return 100;
} else {
return (3.3-x) / (3.3-1.10) * 100.0;
}
platform: adc
pin: 34
name: "Bodenfeuchte3"
update_interval: 120s
unit_of_measurement: "%"
attenuation: 11db
filters:
lambda: |-
if (x > 3.3) {
return 0;
} else if (x < 1.10) {
return 100;
} else {
return (3.3-x) / (3.3-1.10) * 100.0;
}
platform: adc
pin: 35
name: "Bodenfeuchte4"
update_interval: 120s
unit_of_measurement: "%"
attenuation: 11db
filters:
lambda: |-
if (x > 3.3) {
return 0;
} else if (x < 1.10) {
return 100;
} else {
return (3.3-x) / (3.3-1.10) * 100.0;
}
platform: adc
pin: 36
name: "Bodenfeuchte5"
update_interval: 120s
unit_of_measurement: "%"
attenuation: 11db
filters:
lambda: |-
if (x > 3.3) {
return 0;
} else if (x < 1.10) {
return 100;
} else {
return (3.3-x) / (3.3-1.10) * 100.0;
}
130x150 mm Solar Cell like this: https://aliexpress.com/item/32876110183.html
MH-ET Live (ESP32) or LoLin Lite (not really necessary because the DFR Charges the Battery) -see file name!
DFRobot DFR0559 Solar Power Manager https://eckstein-shop.de/DFRobot-Solar-Power-Manager-5V-fuer-Solarpanel-max-900mA-Ladestrom
61x47mm 2500mAh LiPo Akku like this: https://eckstein-shop.de/LiPo-Akku-Lithium-Ion-Polymer-Batterie-37V-2500mAh-JST-PH-Connector
BME280
4x or 5x JST-XH 2,54 / 3PIN like this https://de.aliexpress.com/item/32741723157.html
very(!) Short USB-A to MicroUSB Cable
Wire the Solar Power Manager to the solar cell throught the hole in the middle with 2 short cables
Solder the 4x JST-XH PIN 1 together to Ground, PIN 2 to 3.3V (maybe with a line-grid-PCB), PIN 3 each to 32,33,34,35 on the ESP32
Solder the BME280 to the ESP32, connect the Battery to the Solar Power Manager.
Finally connect up to 4 Soil Sensors to the JST Connectors, the 5. Connector can be used to charge the Battery without sunlight (for indoor or winter usage) - maybe use another Connector - a 2 PIN would be ideal.
Flash ESPHome with config for Sensors:
sensor:
platform: bme280
temperature:
name: "BME280 Temperature"
oversampling: 16x
pressure:
name: "BME280 Pressure"
humidity:
name: "BME280 Humidity"
address: 0x77
update_interval: 60s
platform: adc
pin: 32
name: "Bodenfeuchte1"
update_interval: 120s
unit_of_measurement: "%"
attenuation: 11db
filters:
lambda: |-
if (x > 3.3) {
return 0;
} else if (x < 1.10) {
return 100;
} else {
return (3.3-x) / (3.3-1.10) * 100.0;
}
platform: adc
pin: 33
name: "Bodenfeuchte2"
update_interval: 120s
unit_of_measurement: "%"
attenuation: 11db
filters:
lambda: |-
if (x > 3.3) {
return 0;
} else if (x < 1.10) {
return 100;
} else {
return (3.3-x) / (3.3-1.10) * 100.0;
}
platform: adc
pin: 34
name: "Bodenfeuchte3"
update_interval: 120s
unit_of_measurement: "%"
attenuation: 11db
filters:
lambda: |-
if (x > 3.3) {
return 0;
} else if (x < 1.10) {
return 100;
} else {
return (3.3-x) / (3.3-1.10) * 100.0;
}
platform: adc
pin: 35
name: "Bodenfeuchte4"
update_interval: 120s
unit_of_measurement: "%"
attenuation: 11db
filters:
lambda: |-
if (x > 3.3) {
return 0;
} else if (x < 1.10) {
return 100;
} else {
return (3.3-x) / (3.3-1.10) * 100.0;
}
platform: adc
pin: 36
name: "Bodenfeuchte5"
update_interval: 120s
unit_of_measurement: "%"
attenuation: 11db
filters:
lambda: |-
if (x > 3.3) {
return 0;
} else if (x < 1.10) {
return 100;
} else {
return (3.3-x) / (3.3-1.10) * 100.0;
}