Índice:

Monitor de planta usando ESP32 Thing e Blynk: 5 etapas
Monitor de planta usando ESP32 Thing e Blynk: 5 etapas

Vídeo: Monitor de planta usando ESP32 Thing e Blynk: 5 etapas

Vídeo: Monitor de planta usando ESP32 Thing e Blynk: 5 etapas
Vídeo: New Blynk IOT Smart Plant Monitoring System 2024, Novembro
Anonim
Monitor de planta usando ESP32 Thing e Blynk
Monitor de planta usando ESP32 Thing e Blynk
Monitor de planta usando ESP32 Thing e Blynk
Monitor de planta usando ESP32 Thing e Blynk

Visão geral

O objetivo deste projeto é criar um dispositivo compacto capaz de monitorar as condições de uma planta de casa. O dispositivo permite que o usuário verifique o nível de umidade do solo, nível de umidade, temperatura e a "sensação" de temperatura de um smartphone usando o aplicativo Blynk. Além disso, o usuário receberá um alerta por e-mail quando as condições se tornarem inadequadas para a planta. Por exemplo, o usuário receberá um lembrete para regar a planta quando os níveis de umidade do solo caírem abaixo de um nível adequado.

Etapa 1: Requisitos

Requisitos
Requisitos
Requisitos
Requisitos
Requisitos
Requisitos

Este projeto usa uma coisa Sparkfun ESP32, um sensor DHT22 e um Sensor Eletrônico de Umidade do Solo de Tijolo. Além disso, uma rede wi-fi e o aplicativo Blynk são necessários. De preferência, uma caixa à prova d'água deve ser criada para conter o ESP32. Embora este exemplo use uma tomada padrão como fonte de energia, a adição de uma bateria recarregável, painel solar e controlador de carga permitiria que o dispositivo fosse alimentado por energia renovável.

Etapa 2: Blynk

Blynk
Blynk
Blynk
Blynk
Blynk
Blynk

Para ser, baixe o aplicativo Blynk e crie um novo projeto. Anote o token de autenticação - ele será usado no código. Crie novos widgets de exibição no aplicativo Blynk e selecione os pinos virtuais correspondentes definidos no código. Defina o intervalo de atualização para push. Cada widget deve receber seu próprio pino virtual.

Etapa 3: IDE Arduino

IDE Arduino
IDE Arduino

Baixe o IDE do Arduino. Siga as instruções de download para o driver ESP32 e o demo para garantir a conectividade wi-fi. Baixe as bibliotecas Blynk e DHT incluídas no código. Preencha o token de autenticação, a senha do wifi, o nome de usuário do wifi e o e-mail no código final. Use o código de demonstração do sensor de umidade do solo para encontrar os valores mínimo e máximo para o tipo de solo. Registre e substitua esses valores no código final. Substitua os valores mínimos de temperatura, umidade do solo e umidade da planta no código final. Faça upload do código.

Etapa 4: Construa

Construa
Construa
Construa
Construa
Construa
Construa

Primeiro, conecte o sensor de umidade do solo a 3,3 V, aterramento e pino de entrada 34. Observe que é integral que a chave esteja definida como A porque a configuração analógica para este sensor será usada. Em seguida, conecte o sensor DHT a 3,3 V, aterramento e pino de entrada 27. O sensor DHT22 requer um resistor de 10K Ohm entre o VCC e o pino de saída de dados. Certifique-se de verificar o diagrama DHT para garantir que ele está conectado corretamente. Configure o ESP32 dentro de um invólucro à prova d'água com o sensor de umidade no solo e o sensor DHT acima da superfície. Conecte-se a uma fonte de alimentação e aproveite os dados do ambiente de sua planta.

Etapa 5: Código

// Bibliotecas incluídas

#define BLYNK_PRINT Serial

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

// Informação do sensor DHT

#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #define DHTPIN 27 // Pino digital conectado ao sensor DHT DHT dht (DHTPIN, DHTTYPE); // Inicializa o sensor DHT.

// define pinos de entrada e saídas

