Sistema de Irrigação para Apartamento

Um sistema de irrigação pode salvar uma planta da morte quando não houver ninguém para molhar, porém quando se trata de apartamento, os métodos de irrigação podem ser “grandes” ou até gerar transtornos com a vizinhança.

Bomba d’água para o Sistema de Irrigação

O sistema de irrigação pode ser feito com o uso de uma bomba d’água para garrafão de água mineral. Esta bomba possui um sistema completo que inclui tudo que é necessário para ser um sistema autônomo e independente. No entanto, é necessário fazer algumas pequenas alterações para usar para irrigação.

bomba do Sistema de Irrigação para Apartamento

Modificações na Placa do Sistema de Irrigação

Como a placa tem um sistema bem completo, não será necessário fazer modificações na eletrônica já existente, no caso só será mesmo necessário a soldagem de quatro pontos na placa para fornecer alimentação e dois que será para controle.

Sistema de Irrigação para Apartamento placa eletrônica com pontos aonde devem ser soldados
  1. GND;
  2. 3V3;
  3. Entrada de pulso;
  4. Feedback;

Conexão placa da Bomba d’água com o ESP32

A conexão é simples porém é bom tomar cuidado durante a soldagem para que não ocorra uma inversão de polaridade e consequentemente uma queima do microcontrolador. Além disso, é interessante por uma chave ON/OFF no VCC entre o ESP e o VCC ou usar um CI HT7333.

Sistema de Irrigação para Apartamento diagrama

Por que usar o ESP32 ao Invés do Arduino?

O ESP32 foi pensando para IoT e por isso detém recursos como “deep sleep mode” que permite que o microcontrolador durma e só seja acordado por quatro métodos diferentes, neste caso será usado o temporizador. Dessa forma o temporizador acorda a cada 12h (tempo programado), molha por 15s e volta a dormir.

Código

Antes de tudo o código a seguir só será necessário ter a placa ESP32 instalado na IDE do Arduino, caso contrário não funcionará. Além disso caso prefira baixar o código, ficará disponível no Github, é só clicar aqui.

#define uS_TO_S_FACTOR 1000000                                                    // Constante
#define TIME_TO_SLEEP  720                                                        // Tempo em minutos dormindo (12h)
#define Working_Time   15                                                         // Tempo de trabalho em segundos

#define feedbackPump   16                                                         // GPIO que verifica se a bomba está ligada.
#define controlPump    17                                                         // GPIO que liga ou desliga a bomba

void DeepSleep(){
  esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR * 60);             // Define e ativa o acordar por um tempo desejado.
  esp_deep_sleep_start();                                                         // Coloca o ESP32 em deep sleep
}

void pulse()
{
  digitalWrite(controlPump, 0);
  delay(100);
  digitalWrite(controlPump, 1);
  delay(100);
}

void onTime(double t){
  if(digitalRead(feedbackPump) == 0){                                             
    pulse();
    if(digitalRead(feedbackPump) == 0)
      pulse();
    
    delay(t * 1000);

    pulse();
    if(digitalRead(feedbackPump) == 1)
      pulse();
  }
  else
  {
    pulse();
    delay(100);
  }
}

void setup() {
  pinMode(feedbackPump, INPUT);
  pinMode(controlPump, OUTPUT);

  onTime(Working_Time);
  delay(1000);
  DeepSleep();
}

void loop() {
}

Funcionamento

Como é possível ver no vídeo a baixo, assim que o jumper de VCC é conectado ao ESP32, é realizado o processo de irrigação de imediato, após alguns segundos é encerrado e logo em seguida depois de um tempo, é ligado novamente sozinho.