GithubHelp home page GithubHelp logo

rubirubsn / bewaesserungs-anlage-system-esp Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 0.0 895 KB

Eine simple automatische Bewässerungsanlage für die ESP Plattform / A simple automatic irrigation system for the ESP platform builded with platformIO

C++ 88.68% C 11.32%
esp32 esp8266 automatic-irrigation-system

bewaesserungs-anlage-system-esp's Introduction


Logo

Bewässerungsanlage

ACHTUNG version 2 ist geplant für Herbst 2022

Programmiert für die ESP-Plattform mit PlatformIO
zur Installation»

Beispiele · Bugs melden · Features anfragen

Inhaltsverzeichnis
  1. Über das Projekt
  2. Beispiele
  3. Installation
  4. Schaltungen
  5. Danksagung!

Über das Projekt

Das Ziel dieser Software ist, ein gut funktionierendes teilautomatisiertes Bewässerungssystem. Das System kann in 3 verschiedenen Modi betrieben werden.

  1. Manuell
    im manuellen Modus wird keine automatische Bewässerung ausgeführt

  2. Automatisiert mit Feuchtesensoren
    Hier wird anhand von Feuchtesensoren die Feuchte im Beet gemessen und daran entschieden, ob bewässert werden soll.

  3. Automatisiert mit Feuchtesensoren und Wettervorhersage
    Hier wird anhand von Feuchtesensoren die Feuchte im Beet gemessen und in Zusammenspiel mit der Wettervorhersage entschieden, ob bewässert werden soll.


!!ACHTUNG in Version 1.- ist nur Modi 3 und 1 Nutzbar!!

Als Hauptserver dient ein ESP32 auf dem mit Hilfe der Bibliothek ESPUI von s00500 ein Webinterface gestaltet wurde. Dieser Server sammelt die Feuchtewerte und plant auch die Bewässerung. Da dieser Server nur die Bewässerung startet, stoppt die Bewässerung automatisch auch im Falle eines Absturz des Systems.
Dieser Server kann mit Freigaben auch öffentlich erreicht werden. Dies wurde mit Hilfe vonMY!FRITZ realisiert (setzt die Nutzung einer Fritz!box voraus).
Es gibt 2 weitere Typen von Servern, ein Feuchteserver und ein Ventilserver. Beide Server werden mit ESP8266 realisiert.
Der Feuchteserver sendet auf Anfrage des Hauptservers die Feuchte an den Hauptserver. Dieser Feuchteserver kann direkt am Beet angebracht werden. Der Ventilserver kann in 3 verschiedenen Modi betrieben werden.

  1. Nutzung von bis zu vier Ventilen pro Server am Trinkwasseranschluss

  2. Nutzung von bis zu vier Ventilen an einer Pumpe. Diese Pumpe kann geschalten werden.

  3. Nutzung von bis zu vier Ventilen an einer Pumpe. Diese Pumpe kann geschalten werden in Abhängigkeit vom Füllstand, z.B. in einem Regenfass um das laufen der Pumpe im Trocknen zu verhindern.

Details zur Oberfläche

Die Oberfläche unterstützt bis zu 20 Beete. Das aktuelle Wetter und auch die aktuelle Feuchte werden im "Allgemein" Tab angezeigt.

Allgemein Screenshot

Im Tab "Beete" ist eine detallierte Betrachtung jedes Beets möglich. Vom Ventilzustand, bis hin zur manuellen Bewässerung oder auch ob eine automatisierte Bewässerung geplant ist, erfährst man hier alles.

Beete Screenshot

Im Tab "Allgemeine Einstellungen" findest man Einstellungen, wie:
- ob deine Oberfläche passwortgeschützt sein soll
- Einstellung der automatischen Bewässerungskriterien.

einst Screenshot

Im Tab "Beete Einstellungen" kannst man alles zu den Beeten einstellen, wie:
- den Namen der Beete
- die Adressen der Feuchte- bzw Ventilsensoren
- die Standartbewässerungszeit der Beete

beet einst Screenshot

Was-brauche-ich

