Bewässerungsprojekt

Hallo und erstmal viele Grüße in die Runde…ich bin neu hier,

Ich habe mir zunächst nur zum Spaß ein Arduino-Board bestellt (ist noch nicht da). Gestern Abend ist mir dazu nun endlich eine sinnvolle Anwendung eingefallen. Ich möchte mein Keimgerät (zur Aufzucht von Keimen und Sprossen) automatisieren. Die Idee: der Arduino bewässert im 24, 12, 8, 6 bzw. 4 Stunden Takt (einstellbar) mit jeweils 400, 500, 600, 700 bzw. 800 ml Wasser (einstellbar). Ich möchte also 2 Taster und 2x5 LEDs haben; mit dem einen stelle ich die Zeit ein (bei 24h leuchtet eine LED, bei 12h 2 LEDs usw) und mit dem anderen die Wassermenge (bei 400ml leuchtet eine LED, bei 500ml 2 LEDs usw.) Soweit ich gesehen habe bräuchte ich ein Real Time Clock Modul um die Zeiten bestimmen zu können und einen Durchflussmesser um die Wassermenge zu bestimmen, dazu eine Pumpe oder ein Magnetventil um das Wasser zuzuführen. Ist das so zu bewerkstelligen oder wäre das Vorhaben komplexer als ich vermuten würde und für einen Anfänger zu weit gesteckt? Könnte mir vielleicht jemand ein Bespiel-sketch dazu schreiben, das wäre echt interessant.

Viele Grüße Stefan

Ist das so zu bewerkstelligen

Ja.

Wenn es kaum einen Unterschied macht, da der Versorgungs-Wasserdruck einigermassen konstant ist, oder eh genau genug ist,
kannst du statt Durchflussmessung auch einfach die Pump-Zeit ( bzw. Öffnungsdauer deines Magnetventils ) steuern.

Und wenn du keine Uhrzeit-Synchronisation brauchst, d.h. z.B. immer alle 8 Stunden ab Reset, brauchst du auch keine RTC.

10 Pins für die LEDS, 2 Pins für die Taster, 1 Pin für die Steuerung, passt gut an einen UNO.

(Für die Pumpe bräuchtest du noch ein Relais und/oder einen Transistor und eine Diode, und für die Leds und den Transistor noch Vorwiderstände)

Den Sketch zum Leds hochzählen versuchst du erstmal selbst ( wir wollen dir doch den Spass nicht verderben )

Viel Spass

Ich bin mir nicht einmal sicher, ob du überhaupt einen Durchflussmesser brauchst. In der Regel kann man das über die Öffnungszeit des Ventils bzw. die Einschaltzeit der Pumpe dosieren. Ob man tatsächlich lauter LEDs haben möchte ist Geschmackssache, ich persönlich würde (allein schon aus optischen Gründen ;)) ein kleines Display einbauen. Eine RTC ist für zeitbasierte Projekte sinnvoll. Ist ein schönes Einsteigerprojekt und dabei noch gut ausbaubar. Viel Erfolg!

ist ja ma super hilfe, für ein Anfänger :D

Besten Dank schonmal für eure Antworten. Schade, dass das Arduino Board noch nicht da ist...ich bin gerade Krankgeschrieben und hätte Zeit zum basteln :-)

Durchflussmenge über die Zeit hatte ich auch überlegt und das ist für den Einstieg dann wohl auch erstmal einfacher. Das ich kein RTC-Modul brauche ist gut zu wissen, würde man dann auch um mehrere Stunden zu überbrücken den delay Befehl nutzen? Ich meine 24h wären ja 86400000ms funktionieren derart große Zahlen ohne weiteres? Dann wäre die Grundfunktionalität ja nicht viel komplizierter als das LED blink sketch.

Display möchte ich noch nicht nehmen, ist für die Anwendung irgendwie überdimensioniert und dann auch unnötig teuer :-)

Mit millis() kriegt man max. 49 Tage lange Zyklen hin. Im Prinzip auch mit delay() aber delay taugt nichts, wenn du spontan auf Taster reagieren willst

Ardunio Uno
LCD Display 16x2 mit I2C (< 7€ inkl. Versand)
2(3) Taster
1 LED als Betriebsanzeige
RTC Modul
Relaismodul
(optional Feuchtigkeitssensor)

