Elektronik Bastelprojekt Bewässerungsalarm für Ihre Pflanzen per E-Mail
ESP8266 (3€)+ 2x 1,5V AAA-Batterie (1€).
ESP8266 misst 2mal Täglich Bodenfeuchtigkeit (kapazitiv) und sendet den Bodenfeuchte-Wert an ThingSpeak IoT.
Wenn eingestellter Wert unterschritten wird, wird ein Gießalarm ausgelöst.
Sie erhalten dann eine Gießerinnerung per Email oder Twitter.
Sie können Ebenfalls die aktuelle Erdfeuchte Ihrer Pflanze als Grafik (Chart) bei ThingSpeak ansehen.

Bodenfeuchtesensor Grafik bei Thingspeak
Besonders hilfreich sollte dieses Messgerät für Balkonpflanzen sein. Denn wegen Regen muss manchmal die Pflanzen gar nicht gegossen werden, wenn eine Monat lang regnet, oder auch sehr oft, beim Trockenem heißem Wetter. Wenn sie in Urlaub fahren, dann können Sie das Wifi- Bodenfeuchtesensor so einstellen, dass ihre Balkonpflanzen eine E-Mail oder Twitter Mitteilung an ihren Verwandten oder Freund schicken, das der sollte bei Ihnen vorbei kommen und die Pflanzen gießen.

Zutaten

ESP8266 Modul
ESP8266 als Bodenfeuchtesensor. Bewässerungsalarm für Ihre Pflanzen per E-Mail
 2 x AAA Batterie
AAA
Sensor - 2 Metallstifte
Bodenfeuchtesensor

Schaltplan

Mikrocontrollern können wunderschön Kapazität messen in dem die Kondensator Platte laden, Port auf Input schalten und die Zeit zählen bis die Platte entladen ist. So werden übrigens die Tauch-Tasten abgefragt.
Feuchtemessung Prinzip: zuerst werden die Platten entladen in den das GPIO13 als Ausgang mit dem Pegel Low geschaltet wird.
R1 begrenzt den Entladestrom um das Port nicht zu überlasten.
Danach wird GPIO13 als Eingang geschaltet und GPIO12 als Ausgang. GPIO12 führt jetzt High Pegel. Die Platten werden über R2 (1K) geladen. Während dieser Zeit wird ein Zähler hochgezählt bis der Eingang GPIO13 den High-Pegel erreicht.
Desto feuchter die Blumenerde ist, desto langsamer laden sich die Metalplatten.
Um die zufällige Störungen und Abweichungen zu minimieren wird die Messung der Bodenfeuchtigkeit 10-Mal wiederholt und der Mittelwert berechnet.

Schaltplan den WLAN Bodenfeuchtesensor

Als Bodenfeuchtesensor werden 2 Metall Stifte verwendet. ESP8266 wird von 2 AAA-Batterien mit Strom versorgt und befindet sich im Tiefschlaf. Jede 6 Stunden wacht Mikrocontroller auf und misst die Bodenfeuchte, meldet sich im Hausnetzwerk an und trägt die Messwerte beim ThingSpeak.


Vorgeschichte

