Post on 30-Nov-2018
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
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();
} } } }