Ich würde hierfür ein RTC Modul einplanen. Denn wenn du deine Anlage stromlos schaltest, wieso auch immer, verliert er die Werte, wann er zuletzt bewässert hat.

LCD Anzeige:
Zeile 1: Interval X; Dauer Y
Zeile 2: Zeit bis zur nächsten Wässerung

Taster:
Über die 2 Taster erhöhst du die Interval sowie Dauer der Bewässerung.
Optional den 3 Taster zum aktivieren der Hintergrundbeleuchtung des Display wenn dieses nicht dauerhaft laufen soll.

Interval1: 12Uhr wässern
Interval2: 8Uhr und 16Uhr wässern

Hi,

bin auch (leicht fortgeschrittener) Anfänger und möchte Dir an dieser Stelle noch etwas eindringlicher als es michael_x schon tat sagen, dass Du Dir so schnell es geht die Bedeutung von millis() anstatt delay() aneignen solltest.

Ich wage sogar zu behaupten, dass Dein Projekt so wie Du es Dir vorstellst u.U. mit delay() nicht machbar ist.

Gruß Chris

Schau dir mal das Beispiel “Blink without delay” an, dann wird dir klar, wie das ohne delay() funktioniert.

Wenns dir nur um die Abstände geht, nicht um die Uhrzeiten, (also: alle 4 Stunden, nicht: um 8:00, um 12:00, um 16:00…) dann brauchst du kein RTC, aber du kriegst alle 50 Tage eine kurze Unregelmäßigkeit, wenn der interne Timer überläuft.
Falls du was mit RTC machen willst, nimm die DS3231, die ist genauer als die DS1307, die immer erwähnt wird.

Einfach anfangen und probieren! Das wird.

guntherb:
… aber du kriegst alle 50 Tage eine kurze Unregelmäßigkeit, wenn der interne Timer überläuft.

Kriegst du nicht:

static unsigned long lasttime;
unsigned long aktuell = millis();
if (aktuell - lasttime >= intervall)
{
   tuwas();
   lasttime = aktuell;
}

läuft ewig :wink:

Einfach anfangen und probieren! Das wird.

Stimmt.
Wobei ich dir langfristig auch das Erlebnis eines “fast gratis” DS1307 aus China ( < 2 EUR incl. Porto ) empfehlen möchte.
Die ist für dein Bewässerungsprojekt genau genug ( hast du dir schon überlegt, wie die Keime die Sommerzeitumstellung mitkriegen ? )

michael_x: läuft ewig ;)

Du hast recht! :blush:

Aber als RTC würde ich trotzdem den DS3231 empfehlen, der kostet beim freundlichen Chinesen auch nur 5€.

Beim DS1307 brauchst du keine Sommerzeitumstellung. Der geht in einem halben Jahr locker eine Stunde falsch!

guntherb: Der geht in einem halben Jahr locker eine Stunde falsch!

In 12 Std 10 sec zählt der langsamer Kann man aber Software technisch lösen

Ich nutze die Zeitumstellung, um den aufgelaufenen Fehler ( der zugegebenermassen einige Minuten ausmacht ) zu korrigieren. ;) 10 sec in 12 Stunden ( das wären 3 Minuten / Woche ) sehe ich bei meinem Exemplar nicht, das ist glücklicherweise(?) "ca. zehnmal" besser ...

Meine beiden DS1307 gehen so zwischen 10 und 20 Sekunden in 24h falsch. Und das ist stark Temperaturabhängig!

Deshalb bin ich auf die DS 3231 umgestiegen. Ist anscheinend kompatibel. Zumindest bei meinem PRojekt habe ich einfach den DS3231 angesteckt anstelle des DS1307 und es lief sofort. Bisher habe ich in ca. 3 Wochen 1sekunde Gangfehler! Und viel teurer ist sie auch nicht.

DS1307 kann gelegentlich genau sein, das ist aber Glücksspiel und wie schon korrekt bemerkt wurde Temperaturabhängig. Ich würde (solange ich keinen massiven Kostendruck habe) einen DS3232 oder DS3231 nehmen. Die sind 2ppm genau und gut ist. Für die 3 Euro die die Platine teurer ist kann man jedenfalls keine Temperaturkompensation einfach mal aus dem Ärmel schütteln.

Da bin ich deiner Meinung. Ich hatte damals an einer Brutmaschine gearbeitet, da war es mir egal und ich wusste noch nix von anderen RTCs weil ständig das 1307 erwähnt wurde.