int solo_sensor = 34; // define o número do pino de entrada analógica conectado ao sensor de umidade

int output_value; // definir como saída

int moisturelevel; // definir como saída

int notificado = 0; // define notifed como 0

retardo de tempo int = 60000L; // define o cronômetro para executar a obtenção de dados uma vez a cada minuto ou 60.000 milissegundos

// definir valores mínimos para a planta

int min_umidade = 20; int min_temperature = 75; int min_umidade = 60;

// Você deve obter o Auth Token no aplicativo Blynk.

char auth = "Auth_Token_Here";

// Suas credenciais de WiFi.

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

Cronômetro BlynkTimer;

// Esta função envia o tempo de atividade do Arduino a cada segundo para o Virtual Pin (5).

// No aplicativo, a frequência de leitura do Widget deve ser definida como PUSH. Isso significa // que você define a frequência de envio de dados para o aplicativo Blynk.

void Sensors () // função principal para ler sensores e enviar para blynk

{output_value = analogRead (solo_sensor); // Lê o sinal analógico do solo_sensor e define como output_value // Mapeia os valores min, max para 100, 0 e restringe entre 0, 100 // Use o código de amostra e o monitor serial para encontrar min e valores máximos para sensor individual e tipo de solo para melhor nível de umidade de calibração = restrição (mapa (output_value, 1000, 4095, 100, 0), 0, 100); float h = dht.readHumidity (); // Leia a umidade float t = dht.readTemperature (); // Lê a temperatura como Celsius (o padrão) float f = dht.readTemperature (true); // Lê a temperatura como Fahrenheit (isFahrenheit = true) // Computa o índice de calor em Fahrenheit (o padrão) float hif = dht.computeHeatIndex (f, h); // Verifique se alguma leitura falhou e saia mais cedo (para tentar novamente). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println (F ("Falha ao ler do sensor DHT!")); Retorna; } // Isso conecta os valores aos pinos virtuais definidos nos widgets no aplicativo Blynk Blynk.virtualWrite (V5, nível de umidade); // Envia o nível de umidade para o pino virtual 5 Blynk.virtualWrite (V6, f); // Envia a temperatura para o virtual pino 6 Blynk.virtualWrite (V7, h); // Enviar umidade para pino virtual 7 Blynk.virtualWrite (V8, hif); // Enviar índice de calor para pino virtual 8

se (notificado == 0)

{if (moisturelevel <= min_moisture) // Se o nível de umidade for igual ou inferior ao valor mínimo {Blynk.email ("Email_Here", "Plant Monitor", "Water Plant!"); // Enviar e-mail para a estação de tratamento de água} delay (15000); // Os emails Blynk devem ter 15 segundos de intervalo. Atraso 15000 milissegundos if (f <= min_temperature) // Se a temperatura for igual ou inferior ao valor mínimo {Blynk.email ("Email_Here", "Plant Monitor", "Temperature Low!"); // Enviar e-mail informando que a temperatura está baixa

}

atraso (15000); // Os emails Blynk devem ter 15 segundos de intervalo. Atraso 15000 milissegundos if (h <= min_humidity) // Se a umidade for igual ou inferior ao valor mínimo {Blynk.email ("Emial_Here", "Plant Monitor", "Humidity Low!"); // Enviar e-mail informando que a umidade está baixa} notificada = 1; timer.setTimeout (timedelay * 5, resetNotified); // retardo de tempo múltiplo por número de minutos desejados entre a repetição de e-mails de aviso}}

void resetNotified () // função chamada para redefinir a frequência de e-mail

{notificado = 0; }

void setup ()

{Serial.begin (9600); // Console de depuração Blynk.begin (auth, ssid, pass); // conectar ao blynk timer.setInterval (timedelay, Sensors); // Configura uma função a ser chamada a cada minuto ou o intervalo de tempo definido como dht.begin (); // execute o sensor DHT}

// Loid loop deve conter apenas blynk.run e timer

loop vazio () {Blynk.run (); // Execute blynk timer.run (); // Inicia BlynkTimer}

Recomendado: