Inhaltsverzeichnis:

Pflanzenmonitor mit ESP32 Thing und Blynk - Gunook
Pflanzenmonitor mit ESP32 Thing und Blynk - Gunook

Video: Pflanzenmonitor mit ESP32 Thing und Blynk - Gunook

Video: Pflanzenmonitor mit ESP32 Thing und Blynk - Gunook
Video: FYTA Beam - Der smarte Pflanzensensor 2024, Juni
Anonim
Pflanzenmonitor mit ESP32 Thing und Blynk
Pflanzenmonitor mit ESP32 Thing und Blynk
Pflanzenmonitor mit ESP32 Thing und Blynk
Pflanzenmonitor mit ESP32 Thing und Blynk

Überblick

Das Ziel dieses Projekts ist es, ein kompaktes Gerät zu schaffen, das in der Lage ist, den Zustand einer Zimmerpflanze zu überwachen. Das Gerät ermöglicht es dem Benutzer, die Bodenfeuchtigkeit, Luftfeuchtigkeit, Temperatur und die "fühlbare" Temperatur von einem Smartphone mit der Blynk-App zu überprüfen. Darüber hinaus erhält der Benutzer eine E-Mail-Benachrichtigung, wenn die Bedingungen für die Anlage ungeeignet sind. Beispielsweise wird der Benutzer daran erinnert, die Pflanze zu gießen, wenn die Bodenfeuchtigkeit unter ein geeignetes Niveau sinkt.

Schritt 1: Anforderungen

Anforderungen
Anforderungen
Anforderungen
Anforderungen
Anforderungen
Anforderungen

Dieses Projekt verwendet ein Sparkfun ESP32-Ding, einen DHT22-Sensor und einen elektronischen Ziegelbodenfeuchtigkeitssensor. Außerdem werden ein WLAN-Netzwerk und die Blynk-App benötigt. Vorzugsweise sollte ein wasserdichtes Gehäuse erstellt werden, um das ESP32-Ding aufzunehmen. Während in diesem Beispiel eine Standardsteckdose für eine Stromquelle verwendet wird, würde das Hinzufügen einer wiederaufladbaren Batterie, eines Solarpanels und eines Ladereglers ermöglichen, dass das Gerät mit erneuerbarer Energie betrieben wird.

Schritt 2: Blynk

Blink
Blink
Blink
Blink
Blink
Blink

Laden Sie die Blynk-App herunter und erstellen Sie ein neues Projekt. Notieren Sie sich das Authentifizierungstoken – es wird im Code verwendet. Erstellen Sie neue Anzeige-Widgets in der Blynk-App und wählen Sie die entsprechenden im Code definierten virtuellen Pins aus. Legen Sie das Aktualisierungsintervall auf Push fest. Jedem Widget sollte ein eigener virtueller Pin zugewiesen werden.

Schritt 3: Arduino-IDE

Arduino-IDE
Arduino-IDE

Laden Sie die Arduino-IDE herunter. Befolgen Sie die Download-Anweisungen für den ESP32-Ding-Treiber und die Demo, um die WLAN-Konnektivität sicherzustellen. Laden Sie die im Code enthaltenen Blynk- und DHT-Bibliotheken herunter. Geben Sie das Authentifizierungstoken, das WLAN-Passwort, den WLAN-Benutzernamen und die E-Mail im endgültigen Code ein. Verwenden Sie den Democode für den Bodenfeuchtesensor, um die Minimal- und Maximalwerte für die Bodenart zu ermitteln. Notieren und ersetzen Sie diese Werte im endgültigen Code. Ersetzen Sie die Mindestwerte für Temperatur, Bodenfeuchtigkeit und Luftfeuchtigkeit für die Pflanze im endgültigen Code. Laden Sie den Code hoch.

Schritt 4: Erstellen Sie es

Baue es
Baue es
Baue es
Baue es
Baue es
Baue es

Schließen Sie zuerst den Bodenfeuchtigkeitssensor an 3,3 V, Masse und Eingangspin 34 an. Beachten Sie, dass der Schalter auf A eingestellt ist, da die analoge Einstellung für diesen Sensor verwendet wird. Als nächstes verbinden Sie den DHT-Sensor mit 3,3 V, Masse und Eingangspin 27. Der DHT22-Sensor benötigt einen 10K Ohm Widerstand zwischen dem VCC und dem Datenausgangspin. Überprüfen Sie unbedingt das DHT-Diagramm, um sicherzustellen, dass es richtig verdrahtet ist. Konfigurieren Sie den ESP32 in einem wasserdichten Gehäuse mit dem Feuchtigkeitssensor im Boden und dem DHT-Sensor über der Oberfläche. Schließen Sie eine Stromquelle an und genießen Sie Daten über die Umgebung Ihrer Anlage.

Schritt 5: Code

//Enthaltene Bibliotheken

#define BLYNK_PRINT-Seriennummer

#include #include #include #include "DHT.h"

// DHT-Sensorinformationen

#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #define DHTPIN 27 // Digitaler Pin mit dem DHT-Sensor verbunden DHT dht (DHTPIN, DHTTYPE); // DHT-Sensor initialisieren.

// Eingangspins und Ausgänge definieren

int boden_sensor = 34; // Definieren Sie die Pinnummer des analogen Eingangs, die mit dem Feuchtigkeitssensor verbunden ist

int output_value;//als Ausgabe definieren

int Feuchte; // Als Ausgabe definieren

int benachrichtigt = 0; //definiere benachrichtigt als 0

int Zeitverzögerung = 60000L; // Timer so einstellen, dass er einmal pro Minute oder 60.000 Millisekunden Daten abruft

//Mindestwerte für Pflanze setzen

int min_feuchtigkeit =20; int min_temperatur =75; int min_humidity =60;

// Sie sollten das Auth-Token in der Blynk-App abrufen.

char auth = "Auth_Token_Here";

// Ihre WLAN-Zugangsdaten.

char ssid = "Wifi_Network_Here"; char pass = "Wifi_Password_Here";

BlynkTimer-Timer;

// Diese Funktion sendet jede Sekunde die Betriebszeit von Arduino an Virtual Pin (5).

// In der App sollte die Lesefrequenz des Widgets auf PUSH eingestellt sein. Dies bedeutet, // dass Sie festlegen, wie oft Daten an die Blynk-App gesendet werden.

void Sensoren () // Hauptfunktion zum Lesen von Sensoren und zum Drücken auf blynk

{ output_value = analogRead (soil_sensor); // Analoges Signal vom Bodensensor lesen und als output_value definieren // Output_vlaue von Min-, Max-Werten auf 100, 0 abbilden und zwischen 0, 100 beschränken // Beispielcode und seriellen Monitor verwenden, um Min und. zu finden Maximalwerte für einzelnen Sensor und Bodentyp für eine bessere Kalibrierung Feuchte = Constraint (map(output_value, 1000, 4095, 100, 0), 0, 100); float h = dht.readHumidity(); // Feuchtigkeitsfloat lesen t = dht.readTemperature (); // Temperatur als Celsius lesen (Standard) float f = dht.readTemperature (true); // Temperatur als Fahrenheit lesen (isFahrenheit = true) // Wärmeindex in Fahrenheit berechnen (Standard) float hif = dht.computeHeatIndex(f, h); // Prüfen, ob Lesevorgänge fehlgeschlagen sind und vorzeitig beenden (um es erneut zu versuchen). if (isnan (h) || isnan (t) || isnan (f)) { Serial.println (F ("Fehler beim Lesen vom DHT-Sensor!")); Rückkehr; } //Dies verbindet Werte mit virtuellen Pins, die in den Widgets in der Blynk-App definiert sind Blynk.virtualWrite (V5, Moisturelevel); // Senden Sie den Feuchtigkeitsgehalt an den virtuellen Pin 5 Blynk.virtualWrite (V6, f); // Senden Sie die Temperatur an virtual Pin 6 Blynk.virtualWrite(V7, h); // Sende Feuchtigkeit an virtuellen Pin 7 Blynk.virtualWrite(V8, hif); // Sende Wärmeindex an virtuellen Pin 8

wenn (benachrichtigt==0)

{ if (moisturelevel <= min_moisture) // Wenn der Feuchtigkeitsgehalt gleich oder unter dem Mindestwert ist { Blynk.email("Email_Here", "Plant Monitor", "Water Plant!"); // E-Mail an Wasserwerk senden } delay (15000); // Blynk-E-Mails müssen 15 Sekunden auseinander liegen. Verzögerung 15000 Millisekunden if (f <= min_temperature) // Wenn die Temperatur gleich oder unter dem min-Wert ist { Blynk.email("Email_Here", "Plant Monitor", "Temperature Low!"); // Senden Sie eine E-Mail, dass die Temperatur niedrig ist

}

Verzögerung (15000); // Blynk-E-Mails müssen 15 Sekunden auseinander liegen. Verzögerung 15000 Millisekunden if (h <= min_humidity) // Wenn die Luftfeuchtigkeit gleich oder unter dem Mindestwert ist { Blynk.email("Emial_Here", "Plant Monitor", "Humidity Low!"); // E-Mail senden, dass die Luftfeuchtigkeit niedrig ist} benachrichtigt = 1; timer.setTimeout (Zeitverzögerung *5, resetNotified); // multiplizieren Sie die Zeitverzögerung mit der Anzahl der gewünschten Minuten zwischen wiederholten Warn-E-Mails } }

Void resetNotified () // Funktion zum Zurücksetzen der E-Mail-Frequenz aufgerufen

{ benachrichtigt = 0; }

Void-Setup ()

{ Serial.begin (9600); // Debug-Konsole Blynk.begin(auth, ssid, pass); // mit blynk timer.setInterval (timedelay, Sensoren) verbinden; // Richten Sie eine Funktion ein, die jede Minute aufgerufen wird oder welche Zeitverzögerung auf dht.begin() gesetzt ist; // DHT-Sensor ausführen}

//Void-Schleife sollte nur blynk.run und timer enthalten

Void Schleife () { Blynk.run (); // Führen Sie blynk timer.run () aus; // Initiiert BlynkTimer }

Empfohlen: