Alternative Stromquelle für esp32?

Hallo zusammen,

ich möchte gern im Außenbereich den Füllstand eines Brunnens mit einem esp32 und einem Ultraschallsensor realisieren. Diese Geräte-Kombi hab ich auch schon an anderer Stelle und es funktioniert auch super.

Nun ist es an dieser Stelle etwas aufwendiger dorthin normalen Hausstrom zu verlegen und ich suche daher nach einer alternativen Stromquelle für meinen esp. Daher meine Frage: Hat jemand von euch Erfahrungen den esp32 eventuell über ein kleines Solarpanel mit Strom zu versorgen? Oder (weil es erstmal nur experimentell vorübergehend ist), eventuell sogar über eine Powerbank. Da müsste man sicher ausrechnen können, wie lange abhängig von der PowerBank-Kapazität, das ausreicht.

Habt ihr dort Erfahrungswerte oder hat sowas schonmal jemand gemacht? Ich weiß nicht, ob das Strommäßig was bringt, aber ich würd auch Kompromisse eingehen, dass ich nicht so oft eine neue Ultraschallmessung mache. Also eventuell 1x pro Stunde wäre auch ausreichend.

Also ich habe auch einen ESP32 dort mit einer 3700mAh Batterie und einem Solarpanel. Läuft super, nur im Herbst und Winter kann es mal sein, das die Batterie nicht genügend geladen werden kann. Allerdings schläft der ESP 43 Minuten und sendet dann 2 Minuten die Daten. Mir reicht das aus, da ich nicht den Live Stand meiner Zisterne benötige. Den Batteriestand lese ich ebenfalls aus, dann sehe ich zumindest für den Sommer wann ich mal laden müsste (kommt aber im Sommer eher nicht vor). Das gleiche System habe ich bei meinem 1000L Container verbaut.

mit welchem sensor messt ihr den füllstand?

Damit misst du den Abstand zum Wasser und kannst ggf. umrechnen was es in Liter je nach Tank ausmacht.

1 „Gefällt mir“

Danke weil ich habe auch 2 IBC Tanks da würde ich das gerne Umsetzen iss ja geil wenn man weis wieviel im Tank ist und auch was vom Dach an Wasser kommt das könnte man ja visualisieren

Genau sowas hab ich auch schon realisiert. Wenn du dazu Fragen hast, gern direkt bei mir melden.

Kurze Zusammenfassung: Ich hab in eine solche Abzweigdose https://www.bauhaus.info/abzweigdosen/abzweigdose/p/12165125 einen esp32 mit dem oben genannten Ultraschallsensor eingebaut und diese Abzweigdose dann oben in die große Öffnung des IBC-Tanks rangeschraubt. Nun wird der Abstand von dem Ultraschallsensor zur Wasseroberfläche gemessen. Wenn man den minimalen und den maximalen Abstand weiß, könnte man noch einen Helfer anlegen, der den prozentualen Füllstand anzeigt.

So sieht das bei mir dann aus:

Was hast du dort genau für Komponenten? Könntest du die eventuell posten?

Ich habe da das Problem das ich den Deckel ein Loch reingemacht habe und da direkt die Dachrinne rein fliest, da werde ich etwas umbauen müssen, wie sieht es mit der Feuchtigkeit für die Komponenten aus?

Bei den ESP32-S3 ist die Stromversorgung über den 5V Pin kein Problem läuft bei mir an der Splitklimaanlage sehr gut da werde ich dan Ansetzen im Winter sind die IBC Tanks eh Leer da werde ich mir einen Akku mit Solarzelle machen und den ESP damit versorgen das kann ich dann bei meinem 2 ten Tank auch so realisieren.

Solarpanel: 5V / 2W

Batterie:3,7V / 3500mAh

Laderegler: TP 4056

Messkomponente: 5V Ultraschallsensor Wasserdicht Modul JSN-SR04T

Einen Wemos D1 mini32, der über Nacht von 20 bis 6Uhr im DeepSleep ist und tagsüber ebenfalls 43 Minuten “schläft” und 2 Minuten wach ist und die Daten überträgt. Damit reicht die Kapazität der Batterie auch mal etwas länger ,wenn die Sonne nicht scheint.Untergebracht ist das alles (bis auf den Sensor natürlich) in einem Aufputz-Verteilerkasten (IP65).

1 „Gefällt mir“

wie haste den sensor selbst angebracht haste da Bilder?

Hi, denk bitte daran, dass nicht alle Powerbanks Dauerstrom liefern. Manche schalten ab wenn der Strom zu klein wird.

1 „Gefällt mir“

Nicht nur der Dauerstrom kann Probleme machen, nicht jede Powerbank ist durchladefähig, also Strom über Solar rein und gleichzeitig raus zum ESP.

Moin,

das Beste, was mir zum Thema solare Stromversorgung und ESP im DeepSleep einfällt:

1 „Gefällt mir“

Ich check‘s noch nicht ganz. Also in der Theorie schon. Solarpanel lädt die zwei AA-Akkus und versorgt parallel den Esp32 mit Strom.

Kannst du mir das eventuell bisschen skizzieren und/oder mit Bildern zeigen? Wenn ja, wäre das eine gute Lösung für mich. Und ja, es reicht mir EIN Wert pro Stunde locker.

TP4056:

IN+ und IN- kommt das Solarpanel

B+ und B- kommt die 3,7V Batterie (ich habe nur eine)

OUT + und OUT - kommt der ESP (bei mir D1 mini).

Hier noch mein Code:

esphome:
  name: h2o-zisterne-d1-mini
  friendly_name: H2O-Zisterne_D1_mini

esp32:
  board: wemos_d1_mini32
  framework:
    type: esp-idf
#API Key für Home Assitant
api:
  encryption:
    key: "XX"
# Enable logging
logger:

ota:
  - platform: esphome
    password: "XX"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "H2O-Zisterne-D1-Mini"
    password: "31CUliFKW0jW"

captive_portal:
#Zeitabfrage
time:
  - platform: sntp
    id: sntp_time
    timezone: Europe/Berlin
#DeepSleep (2 Minuten aufwachen/43 Minuten schlafen)
deep_sleep:
  id: deep_sleep_ctrl
  run_duration: 2min
  sleep_duration: 43min

globals:
  - id: page
    type: int
    initial_value: "1"
  - id: mode_text
    type: std::string
    initial_value: '"Unbekannt"'

interval:
  # Steuerung von DeepSleep je nach Uhrzeit (zwischen 20 und 6Uhr 10h DeepSleep;zwischen 6 und 20Uhr 2 Minuten wach/43Mi9nuten Schlaf)
  - interval: 30s
    then:
      - lambda: |-
          auto time = id(sntp_time).now();
          if (!time.is_valid()) return;

          if (time.hour >= 20 || time.hour < 6) {
            // Nachtmodus
            id(deep_sleep_ctrl).set_run_duration(1000);       // 1 Sekunde wach
            id(deep_sleep_ctrl).set_sleep_duration(11 * 60 * 60 * 1000); // 11 Stunden schlafen
            id(mode_text) = "Nachtmodus";
            ESP_LOGI("sleep", "Schalte in Nachtmodus (11h Schlaf)");
          } else {
            // Tagmodus
            id(deep_sleep_ctrl).set_run_duration(2 * 60 * 1000);       // 2 Minuten wach
            id(deep_sleep_ctrl).set_sleep_duration(43 * 60 * 1000);    // 58 Minuten schlafen
            id(mode_text) = "Tagmodus";
            ESP_LOGI("sleep", "Schalte in Tagmodus (2min wach, 43min Schlaf)");
          }
sensor:
#Entfernungsmessung mit Ultraschall-Abstandssensor JSN-SR04T
  - platform: ultrasonic
    trigger_pin: GPIO33
    echo_pin: GPIO34
    name: "Ultrasonic Sensor"
    update_interval: 10s
    timeout: 4m
    force_update: false
    filters:
    - lambda: if (isnan(x)) { return 999.0; } return x;
    - sliding_window_moving_average:
        window_size: 5
        send_every: 5
# Batteriesensor
  - platform: adc
    id: solar_plant_batt_voltage
    pin: GPIO36
    attenuation: auto
    name: Batteriespannung Zisterne
    unit_of_measurement: 'V'
    update_interval: 5s
    accuracy_decimals: 2
    filters:
        # Zuordnung von ESP32-Spannung zu Batteriespannung
        - multiply: 2 #das ist (100k + 27k)/(100k)=127k/100k=127/100=1.27
        #gleitender Median zur Glättung von Spitzen
        - median:
            window_size: 10
            send_every: 10
            send_first_at: 10
#        - delta: 0.1 # Werte nur senden, wenn sie sich ändern
#        - throttle: 30s #Werte an HA begrenzen
# Umrechnung der Spannung in einen Batteriestand (%)
  - platform: copy
    source_id: solar_plant_batt_voltage
    id: solar_plant_batt_level
    icon: "mdi:battery"
    name: Batteriestand Zisterne
    unit_of_measurement: '%'
    accuracy_decimals: 2
    filters:
        - calibrate_linear:
            # Zuordnung von ESP32-Spannung zu Batteriestand
            - 0.0 -> 0
            - 4.2 -> 100 #maximal möglicher vom ESP32 ADC gemeldeter Wert ist 3,3V
        #Grenzen behandeln/begrenzen
        - lambda: |
            if (x < 0) return 0;
            else if (x > 100) return 100;
            else return (x);
#        - delta: 0.5 #Werte nur senden, wenn sie sich ändern
#        - throttle: 30s #Werte an HA begrenzen
#MQTT Broker
mqtt:
  broker: !secret mqtt_broker
  username: !secret mqtt_username
  password: !secret mqtt_password