Como Fazer um Sistema de Irrigação Automatizado
Nesta postagem vou mostrar pra vocês um sistema de irrigação feito inteiramente em casa, utilizando Arduíno, alguns módulos e materiais que podem ser encontrados em qualquer deposito de construção.
Este sistema é indispensável pra quem tem ou quer ter pequenos plantios em casa. Tendo em vista a necessidade do cultivo de hortaliças em casa sem uso de agrotóxicos e melhorando a qualidade de vida. Este invento torna a tarefa de cuidar da horta mais fácil economizando tempo e dinheiro de quem souber usar, sendo ideal também para pessoas que passam maior parte do dia fora de casa e na correria para conciliar trabalho, família e estudos.

PARA TUTORIAIS EM VÍDEO, INSCREVE-SE NO CANAL DO YOUTUBE, BASTA CLICAR NO BOTÃO ABAIXO:
Vantagens:
- Pode ser montado por qualquer pessoa que esteja realmente disposta;
- Ajuda na economia de água preservando seu bolso e o meio ambiente;
- Vai te ajudar a manter a horta viva;
- Vai economizar o seu tempo e tempo é dinheiro;
Materiais:
- Uma placa arduino, qualquer modelo;
- Um modulo relé de dois canais;
- Um modulo de tempo real (RTC);
- Um sensor de umidade de solo;
- Uma fonte de alimentação com saída de pelo menos 5 volts;
- Uma válvula solenoide;
- Fios Jumper;
- 1 LED Vermelho, 1 LED Amarelo, 1 LED Verde (Opcional);
- 3 Resistores de 330 Ohms (Opcional);
- Dois recipientes plásticos;
- Um cano de PVC de 25 mm na medida que satisfaça a irrigação do seu plantio;
Como Funciona?
O programa na placa arduino reconhece o modulo de tempo real e faz com que todos os dias no horário programado ele ative um dos relés do modulo de dois canais, no caso desse sistema foi configurado para todos os dias as 5 horas da manha até 5 horas e 05 minutos. O programa faz a leitura do estado do solo a todo momento, desta forma se as 5 horas da manha o solo não estiver úmido a programação ativa o segundo rele do modulo de dois canais e assim com os dois reles ativados manda tensão para a válvula solenoide que por sua vez libera água.
Montagem do sistema hidráulico:
A montagem se da com dois conectores de torneira simples de 25 mm para que seja conectada uma mangueira comum de jardim a válvula solenoide e assim simplificando o projeto;

Para evitar vazamento utilizamos veda rosca e sintas para prender a mangueira ao conector, desta forma é importante que este conector de torneira seja de metal.

No cano de PVC precisamos fazer uma rosca em uma de suas extremidades ou já comprar com a rosca, pois vamos inserir outro conector de torneira para conectar a mangueira de saída da válvula solenoide, sera preciso uma tampa para fechar a outra extremidade do cano.

Com um prego pequeno e quente fazemos os furos no cano de PVC de 25 mm conforme a necessidade de irrigação.

Basicamente os sistemas hidráulicos seguem o raciocínio das imagens que foram apresentadas caso não tenha ficado claro, assista o vídeo e observe o momento em que mostro o sistema por completo pra ver como ficou.
Esquema de Ligação:
A seguir vocês podem conferir o esquema completo de ligação

Acima vocês podem conferir o esquema completo de ligação dos componentes para criação do sistema de irrigação, como falo no vídeo reforço aqui que a barra indicadora de umidade do solo não é obrigatória.
Código de Programação:
- Para que este código funcione corretamente você vai precisar fazer o download da IDE 1.0.5 do arduino;
- Você também vai precisar fazer o download das bibliotecas;
- Quando se trata de reles essa IDE inverte LOW por High;
- Saiba mais sobre a o sensor de umidade e programação do mesmo no site do FelipeFlop;
//NerdKing Corp #include <WProgram.h> //é um recurso para referenciar a biblioteca Wiring #include <Wire.h> //inclui a biblioteca Wire necessaria para comunicaçao i2c #include <DS1307.h> //inclui a biblioteca de comandos do DS1307 utilizada neste programa. Necessário baixá-la no link acima #define pino_sinal_analogico A0 //define analogica 0 para receber sensor de humidade int rtc[6]; int rele = 4; int rele2 = 3; int valor_analogico; #define pino_led_vermelho 5 #define pino_led_amarelo 6 #define pino_led_verde 7 void setup() { Serial.begin(9600); for (int pino = 9; pino <= 13; pino++) { pinMode(pino, OUTPUT); // configura pinos 10 ao 13 como saída digitalWrite(pino, LOW); // desliga pinos 10 ao 13 pinMode(pino_led_vermelho, OUTPUT); pinMode(pino_led_amarelo, OUTPUT); pinMode(pino_led_verde, OUTPUT); pinMode(rele, OUTPUT); pinMode(rele2, OUTPUT); digitalWrite(rele, HIGH); } /* Esta sequencia de comandos deve ser escrita apenas uma vez, para //configurar a hora do Shield RTC 1307. Troque os numeros pela hora atual RTC.stop(); RTC.set(DS1307_SEC,1); //define o segundo rtc[0] RTC.set(DS1307_MIN,31); //define o minuto rtc[1] RTC.set(DS1307_HR,21); //define a hora rtc[2] RTC.set(DS1307_DOW,7); //define o dia da semana rtc[3] RTC.set(DS1307_DATE,28); //define o dia rtc[4] RTC.set(DS1307_MTH,7); //define o mes rtc[5] RTC.set(DS1307_YR,18); //define o ano rtc[6] RTC.start(); */ } void MudaDispositivo(byte dispositivo, byte estado, byte hora, byte minuto, byte segundo, int* rtc) { if ( rtc[2] == hora && rtc[1] == minuto && rtc[0] == segundo ) digitalWrite(dispositivo, estado); } void loop() { RTC.get(rtc,true); //Simula presença durante o dia MudaDispositivo(rele, LOW, 21, 35, 10, rtc); MudaDispositivo(rele, HIGH, 21, 36, 10, rtc); MudaDispositivo(rele, LOW, 21, 40, 10, rtc); MudaDispositivo(rele, HIGH, 21, 41, 10, rtc); //Comando utilizado apenas pra ficar enviando via USB a hora atual //para que possam monitorar no "serial monitor" do simulador Arduino //e ver se esta tudo funcionando de acordo for(int i=0; i<6; i++){ Serial.print(rtc[i]); Serial.print(" "); } Serial.println(); delay(1000); valor_analogico = analogRead(pino_sinal_analogico); //Solo umido, acende o led verde if (valor_analogico > 0 && valor_analogico < 400) { Serial.println(" Status: Solo umido"); apagaleds(); digitalWrite(pino_led_verde, HIGH); } //Solo com umidade moderada, acende led amarelo if (valor_analogico > 400 && valor_analogico < 800) { Serial.println(" Status: Umidade moderada"); apagaleds(); digitalWrite(pino_led_amarelo, HIGH); } //Solo seco, acende led vermelho if (valor_analogico > 800 && valor_analogico < 1024) { Serial.println(" Status: Solo seco"); apagaleds(); digitalWrite(pino_led_vermelho, HIGH); digitalWrite(rele2, LOW); } delay(100); } void apagaleds() { digitalWrite(pino_led_vermelho, LOW); digitalWrite(pino_led_amarelo, LOW); digitalWrite(pino_led_verde, LOW); digitalWrite(rele2, HIGH); }
Para aprender mais sobre este programa e sobre o modulo de tempo Real, acesse o post sobre o relógio com modulo RTC.