Tabla de contenido:

Monitor de planta con ESP32 Thing y Blynk: 5 pasos
Monitor de planta con ESP32 Thing y Blynk: 5 pasos

Video: Monitor de planta con ESP32 Thing y Blynk: 5 pasos

Video: Monitor de planta con ESP32 Thing y Blynk: 5 pasos
Video: IoT Based Plant Watering System Indoor project using ESP32 Blynk | IoT Projects 2023 2024, Noviembre
Anonim
Monitor de planta con ESP32 Thing y Blynk
Monitor de planta con ESP32 Thing y Blynk
Monitor de planta con ESP32 Thing y Blynk
Monitor de planta con ESP32 Thing y Blynk

Visión general

El objetivo de este proyecto es crear un dispositivo compacto capaz de monitorear las condiciones de una planta de interior. El dispositivo permite al usuario verificar el nivel de humedad del suelo, el nivel de humedad, la temperatura y la temperatura "similar a la que se siente" desde un teléfono inteligente utilizando la aplicación Blynk. Además, el usuario recibirá una alerta por correo electrónico cuando las condiciones se vuelvan inadecuadas para la planta. Por ejemplo, el usuario recibirá un recordatorio para regar la planta cuando los niveles de humedad del suelo caigan por debajo de un nivel adecuado.

Paso 1: requisitos

Requisitos
Requisitos
Requisitos
Requisitos
Requisitos
Requisitos

Este proyecto utiliza una cosa Sparkfun ESP32, un sensor DHT22 y un sensor electrónico de humedad del suelo de ladrillos. Además, se requiere una red wifi y la aplicación Blynk. Preferiblemente, se debe crear un recinto impermeable para contener el ESP32. Si bien este ejemplo usa una toma de corriente estándar para una fuente de energía, la adición de una batería recargable, un panel solar y un controlador de carga permitiría que el dispositivo se alimentara con energía renovable.

Paso 2: Blynk

Blynk
Blynk
Blynk
Blynk
Blynk
Blynk

Para ser, descarga la aplicación Blynk y crea un nuevo proyecto. Tome nota del token de autenticación: se usará en el código. Cree nuevos widgets de visualización en la aplicación Blynk y seleccione los pines virtuales correspondientes definidos en el código. Establezca el intervalo de actualización para presionar. A cada widget se le debe asignar su propio pin virtual.

Paso 3: IDE de Arduino

IDE de Arduino
IDE de Arduino

Descarga Arduino IDE. Siga las instrucciones de descarga para el controlador de cosa ESP32 y la demostración para garantizar la conectividad wifi. Descargue las bibliotecas Blynk y DHT incluidas en el código. Complete el token de autenticación, la contraseña wifi, el nombre de usuario wifi y el correo electrónico en el código final. Utilice el código de demostración del sensor de humedad del suelo para encontrar los valores mínimo y máximo para el tipo de suelo. Registre y reemplace estos valores en el código final. Reemplace los valores mínimos de temperatura, humedad del suelo y humedad de la planta en el código final. Sube el código.

Paso 4: Constrúyelo

Constrúyelo
Constrúyelo
Constrúyelo
Constrúyelo
Constrúyelo
Constrúyelo

Primero, conecte el sensor de humedad del suelo a 3.3V, tierra y el pin de entrada 34. Tenga en cuenta que es integral que el interruptor esté en A porque se usará la configuración analógica para este sensor. Luego, conecte el sensor DHT a 3.3V, tierra y el pin de entrada 27. El sensor DHT22 requiere una resistencia de 10K Ohmios entre el VCC y el pin de salida de datos. Asegúrese de revisar el diagrama DHT para asegurarse de que esté cableado correctamente. Configure el ESP32 dentro de un recinto impermeable con el sensor de humedad en el suelo y el sensor DHT sobre la superficie. Conéctese a una fuente de alimentación y disfrute de los datos sobre el entorno de su planta.

Paso 5: Código

// Bibliotecas incluidas

#define BLYNK_PRINT Serie

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

// Información del sensor DHT

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

// definir pines de entrada y salidas

int suelo_sensor = 34; // definir el número de pin de entrada analógica conectado al sensor de humedad

int output_value; // definir como salida

int nivel de humedad; // definir como salida

int notificado = 0; // define notifed como 0

int timedelay = 60000L; // establece el temporizador para que se ejecute y obtenga datos una vez cada minuto o 60, 000 milisegundos

// establecer valores mínimos para la planta

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

// Debería obtener el token de autenticación en la aplicación Blynk.

char auth = "Auth_Token_Here";

// Tus credenciales de WiFi.

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

Temporizador BlynkTimer;

// Esta función envía el tiempo de actividad de Arduino cada segundo a Virtual Pin (5).

// En la aplicación, la frecuencia de lectura del widget debe establecerse en PUSH. Esto significa // que usted define con qué frecuencia enviar datos a la aplicación Blynk.

void Sensors () // función principal para leer sensores y presionar para blynk

{output_value = analogRead (suelo_sensor); // Leer la señal analógica del suelo_sensor y definir como output_value // Mapear output_vlaue de los valores mínimo, máximo a 100, 0 y restringir entre 0, 100 // Usar código de muestra y monitor de serie para encontrar el valor mínimo y valores máximos para el sensor individual y el tipo de suelo para una mejor calibración nivel de humedad = restricción (mapa (valor_salida, 1000, 4095, 100, 0), 0, 100); flotar h = dht.readHumidity (); // Leer humedad flotante t = dht.readTemperature (); // Lee la temperatura como Celsius (por defecto) float f = dht.readTemperature (true); // Leer la temperatura como Fahrenheit (isFahrenheit = true) // Calcular el índice de calor en Fahrenheit (predeterminado) float hif = dht.computeHeatIndex (f, h); // Compruebe si alguna lectura falló y salga antes (para volver a intentarlo). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println (F ("¡No se pudo leer el sensor DHT!")); regreso; } // Esto conecta los vales a los pines virtuales definidos en los widgets en la aplicación Blynk Blynk.virtualWrite (V5,iditylevel); // Envía el nivel de humedad al pin virtual 5 Blynk.virtualWrite (V6, f); // Envía la temperatura a virtual pin 6 Blynk.virtualWrite (V7, h); // Enviar humedad al pin virtual 7 Blynk.virtualWrite (V8, hif); // Enviar índice de calor al pin virtual 8

si (notificado == 0)

{if (nivel de humedad <= min_moisture) // Si el nivel de humedad es igual o inferior al valor mínimo {Blynk.email ("Email_Here", "Plant Monitor", "Water Plant!"); // Enviar correo electrónico a la planta de agua} delay (15000); // Los correos electrónicos de Blynk deben tener una diferencia de 15 segundos. Retraso 15000 milisegundos if (f <= min_temperature) // Si la temperatura es igual o inferior al valor mínimo {Blynk.email ("Email_Here", "Plant Monitor", "Temperature Low!"); // Envíe un correo electrónico que indique que la temperatura es baja

}

retraso (15000); // Los correos electrónicos de Blynk deben tener una diferencia de 15 segundos. Retraso 15000 miliseconos if (h <= min_humidity) // Si la humedad es igual o inferior al valor mínimo {Blynk.email ("Emial_Here", "Plant Monitor", "Humidity Low!"); // Envíe un correo electrónico que indique que la humedad es baja} notificados = 1; timer.setTimeout (timedelay * 5, resetNotified); // multiplica el retraso por el número de minutos deseados entre los correos electrónicos de advertencia repetidos}}

void resetNotified () // función llamada para restablecer la frecuencia del correo electrónico

{notificado = 0; }

configuración vacía ()

{Serial.begin (9600); // Consola de depuración Blynk.begin (auth, ssid, pass); // conectarse a blynk timer.setInterval (timedelay, Sensors); // Configure una función para que se llame cada minuto o qué tiempo de retardo se establece en dht.begin (); // ejecutar el sensor DHT}

// El bucle vacío solo debe contener blynk.run y timer

bucle vacío () {Blynk.run (); // Ejecuta blynk timer.run (); // Inicia BlynkTimer}

Recomendado: