Projeto de irrigação inteligente com Arduino – parte 1

Desenvolvi este sistema para um cliente irrigar seu cultivo de uma iguaria deliciosa: cogumelos Shiitake. Como é muito sensível a variações de temperatura e umidade, o objetivo é equilibrar e manter estas variáveis mais constantes dentro da estufa. Em uma semana muito quente ou pouco úmida, a quantidade da colheita pode variar mais de 100% e a qualidade com a falta de umidade deixa o fungo muito mais seco.

Caixa da eletrônica.

Esse é o aspecto geral da traquitana, com exceção do sensor de temperatura e umidade, que fiz um orifício para ele ficar para fora. Tudo fica bem vedado aí dentro para entrar menos umidade quanto possível, que é bem alta o tempo todo, fora a possibilidade de pequenos insetos entrarem também e causarem um curto.

Tomadas de decisão
A estufa/galpão já está em operação e a irrigação por aspersores é feita por uma bomba acionada manualmente pelo funcionário todas as manhãs. Então o meu trabalho aqui se resume a fazer a eletrônica, o software e a sua instalação no galpão.

Como ainda não sabemos o impacto no cultivo, planejei com a Lumiar Cogumelos a implementação em várias etapas incrementais e começar o mais rápido possível. Assim, o protótipo V Mk I (Vinagre, marco 1) é bem básico e não tem mostrador nem grava log. Suas funções são:

  1. A cada 10 minutos verifica a temperatura e umidade;
  2. Caso a temperatura esteja MENOR IGUAL QUE 28ºC OU umidade MENOR IGUAL 85%, uma bomba é acionada.

Coloquei todos os componentes dentro de uma única caixa para facilitar a montagem em casa e depois só montar lá em Nova Friburgo. Pensamos na possibilidade de espalhar mais sensores e deixar a eletrônica perto da tomada da bomba, mas isso ia requerer passar um fio de 10m para o sensor, o que consideramos inviável.

Dadas as condições  com uma só caixa o sistema fica mais robusto. Isso é importante pois temos que considerar as intempéries  numerosos animais e que é uma área de movimentação na colheita, a probabilidade de romper um fio fino era grande. E o Xbee (para wireless) ia complicar o projeto e triplicar o preço.

Montagem
Comecei a montagem fazendo os testes somente a leitura de temperatura, depois só o acionamento do relay (Relé), vi que tudo funcionava e depois juntei as duas. Com a quantidade de fios aumentando começa a ficar mais complicado, principalmente para puxar e compartilhar a alimentação de 5V mas ainda dá pra fazer direto no Arduino usando os pinos VIN. Mais que isso, com o SD e o LCD, temos que usar uma prototype shield ou uma placa PCB de prototipagem e soldar as ligações.

Estágio de testes, montei com calma cada um separado e depois juntei a eletrônica e o código. Isso foi importante para entender a dinâmica e comportamento de cada elemento.

Lista de Material
Muitas peças eu já tinha estocadas, mas outras comprei na rua República do Líbano aqui no Saara. Se voce puder esperar pela entrega do eBay, a economia sai no mínimo em 50% incluindo a entrega, mas demora sempre entre 30 e 60 dias.

  1. Arduino Duemila – R$ 34.00 no eBay;
  2. Sensor DHT11 já montado- R$ 7,00 no eBay;
  3. Módulo relay (1 relay)- R$ 3,60 no eBay;
  4. Verniz para proteger eletrônica: R$ 12,00 no Saara;
  5. Fonte 220V input – 9V output 1A: R$ 18,00 no Saara (pelo menos é made in Brazil);
  6. Vasilha para servir de case: R$ 3,50 em loja de potes de cozinha;
  7. Base de mdf de 6mm, sucata.

Custo total: R$ 78,10
Sendo que o verniz ainda pode ser usado em muitos outros projetos, então o custo somente dos componentes seria de R$ 66,10.

Esquema de ligação do arduino, o relé e o sensor de temperatura e umidade

O esquema é basicamente este, foi desenhado no Fritzing. Só atenção aos pinos de saída que voce pode mudar como quiser.

Referências e programação
Provalvemente voce vai ter que baixar e instalar uma biblioteca do Arduino dentro da pasta libraries para poder incluir a dht11.h, para o relay não é necessário instalar nada. Segui este ótimo tutorial para o sensor de temperatura:
http://learn.adafruit.com/dht

Para o relay, este é bacana:
http://www.arduinotutorials.com/view.php?id=5555

Código

/*************************************************************
project: Irrigacao da Lumiar Cogumelos
author: Raphael Vinagre
data: 23/01/2013
description: Sistema de controle de temperatura e umidade de
estufa. Parametros definidos no codigo.

Intervalo de leitura: 10 minutos

Tempo de acionamento da bomba: 1 minuto
Componentes: Sensor DHT11, Relay.
*************************************************************/

int i = 0; // para contar o n de acionamentos da bomba

#include <dht11.h>
dht11 DHT11;

#define DHT11PIN 2 //pino do DHT11

#define RELAY1 7 //pino do relé

void setup()      {

Serial.begin(115200);
Serial.println("DHT11 TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
Serial.println();
pinMode(led, OUTPUT);
pinMode(RELAY1, OUTPUT); 
}

void loop() {
Serial.println("\n");
int chk = DHT11.read(DHT11PIN);
Serial.print("Read sensor: ");
 switch (chk)

 {
 case 0: Serial.println("OK"); break;
 case -1: Serial.println("Checksum error"); break;
 case -2: Serial.println("Time out error"); break;
 default: Serial.println("Unknown error"); break;
 }
Serial.print("Humidity (%): ");
Serial.println((float)DHT11.humidity, 2);
Serial.print("Temperature (oC): ");
Serial.println((float)DHT11.temperature, 2);

 if (DHT11.temperature >= 28 || DHT11.humidity <= 90 )
 {
 Serial.print("Temperatura Maior Igual 28C \n");
 digitalWrite(RELAY1,LOW); // Turns ON Relays 1
 Serial.print("Bomba LIGADA \n");
 delay(60000); // Wait 1 minute
 digitalWrite(RELAY1,HIGH); // Turns Relay Off
 Serial.print("Bomba DESLIGADA \n");
}
else {
delay(60000); // Espera 1 minuto para nao dar diferenca de tempo se a bomba nao é acionada.}
Serial.print("\n id:");
Serial.print(i); 

 i++; 
delay(540000); // send the temperature every 10 minutes 540000 + 60000 milliseconds (bomba acionada)
 //pausa final: 10minutos. Calibrar pois o tempo dos intervalos se somam.
}

//
// END OF FILE
//

 

Incrementos futuros

  • Trocar o sensor DHT11 para o DHT22, para melhor resolução da umidade;
  • Acoplar o módulo SD para gravar um log da temperatura em uma planilha;
  • Colocar um mostrador de LCD com o status da medição;
  • Reprogramar o software usando funções de timer mais avançadas.

Espero que seja útil, e qualquer dúvidas, melhorias ou sugestões são sempre bem vindas. Assim que eu tiver as fotos e avaliações da instalação eu coloco em um novo post.

6 respostas em “Projeto de irrigação inteligente com Arduino – parte 1

  1. Pingback: Irrigação inteligente com Arduino: parte 2 | Projetos, construções e repraps

  2. Achei interessante seu projeto. Teria como fazer ele funcionar somente no horário programado (Ex: todos do dias das 8:00 às 8:30) e fazer ele acionar válvulas solenoides separadamente?

  3. Eae cara blz ? Só uma correção, lá em cima vc escreve: menor igual a 28, seria maior igual a 28.
    Abraço

  4. Amigo quero fazer um sistema com arduino para molhar meu gramado! Hoje tenho um sistema aqui com uma valvula de solenoide e 6 aspersores e um timer que molha todos os dias em horario pré programado. Mas ai a questão quando chove ele tambem molhar queria implementar o sensor de umidade para que não permitisse a rega quando o solo muito umido! Você me ajudaria nesse projeto eu compro as coisas e faço aqui so me ajuda na hora das duvidas te pago algo se for preciso!
    Desde ja agradeço e belo material postato!
    Sem mais
    Alexandre Campos

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s