Cuprins:

Monitor de plante folosind ESP32 Thing și Blynk: 5 pași
Monitor de plante folosind ESP32 Thing și Blynk: 5 pași

Video: Monitor de plante folosind ESP32 Thing și Blynk: 5 pași

Video: Monitor de plante folosind ESP32 Thing și Blynk: 5 pași
Video: Lesson 05: Introduction to Serial Monitor | Robojax Arduino Step By Step Course 2024, Iunie
Anonim
Monitor de plante folosind ESP32 Thing și Blynk
Monitor de plante folosind ESP32 Thing și Blynk
Monitor de plante folosind ESP32 Thing și Blynk
Monitor de plante folosind ESP32 Thing și Blynk

Prezentare generală

Scopul acestui proiect este de a crea un dispozitiv compact capabil să monitorizeze condițiile unei plante de apartament. Dispozitivul permite utilizatorului să verifice nivelul de umiditate al solului, nivelul de umiditate, temperatura și temperatura „simțită” de pe un smartphone folosind aplicația Blynk. În plus, utilizatorul va primi o alertă prin e-mail atunci când condițiile devin inadecvate pentru uzină. De exemplu, utilizatorul va primi un memento pentru a uda planta când nivelurile de umiditate ale solului scad sub un nivel adecvat.

Pasul 1: Cerințe

Cerințe
Cerințe
Cerințe
Cerințe
Cerințe
Cerințe

Acest proiect folosește un obiect Sparkfun ESP32, un senzor DHT22 și un senzor electronic de umiditate a cărămizii. În plus, sunt necesare o rețea wifi și aplicația Blynk. De preferință, ar trebui creată o incintă impermeabilă pentru a conține elementul ESP32. În timp ce acest exemplu folosește o priză standard pentru o sursă de alimentare, adăugarea unei baterii reîncărcabile, a unui panou solar și a unui controler de încărcare ar permite dispozitivului să fie alimentat prin energie regenerabilă.

Pasul 2: Blynk

Blynk
Blynk
Blynk
Blynk
Blynk
Blynk

Pentru a fi, descărcați aplicația Blynk și creați un proiect nou. Rețineți jetonul de autentificare - acesta va fi utilizat în cod. Creați widget-uri de afișare noi în aplicația Blynk și selectați pinii virtuali corespunzători definiți în cod. Setați intervalul de reîmprospătare pentru a împinge. Fiecărui widget i se va atribui propriul pin virtual.

Pasul 3: Arduino IDE

IDE Arduino
IDE Arduino

Descărcați Arduino IDE. Urmați instrucțiunile de descărcare pentru driverul ESP32 și demo pentru a vă asigura conectivitatea wifi. Descărcați bibliotecile Blynk și DHT incluse în cod. Completați simbolul de autentificare, parola wifi, numele de utilizator wifi și e-mailul în codul final. Utilizați codul demonstrativ pentru senzorul de umiditate al solului pentru a găsi valorile minime și maxime pentru tipul de sol. Înregistrați și înlocuiți aceste valori în codul final. Înlocuiți valorile minime pentru temperatură, umiditatea solului și umiditatea plantei din codul final. Încărcați codul.

Pasul 4: Construiește-l

Construieste
Construieste
Construieste
Construieste
Construieste
Construieste

Mai întâi, conectați senzorul de umiditate a solului la 3,3V, la masă și pinul de intrare 34. Notă, este integral, comutatorul este setat la A, deoarece va fi utilizată setarea analogică pentru acest senzor. Apoi, conectați senzorul DHT la 3,3V, la masă și pinul de intrare 27. Senzorul DHT22 necesită un rezistor de 10K Ohm între VCC și pinul de ieșire a datelor. Asigurați-vă că verificați diagrama DHT pentru a vă asigura că este bine conectată. Configurați ESP32 în interiorul unei carcase impermeabile cu senzorul de umiditate din sol și senzorul DHT deasupra suprafeței. Conectați-vă la o sursă de alimentare și bucurați-vă de date despre mediul instalației dvs.

Pasul 5: Cod

// Biblioteci incluse

#define BLYNK_PRINT Serial

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

// Informații despre senzorul DHT

#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #define DHTPIN 27 // Pin digital conectat la senzorul DHT DHT dht (DHTPIN, DHTTYPE); // Inițializați senzorul DHT.

// definiți pinii și ieșirile de intrare

int soil_sensor = 34; // definiți numărul pinului de intrare analogic conectat la senzorul de umiditate

int output_value; // definește ca output

int moisturelevel; // definește ca ieșire

int notificat = 0; // definește notificat ca 0

int timedelay = 60000L; // setați temporizatorul să ruleze obțineți date o dată pe minut sau 60 000 de milisecunde

// setați valori minime pentru plantă

int min_moisture = 20; int min_temperature = 75; int min_umiditate = 60;

// Ar trebui să obțineți Auth Token în aplicația Blynk.

char auth = "Auth_Token_Here";

// Acreditările dvs. WiFi.

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

Temporizator BlynkTimer;

// Această funcție trimite timpul de funcționare al Arduino în fiecare secundă la Virtual Pin (5).

// În aplicație, frecvența de citire a widgetului trebuie setată la PUSH. Aceasta înseamnă // că definiți cât de des trimiteți date către aplicația Blynk.

void Sensors () // funcția principală pentru citirea senzorilor și împingerea la blynk

{output_value = analogRead (soil_sensor); // Citiți semnalul analogic de la soil_sensor și definiți ca output_value // Harta output_vlaue de la valorile min, max la 100, 0 și constrângeți între 0, 100 // Utilizați codul eșantion și monitorul serial pentru a găsi min și valorile maxime pentru senzorul individual și tipul de sol pentru o calibrare mai bună umiditate = constrângere (hartă (valoare_output, 1000, 4095, 100, 0), 0, 100); float h = dht.readHumidity (); // Citește umiditatea float t = dht.readTemperature (); // Citiți temperatura ca Celsius (implicit) float f = dht.readTemperature (adevărat); // Citiți temperatura ca Fahrenheit (isFahrenheit = true) // Calculați indicele de căldură în Fahrenheit (implicit) float hif = dht.computeHeatIndex (f, h); // Verificați dacă citirile au eșuat și ieșiți devreme (pentru a încerca din nou). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println (F ("Nu s-a citit de la senzorul DHT!")); întoarcere; } // Aceasta conectează valele la pinii virtuali definiți în widgeturile din aplicația Blynk Blynk.virtualWrite (V5, moisturelevel); // Trimiteți nivelul de umiditate la pinul virtual 5 Blynk.virtualWrite (V6, f); // Trimiteți temperatura la virtual pinul 6 Blynk.virtualWrite (V7, h); // Trimiteți umiditatea pinului virtual 7 Blynk.virtualWrite (V8, hif); // Trimiteți indexul de căldură pinului virtual 8

if (notificat == 0)

{if (moisturelevel <= min_moisture) // Dacă moisturelevel este egal sau sub valoarea minimă {Blynk.email ("Email_Here", "Plant Monitor", "Water Plant!"); // Trimiteți e-mail la instalația de apă} delay (15000); // E-mailurile Blynk trebuie să fie la distanță de 15 secunde. Întârziați 15000 de milisecunde dacă (f <= min_temperature) // Dacă temperatura este egală cu sau sub valoarea minimă {Blynk.email ("Email_Here", "Plant Monitor", "Temperature Low!"); // Trimiteți un e-mail că temperatura este scăzută

}

întârziere (15000); // E-mailurile Blynk trebuie să fie la distanță de 15 secunde. Întârziați 15000 de milisecunde dacă (h <= min_humiditate) // Dacă umiditatea este egală cu sau sub valoarea minimă {Blynk.email ("Emial_Here", "Monitorul plantei", "Umiditate scăzută!"); // Trimiteți un e-mail că umiditatea este scăzută} notificat = 1; timer.setTimeout (timedelay * 5, resetNotified); // înmulțirea temporizării cu numărul de minute dorite între e-mailurile de avertizare repetate}}

void reset Notificat () // funcție apelată pentru a reseta frecvența e-mailului

{notificat = 0; }

configurare nulă ()

{Serial.begin (9600); // Consola de depanare Blynk.begin (auth, ssid, pass); // conectați-vă la blynk timer.setInterval (timedelay, senzori); // Configurați o funcție care să fie apelată în fiecare minut sau ce temporizare este setată la dht.begin (); // rulați senzorul DHT}

// Bucla de vid trebuie să conțină numai blynk.run și timer

bucla void () {Blynk.run (); // Rulați blynk timer.run (); // Inițiază BlynkTimer}

Recomandat: