Inhoudsopgave:

Plantmonitor met ESP32 Thing en Blynk - Ajarnpa
Plantmonitor met ESP32 Thing en Blynk - Ajarnpa

Video: Plantmonitor met ESP32 Thing en Blynk - Ajarnpa

Video: Plantmonitor met ESP32 Thing en Blynk - Ajarnpa
Video: Monitoring Soil Moisture Using Blynk and micro:bit 2024, November
Anonim
Plantmonitor met ESP32 Thing en Blynk
Plantmonitor met ESP32 Thing en Blynk
Plantmonitor met ESP32 Thing en Blynk
Plantmonitor met ESP32 Thing en Blynk

Overzicht

Het doel van dit project is om een compact apparaat te maken dat de omstandigheden van een kamerplant kan monitoren. Het apparaat stelt de gebruiker in staat om het bodemvochtgehalte, het vochtigheidsniveau, de temperatuur en de "voelt-als" temperatuur vanaf een smartphone te controleren met behulp van de Blynk-app. Bovendien ontvangt de gebruiker een e-mailwaarschuwing wanneer de omstandigheden ongeschikt worden voor de plant. De gebruiker ontvangt bijvoorbeeld een herinnering om de plant water te geven wanneer het bodemvochtgehalte onder een geschikt niveau zakt.

Stap 1: Vereisten

Vereisten
Vereisten
Vereisten
Vereisten
Vereisten
Vereisten

Dit project maakt gebruik van een Sparkfun ESP32-ding, een DHT22-sensor en een elektronische bodemvochtsensor. Daarnaast zijn een wifi-netwerk en de Blynk-app vereist. Bij voorkeur moet er een waterdichte behuizing worden gemaakt om het ESP32-ding te bevatten. Hoewel in dit voorbeeld een standaard stopcontact voor een stroombron wordt gebruikt, zou de toevoeging van een oplaadbare batterij, zonnepaneel en laadregelaar het mogelijk maken om het apparaat van stroom te voorzien via hernieuwbare energie.

Stap 2: Blynk

Blynk
Blynk
Blynk
Blynk
Blynk
Blynk

Download de Blynk-app en maak een nieuw project aan. Noteer het authenticatietoken - het zal in de code worden gebruikt. Maak nieuwe weergavewidgets in de Blynk-app en selecteer de bijbehorende virtuele pinnen die in de code zijn gedefinieerd. Stel het vernieuwingsinterval in om te pushen. Elke widget moet zijn eigen virtuele pin krijgen.

Stap 3: Arduino IDE

Arduino IDE
Arduino IDE

Arduino-IDE downloaden. Volg de download-instructies voor het ESP32-stuurprogramma en de demo om wifi-connectiviteit te garanderen. Download de Blynk- en DHT-bibliotheken die in de code zijn opgenomen. Vul de authenticatietoken, wifi-wachtwoord, wifi-gebruikersnaam en e-mail in de definitieve code in. Gebruik de democode voor de bodemvochtsensor om de minimum- en maximumwaarden voor het bodemtype te vinden. Noteer en vervang deze waarden in de definitieve code. Vervang de minimumwaarden voor de temperatuur, bodemvochtigheid en vochtigheid voor de plant in de definitieve code. Upload de code.

Stap 4: Bouw het

Bouw het
Bouw het
Bouw het
Bouw het
Bouw het
Bouw het

Sluit eerst de bodemvochtsensor aan op 3,3 V, aarde en ingangspen 34. Let op, het is integraal dat de schakelaar op A staat omdat de analoge instelling voor deze sensor wordt gebruikt. Sluit vervolgens de DHT-sensor aan op 3,3 V, aarde en ingangspin 27. De DHT22-sensor vereist een weerstand van 10K Ohm tussen de VCC en de data-uitgangspin. Zorg ervoor dat u het DHT-diagram controleert om er zeker van te zijn dat het correct is aangesloten. Configureer de ESP32 in een waterdichte behuizing met de vochtsensor in de bodem en de DHT-sensor boven het oppervlak. Sluit aan op een stroombron en geniet van gegevens over de omgeving van uw fabriek.

Stap 5: Coderen

//Inbegrepen bibliotheken

#define BLYNK_PRINT Serie

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

// DHT-sensorinformatie

#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #define DHTPIN 27 // Digitale pin aangesloten op de DHT-sensor DHT dht(DHTPIN, DHTTYPE); // Initialiseer de DHT-sensor.

//definieer input pinnen en outputs

int bodemsensor = 34; //definieer het analoge ingangspinnummer aangesloten op de vochtsensor

int output_value;//definieer als output

int vochtigheidsniveau;//definieer als uitvoer

int aangemeld = 0; //definieer gemeld als 0

int tijdvertraging = 60000L; // stel timer in om gegevens eenmaal per minuut of 60, 000 milliseconden op te halen

// stel minimumwaarden in voor plant

int min_vocht =20; int min_temperatuur =75; int min_humidity =60;

// Je zou Auth Token moeten krijgen in de Blynk-app.

char auth = "Auth_Token_Here";

// Uw WiFi-inloggegevens.

char ssid = "Wifi_Netwerk_Hier"; char pass = "Wifi_Password_Here";

BlynkTimer-timer;

// Deze functie stuurt Arduino's uptime elke seconde naar Virtual Pin (5).

// In de app moet de leesfrequentie van Widget worden ingesteld op PUSH. Dit betekent // dat u bepaalt hoe vaak gegevens naar de Blynk-app moeten worden verzonden.

void Sensors () // hoofdfunctie om sensoren te lezen en te duwen om te blynk

{output_value = analogRead (soil_sensor);// Lees analoog signaal van bodem_sensor en definieer als output_value // Kaart output_vlaue van min, max waarden tot 100, 0 en beperk tussen 0, 100 // Gebruik voorbeeldcode en seriële monitor om min en max waarden voor individuele sensor en bodemtype voor betere kalibratie vochtigheidsniveau = constrain (map(output_value, 1000, 4095, 100, 0), 0, 100); float h = dht.readHumidity(); // Lees vochtigheid float t = dht.readTemperature (); // Lees temperatuur als Celsius (de standaard) float f = dht.readTemperature (true); // Lees temperatuur als Fahrenheit (isFahrenheit = true) // Bereken warmte-index in Fahrenheit (de standaard) float hif = dht.computeHeatIndex (f, h); // Controleer of het lezen is mislukt en sluit vroeg af (om het opnieuw te proberen). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println(F("Kan niet lezen van DHT-sensor!")); opbrengst; } // Dit verbindt vales met virtuele pinnen die zijn gedefinieerd in de widgets in de Blynk-app Blynk.virtualWrite (V5, vochtigheidsniveau);// Stuur vochtniveau naar virtuele pin 5 Blynk.virtualWrite (V6, f);// Stuur temperatuur naar virtueel pin 6 Blynk.virtualWrite(V7, h);// Stuur vochtigheid naar virtuele pin 7 Blynk.virtualWrite(V8, hif);// Stuur warmte-index naar virtuele pin 8

if (aangemeld==0)

{ if (moisturelevel <= min_moisture) // Als het vochtgehalte gelijk is aan of lager is dan de min value { Blynk.email("Email_Here", "Plant Monitor", "Water Plant!"); // Stuur e-mail naar waterplant } vertraging (15000); // Blynk-e-mails moeten 15 seconden uit elkaar liggen. Vertraging 15000 milliseconden als (f <= min_temperatuur) // Als de temperatuur gelijk is aan of lager is dan de min-waarde { Blynk.email ("Email_Here", "Plant Monitor", "Temperature Low!"); // Stuur een e-mail dat de temperatuur laag is

}

vertraging (15000); // Blynk-e-mails moeten 15 seconden uit elkaar liggen. Vertraging 15000 milliseconden als (h <= min_humidity) // Als de vochtigheid gelijk is aan of lager is dan de min-waarde { Blynk.email ("Emial_Here", "Plant Monitor", "Humidity Low!"); // Stuur een e-mail dat de luchtvochtigheid laag is } aangemeld = 1; timer.setTimeout (tijdvertraging *5, resetNotified); // vermenigvuldig de tijdvertraging met het aantal gewenste minuten tussen herhaalde waarschuwingsmails } }

void resetNotified () // functie aangeroepen om e-mailfrequentie opnieuw in te stellen

{ aangemeld = 0; }

ongeldige setup()

{ Serieel.begin (9600); // Debug-console Blynk.begin (auth, ssid, pass); // maak verbinding met blynk timer.setInterval (tijdvertraging, sensoren); // Stel een functie in die elke minuut moet worden aangeroepen of welke tijdvertraging is ingesteld op dht.begin(); // voer DHT-sensor uit}

//Void-lus mag alleen blynk.run en timer bevatten

void loop() { Blynk.run(); // Voer blynk timer.run uit (); // Start BlynkTimer}

Aanbevolen: