6. Pflanzenüberwachung

Das Ziel dieses Projekts ist es, ein intelligentes Bewässerungssystem zu erstellen, das die aktuelle Temperatur, Luftfeuchtigkeit, Lichtintensität und Bodenfeuchtigkeit erfasst und diese auf Blynk anzeigt.

Sobald Sie den Schalter in Blynk Cloud aktivieren, beginnt die Pumpe zu arbeiten und die Pflanzen werden bewässert.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

Arduino Uno R4 Minima

-

Breadboard

BUY

ESP8266 Modul

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Fotowiderstand

BUY

DHT11 Feuchtigkeits- und Temperatursensor

-

Bodenfeuchtigkeitsmodul

BUY

L9110 Motortreibermodul

-

Kreiselpumpe

-

1. Bauen Sie den Schaltkreis

Bemerkung

Das ESP8266-Modul benötigt einen hohen Strom, um eine stabile Betriebsumgebung zu gewährleisten. Stellen Sie daher sicher, dass die 9V-Batterie angeschlossen ist.

../_images/iot_6_bb.png

2. Dashboard bearbeiten

  1. Die in den vorherigen Projekten erstellten Datenströme müssen gespeichert werden, und sie werden auch in diesem Projekt verwendet.

  2. Um die Bodenfeuchtigkeit aufzuzeichnen, erstellen Sie einen weiteren Datastream vom Typ Virtual Pin auf der Datastream-Seite. Setzen Sie den DATENTYP auf Integer und MIN und MAX auf 0 und 1024.

    ../_images/sp220610_155221.png
  3. Gehen Sie nun zur Wed Dashboard-Seite, ziehen Sie 2 Label-Widgets und setzen Sie ihre Datenströme jeweils auf V4 und V5; ziehen Sie 2 Gauge-Widgets und setzen Sie ihre Datenströme so, dass sie V6 und V7 anzeigen; und ziehen Sie schließlich ein Switch-Widget und setzen Sie seinen Datenstrom auf V0.

    ../_images/sp220610_155350.png

3. Den Code ausführen

Öffnen Sie die Datei 6.plant_monitoring.ino im Pfad 3in1-kit\iot_project\6.plant_monitoring, oder kopieren Sie diesen Code in die Arduino IDE.

Bemerkung

  • Hier wird die DHT sensor library verwendet. Sie können diese über den Library Manager installieren.

    ../_images/lib_dht11.png
  1. Ersetzen Sie die Template ID, den Device Name und das Auth Token durch Ihre eigenen Angaben. Sie müssen auch die ssid und das password des von Ihnen verwendeten WLANs eingeben. Für detaillierte Anleitungen verweisen Sie bitte auf 1.4 Verbindung des R4-Boards mit Blynk herstellen.

  2. Wählen Sie das richtige Board und den Port aus und klicken Sie auf die Schaltfläche Upoad.

  3. Öffnen Sie den Seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie auf eine Meldung, z. B. dass eine erfolgreiche Verbindung hergestellt wurde.

    ../_images/2_ready.png

    Bemerkung

    Wenn beim Verbinden die Meldung ESP is not responding erscheint, befolgen Sie bitte diese Schritte:

    • Stellen Sie sicher, dass die 9V-Batterie angeschlossen ist.

    • Setzen Sie das ESP8266-Modul zurück, indem Sie den RST-Pin für 1 Sekunde mit GND verbinden und dann trennen.

    • Drücken Sie den Reset-Knopf auf dem R4-Board.

    Manchmal müssen Sie den obigen Vorgang 3-5 Mal wiederholen. Bitte haben Sie Geduld.

  4. Zurück in Blynk werden die aktuelle Temperatur, Luftfeuchtigkeit, Lichtintensität und Bodenfeuchtigkeit angezeigt. Mit dem Button Control Widget können Sie, falls nötig, die Pumpe aktivieren, um die Pflanzen zu bewässern.

    ../_images/sp220610_155350.png
  5. Wenn Sie Blynk auf mobilen Geräten nutzen möchten, verweisen Sie bitte auf Wie verwendet man Blynk auf einem Mobilgerät?.

    ../_images/mobile_plant.jpg

Wie funktioniert das?

Dieser BLYNK_WRITE bewirkt, dass das Switch-Widget von Blynk die Pumpe startet, wenn es eingeschaltet ist und ausschaltet, wenn es ausgeschaltet ist.

BLYNK_WRITE(V0)
{
    if(param.asInt()==1){
        digitalWrite(pumpA,HIGH);
    }else{
        digitalWrite(pumpA,LOW);
    }
}

Diese drei Funktionen werden verwendet, um die aktuelle Umgebungstemperatur, Luftfeuchtigkeit, Lichtintensität und Bodenfeuchtigkeit zu messen.

int readMoisture(){
    return analogRead(moisturePin);
}

int readLight(){
    return analogRead(lightPin);
}

bool readDHT() {

    // Reading temperature or humidity takes about 250 milliseconds!
    // Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor)
    humidity = dht.readHumidity();
    // Read temperature as Celsius (the default)
    temperature = dht.readTemperature();

    // Check if any reads failed and exit early (to try again).
    if (isnan(humidity) || isnan(temperature)) {
        Serial.println("Failed to read from DHT sensor!");
        return false;
    }
    return true;
}

Mit dem Blynk Timer werden jede Sekunde die Umgebungstemperatur, Luftfeuchtigkeit, Lichtintensität und Bodenfeuchtigkeit ermittelt und an den Datenstrom auf dem Blynk Cloud gesendet, von wo aus die Widgets die Daten anzeigen.

void myTimerEvent()
{
    bool chk = readDHT();
    int light = readLight();
    int moisture = readMoisture();
    if(chk){
        Blynk.virtualWrite(V4,humidity);
        Blynk.virtualWrite(V5,temperature);
    }
    Blynk.virtualWrite(V6,light);
    Blynk.virtualWrite(V7,moisture);
}