- Erforderliche Komponenten
- Schaltplan
- Programmierung ESP8266 NodeMCU für automatisches Bewässerungssystem
Die meisten Landwirte nutzen große Teile des Ackerlandes und es wird sehr schwierig, jede Ecke des großen Landes zu erreichen und zu verfolgen. Manchmal besteht die Möglichkeit ungleichmäßiger Wasserstreusel. Dies führt zu Ernten von schlechter Qualität, was zu finanziellen Verlusten führt. In diesem Szenario ist das intelligente Bewässerungssystem mit der neuesten IoT-Technologie hilfreich und erleichtert die Landwirtschaft.
Das intelligente Bewässerungssystem bietet ein breites Spektrum zur Automatisierung des gesamten Bewässerungssystems. Hier bauen wir ein IoT-basiertes Bewässerungssystem mit dem ESP8266 NodeMCU-Modul und dem DHT11-Sensor. Es bewässert nicht nur automatisch das Wasser basierend auf dem Feuchtigkeitsgehalt im Boden, sondern sendet die Daten auch an ThingSpeak Server, um den Landzustand zu verfolgen. Das System besteht aus einer Wasserpumpe, mit der je nach den Umgebungsbedingungen des Landes wie Feuchtigkeit, Temperatur und Luftfeuchtigkeit Wasser auf das Land gestreut wird.
Wir haben zuvor ein ähnliches automatisches Pflanzenbewässerungssystem entwickelt, das Warnungen auf Mobilgeräten, jedoch nicht in der IoT-Cloud sendet. Abgesehen davon können Regenalarm und Bodenfeuchtemelder beim Bau eines intelligenten Bewässerungssystems hilfreich sein.
Bevor Sie beginnen, ist es wichtig zu beachten, dass die verschiedenen Kulturen unterschiedliche Bodenfeuchtigkeits-, Temperatur- und Feuchtigkeitsbedingungen erfordern. In diesem Tutorial verwenden wir eine solche Kultur, die eine Bodenfeuchtigkeit von etwa 50-55% benötigt. Wenn der Boden seine Feuchtigkeit auf weniger als 50% verliert, schaltet sich die Motorpumpe automatisch ein, um das Wasser zu streuen, und sie spritzt das Wasser weiter, bis die Feuchtigkeit auf 55% steigt, und danach wird die Pumpe ausgeschaltet. Die Sensordaten werden in einem festgelegten Zeitintervall an ThingSpeak Server gesendet, damit sie von überall auf der Welt überwacht werden können.
Erforderliche Komponenten
- NodeMCU ESP8266
- Bodenfeuchtesensormodul
- Wasserpumpenmodul
- Relaismodul
- DHT11
- Kabel anschließen
Sie können alle für dieses Projekt erforderlichen Komponenten kaufen.
Schaltplan
Der Schaltplan für dieses IoT Smart Irrigation System ist unten angegeben:
Programmierung ESP8266 NodeMCU für automatisches Bewässerungssystem
Für die Programmierung des ESP8266 NodeMCU-Moduls wird nur die DHT11-Sensorbibliothek als externe Bibliothek verwendet. Der Feuchtigkeitssensor liefert einen analogen Ausgang, der über den analogen NodeMCU-Pin A0 des ESP8266 gelesen werden kann. Da die NodeMCU keine Ausgangsspannung von mehr als 3,3 V von ihrem GPIO liefern kann, verwenden wir ein Relaismodul, um die 5-V-Motorpumpe anzutreiben. Auch der Feuchtigkeitssensor und der DHT11-Sensor werden von einer externen 5-V-Stromversorgung gespeist.
Den vollständigen Code mit einem Arbeitsvideo finden Sie am Ende dieses Tutorials. Hier erklären wir das Programm, um den Arbeitsablauf des Projekts zu verstehen.
Beginnen Sie mit der Aufnahme der erforderlichen Bibliothek.
#einschließen
Da wir den ThingSpeak-Server verwenden, ist der API-Schlüssel erforderlich, um mit dem Server zu kommunizieren. Um zu erfahren, wie wir API-Schlüssel von ThingSpeak erhalten können, besuchen Sie den vorherigen Artikel über die Überwachung von Live-Temperatur und Luftfeuchtigkeit auf ThingSpeak.
String apiKey = "X5AQ445IKMBYW31H const char * server =" api.thingspeak.com ";
Der nächste Schritt besteht darin, die Wi-Fi-Anmeldeinformationen wie SSID und Kennwort zu schreiben.
const char * ssid = "CircuitDigest"; const char * pass = "xxxxxxxxxxx";
Definieren Sie den DHT-Sensor-Pin, an den das DHT angeschlossen ist, und wählen Sie den DHT-Typ.
# DHTPIN definieren D3 DHT dht (DHTPIN, DHT11);
Der Ausgang des Feuchtigkeitssensors ist mit Pin A0 der NodeMCU ESP8266 verbunden. Der Motorstift ist mit D0 der NodeMCU verbunden.
const int feuchtigkeitPin = A0; const int motorPin = D0;
Wir werden die millis () -Funktion verwenden, um die Daten nach jedem definierten Zeitintervall zu senden, hier sind es 10 Sekunden. Die Verzögerung () wird vermieden, da das Programm für eine definierte Verzögerung angehalten wird, bei der der Mikrocontroller keine anderen Aufgaben ausführen kann. Erfahren Sie hier mehr über den Unterschied zwischen delay () und millis ().
vorzeichenloses langes Intervall = 10000; unsigned long previousMillis = 0;
Stellen Sie den Motorstift als Ausgang ein und schalten Sie den Motor zunächst aus. Starten Sie die DHT11-Sensorablesung.
pinMode (motorPin, OUTPUT); digitalWrite (motorPin, LOW); // Motor anfänglich ausgeschaltet dht.begin ();
Versuchen Sie, eine Wi-Fi-Verbindung mit der angegebenen SSID und dem angegebenen Kennwort herzustellen, und warten Sie, bis die Wi-Fi-Verbindung hergestellt ist. Wenn die Verbindung hergestellt ist, fahren Sie mit den nächsten Schritten fort.
WiFi.begin (ssid, pass); while (WiFi.status ()! = WL_CONNECTED) { delay (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi verbunden"); }}
Definieren Sie die aktuelle Zeit zum Starten des Programms und speichern Sie es in einer Variablen, um es mit der verstrichenen Zeit zu vergleichen.
unsigned long currentMillis = millis ();
Lesen Sie die Temperatur- und Feuchtigkeitsdaten und speichern Sie sie in Variablen.
float h = dht.readHumidity (); float t = dht.readTemperature ();
Wenn DHT angeschlossen ist und die ESP8266 NodeMCU die Messwerte lesen kann, fahren Sie mit dem nächsten Schritt fort oder kehren Sie von hier zurück, um sie erneut zu überprüfen.
if (isnan (h) - isnan (t)) { Serial.println ("Fehler beim Lesen vom DHT-Sensor!"); Rückkehr; }}
Lesen Sie den Feuchtigkeitsmesswert vom Sensor ab und drucken Sie den Messwert aus.
feuchtigkeitsanteil = (100,00 - ((analogRead (feuchtigkeitspin) / 1023,00) * 100,00)); Serial.print ("Bodenfeuchte ist ="); Serial.print (feuchtigkeitsanteil); Serial.println ("%");
Wenn der Feuchtigkeitsmesswert zwischen dem erforderlichen Bodenfeuchtigkeitsbereich liegt, halten Sie die Pumpe ausgeschaltet oder schalten Sie die Pumpe ein, wenn sie über die erforderliche Feuchtigkeit hinausgeht.
if (feuchtigkeitsanteil <50) { digitalWrite (motorPin, HIGH); } if (feuchtigkeitsanteil> 50 && feuchtigkeitsanteil <55) { digitalWrite (motorPin, HIGH); } if (feuchtigkeitsanteil> 56) { digitalWrite (motorPin, LOW); }}
Rufen Sie nun alle 10 Sekunden die Funktion sendThingspeak () auf, um die Feuchtigkeits-, Temperatur- und Feuchtigkeitsdaten an den ThingSpeak-Server zu senden.
if ((unsigned long) (currentMillis - previousMillis)> = Intervall) { sendThingspeak (); previousMillis = millis (); client.stop (); }}
In der Funktion sendThingspeak () prüfen wir, ob das System mit dem Server verbunden ist. Wenn ja, bereiten wir eine Zeichenfolge vor, in die die Anzeige von Feuchtigkeit, Temperatur und Luftfeuchtigkeit geschrieben wird. Diese Zeichenfolge wird zusammen mit dem API-Schlüssel und der Serveradresse an den ThingSpeak-Server gesendet.
if (client.connect (server, 80)) { String postStr = apiKey; postStr + = "& field1 ="; postStr + = String (feuchtigkeitsanteil); postStr + = "& field2 ="; postStr + = String (t); postStr + = "& field3 ="; postStr + = String (h); postStr + = "\ r \ n \ r \ n";
Schließlich werden die Daten mit der Funktion client.print () an den ThingSpeak-Server gesendet, die den API-Schlüssel, die Serveradresse und die im vorherigen Schritt vorbereitete Zeichenfolge enthält.
client.print ("POST / Update HTTP / 1.1 \ n"); client.print ("Host: api.thingspeak.com \ n"); client.print ("Verbindung: Schließen \ n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Inhaltstyp: application / x-www-form-urlencoded \ n"); client.print ("Content-Length:"); client.print (postStr.length ()); client.print ("\ n \ n"); client.print (postStr);
Schließlich sehen die Daten im ThingSpeak Dashboard so aus
Dieser letzte Schritt schließt das vollständige Tutorial zum IoT-basierten Smart Irrigation System ab. Beachten Sie, dass es wichtig ist, den Motor auszuschalten, wenn die Bodenfeuchtigkeit nach dem Besprühen mit Wasser das erforderliche Niveau erreicht hat. Sie können ein intelligenteres System erstellen, das unterschiedliche Steuerelemente für unterschiedliche Kulturen enthalten kann.
Wenn Sie bei diesem Projekt auf Probleme stoßen, kommentieren Sie diese unten oder besuchen Sie unsere Foren, um relevantere Fragen und deren Antworten zu erhalten.
Das vollständige Programm und das Demonstrationsvideo für dieses Projekt finden Sie unten.