Nach dem das Projekt Notruf über Wifi abgeschlossen wurde, bekam ich eine Idee ein Feuchtesensor für mein Blumentopf zu basteln. Die Pflanze steht im Hausflur außerhalb der Wohnung. Ich vergesse die ständig zu gießen. Zuerst wurden verschiedene Erdfeuchte-Sensoren für Arduino in Betracht gezogen. Die haben ein riesen Problem, die Korrosion. Sogar Bodenfeuchte-Meter die bei Amazon verkauft werden, dürfen nicht längere Zeit in der Erde stecken bleiben. Über ein Forum bin ich auf die Idee gekommen ein kapazitiver Sensor zu bauen. Als kapazitiver Sensor, können theoretisch, 2 beliebige isolierte Metallplatten dienen. Die müssen ausreichend Oberfläche und dünne Isolierung haben. Nach etwas Überlegung habe ich entschieden ein Flat-Flex-Cable als Bodenfeuchtesensor zu benutzen. Und das, hat überhaupt nicht funktioniert. Die Ursache dafür war nicht ausreichende Isolierung, so dass, durchsickernde Strom mir das Messergebnis verfälscht hat. Nach mehreren Monaten habe ich das Versuch gestartet, ein Ohmscher Sensor zu bauen. Aber der hatte so eine riesige Kapazität das ich 5 Minuten warten müsste, bis der sich geladen hat und der Strom stabil wurde. Die Kapazität Änderung ist viel grösser als Widerstands Änderung. So habe ich mich entschlossen einfach bei zwei in die Blumenerde eingesteckten Elektroden die Kapazität zu messen. Das Vorteil dabei ist das die oxidieren und Korrosion der Elektroden stört nicht. Es fließt kein ständiger Strom über die Erde. Die Elektroden werden bei Messung 10-mal Geladen und entladen. Die Messung dauert einige Mikrosekunden. Was wiederrum die lange Batterielaufzeit ermöglicht.


Feuchtesensor und deren Dimensionierung

Als Bodenfeuchtigkeit-Sensor können 2 beliebige Metallstifte verwendet werden. Vorausgesetzt die haben genug Oberfläche und reichen bis zum Boden des Pflanzentopfs.
Vorteilhaft sind die Stifte aus dem veredeltem Metall die korrodieren nicht. Abstand zwischen den Stiften spielt keine große Rolle, sollte aber nicht größer als 1 Zentimeter sein.
Wenn Bodenfeuchtigkeit Wert bereits 0 ist und die Erde ist noch feucht, dann haben die Bodenfeuchtigkeit Sensoren nicht genug Oberfläche. Oder die Blumenerde ist zu luftig und liegt nicht eng genug zu den Metallplatten an.
Wenn die Erde trocken ist und Bodenfeuchtigkeit Wert relativ groß ist, dann ist es kein Problem. Hauptsache die Zahl steht weit von 50000 ab.


Bodenfeuchtigkeit Messwert Auswertung

Ich schlage vor, einmal die Erde zu gießen. Dabei wird Bodenfeuchtigkeit Wert wahrscheinlich auf 50 000 steigen, das ist das Maximum. Danach warten Sie bis die Erde trocken wird und sie sind der Meinung die Pflanze gegossen werden muss. Bitte merken Sie das Bodenfeuchtigkeit Messwert aus dem ThingSpeak Chart. Dieser Wert wird dann verwendet um Giess-Alarm einzustellen.
Erhaltene Bodenfeuchtigkeit Werte sind relative Werte, die sind abhängig von Oberfläche des Sensors und von der Erde Beschaffenheit. Nach dem Giess-Alarm -Wert bestimmt wurde, darf der Sensor nicht mehr in der Erde bewegt werden. Weil wenn der Sensor einmal bewegt wurde, ändert sich seine Position gegenüber den Erdteilchen und dabei ändert sich auch die Kapazität des Sensors.
Ich denke das der Bodenfeuchte Grafik sollte alle 6 Monaten Überprüft werden. Weil Bodenfeuchtemesser Stifte in diesem Zeitraum korrodieren oder durch Wurzeln verschoben werden. Eventuell muss dabei der Giess-Alarm -Wert neu bestimmt werden.


Download Firmware und Quellcode

Download BIN für ESP-07  -Laden der Firmware mit einem Tool über serielle Schnittstelle. Anleitung
(Kompiliert mit Arduino ver. 1.6.12, ESP8266 Bibliothek ver. 2.3.0).

Download Projekt -Sketch für Arduino, es wird Bibliothek Core for ESP8266 WiFi chip benötigt

Pflanze versendet ein Email   ESP8266 als Pflanzensensor

Die WLAN Antenne auf dem Bild ist nur um das Bild Aussagekräftiger zu machen. ESP-07 hat bereits eine Keramikantenne auf dem Board.


ESP8266 und Batterielaufzeit bei WiFi Bodenfeuchtesensor

Nicht vergessen ROTE LED abzulöten. Ein Paar Gedanken dazu bei Tipps und Tricks
Stromverbrauch: Meiste Zeit befindet sich ESP8266 in Deep Sleep –Modus und verbraucht 0,016mA
alle 12 Stunden wacht der WiFi Bodenfeuchtesensor etwa für 3 Sekunden und verbraucht dabei 80mA.
Laut Berechnungen sollen die Batterien für 2,4 Monate reichen.

Wachmodus 80mA 3s alle 6Stunden(6h*60s=360s)
80mA /360s/3s=0,667mAh (3 Sekunden 80mA Verbrauchs auf 6 Stunden verteilt)
Deep Sleep –Modus 0,016mAh
Gesamt 0,683mAh
Alkali-Mangan Batterie des Formfaktors AAA hat typ. Kapazität 1,2Ah.
1200mAh / 0, 683mAh =1757h 1757h / 24h = 73Tage => 2,4Monate.

Ob das stimmt wird erst der Langzeitversuch zeigen.
Wem das zu wenig ist, kann AA-Batterien nehmen, oder Schaltung mit 3 Batterien und Spannungsregler verwenden.

Schaltplan den WLAN Pflanzenbewässerung

ADC Kalibrieren um Batteriespannung (Ubat) genau zu messen

ESP8266 ADC Kalibrieren

Ich habe festgestellt, das ESP8266 Modul die Batterie Spannung nicht so genau misst. Und zwar, die Abweichung von einem Modul zum anderen Modul anders ist. Wenn man aber für das jeweilige Modul Abweichungen herausfindet, kann man die Batteriespannung sehr genau messen.

Ich habe ein Programm geschrieben die zwei Referenzwerte misst und in EEPROM speichert. Aus diesem zwei Referenz Spannungen werden Korrekturwerte berechnet und bei zukünftigen Messungen angewendet.

So kann man ADC kalibrieren
ESP8266 Modul an ein Labornetzteil anschließen.
ESP8266 ADC Kalibrieren Die Spannung auf 3,40 Volt einstellen. Das Labornetzteil muss mindestens 500mA liefern können.
Setup Modus starten, und im Browser "http://_IP_des_ESP8266/adc.php" eingeben.
Jetzt wird aktuelle Spannung angezeigt. Bitte betätigen Sie das Link "Kalibrieren mit 3,4V".
Danach stellen Sie das Labornetzteil auf 2,40 Volt und betätigen Sie das Link "Kalibrieren mit 2,4V".
Ob das Kalibrieren geklappt hat, können Sie überprüfen indem Sie irgendeine andere Spannung im Bereich von 2,2 und 3,6 Volt einstellen und dabei auf das Link "noch mal messen klicken".

Niedrigste Spannung bei der die Module bei mir noch funktioniert haben war 2,2 und 2,3 Volt.

Verwendete Messwert Anpassung

Um tatsächliche Spannung anzuzeigen benötigen wir ein Faktor Digit/V und der Abweichungswert.
Faktor Digit/V = (ADC3,4V_Wert- ADC2,4V_Wert) / (3,4V-2,4V). Faktor ist eine Zahl die 1V darstellt
Messwert_in_Digits / Faktor = Spannungswert in Volt
Abweichungswert= Tatsächliche Spannung (2,4V)- ESP8266_Messwert_in_Volt

Entgültige Formel lautet: Spannungswert in Volt = Messwert_in_Digits / Faktor + Abweichungswert


ThingSpeak Anleitung

Zuerst muss man sich registrieren über „Sign Up“
neues Kanal anlegen: Channels / New Channel
Name vergeben
4 Felder aktivieren und Feldnamen vergeben
Feuchtigkeit, Batteryspg, Zyklus, RSSI
Und abspeichern mit „Save Channel“
Im ersten Feld wird der Feuchtigkeit Wert abgelegt, im zweitem Feld wird Batteriespannung abgelegt, in drittem Feld Zyklusnummer, ihm viertem dann die WLAN Stärke.

Jetzt benötigen Sie „Write API Key“ den finden Sie unter Channels / API Keys
Bitte tragen Sie den „Write API Key“ im Eingabefeld beim Bodenfeuchtesensor Setup.

Ereignis bei unterschreiten der Bodenfeuchtigkeit Wertes einstellen:

Apps / ThingHTTP / New ThingHTTP
URL <= „http://api.pushingbox.com/pushingbox“
HTTP Auth Username <= Googlemail der bei pushingbox registriert wurde
Method <= „POST“
Content Type <= “application/x-www-form-urlencoded“
Body <= „devid=vE8D8A1B6CB61541&Bodenfeuchtigkeit =%%channel_205903_field_1%%“
Devid ist DeviceID vom „Scenario“ bei PushingBox.
Post-Parameter „Bodenfeuchtigkeit“ erhält dann den aktuellen Wert aus Feld1. Und wird dann an PushingBox übergeben. Den Wert lässt sich dann in Email oder Twitter Nachricht einfügen.
Und abspeichern
Wie man PushingBox einstellt bitte lesen Sie bei E-Mail und Twitter - Meldung Versand mit Online-Service PushingBox


Bedingung für das Ereignis festlegen

Apps / React / New React
Condition Type <= „Numeric“
Test Frequency <= „On Data Insertion“
If channel <= Name des Kanals wählen.
Field <= “1“
Bedingung “ is less then“ und Ihr Wert, bei dem pflanze gegossen werden muss.
Action <= “ThingHTTP“
Options <= „Run action only the first time the condition is met“

Batterie leer Warnung

Ereignis einstellen wenn Feld 2 das Wert 2.3V unterschreitet.


Aktuelle Werte vom ThingSpeak mittels iframe an Homepage angebunden

Schauen Sie den Quellcode dieser Webseite. Aufschlüsselung vom Aufrufparametern finden Sie bei Create a Chart


Alarm beim verpassten Dateneingang

Ich habe mir Gedanken gemacht was passiert, wenn etwas mit WIFI-Netz passiert, oder Kabel von Batterie abgegangen ist.
Es wäre interessant eine Alarm-Mitteilung erzeugen zu können, wenn der Bodenfeuchtesensor einige Zeit schweigt.
So eine Möglichkeit existiert.
Zuerst soll ein Matlab Skript angelegt werden, welche der Letzte Eintrag einliest und sein Timestamp mit der aktuellen Zeit vergleicht. Wenn Eintragung alter als 8 Stunden ist, wird ein Eintrag in Feld 5 gemacht.
Bitte Ihre eigene readChannelID, readAPIKey und writeAPIKey eintragen.

readChannelID = 205903;
readAPIKey = 'NFH8GITCFYDVB3TJ';
WriteAPIKey = 'ZGXVHMQAH8O12U4W';
[data,time] = thingSpeakRead(readChannelID,'Fields',[1],'NumPoints',1);
Differenz=datetime('now','TimeZone','Europe/Berlin')-datetime(time(1));
MaxDiff=duration(8,0,0);
%display(Differenz, '');
if Differenz > MaxDiff
thingSpeakWrite(readChannelID,'Fields',[5],'Values',{1},'WriteKey',WriteAPIKey);
else
thingSpeakWrite(readChannelID,'Fields',[5],'Values',{0},'WriteKey',WriteAPIKey);    
end
Dieser Matlab Skript wird zeitgesteuert ausgeführt.
Die Ausführungszeit wird hier eingestellt: Apps / TimeControl / New TimeControl. Wählen Sie Ihr Skript und die Ausführungszeit.
Es bleibt nur das Ereignis einzustellen, wenn Feld 5 das Wert 1 erhält.


Anzeige und Warnungen mit Android App

Ich habe bei Google Play interessante App gefunden IoT ThingSpeak Monitor Widget

Nach oben
webmaster_x_esp8266-server.de