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.

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.

- GND;
- 3V3;
- Entrada de pulso;
- 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.

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.
Você precisa fazer log in para comentar.