Taula de continguts:

Monitor de plantes amb ESP32 Thing i Blynk: 5 passos
Monitor de plantes amb ESP32 Thing i Blynk: 5 passos

Vídeo: Monitor de plantes amb ESP32 Thing i Blynk: 5 passos

Vídeo: Monitor de plantes amb ESP32 Thing i Blynk: 5 passos
Vídeo: Local solar PV monitoring system with Home Assistant, Grafana and influxDB(1) 2024, Desembre
Anonim
Monitor de plantes amb ESP32 Thing i Blynk
Monitor de plantes amb ESP32 Thing i Blynk
Monitor de plantes amb ESP32 Thing i Blynk
Monitor de plantes amb ESP32 Thing i Blynk

Visió general

L’objectiu d’aquest projecte és crear un dispositiu compacte capaç de controlar les condicions d’una planta d’interior. El dispositiu permet a l’usuari comprovar el nivell d’humitat del sòl, el nivell d’humitat, la temperatura i la temperatura “semblant” des d’un telèfon intel·ligent mitjançant l’aplicació Blynk. A més, l’usuari rebrà una alerta per correu electrònic quan les condicions siguin inadequades per a la planta. Per exemple, l'usuari rebrà un recordatori per regar la planta quan els nivells d'humitat del sòl baixin d'un nivell adequat.

Pas 1: requisits

Requisits
Requisits
Requisits
Requisits
Requisits
Requisits

Aquest projecte utilitza una cosa Sparkfun ESP32, un sensor DHT22 i un sensor electrònic d’humitat de terra de maó. A més, cal una xarxa wifi i l’aplicació Blynk. Preferiblement, s’hauria de crear un recinte impermeable per contenir el producte ESP32. Tot i que aquest exemple utilitza una presa de corrent estàndard per a una font d’energia, l’addició d’una bateria recarregable, panell solar i controlador de càrrega permetria alimentar el dispositiu mitjançant energia renovable.

Pas 2: Blynk

Blynk
Blynk
Blynk
Blynk
Blynk
Blynk

Per ser, descarregueu l'aplicació Blynk i creeu un projecte nou. Preneu nota del testimoni d'autenticació: s'utilitzarà al codi. Creeu nous ginys de visualització a l'aplicació Blynk i seleccioneu els pins virtuals corresponents definits al codi. Estableix l'interval d'actualització per prémer. A cada giny se li ha d'assignar el seu propi pin virtual.

Pas 3: Arduino IDE

IDE Arduino
IDE Arduino

Descarregueu Arduino IDE. Seguiu les instruccions de descàrrega del controlador de coses ESP32 i la demostració per garantir la connectivitat wifi. Baixeu-vos les biblioteques Blynk i DHT incloses al codi. Empleneu el testimoni d’autenticació, la contrasenya wifi, el nom d’usuari wifi i el correu electrònic al codi final. Utilitzeu el codi de demostració del sensor d'humitat del sòl per trobar els valors mínim i màxim per al tipus de sòl. Anoteu i substituïu aquests valors al codi final. Substituïu els valors mínims de temperatura, humitat del sòl i humitat de la planta al codi final. Pengeu el codi.

Pas 4: construïu-lo

Construeix-ho
Construeix-ho
Construeix-ho
Construeix-ho
Construeix-ho
Construeix-ho

En primer lloc, connecteu el sensor d’humitat del sòl a 3,3 V, a terra i al pin d’entrada 34. Tingueu en compte que és integral que el commutador estigui configurat a A perquè s’utilitzarà la configuració analògica d’aquest sensor. A continuació, connecteu el sensor DHT a 3,3 V, a terra i al pin d'entrada 27. El sensor DHT22 requereix una resistència de 10 K Ohm entre el VCC i el pin de sortida de dades. Assegureu-vos de comprovar el diagrama DHT per assegurar-vos que està connectat correctament. Configureu l’ESP32 dins d’un recinte impermeable amb el sensor d’humitat del sòl i el sensor DHT per sobre de la superfície. Connecteu-vos a una font d'energia i gaudiu de les dades sobre l'entorn de la vostra planta.

Pas 5: Codi

// Biblioteques incloses

#defineix BLYNK_PRINT de sèrie

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

// Informació del sensor DHT

#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #define DHTPIN 27 // Pin digital connectat al sensor DHT DHT dht (DHTPIN, DHTTYPE); // Inicialitzar el sensor DHT.

