usf - universidade sÃo francisco engenharia de...

47
USF - UNIVERSIDADE SÃO FRANCISCO Engenharia de Computação CARLOS CÉZAR INVERNIZZI JUNIOR EDUARDO LUIZ RODRIGUES VINICIUS BARBOSA SILVA PROPOSTA DE AUTOMAÇÃO CLIMÁTICA EM AMBIENTE FECHADO VOLTADO PARA CULTIVO DE VEGETAIS Itatiba 2014

Upload: ngokhue

Post on 30-Nov-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

USF - UNIVERSIDADE SÃO FRANCISCO Engenharia de Computação

CARLOS CÉZAR INVERNIZZI JUNIOR EDUARDO LUIZ RODRIGUES VINICIUS BARBOSA SILVA

PROPOSTA DE AUTOMAÇÃO CLIMÁTICA EM AMBIENTE FECHADO VOLTADO PARA CULTIVO DE VEGETAIS

Itatiba 2014

CARLOS CÉZAR INVERNIZZI JUNIOR - R.A. 002201000045 EDUARDO LUIZ RODRIGUES - R.A. 002201000720 VINICIUS BARBOSA SILVA - R.A. 002201000937

PROPOSTA DE AUTOMAÇÃO CLIMÁTICA EM AMBIENTE FECHADO VOLTADO PARA CULTIVO DE VEGETAIS

Monografia apresentada à disciplina Trabalho de Conclusão de Curso, do curso de Engenharia de Computação da Universidade São Francisco, sob orientação do Prof. Claudio Kiyoshi Umezu como exigência para conclusão do curso de graduação.

Orientador: Prof. Claudio Kiyoshi Umezu

Itatiba 2014

Aos nossos familiares e amigos que sempre

nos deram força e acreditaram em nós.

AGRADECIMENTOS

Agradecemos, acima de tudo, a Deus, pela força e coragem que recebemos e pela

alegria proporcionada pelos frutos destes anos de muito trabalho e dedicação.

Ao Prof. Claudio Kiyoshi Umezu, nosso orientador e amigo, por seus valiosos

conselhos e sugestões no decorrer deste projeto, que sem dúvida foram essenciais para sua

concretização e que levaremos como exemplo para nossa vida profissional.

Aos demais professores do curso de Engenharia de Computação cuja colaboração

foi indispensável para que este projeto se tornasse realidade.

Por fim, aos bons amigos que tivemos o prazer de conhecer ao longo destes anos

que passamos na Universidade São Francisco, todo o esforço despendido por todos nós,

em contraste ao nosso animo e vontade, estarão sempre em nossas lembranças.

RESUMO

Com o avanço tecnológico o cultivo de plantas em estufas vem crescendo gradativamente

apoiado nas facilidades que um ambiente controlado traz aos agricultores. Pensando nisso,

este trabalho apresenta uma proposta de automação de ambiente que proporcione

economia e eficiência no cultivo de vegetais. Para obter um sistema eficiente e de baixo

custo, foram utilizados componentes adaptados, a plataforma de prototipagem eletrônica

Arduino e ferramentas de desenvolvimento open source. O desenvolvimento do ambiente de

testes, do sistema de controle e do software para interação remota entre o usuário e o

ambiente foram planejados para simular uma situação real permitindo que o projeto possa

ser adaptado para uso em maior escala.

Palavras-chave: Arduino. Automação. Ambiente inteligente.

ABSTRACT

With advances in technology the cultivation of plants in greenhouses has been growing

gradually supported in controlled environment facilities that bring to the farmers. Thinking

about it, this work presents a proposal automation that provides economy and efficiency in

vegetable cultivation. To achieve an efficient and a low cost system were used adapted

components, electronics prototyping platform Arduino and open source development tools.

The development of the test environment, the control system and the software for remote

interaction between the user and the environment have been designed to simulate a real

situation, allowing the project to be adaptable to use on a larger scale.

Key words: Arduino. Automation. Intelligent environment.

LISTA DE SIGLAS E ABREVIATURAS

µa - Micro ampare

AC - Alternating current

API - Application Programming Interface

ARM - Advanced Risc Machine

ATX - Advanced Technology Extended

AVR - Advanced Virtual RISC

Cm – Unidade de medida em centímetros

CO2 – Dióxido de Carbono (gás carbônico)

DC - Direct current

GND - Ground (Terra)

GSM - Global System for Mobile Communications (Sistema Global para Comunicações Móveis)

HTML - Hypertext Markup Language

IDE - Integrated Development Environment

IN - Input

IP - Internet protocol (protocolo de internet)

J2EE - Java2 Platform Enterprise Edition

JDBC - Java Database Connectivity

JSP - Java Server Page

JVM - Java Virtual Machine

k - quilo

LDR - Light Dependent Resistor (Resistencia dependente de luz)

LED - Light Emitting Diode

mA - Miliampere

MDF – Medium Density Fiberboard

Mm - Unidade de medida em milímetros

ms - milissegundo

Mw - Milliwatt

NA - normalmente aberta

NF - normalmente fechada

NTC - Negative Temperature Coeficient

ºC – Graus Celsius

OUT - Output

PIC - Controlador Integrado de Periféricos

S - Segundo

SQL - Structured Query Language

TTL - Transistor–transistor logic (Lógica transistor-transistor)

UR – Umidade Relativa

USB - Universal Serial Bus

V - Volts

VAC - Volt corrente alternada

VCC - Tensão corrente contínua

VDC - Voltage Direct Current

W - Watt

LISTA DE ILUSTRAÇÕES

FIGURA 1 - Estufa do tipo túnel com cobertura de plástico. (Fonte: ALVES, 2013) ............. 15

FIGURA 2 - Arduino mega2560 (Superior) .......................................................................... 18

FIGURA 3 - Arduino mega2560 (Inferior) ............................................................................. 18

FIGURA 4 – Módulo relé ...................................................................................................... 19

FIGURA 5 - Sensor de temperatura DHT11 ......................................................................... 20

FIGURA 6 - Sensor de luz LDR ........................................................................................... 21

FIGURA 7 – Sensor de umidade do solo (higrômetro) ......................................................... 21

FIGURA 8 - Circuitos dos sensores ..................................................................................... 24

FIGURA 9 - Conexões do módulo relé ................................................................................. 25

FIGURA 10 - Gráfico demonstrativo da estabilização de temperatura ................................. 26

FIGURA 11 - Gráfico de variação de umidade ..................................................................... 27

FIGURA 12 – Base e suporte dos equipamentos do ambiente ............................................ 28

FIGURA 13 – Ambiente desenvolvido para simulação ......................................................... 29

FIGURA 14 – Base do ambiente de testes .......................................................................... 29

FIGURA 15 – Instalação de testes completa ....................................................................... 30

FIGURA 16 - Tela de login do sistema ................................................................................. 31

FIGURA 17 - Tela padrão do espectador ............................................................................. 31

FIGURA 18 - Tela padrão do administrador ......................................................................... 32

FIGURA 19 - Tela de monitoramento ................................................................................... 32

FIGURA 20 – Tela de controle ............................................................................................. 33

FIGURA 21 – Parâmetro para relatórios .............................................................................. 33

FIGURA 22 - Tela de resultado do relatório ......................................................................... 34

FIGURA 23 - Tela de equipamentos .................................................................................... 34

FIGURA 24 - Tela de cadastro de equipamentos ................................................................. 35

FIGURA 25 - Tela de exibição dos ambientes ..................................................................... 35

FIGURA 26 - Tela de cadastro de ambiente ........................................................................ 36

FIGURA 27 - Tela de usuários ............................................................................................. 36

FIGURA 28 - Tela de cadastro de usuário ........................................................................... 37

FIGURA 29 - Modelagem do Banco de Dados......................... Erro! Indicador não definido.

SUMÁRIO

1 INTRODUÇÃO ................................................................................................................ 11

2 DESENVOLVIMENTO .................................................................................................... 13

2.1 Fundamentação Teórica ........................................................................................ 13

2.1.1 Agricultura e a automação para ambientes fechados................................... 13

2.1.2 Estufas Agrícolas ............................................................................................ 14

2.1.3 Temperatura ..................................................................................................... 15

2.1.4 Umidade ........................................................................................................... 15

2.1.5 Irrigação ........................................................................................................... 16

2.1.6 Iluminação ........................................................................................................ 17

2.1.7 Plataforma Arduino ......................................................................................... 17

2.1.8 Módulo Relê ..................................................................................................... 19

2.1.9 Sensores .......................................................................................................... 19

2.1.9.1 DHT 11 ....................................................................................................... 19

2.1.9.2 LDR (Fotocélula) ....................................................................................... 20

2.1.9.3 Sensor de Umidade do Solo (Higrômetro) .............................................. 21

2.1.10 JAVA Enterprise Edition ................................................................................. 22

2.1.11 MySQL .............................................................................................................. 22

2.2 Metodologia ............................................................................................................ 23

2.2.1 Circuitos Elétricos ........................................................................................... 24

2.2.2 Controle no Arduino ........................................................................................ 25

2.3 Discussão e Resultados ........................................................................................ 28

2.3.1 Maquete de testes............................................................................................ 28

2.3.2 Utilização da Interface WEB ............................................................................ 30

2.3.3 Estrutura de Dados .......................................................................................... 37

2.3.4 Possibilidades de Expansão ........................................................................... 38

3 CONCLUSÃO ................................................................................................................. 40

4 REFERÊNCIAS BIBLIOGRÁFICAS ............................................................................... 41

11

1 INTRODUÇÃO

O cultivo de vegetais é um dos trabalhos mais antigos executados pela humanidade

e ainda hoje é uma das tarefas essenciais para a manutenção da sociedade. Ela passou por

grandes evoluções e aprimoramentos ao longo dos anos que possibilitaram o aumento na

quantidade, na qualidade e na velocidade de produção.

A agricultura é totalmente dependente do ambiente, fatores como incidência de luz,

umidade, nutrientes no solo e temperatura influenciam em quais vegetais podem ser

cultivados em determinada área, na forma que eles crescem, quanto tempo possuem de

vida e seu tamanho. Algumas variáveis que podem ser controladas em um ambiente

protegido são: radiação solar, ventilação, temperatura ambiente, umidade do ar e irrigação.

(Cardoso, 2010).

Uma das principais técnicas de cultivo é a utilização de ambientes fechados,

conhecidos como estufas, criados para controlar os fatores climáticos em seu interior,

conseguindo assim construir uma situação favorável ao desenvolvimento dos vegetais ali

cultivados. Dessa forma, fatores negativos provenientes das variações climáticas são

minimizados, possibilitando a produção de forma eficiente mesmo em regiões adversas à

plantação. Estufas modernas utilizam sistemas de automação que permitem com que os

seus próprios equipamentos realizem medições e controles de seu ambiente.

A automação pode ser entendida por qualquer sistema apoiado em dispositivos

computacionais, que substitua o trabalho humano em favor da segurança de pessoas, da

qualidade de produtos, da rapidez da produção e da redução de custos, aperfeiçoando os

complexos objetivos das indústrias e dos serviços. (Alcantara, 2011).

A utilização dessas ferramentas em ambientes controlados possibilita que os

administradores tenham menor necessidade de intervenção, e, utilizados em conjunto com

tecnologias modernas permitem que essa supervisão possa ser executada até mesmo à

distância através de mecanismos que comportem conexões de dados com outros

dispositivos que possam interagir com o gerenciador. Diversos são os resultados positivos

atingidos ao se aplicar essas soluções como: redução das chances de erro, controle e

monitoramento remotos, capacidade de gerir diversos sistemas distintos simultaneamente,

entre outros benefícios.

O presente trabalho objetivou a criação de um sistema de controle climático para

locais fechados inteligente, de fácil interação, utilizando equipamentos de baixo custo e

ferramentas de desenvolvimento open source, criando assim um projeto acessível,

12

expansível e versátil, permitindo o gerenciamento via web de um ou mais ambientes com

diferentes condições.

13

2 DESENVOLVIMENTO

2.1 Fundamentação Teórica

2.1.1 Agricultura e a automação para ambientes fechados

Com os passar dos anos um dos setores fundamentais da produção vem se

adaptando e evoluindo juntamente com as novas tecnologias dispostas no mercado, a

agricultura. A sua expansão e evolução são devidas ao grande crescimento populacional, e

novos métodos descobertos pela ciência, bem como utilização de novos equipamentos

desenvolvidos pelas áreas de automação, elétrica, mecânica, entre outras.

A partir deste ponto a sua combinação se tornou vital para um melhor plantio, ou até

mesmo para um cuidado com flores exóticas, que exigem um ambiente rigorosamente

controlado. Devido a necessidade de um plantio de menor duração e melhor qualidade,

ambientes fechados e controlados foram desenvolvidos durante os anos, e evoluindo com o

avanço tecnológico.

A agricultura em si, não sofreu grandes mudanças em seu processo, apesar de

novas máquinas e ferramentas, o princípio ainda é o mesmo, plantar, cuidar, colher. Porém

para que exista uma melhora nesse ciclo, pode ser utilizado um ambiente fechado e

controlado. Com ele o agricultor, possui maior domínio sobre seu plantio, mantendo um

ambiente perfeito para qualquer tipo de vegetal que seja plantado.

O papel da automação neste cenário é o de controlar o ambiente vinte e quatro

horas, monitorando sensores, ligando equipamentos, e mantendo um histórico detalhado

para uma consulta posteriormente, assim podendo haver melhorias no processo.

Além de melhorar o plantio, e render boas colheitas, a combinação da automação

com a agricultura, gera um desenvolvimento sustentável, pois, através dela evita-se o

desperdício de matéria orgânica. Também economiza na quantidade de água utilizada,

podendo ser agua da própria chuva canalizada através de um sistema de calhas nas voltas

do ambiente.

Pode-se também utilizar placas para coletar a energia do Sol, gerando assim energia

para manter o sistema o mais limpo possível, e com energia gratuita. Com isso, o agricultor

terá melhores colheitas, uma economia, e evitara o desperdício e estará colaborando para

um desenvolvimento sustentável. (Mazoyer & Roudart, 2008).

14

2.1.2 Estufas Agrícolas

Quando se fala em estufa agrícola, logo se pensa em um ambiente planejado para o

cultivo de plantas. Santos (1998, p. 6) diz que,

...os processos fisiológicos das plantas são influenciados por condições microclimáticas como a temperatura, umidade, velocidade e concentração de dióxido de carbono do ar e intensidade da luz. No interior de uma estufa, as plantas estão sujeitas a uma temperatura superior, maior umidade, concentração de CO2 variáveis e menor luminosidade relativamente às condições no exterior.

Conforme cita o autor, existem grandes vantagens para se utilizar estufas para o

cultivo de plantas. Uma dessas vantagens é que torna-se possível manter níveis elevados

de concentração de dióxido de carbono perto das plantas favorecendo o seu crescimento

em torno de 20% a 30% dependendo do nível de concentração de dióxido de carbono no

interior da estufa.

Em relação a cobertura e a estrutura de uma estufa, a função mais importante é a

proteção das plantações contra as mais diversas condições climáticas como baixas

temperaturas, vento, precipitação e doenças. A construção também pode favorecer meios

de suporte a plantações e equipamentos.

Além disso, a cobertura utilizada também deve ser pensada de maneira que se utilize

o máximo possível de luz natural, entretanto é importante ressaltar também que a cobertura

deverá resistir a cargas elevadas como geada, chuva, frio, granizo, ou seja, más condições

climáticas.

No Brasil, grande parte dos agricultores projetam suas estufas com uma cobertura

denominado filme agrícola ou plástico agrícola dependendo da região (normalmente

transparente, de polietileno). O plástico apesar de ser mais barato é resistente tanto quanto

o vidro também utilizado em alguns locais no país, entretanto, o plástico não capta tanta luz

solar quanto o vidro, que capta em torno 90% de radiação do sol e não tem tanta perda de

temperatura quanto o plástico.

Segundo Neu (2014), o plástico agrícola foi criado para que durante o dia, a luz do

sol transpasse facilmente por suas estruturas. Durante o período da noite, as ondas de calor

que possuem frequências diferente da luz solar, emitidas no interior da estufa, são barradas,

pois o material também é opaco garantindo a permanência de grande parte do calor dentro

da estufa agrícola. (FIGURA 1).

15

FIGURA 1 - Estufa do tipo túnel com cobertura de plástico. (Fonte: ALVES, 2013)

2.1.3 Temperatura

A temperatura é um fator agro meteorológico que exerce influência sobre as

seguintes funções vitais das plantas: germinação, transpiração, respiração, fotossíntese,

crescimento, floração e frutificação (apud CARDOSO, 2010).

Todas as plantas possuem uma faixa de temperatura ideal para seu

desenvolvimento. Exposta diante de um valor de temperatura inadequado a planta pode

definhar podendo até a morrer.

O manejo para o controle dessa temperatura começa na escolha pelo tipo de

ambiente a ser utilizado, que está diretamente relacionado ao tipo de planta que será

cultivada, pois cada vegetal possui uma necessidade fisiológica diferente de temperatura,

que, conforme o ambiente utilizado pode encontrar maior ou menor dificuldade para ser

atingida.

Segundo o autor, pesquisas na área de horticultura indicam que o desenvolvimento e

crescimento da maioria das plantas respondem positivamente se expostas a uma

temperatura média durante um determinado período.

Como existe uma grande dificuldade em manter uma temperatura e umidade relativa

do ar fixa no interior de uma estufa, o que é feito é manter esses valores dentro de uma

faixa otimizada para a planta a ser cultivada.

2.1.4 Umidade

A umidade relativa do ar no interior das estufas está diretamente relacionada aos

valores de temperatura do ar externo. Como a umidade relativa do ar está inversamente

16

proporcional à temperatura externa, a umidade no interior tende a cair proporcionalmente

nos períodos em que as temperaturas tendem a ser mais elevadas no exterior das estufas.

Entretanto, no período noturno a umidade relativa tende a aumentar muito. Isso se

deve à queda de temperatura verificada no interior e a retenção de vapor d’água

acumulados pela cobertura.

“A umidade em ambientes protegidos existe sob duas formas: vapor d'água e evapotranspiração. O vapor d'água é resultante do resfriamento, até atingir o ponto de orvalho. A formação do orvalho na superfície das folhas e na face interna da superfície da cobertura é bastante comum em estufas e propicia condições favoráveis a infecção por patógenos.” (Guiselini, p.77 2002).

Assim como na temperatura, na manutenção da umidade relativa do ar também é

necessário o uso de controladores, pois através deste controle será possível combater os

fungos e bactérias patogênicas que tendem a surgir caso a umidade presente no ambiente

esteja distinta do padrão ideal.

2.1.5 Irrigação

Irrigação é uma técnica utilizada na agricultura que tem por objetivo o fornecimento

de água para as plantas na quantidade e no tempo adequado, assegurando a produtividade

e a sobrevivência da planta.

O principal benefício da irrigação controlada por um sistema é a economia de mão de

obra, além de melhorias consideráveis na produtividade das plantas cultivadas e diminuição

no desperdício de água.

O sistema de irrigação quando desenvolvido com exclusividade para uma planta,

tende a resultar em equipamentos práticos, fáceis de manusear e muito precisos, pois será

acionado exatamente a quantidade de água que essa planta necessitar e quando ela

necessitar.

O sistema de irrigação utiliza uma precisão na qual a conservação de energia e a economia de água podem alcançar uma eficiência através do aperfeiçoamento estratégico de controle. “Complementa a precipitação pluviométrica natural, e em certos casos, enriquece o solo com a deposição de elementos fertilizantes (Fertirrigação)” (apud Mera, p.13).

Com base nos conceitos de irrigação, seus sistemas abordam três tipos de irrigação

citado pelo autor.

17

Irrigação por superfície: Utilizam-se métodos de irrigação baseado em um sistema de

distribuição (tubulações e canais), até um ponto determinado de infiltração diretamente

sobre a superfície do solo.

Irrigação por aspersão: Esse método utiliza-se de um meio onde a água é aspergida

(borrifada) sobre uma superfície de um terreno.

Irrigação localizada: Neste caso o método utilizado é que a água é aplicada

diretamente sobre a raiz da planta com pouca intensidade, mas em grande frequência.

Para a escolha do tipo de irrigação deve-se levar em consideração o tipo de solo, a

topografia do terreno, a cultura (sensibilidade da cultura ao molhamento) e o clima. A partir

desses princípios analisar dentro do ciclo da planta a vazão e o volume total de água.

2.1.6 Iluminação

A radiação luminosa é essencial para o crescimento das plantas visto que afeta

diretamente a fotossíntese. (RAUL, 1998).

A maior fonte de iluminação para o desenvolvimento das plantas é a radiação solar,

porém ela não é constante, sofrendo variações de exposição devido a alterações climáticas

durante os dias, posição geográfica, mudança de estação, entre outros.

Para aproveitar o máximo possível da iluminação natural do sol as estufas são

cobertas por material transparente que permitem que a luz atravesse e alcance as plantas

sempre que estiver acessível. Para os casos em que for necessário a presença de luz e a

radiação solar não for suficiente, pode-se acionar uma iluminação artificial para substitui-la.

A utilização de lâmpadas de LED para este fim é cada vez maior devido a seu maior

potencial de iluminação, a maior vida útil das lâmpadas, menor necessidade de manutenção

e maior economia de energia em relação as lâmpadas incandescentes e fluorescentes

convencionais.

2.1.7 Plataforma Arduino

O Arduino é uma plataforma para prototipagem eletrônica de hardware livre. Suas

principais características são a acessibilidade, o baixo custo, a flexibilidade e a facilidade em

ser utilizado e programado.

18

FIGURA 2 - Arduino mega2560 (Superior)

FIGURA 3 - Arduino mega2560 (Inferior)

A plataforma possui um micro controlador aliado com outros componentes que

possibilita a programação e incorporação em outros circuitos. Sua placa permite o controle

de entrada e saída de dados através de portas IN e OUT analógicos e digitais que permitem

ler dados de sensores e ligar motores e lâmpadas.

O ambiente de desenvolvimento para Arduino é chamado de Arduino IDE e também

possui código livre e está disponível para diversas plataformas. Ele consegue se conectar

facilmente com a placa através da porta USB e permite a comunicação e o upload do

programa. Sua interface é bastante simples e enxuta, consistindo basicamente de um

console de textos onde é feita a programação e uma barra de ferramentas e menus onde

mais funcionalidades podem ser acessadas. A linguagem para programação utilizada é

chamada de Wiring baseada em C/C++, preservando sua sintaxe, mas sendo desenhada

para simplificar a programação para controles eletrônicos.

Com base nisso pode-se dizer que o Arduino é uma ferramenta adequada para a

criação e implementação de automações de baixo custo.

19

Módulo Relé

Este Módulo Relé permite uma integração com uma ampla gama de

microcontroladores como Arduino, AVR, PIC, ARM. A partir das saídas digitais pode-se,

através do relé, controlar cargas maiores e dispositivos como motores AC ou DC,

eletroímãs, solenoides e lâmpadas incandescentes. Possui 8 canais de 5v e cada um possui

um LED para indicar o estado da saída do relé.

Características:

Tensão de operação: 5VDC (VCC e GND)

Tensão de sinal: TTL 5VCD (IN1 e IN2)

Corrente típica de operação: 15~20Ma

Cada relé possui 3 terminais proporcionando 1 contato NA, 1 NF e o Comum

Contato do relé permite tensão de até 30 VDC a 10A ou 250VAC a 10ª

Tempo de resposta: 5~10ms

Indicador LED de funcionamento

4 Buracos de 3mm para fixação na extremidades da placa

Dimensões: 51mm x 38mm x 20mm

FIGURA 4 – Módulo relé

2.1.8 Sensores

2.1.8.1 DHT 11

O DHT11 é um sensor de temperatura e umidade que permite fazer leituras de

temperaturas entre 0 a 50ºC e umidade entre 20 a 90% UR. O elemento sensor de

temperatura é um termistor do tipo NTC e o sensor de Umidade é do tipo HR202. O circuito

20

interno faz a leitura dos sensores e se comunica a um micro controlador através de um sinal

em uma entrada serial.

Especificações do modelo:

Modelo: DHT11

Faixa de medição de umidade: 20 a 90% UR

Faixa de medição de temperatura: 0º a 50ºC

Alimentação: 3-5VDC (5,5V máximo)

Corrente: 200uA a 500mA, em stand by de 100uA a 150 uA

Precisão de umidade de medição: ± 5,0% UR

Precisão de medição de temperatura: ± 2.0 ºC

Tempo de resposta: 2s

Dimensões: 23 x 12 x 5mm (incluindo terminais)

FIGURA 5 - Sensor de temperatura DHT11

2.1.8.2 LDR (Fotocélula)

Sensor de Luminosidade LDR de 5mm de diâmetro. Este sensor altera a resistência

em seus terminais conforme a luminosidade a que é submetido.

Especificações do modelo:

Resistência quando há luz: ~1k Ohm

Resistência no escuro: ~10k Ohm

Tensão máxima: 150V

Potência máxima: 100mW

21

FIGURA 6 - Sensor de luz LDR

2.1.8.3 Sensor de Umidade do Solo (Higrômetro)

O sensor de umidade de solo (pode ser utilizado em terra, areia ou diretamente na

água), não necessita de nenhum componente externo. Esse sensor possui 3 saídas, sendo

um VCC (5V), outro GND (Terra) e outro SIG que é o pino de sinal analógico.

Quando as duas ponteiras metálicas entram em contato com o solo seco, a

resistência entre elas é muito grande, resultando o sinal próximo de 0V. Conforme o solo

fica úmido, a resistência entre as ponteiras diminui, fazendo com que o sinal se aproxime de

5V. O sensor detecta as variações de umidade no solo, sendo que quando o solo está seco

a saída do sensor fica em estado alto, e quando úmido em estado baixo.

Especificações do modelo:

Tensão de Operação: 3,3-5V

Dimensões da Sonda: 6x2 cm

FIGURA 7 – Sensor de umidade do solo (higrômetro)

22

2.1.9 JAVA Enterprise Edition

Java é uma linguagem de programação orientada a objetos desenvolvida na década

de 90 pela Sun Microsystems. As características que a levaram a se popularizar estão

relacionadas principalmente a sua alta portabilidade, facilidade de programação, grande

quantidade de bibliotecas de apoio e ao fato de ser gratuita.

A plataforma EE é voltada para a programação para servidores de softwares

corporativos, fornecendo API e ambiente de tempo de execução que incluem serviços de

rede e Web. Com a adição dessas bibliotecas são adquiridas funcionalidades baseadas

principalmente em componentes modulares executando em um servidor de aplicações.

Entre as ferramentas dessa plataforma, algumas devem ser destacadas ao se

trabalhar com uma aplicação voltada para Web, são elas JSP, Servlets e JDBC

JDBC é um conjunto de classes e interfaces escritas em Java que permitem a

comunicação e o envio de instruções para um banco de dados relacional. Cada tecnologia

de banco de dados possui um JDBC próprio para realizar essa comunicação.

JSP pode ser definido como uma tecnologia que provê uma maneira simples e

prática de desenvolver aplicações dinâmicas baseadas em web, sendo independente de

Plataforma de Sistema Operacional. Entre as vantagens da utilização do JSP podemos listar

a facilidade de trabalhar integrando código Java e HTML, a criptografia de dados e a

possibilidade de utilização de cookies e sessões.

Servlets é uma classe Java usada para estender as funcionalidades de um servidor.

Apesar dos servlets poderem responder a quaisquer tipos de requisições, eles normalmente

são usados para estender as aplicações hospedadas por servidores web, desta forma eles

podem ser imaginados como Applets Java que rodam em servidores ao invés de rodarem

nos navegadores web.

2.1.10 MySQL

O MySQL é um sistema gerenciador de banco de dados relacional de código aberto

usado na maioria das aplicações gratuitas para gerir suas bases de dados. O serviço utiliza

a linguagem SQL, que é a mais popular para inserir, acessar e gerenciar o conteúdo

armazenado.

23

Este banco de dados é conhecido por sua facilidade de uso, sua interface simples,

sua capacidade de rodar em vários sistemas operacionais e sua velocidade de execução.

Outro ponto forte positivamente é a sua segurança, pois entre as suas funcionalidades estão

diversas que permitem considerá-lo seguro, estável e integro, como backup e restore,

controle de usuários e acessos.

As principais vantagens da utilização do MySQL são o seu grande poder de

gerenciamento, facilidade de uso, a possibilidade de utilização livre, portabilidade em

diversas plataformas, compatibilidade com diversos drivers e módulos de interface para

diversas linguagens de programação.

2.2 Metodologia

A execução desse sistema tem por base a utilização da plataforma Arduino. Os

sensores captam os dados do ambiente e guardam em variáveis de controle. Utilizando

dessas variáveis e parâmetros de tempo o Arduino consegue verificar as necessidades do

ambiente e realizar a manutenção climática definindo o acionamento ou não dos

ventiladores, luzes, aquecimento e irrigação.

O controle realizado para manter as variáveis climáticas de umidade e temperatura

equilibradas no ambiente é com base em comparativos entre os valores lidos nos sensores

e os valores definidos pelo usuário. Para o ajuste de iluminação e irrigação é utilizado em

conjunto com a incidência identificada pelos sensores à manutenção do tempo de exposição

definido pelo usuário.

A interface com o usuário foi projetada um software web utilizando a linguagem Java.

Esse software realiza a comunicação com o controlador Arduino para enviar e receber os

parâmetros equivalentes às medições direcionadas ao ambiente de testes e permite ao

usuário administrar o ambiente de testes de forma remota através da Web.

Para realizar a prototipagem do sistema foi criado um ambiente de testes onde foram

feitas as leituras de dados, as análises e o controle climático. Esse ambiente foi projetado e

construído com a finalidade de avaliação, portanto já planejado levando em consideração

receber e abrigar os sensores e dispositivos a serem utilizados no controle, sendo criado em

módulos para facilitar a implementação e os testes necessários. Para fornecer a

alimentação elétrica foi utilizada uma fonte adaptada a partir de uma ATX de 400W que

disponibiliza sete saídas de 12V e três saídas 5V e uma extensão a partir de uma tomada

110V para energizar a fonte e o aquecedor.

24

Durante o desenvolvimento do trabalho houve a preocupação de utilizar apenas

ferramentas open source. O container Apache Tomcat foi utilizado para executar a aplicação

web que foi desenvolvida para interface do usuário, onde ele tem acesso à interação das

funções do sistema. O Notepad++ foi utilizado para criação das páginas web do sistema.

Por meio do software Eclipse foi criada a lógica de programação dos componentes

utilizados. O MySQL Workbench é o sistema gerenciador do banco de dados relacional que

foi utilizado para manter os dados cadastrados.

O Arduino IDE foi responsável por conter todo o desenvolvimento da lógica funcional

dos componentes que foram ligados ao Arduino, contendo assim todas as funções

executadas e o software Fritzing foi utilizado para a prototipação dos esquemas elétricos.

2.2.1 Circuitos Elétricos

A montagem dos circuitos pode ser dividida em duas configurações, os circuitos dos

sensores e o dos equipamentos.

Os sensores necessitam de 5V para operação e utilizam para isso a alimentação do

Arduino. As saídas 5V e GND do Arduino são conectadas em um protoboard e fios do tipo

jumper realizam a conexão entre a alimentação e aos pinos VCC e GND dos sensores,

respectivamente. A saída de dados dos sensores é conectada em uma porta analógica

ajustada para o tipo INPUT no Arduino, sendo que foi utilizada a porta A0 para o sensor

LDR, a porta A1 para o sensor de umidade do solo e a porta A8 para a ligação com o

DHT11. (FIGURA 8).

FIGURA 8 - Circuitos dos sensores

25

Os circuitos dos equipamentos utilizam o módulo de relé. Para conectar um

equipamento ao relé a saída de alimentação da fonte é ligada a um dos fios de entrada do

equipamento e o GND da fonte é conectado a entrada GND do relé, o outro fio de entrada

do equipamento é acoplado na porta normalmente aberta do relé.

O módulo é alimentado pelo Arduino nas saídas 5V e GND e cada um dos 8 relés

acoplados possui um pino de controle que é conectado em uma porta digital do Arduino

configurada como OUTPUT. Para ativar a saída correspondente do relé é necessário

colocar a porta no Arduino como LOW, assim um LED de sinalização é acionado no módulo

e o relé realiza o fechamento do circuito ativando o equipamento conectado a ele. (FIGURA

9).

FIGURA 9 - Conexões do módulo relé

2.2.2 Controle no Arduino

A plataforma Arduino funciona como principal controlador do sistema, ativando e

desativando os dispositivos e realizando a comunicação entre o sistema físico e a interface

do usuário.

O início do código se dá pela declaração das variáveis correspondentes aos pinos de

entrada dos sensores, aos pinos que ligam no relé e consequentemente ativam os

equipamentos, a variável auxiliar ref utilizada para controle do tempo e também as variáveis

correspondentes aos valores comparativos em relação aos fatores climáticos.

26

A função void setup() é iniciada ao ligar o Arduino, nela as variáveis declaradas

previamente recebem os valores correspondentes com a instalação, é inicializada a função

de comunicação serial. Todas as saídas correspondentes ao módulo relé são colocadas

como Output no modo HIGH, o que garante que elas iniciem com estado de desativadas.

Na função loop() é onde ocorre a lógica principal do sistema. A função é recorrente,

nela ocorrem as leituras constantes dos sensores, os testes comparativos que definem a

ativação ou desativação dos equipamentos instalados no ambiente e a comunicação serial

entre a placa e o servidor.

Para o controle de temperatura é realizada a leitura da temperatura do ambiente em

graus celsius através do sensor DHT11, utilizando o método de sua biblioteca

DHT.temperature(). Caso a temperatura esteja abaixo do valor ideal do ambiente ele liga a

resistência utilizada para aquecimento. Caso a temperatura se encontre maior ou igual o

aquecedor é desligado e os ventiladores centrais permanecem realizando a manutenção do

ambiente. A estabilização do ambiente na temperatura necessária varia de acordo com a

diferença entre o valor inicial e o valor ideal, sendo que quanto maior for essa diferença,

maior é o tempo necessário para atingir o equilíbrio. (FIGURA 10).

FIGURA 10 - Gráfico demonstrativo da estabilização de temperatura

Para controlar a umidade, assim como a temperatura é utilizado o sensor DHT11,

dessa vez é utilizado o método DHT.humidity() de sua biblioteca que retorna o valor em

porcentagem da umidade do ar. O umidificador é acionado caso a leitura mostre um valor

abaixo do valor apropriado definido pelo usuário e desativado em caso da umidade se

encontrar acima desse valor. A umidade também necessita de um tempo para se estabilizar

25

26

27

28

29

30

31

32

11

:43

:39

11

:55

:16

12

:14

:29

12

:17

:04

12

:30

:22

12

:36

:03

12

:45

:40

13

:00

:56

13

:03

:47

13

:22

:00

13

:30

:02

13

:32

:42

13

:35

:33

13

:51

:36

14

:00

:17

14

:02

:18

14

:04

:48

14

:11

:39

14

:14

:20

14

:54

:10

16

:43

:08

TEM

PER

ATU

RA

TEMPO

Variação de Temperatura

27

com o valor adequado, com esse tempo sendo variado de acordo com a diferença entre os

valores inicias e o valor adequado. (FIGURA 11).

FIGURA 11 - Gráfico de variação de umidade

A manutenção de irrigação tem por base a utilização do tempo como variável de

controle, onde o irrigador é acionado a cada intervalo de tempo determinado pelo usuário.

Um sensor realiza a leitura do valor em porcentagem da umidade do solo para mostrar ao

usuário e gravar nos estados de ambiente permitindo assim que o usuário verifique os

tempos em que o solo se encontra seco ou molhado para com isso facilitar que ele defina

um intervalo mais preciso entre cada irrigação.

O sensor LDR é utilizado para verificar a incidência de luz externa que atinge o

ambiente. A leitura do sensor é realizada por meio de entrada analógica e mapeada em uma

escala de 0 a 100, onde quanto maior o valor atingido maior é a incidência de luz. O controle

de iluminação é baseado em três variáveis de tempo, que representam o dia, a noite e o

tempo em que ele identifica iluminação externa com incidência mínima de acordo com o

valor definido pelo usuário. Além dessas variáveis de controle interno, uma outra é definida

pelo usuário que representa a quantidade de horas mínima necessária de iluminação. Ao

iniciar o período definido como noturno, é realizada a comparação entre o tempo necessário

de iluminação e a variável que coletou o tempo de exposição. Caso essa diferença seja

maior que 0, a iluminação artificial é acionada durante o tempo obtido no resultado dessa

comparação. Ao finalizar o tempo definido como noturno a variável de controle é zerada

novamente para que o ciclo seja reiniciado.

32

33

34

35

36

37

38

39

40

41

42 1

0:4

2:4

0

11

:12

:50

11

:53

:04

12

:54

:09

12

:59

:11

13

:04

:12

13

:15

:16

13

:20

:18

13

:24

:19

13

:28

:20

13

:32

:22

13

:35

:23

13

:41

:25

13

:49

:27

13

:54

:29

13

:59

:31

14

:03

:32

14

:08

:34

14

:18

:37

14

:23

:39

14

:28

:40

UM

IDA

DE

TEMPO

Variação de Umidade

28

2.3 Discussão e Resultados

2.3.1 Maquete de testes

Para realizar os testes necessários em função de verificar o devido funcionamento do

sistema foi criado um ambiente de testes, que consiste em uma construção de uma maquete

em escala menor que simule uma estufa real. Para isso foram utilizados uma base principal

de MDF de 15 mm de espessura, no formato de um retângulo com 55 cm de largura por 75

cm de comprimento. Sob essa base foi colocada um suporte do mesmo material com

dimensões menores para servir de sustentação, que também é aproveitado para alocar os

equipamentos de controle utilizados para acionar os sensores e outros aparelhos

necessários para realizar a manutenção do estado simulado. (FIGURA 12).

FIGURA 12 – Base e suporte dos equipamentos do ambiente

Sobre a base principal foi criado um ambiente fechado utilizando acrílico com 3 mm

de espessura. A maquete possui 55 cm de comprimento por 35 cm de largura e 37 cm de

altura e abriga a estrutura do sistema que modifica os fatores ambientais. (FIGURA 13).

29

FIGURA 13 – Ambiente desenvolvido para simulação

Sob o ambiente, na base de apoio, foram colocados os equipamentos utilizados no

controle, sendo eles a placa Arduino, um módulo relê de 8 saídas, um protoboard auxiliar e

a fonte de alimentação. O ambiente foi projetado para facilitar a passagem de fios de

alimentação, da mangueira de irrigação, e da colocação dos equipamentos e sensores de

forma a obter uma base de testes sólida e prática para mudanças e adaptações (FIGURA

14).

FIGURA 14 – Base do ambiente de testes

30

No ambiente de testes foram colocados o sensor DHT11, o sensor de umidade do

solo e a fotocélula para realizarem as medições de temperatura, umidade do ar, umidade do

solo e luminosidade, e os equipamentos de controle, sendo eles duas lâmpadas halógenas

de 50 watts utilizadas para realizar a iluminação artificial, dois mini ventiladores de 12V que

realizam a manutenção da temperatura do ambiente, um umidificador 5V para controle de

umidade do ar, uma bomba de água de 12V que realiza a irrigação no canteiro usado para

simulação e uma resistência 110V que é utilizada para o aquecimento do

ambiente.(FIGURA 15).

FIGURA 15 – Instalação de testes completa

2.3.2 Utilização da Interface WEB

Para entrar no sistema o usuário necessita entrar no endereço IP do servidor, a

primeira tela é a tela de autenticação onde o usuário insere um login e uma senha pré

cadastrados para inicializar o sistema. (FIGURA 15).

31

FIGURA 16 - Tela de login do sistema

Ao verificar a autenticação o sistema identifica o tipo de usuário, sendo que dois tipos

estão disponíveis, o administrador, que é o cadastro com permissões de realizar novos

cadastros de ambiente, equipamentos e usuários e o espectador, que é o usuário limitado

que pode apenas entrar nas telas de controle, relatório e monitoramento dos ambientes pré

cadastrados. (FIGURA 16).

FIGURA 17 - Tela padrão do espectador

O administrador além de possuir as mesmas funções de um espectador tem também

a permissão para incluir, alterar e excluir qualquer conteúdo do sistema. A função dele é

fazer a instalação e cadastros de todos os equipamentos e ambientes e a ele é permitido

32

também cadastrar novos usuários que serão responsáveis pelo monitoramento de outros

ambientes como mostrado na figura 18.

FIGURA 18 - Tela padrão do administrador

A página de monitoramento é utilizada para demonstrar todos os ambientes que

estão cadastrados no sistema, clicando sobre o ambiente são exibidos todos os valores e

detalhes referentes ao ambiente tal como temperatura, umidade, iluminação, ventilação,

irrigação e umidade do solo. (FIGURA 19).

FIGURA 19 - Tela de monitoramento

A página de controle permite ao usuário alterar os valores de manutenção do

ambiente, nela é possível alterar cada uma das variáveis de controle individualmente. Ao

33

clicar em alterar o novo valor é enviado para o servidor que atualiza o controlador Arduino,

que passa a operar tendo esse valor como base. (FIGURA 20).

FIGURA 20 – Tela de controle

Na página de relatório o usuário determina o ambiente que deseja exibir, a data

inicial e final. Após clicar em “Gerar Relatório” serão exibidos todos os estados

armazenados no banco de dados que se encontram entre as datas estipuladas. (FIGURA

21).

FIGURA 21 – Parâmetro para relatórios

34

FIGURA 22 - Tela de resultado do relatório

A tela de equipamentos exibe todos os equipamentos do ambiente que estão

cadastrados. Ela também possui o botão adicionar equipamento que leva para a tela com o

formulário para adição de um novo componente. (FIGURAS 23 e 24).

FIGURA 23 - Tela de equipamentos

35

FIGURA 24 - Tela de cadastro de equipamentos

A tela ambiente segue os padrões da tela de equipamentos, listando os ambientes já

cadastrados, os botões editar e excluir cada um e apresentando também a possibilidade de

adicionar um novo ambiente, clicando no botão que redireciona para a página de cadastro,

onde o usuário entra com o novo ambiente e os valores padrões correspondentes. (FIGURA

25).

FIGURA 25 - Tela de exibição dos ambientes

36

FIGURA 26 - Tela de cadastro de ambiente

A tela de usuário também segue o padrão anterior, exibindo os usuários cadastrados,

os botões editar e excluir e a possibilidade de cadastrar novos usuários. (FIGURA 27).

FIGURA 27 - Tela de usuários

37

FIGURA 28 - Tela de cadastro de usuário

2.3.3 Estrutura de Dados

A estrutura dos dados armazenados segue o diagrama representado na FIGURA 29,

esses dados são armazenados e coletados no servidor pelo sistema. São utilizados para

gravar no banco de dados todos os usuários, ambientes e equipamentos cadastrados e os

estados do ambiente e dos equipamentos nos tempos definidos.

As tabelas statusequipamento e statusambiente armazenam o dia e a hora

correspondentes aos estados e os valores das variáveis de controle de cada um e são

coletadas pelo sistema ao gerar um relatório de estados. As tabelas usuário, ambiente e

equipamento armazenam os dados inseridos nos formulários de cadastro do sistema.

O sistema também utiliza os dados da tabela usuario para validar a autenticação e

identificar o tipo de acesso para liberação das telas.

38

Figura 29 - Modelagem do Banco de Dados

2.3.4 Possibilidades de Expansão

Para realizar a adaptação do sistema criado para um ambiente real de cultivo são

necessários alguns ajustes na estrutura física criada. Para uma estrutura maior, são

necessários sensores adaptados para realizar captações mais precisas e redundância das

leituras para que não haja espaços fora do alcance de captação. Os equipamentos de

alteração climática como ventiladores, lâmpadas e umidificadores de maior porte podem

seguir a mesma estrutura elétrica criada no ambiente de testes, utilizando o mesmo módulo

relé para o controle dos equipamentos, modificando apenas a origem de sua alimentação

para uma que forneça a potência adequada para operação.

Existem também outros sensores e equipamentos que permitiriam adicionar novas

funcionalidades, utilizando como base a plataforma Arduino e o sistema criado. Alguns

recursos novos como alarme para alertar situações adversas de estado do ambiente,

controle de nível de água no reservatório, controle de abertura de portas e janelas, ajuste de

incidência de iluminação, entre outros, de acordo com as necessidades especificas de cada

ambiente.

Existe ainda a possibilidade de realizar a comunicação entre a placa Arduino e o

servidor do software por meio de outras tecnologias, como ethernet ou mesmo redes sem

fios como Wi-fi e GSM, assim, com adaptações no software seria possível realizar o controle

de diversos ambientes diferentes sem a necessidade de uma conexão local direta entre

eles.

39

Essas funcionalidades citadas não foram implementadas no protótipo construído

devido ao custo necessário para implementação e da dificuldade de realizar testes em

ambientes reais.

40

3 CONCLUSÃO

O presente trabalho buscou a criação de um sistema de controle de fatores

climáticos em um ambiente de testes construído com a finalidade de simular um ambiente

real em escala menor e o desenvolvimento de um software próprio para interação com o

usuário por meio de uma interface web utilizando ferramentas open source e equipamentos

de baixo custo.

A construção do ambiente, a montagem dos circuitos, a programação do controlador

e a criação do software integraram diversos conteúdos abordados durante o curso

colocando-os em prática em um projeto único.

Os resultados obtidos foram satisfatórios e mostraram a possibilidade da

implementação desse projeto para automatizar um ambiente real, permitindo oferecer um

sistema com baixo custo que gera eficiência e economia para o usuário.

41

4 REFERÊNCIAS BIBLIOGRÁFICAS

ALCANTRA, Éverthon de Freitas. Projeto e Desenvolvimento de Sistema Automatizado para Climatização de Estufas para Plantas. 2011. 62 p. Trabalho de Conclusão de curso – Curso de Engenharia Elétrica da Unidade Acadêmica da Área de Exatas da Universidade de Uberaba, Uberlândia.

ALVES, Joaquim da C. Jr.; LIMA, Antônio F. Jr.; SILVA, Marciana Cristina, MORAES, Elvinicio O. Aspectos Iniciais da Produção de Mudas de Eucalipto em Ambiente Protegido. 2013. 234 p.

Arduino Mega 2560, Disponível em: <http://arduino.cc/en/Main/arduinoBoardMega2560.html> Acesso em: 22 Agosto 2014.

CARDOSO, Marcelo Aparecido. Controle Automatizado para Ambientes Protegidos. 2010. 42f. Trabalho de Conclusão de curso – Curso de Engenharia de Computação da Unidade Acadêmica da Área de Exatas da Universidade São Francisco, Itatiba.

GUISELINI, C.; Microclima e Produção de Gérbera em Ambientes Protegidos com Diferentes tipos de Cobertura - Dissertação (Mestrado). 2002. 71f. Escola Superior de Agricultura Luiz de Queiroz da Universidade de São Paulo- ESALQ/USP, Piracicaba. Histórico da agricultura brasileira. Disponível em <http://ambientes.ambientebrasil.com.br/agropecuario/historico_da_agricultura/historico_da_agricultura_brasileira.html> Acesso em: 05 Agosto 2014.

Java, Disponível em: <http://www.oracle.com/technetwork/java/javaee/overview/index.html> Acesso em: 08 Novembro 2014.

MAZOYER, Marcel; ROUDART, Laurence. História das agriculturas no mundo: Do Neolítico à crise contemporânea. 1.ed. São Paulo: Unesp, 2008. 567 p.

MERA, Lucas de Paula. Tipos de Irrigação, Disponível em: <http://www.ebah.com.br> Acesso em: 06 Junho 2014.

Mysql, Disponível em: <http://www.mysql.com> Acesso em: 25 Setembro 2014.

NEU, Regis Eder. Organização Cidade sem Fome, Disponível em: <http://cidadessemfome.org/pt-br/estufas-agricolas-construcao-e-metodologia> Acesso em: 03 Junho 2014.

PURQUERIO, L. F. V; TIVELLI, S. W. Manejo do Ambiente em Cultivo Protegido. 2009. 11f. Pesquisadores do Instituto Agronômico IAC, Centro de Horticultura, Campinas, São Paulo.

SANTOS, Raul M. P. Morais. Estação Multissensorial para Estufas Agrícolas. 1998. 212 p. Dissertação de Mestrado em Eletrônica Industrial da Universidade do Minho, Braga, Portugal.

Sensores, Disponível em: <http://www.filipeflop.com> Acesso em 05 Outubro 2014.

42

APÊNDICE A - Código Arduino

#include <dht.h> // Inclui a biblioteca do sensor DHT int target = 5000; dht DHT; // Cria um objeto da classe dht // Declara variaveis de tempo de controle do arduino long ref = 0; long start = 0; long daystart = 0; long daymid = 0; long iluminacao = 0; long aux = 0; int ambiente; // Declara as variaveis base para controle do ambiente int comp_umidade; int comp_temperatura; int comp_solo; int comp_luz; long tempoluz; long temposolo; // Declara as variaveis para idendificação dos pinos de entrada int entrada_dht=A8; int entrada_higrometro=A1; int entrada_fotocelula=A0; // Declara as variaveis para idendificação dos pinos de saida int saida_aquecedor; int saida_lampada1; int saida_lampada2; int saida_fan1; int saida_umidificador; int saida_irrigador; void setup() { Serial.begin(9600); // Inicializa serial com taxa de transmissão de 9600 bauds ambiente=1; Setpoint=comp_temperatura; myPID.SetOutputLimits(0, 30); myPID.SetMode(AUTOMATIC); windowStartTime = millis(); ref=millis(); start=millis(); aux=millis(); daystart=millis(); daymid=daystart+720000; //////////////////// DECLARAÇÃO DOS PINOS DOS EQUIPAMENTOS ////////////////////// saida_aquecedor=4; saida_umidificador=8; saida_lampada1=11; saida_lampada2=10; saida_fan1=9; saida_irrigador=7;

43

////////////////////////// DECLARAÇÃO DOS PINOS COMO SAÍDA ////////////////////// pinMode(saida_aquecedor,OUTPUT); pinMode(saida_umidificador,OUTPUT); pinMode(saida_lampada1,OUTPUT); pinMode(saida_lampada2,OUTPUT); pinMode(saida_fan1,OUTPUT); pinMode(saida_irrigador,OUTPUT); ///////////////////////////////////////////////////////////////////////////////// ////////////////////////// INICIANDO OS PINOS COMO DESLIGADOS /////////////////// digitalWrite(saida_aquecedor,HIGH); digitalWrite(saida_umidificador,HIGH); digitalWrite(saida_lampada1,HIGH); digitalWrite(saida_lampada2,HIGH); digitalWrite(saida_fan1,HIGH); digitalWrite(saida_irrigador,HIGH); ////////////////////////////////////////////////////////////////////////////////// } void loop() { if(millis() - ref >= 5000) // Define tempo de execução { ///////////////////////////////// LEITURA DOS DADOS ///////////////////////////////// DHT.read11(entrada_dht); // Chama método de leitura da classe dht no pino declarado double temperatura = DHT.temperature; double umidade = DHT.humidity; int solo = analogRead(entrada_higrometro); // Realiza a leitura do sensor de umidade do solo solo = map(solo, 1023, 0, 100, 0); // Transforma a leitura em porcentagem int luz = analogRead(entrada_fotocelula); // Realiza a leitura da Fotocélula luz = map(luz, 1023, 0, 100, 0); // Transforma a leitura em porcentagem ///////////////////////////////// ESCRITA SERIAL ///////////////////////////////////// // Exibe na serial o valor de umidade, temperatura, umidade do solo e luz Serial.print("u"); Serial.print(umidade); Serial.print("u///"); Serial.print("t"); Serial.print(temperatura); Serial.print("t///"); Serial.print("s"); Serial.print(solo); Serial.print("s///"); Serial.print("l"); Serial.print(luz); Serial.print("l///"); Serial.println(""); //////////////////////////////// FUNÇÕES CONDICIONAIS ////////////////////////////////// if (comp_temperatura>temperatura){ digitalWrite(saida_aquecedor,LOW); } else {

44

digitalWrite(saida_aquecedor, HIGH); } digitalWrite(saida_fan1,LOW); if (comp_umidade>umidade){ digitalWrite(saida_umidificador,LOW); } else { digitalWrite(saida_umidificador, HIGH); } if (comp_luz<luz){ iluminacao=iluminacao+(millis()-aux); } if (daymid<=millis()){ if (daystart<daymid) {daystart=daymid+720000} if (tempoluz-iluminacao>0){ digitalWrite(saida_lampada1,LOW); digitalWrite(saida_lampada2,LOW); } else { digitalWrite(saida_lampada1,HIGH); digitalWrite(saida_lampada2,HIGH); } } if (daystart<=millis()) { if(daymid<daystart){ daymid=daystart+720000 digitalWrite(saida_lampada1,HIGH); digitalWrite(saida_lampada2,HIGH); } } if (millis()-start>=temposolo){ digitalWrite(saida_irrigador,LOW); delay(500); digitalWrite(saida_irrigador,HIGH); start=millis(); } else { digitalWrite(saida_irrigador,HIGH); } /////////////////////////////////// LEITURA SERIAL ///////////////////////////////////// if (Serial.available()){ switch(Serial.read()){ case 'U': comp_umidade=Serial.parseInt(); case 'T': comp_temperatura=Serial.parseInt(); case 'S': comp_solo=Serial.parseInt();

45

case 'L': comp_luz=Serial.parseInt(); case 'I': temposolo=Serial.parseInt(); case 'P': tempoluz=Serial.parseInt(); } } ///////////////////////////////////////////////////////////////////////////////////////// ref = millis(); // Atualiza a referência de tempo } } }

} private CommPortIdentifier getPortIdentifier(String portName) { Enumeration portList = CommPortIdentifier.getPortIdentifiers(); Boolean portFound = false; while (portList.hasMoreElements()) { CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { System.out.println("Available port: " + portId.getName()); if (portId.getName().equals(portName)) { System.out.println("Found port: "+portName); portFound = true; return portId; } } } return null; } public void serialEvent(SerialPortEvent event) { switch (event.getEventType()) { case SerialPortEvent.BI: case SerialPortEvent.OE: case SerialPortEvent.FE: case SerialPortEvent.PE: case SerialPortEvent.CD: case SerialPortEvent.CTS: case SerialPortEvent.DSR: case SerialPortEvent.RI: case SerialPortEvent.OUTPUT_BUFFER_EMPTY: break; case SerialPortEvent.DATA_AVAILABLE: BufferedReader portReader; try { portReader = new BufferedReader(new InputStreamReader(serialPort.getInputStream())); String line = portReader.readLine(); System.out.println(line); java.util.Date dataUtil = new java.util.Date(); java.sql.Date dataSql = new java.sql.Date(dataUtil.getTime()); java.sql.Time timeSql = new java.sql.Time(dataUtil.getTime());

46

String u = line.substring(1, 7); String t = line.substring(8, 18); String s = line.substring(19, 26); String l = line.substring(27, 32); u=removeChar(u, '/'); u=removeChar(u, 'u'); t=removeChar(t, '/'); t=removeChar(t, 't'); s=removeChar(s, '/'); s=removeChar(s, 's'); l=removeChar(l, '/'); l=removeChar(l, 'l'); System.out.println(u); System.out.println(t); System.out.println(s); System.out.println(l); setUmidade(Double.valueOf(u)); setTemperatura(Double.valueOf(t)); setSolo(Integer.valueOf(s)); setLuz(Integer.valueOf(l)); if((dataUtil.getTime()-minutoscontrole)/1000/60>=1){ long temp=(dataUtil.getTime()-minutoscontrole)/1000/60; System.out.println(temp); ArrayList<StatusAmbiente> stats = new ArrayList<StatusAmbiente>(); StatusAmbienteDAO statusDAO = new StatusAmbienteDAO(); stats=statusDAO.consultaStatus(); int i=0; for (StatusAmbiente st:stats){ if(st.getIdstatus()>i) i=st.getIdstatus(); } AmbienteDAO ambienteDAO = new AmbienteDAO(); Ambiente amb = ambienteDAO.consultaAmbiente(ambienteid); amb.setTemperaturaambiente(temperatura); amb.setUmidadeambiente(umidade); amb.setLuzambiente(luz); amb.setSoloambiente(solo); StatusAmbiente status = new StatusAmbiente(i+1,dataSql,timeSql,amb); StatusAmbienteDAO statusAmbienteDAO = new StatusAmbienteDAO(); statusAmbienteDAO.gravaStatusAmbiente(status); minutoscontrole=dataUtil.getTime(); System.out.println("Entrou no IF "); } } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } break; }

47

} public String removeChar(String s, char c) { String r = ""; for (int i = 0; i < s.length(); i ++) { if (s.charAt(i) != c) r += s.charAt(i); } return r;

} public void serialWrite(String write) throws PortInUseException, UnsupportedCommOperationException{ String portName = getPortNameByOS(); CommPortIdentifier portId = getPortIdentifier(portName); if(portId != null) { try { outputStream = serialPort.getOutputStream(); if(write.equals(null)!=true){ byte[] bytes = write.getBytes(CHARSET); outputStream.write(bytes); outputStream.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace();

} } } }