Für die Nutzung der Oberfläche ist ein kostenloser Zugang zur Openweathermap API notwendig. Nach der Anmeldung erhälst man einen API-Schlüssel den man im Einrichtungsprozess in der Weboberfläche eintragen kannst.
Als Ventile für das Wasser nutze ich: UEETEK 1/2 Zoll 12V Elektro Magnetventile.
Als Relais für die Ventile nutze ich eine Standart 4er Relai Platine.
Als Feuchtesensoren nutze ich capacitiv soil moisture Sensor v1.2, deren Ende (also der belötete Teil der Platine) ich mit Hilfe eines Plastikshotglases in Epoxidharz eingegossen habe.
Dieser Sensor wird auch für die Füllstandmessung im Regenfass benutzt (Optional).
Als Hauptserver habe ich den ESP32 Dev Kit c verwendet.
Als Server für die Feuchtigkeit habe ich ESP8266 verwendet.
Dazu nutze ich passende 5v Netzteile für die ESP´s und 12V Netzteile für die Ventile.
Als Bewässerungsschlauch habe ich den Perlschlauch von CS systeme verwendet.
Dazu noch passende Rohre um zu den Beeten zu kommen.

Beispiele


Hier folgt in Kürze ein Video

Installation


1.a. Lade dir aus dem "Releas" das File "firmware.bin" herunter und nutze ESP_Easy_Flasher um das File auf den Hauptserver zu flashen.
1.b. oder klone dieses Repository und flashe das File mit VSCode und Platform IO
1.1. Zum Einrichten gehe in das offene Netzwerk des ESP32.
1.2 Der Server befindet sich nach dem ersten Einrichtungsschritt unter .local/
1.3 Nach der Einrichtung stelle bei deinem Router ein, dass die IP des ESP32 immer gleich bleibt.

2. Klone das Repository für den Feuchteserver und trage die SSID und das Passwort deines Netzwerks ein. 2.1(optional) Lege den Namen für den Zugriff per mDNS fest. (Version 1.- des Hauptservers unterstützt noch keine mDNS Auflösung)
12 const char *SSID = "******";
13 const char *PSW = "****";
14 //hier den Namen des Sensors eintragen um eine einfachere Handhabung bei der IP-Eingabe zu haben
15 const char *Nummnerierung_der_server = "Beet-vorm-fenster";

2.2. Flashe einen ESP8266 mit dieser Software und warte bis dieser sich mit deinem Router verbunden hat.
2.3. Nach dem du den Feuchtesensor an den Pin A0 angelötet hast, musst du diesen noch kallibrieren mit (im Webbrowser auf einem Gerät das im selben Netzwerk ist): http://IP_Des_ESP/kalibrierung?typ=0 für "Trocken" und dann lege den Sensor ins Wasser und gebe http://IP_Des_ESP/kalibrierung?typ=1 für "Nass" ein. Die IP des ESP muss im Hauptserver eingetragen werden.
2.4. Nach der Einrichtung stelle bei deinem Router ein, dass die IP des ESP8266 immer gleich bleibt.
3. Klone das Repository für den Ventilserver und trage die SSID und das Passwort deines Netzwerks ein. Zusätzlich die Anzahl der genutzten Ventile (Aktuell max 4 pro Ventilserver), ob eine Pumpe verwendet wird und ob Füllstandsmessung verwendet wird.
8 const int anz_relays = 4;
9 const bool pumpe = true;
10 bool fuellstand_sensor = true;
11 const int pumpe_pin = D5;
12 const uint8_t Relay[anz_relays] = {D0, D1, D2, D4};
13 const char *SSID = "****";
14 const char *PSW = "****";
15 //Hier die Nr. bzw Namen des Ventilservers eintragen um eine einfachere Handhabung bei der IP-Eingabe zu haben
16 const char *Nummnerierung_der_server = "1";

3.1. Flashe einen ESP8266 mit dieser Software und warte bis dieser sich mit deinem Router verbunden hat. Verbinde die Relaais mit dem im Code genannten Pins. (optional auch den Sensor an Pin A0)
3.2. Trage die IP des Ventilservers im Hauptserver ein.
3.3. Nach der Einrichtung stelle bei deinem Router ein, dass die IP des ESP8266 immer gleich bleibt.

Fertig!

Update

  1. Lade die aktuelle Version herunter. "HIER"
  2. Öffne die Weboberfläche deines Bewässerungsservers und aktiviere die Einstellung "Aktiviere OTA Update" unter "Allgemeine Einstellungen"
  3. Öffne im Browser "ESP_IP"/ota
  4. Lade das firmware.bin File hoch und lade nach ca. 5 minuten die Webseite neu.
    Fertig!

Schaltungen

Schaltdiagramm Ventilserver:
ventil-schaltplan
Schaltdiagramm Feuchteserver:
feuchte-schaltplan

Danksagung

bewaesserungs-anlage-system-esp's People

Contributors

rubirubsn avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.