// defineix els pins i les sortides d’entrada

int sòl_sensor = 34; // defineix el número de pin d'entrada analògica connectat al sensor d'humitat

int output_value; // defineix com a sortida

int moisturelevel; // defineix com a sortida

int notificat = 0; // defineix notificat com a 0

int timedelay = 60000L; // Estableix el temporitzador perquè s'executi i obté dades un cop cada minut o 60.000 mil·lisegons

// estableix valors mínims per a la planta

int min_humitat = 20; int min_temperature = 75; int min_humitat = 60;

// Hauríeu d'obtenir Auth Token a l'aplicació Blynk.

char auth = "Auth_Token_Here";

// Les vostres credencials de WiFi.

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

Temporitzador BlynkTimer;

// Aquesta funció envia el temps d'activació d'Arduino cada segon al pin virtual (5).

// A l'aplicació, la freqüència de lectura del widget s'ha d'establir en PUSH. Això significa // que definiu la freqüència amb què heu d'enviar dades a l'aplicació Blynk.

void Sensors () // funció principal per llegir els sensors i prémer fins a blynk

{output_value = analogRead (soil_sensor); // Llegiu el senyal analògic de soil_sensor i definiu-lo com output_value // Mapa de output_vlaue des de valors mínims, màxims a 100, 0 i restringiu entre 0, 100 // Utilitzeu el codi de mostra i el monitor sèrie per trobar min i valors màxims per al sensor individual i el tipus de sòl per a un millor calibratge de la humitat = restringir (mapa (valor_de sortida, 1000, 4095, 100, 0), 0, 100); flotador h = dht.readHumidity (); // Llegir float d’humitat t = dht.readTemperature (); // Llegiu la temperatura com Celsius (per defecte) flotant f = dht.readTemperature (true); // Llegiu la temperatura com Fahrenheit (isFahrenheit = true) // Calculeu l'índex de calor a Fahrenheit (per defecte) float hif = dht.computeHeatIndex (f, h); // Comproveu si alguna lectura ha fallat i sortiu aviat (per tornar-ho a provar). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println (F ("No s'ha pogut llegir del sensor DHT!")); tornar; } // Connecta vales als pins virtuals definits als ginys de l'aplicació Blynk Blynk.virtualWrite (V5, moisturelevel); // Envia el nivell d'humitat al pin virtual 5 Blynk.virtualWrite (V6, f); // Envia la temperatura al virtual pin 6 Blynk.virtualWrite (V7, h); // Enviar humitat al pin virtual 7 Blynk.virtualWrite (V8, hif); // Enviar índex de calor al pin virtual 8

if (notificat == 0)

{if (moisturelevel <= min_moisture) // Si moisturelevel és igual o inferior al valor mínim {Blynk.email ("Email_Here", "Plant Monitor", "Water Plant!"); // Enviar correu electrònic a la planta d’aigua} delay (15000); // Els correus electrònics de Blynk han de tenir una separació de 15 segons. Retardar 15.000 mil·lisegons si (f <= temperatura_min) // Si la temperatura és igual o inferior al valor mínim {Blynk.email ("Email_Here", "Monitor de planta", "Temperatura baixa!"); // Envieu un correu electrònic perquè la temperatura sigui baixa

}

retard (15000); // Els correus electrònics de Blynk han de tenir una separació de 15 segons. Retardar 15.000 mil·lisegons si (h <= mín_humitat) // Si la humitat és igual o inferior al valor mínim {Blynk.email ("Emial_Here", "Monitor de planta", "Humitat baixa!"); // Envieu un correu electrònic que la humitat sigui baixa} notificat = 1; timer.setTimeout (timedelay * 5, resetNotified); // multiplicar el retard de temps pel nombre de minuts desitjats entre correus electrònics d’avís repetits}}

void resetNotified () // funció cridada per restablir la freqüència del correu electrònic

{notificat = 0; }

configuració nul·la ()

{Serial.begin (9600); // Depurar la consola Blynk.begin (auth, ssid, pass); // connectar-se a blynk timer.setInterval (retard de temps, Sensors); // Configureu una funció que es cridi cada minut o quin temps de temps s'estableix en dht.begin (); // executa el sensor DHT}

// El bucle buit només ha de contenir blynk.run i temporitzador

bucle buit () {Blynk.run (); // Executa blynk timer.run (); // Inicia BlynkTimer}

Recomanat: