Modelo de Tese

Propaganda
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA
CATARINENSE – CAMPUS SOMBRIO.
JADSON DA SILVA DE OLIVEIRA
JHONATAN MATOS DE SOUZA
SMART FARM – MONITORAMENTO DE TEMPERATURA E UMIDADE DE UMA
PEQUENA LAVOURA DE MARACUJÁ
Sombrio (SC)
2013
JADSON DA SILVA DE OLIVEIRA
JHONATAN MATOS DE SOUZA
SMART FARM MONITORAMENTO DE TEMPERATURA E UMIDADE DE UMA
PEQUENA LAVOURA
Trabalho apresentado como requisito parcial para
obtenção do título de Tecnólogo em Redes de
Computadores, do Instituto Federal de Educação
Ciência
e
Tecnologia
Catarinense
–
Campus
Sombrio.
Orientador: Prof. Daniel Fernando Anderle
Coorientador: Prof Marco Antonio Silveira de Souza
Sombrio (SC)
2013
JADSON DA SILVA DE OLIVEIRA
JHONATAN MATOS DE SOUZA
SMART FARM MONITORAMENTO DE TEMPERATURA E UMIDADE DE UMA
PEQUENA LAVOURA
Esta
produção
Técnico-científica
foi
julgada
adequada para obtenção do título de Tecnólogo
em Redes de Computadores e aprovada pelo
Curso de Tecnologia em Redes de Computadores
do Instituto Federal de Educação, Ciência e
Tecnologia Catarinense – Campus Sombrio
Área de Concentração: Redes de Sensores
Sombrio, 07 de Dezembro de 2013.
Prof. Daniel Fernando Anderle
Instituto Federal Catarinense – Campus Sombrio
Orientador
Prof. Ms. Jéferson Mendonça de Limas
Instituto Federal Catarinense – Campus Sombrio
Membro da banca
Prof. Ms. Gerson Luis da Luz
Instituto Federal Catarinense – Campus Sombrio
Membro da banca
DEDICATÓRIA
JADSON DA SILVA DE OLIVEIRA
Dedico a minha família e em especial aos meus
pais Jailson e Oneide; minha irmã Jadna;
minha namorada Géssica.
DEDICATÓRIA
JHONATAN MATOS DE SOUZA
Dedico a minha família e em especial aos meus
pais e minha esposa Lidiane que me apoiou
integralmente em todos os momentos.
AGRADECIMENTOS
JADSON DA SILVA DE OLIVEIRA
Primeiramente agradeço a Deus por ter me proporcionado estar aqui,
completando mais esta etapa em minha vida.
Agradeço a minha família por sempre me incentivar nos estudos, estando
sempre ao meu lado me ajudando e apoiando.
Agradeço a minha namorada Géssica Bitencourt, pela compreensão e por me
apoiar em todos os momentos.
Agradeço ao meu amigo Jhonatan Matos, pela parceria na elaboração deste
trabalho.
Agradeço ao orientador Daniel Anderle e o Coorientador Marco Antônio, por
contribuir com seus conhecimentos para a conclusão deste.
AGRADECIMENTOS
JHONATAN MATOS DE SOUZA
Agradeço a Deus por ter me dado à oportunidade e força. Aos familiares, em
especial minha esposa Lidiane, pela compreensão nas horas de ausência. Aos professores, em especial ao orientador Daniel Fernando Anderle e ao coorientador Marco Antônio Silveira de Souza pela dedicação em nos ensinar e por contribuir com
seus conhecimentos para a conclusão deste. Ao meu amigo e colega Jadson de Oliveira pela parceria na elaboração do trabalho. Ao amigo André Olive pela contribuição dada ao projeto.
RESUMO
A tecnologia da informação vem sendo aplicada nas mais diversas áreas. A
tecnologia de redes de sensores sem fio vem crescendo nos últimos anos, com
possibilidade de monitorar e gerenciar alguns objetos e situações presentes no
cotidiano. O presente trabalho objetiva criar um protótipo baseado no conceito de
Smart Farms, ou seja, fazendas inteligentes. O protótipo apresentado neste trabalho
tem como foco utilizar a tecnologia da informação a favor da agricultura de pequenas
propriedades, visto que hoje se perde grande parte das safras por não se ter um
controle relacionado a informações climáticas. Este protótipo irá monitorar a
temperatura e a umidade de uma pequena propriedade que possui o cultivo de
maracujá. As informações colhidas desta plantação serão disponibilizadas em uma
página Web para que o agricultor possa ter acesso de maneira simples a estes
dados durante 24 horas. Este mecanismo foi desenvolvido com auxilio de algumas
tecnologias como: microcontrolador Arduino, padrão de rede Zigbee e módulos Xbee
que implementam o padrão Zigbee. Serão utilizadas também algumas linguagens de
programação como: C/C++, Java, HTML, PHP e Java Script.
Palavras-chave: Sensores; Arduino; Zigbee; Monitoramento; Maracujá.
ABSTRACT
Information technology has been applied in several areas . The technology of
wireless sensor networks has been growing in recent years , with the possibility to
monitor and manage some objects and situations in the everyday . This paper aims
to create a prototype based on the concept of Smart Farms , ie smart farms . The
prototype presented in this paper focuses on using information technology in support
of smallholder agriculture, since most of the harvest is lost today because they did
not have an information related to climate control. This prototype will monitor the
temperature and humidity of a small property that has the cultivation of passion fruit .
The information gathered from this planting will be made available on a Web page so
that the farmer can simply access to these data for 24 hours. This mechanism was
developed with the help of some technologies such as Arduino microcontroller ,
standard Zigbee network and XBee modules that implement the Zigbee standard .
Will be also used some programming languages such as C / C + + , Java , HTML ,
PHP and JavaScript .
Key words: Sensors; Arduino; Zigbee; Monitoring; Passion Fruit.
LISTA DE TABELAS
Tabela 1 - Tecnologias Wi-fi ...................................................................................... 26
Tabela 2 - Faixa frequência do padrão Zigbee no mundo ......................................... 29
Tabela 3 - Diagrama de pinos dos módulos Xbee..................................................... 36
11
LISTA DE FIGURAS
Figura 1 - Oscilação da área colhida com maracujá no Brasil................................... 21
Figura 2 - Arquitetura do padrão Zigbee em camadas .............................................. 28
Figura 3 - Posicionamento das tecnologias wirelles .................................................. 29
Figura 4 - Topologias de rede Zigbee ....................................................................... 32
Figura 5 - Módulos XBee da Digi International com diferentes antenas .................... 35
Figura 6 - Distribuição de pinos no dispositivo XBee. ............................................... 36
Figura 7 - Xbee Explorer ........................................................................................... 40
Figura 8 - Interface gráfica do Arduino 1.0.5 ............................................................. 42
Figura 9 - Modelo Arduino ......................................................................................... 43
Figura 10 - Pinos de alimentação do Arduino Uno .................................................... 44
Figura 11 - Sensor DHT22 ........................................................................................ 47
Figura 12 - Tags ........................................................................................................ 51
Figura 13 - Conversor de nível lógico ........................................................................ 54
Figura 14 - Breadboard ............................................................................................. 55
Figura 15 - Principais diferenças entre os dois sensores .......................................... 55
Figura 16 - Esquema Elétrico do protótipo ................................................................ 56
Figura 17 - Prótotipo.................................................................................................. 57
Figura 18 - Código fonte ............................................................................................ 59
Figura 19 - Interface XCTU ....................................................................................... 60
Figura 20 - Ide Eclipse .............................................................................................. 62
Figura 21 - Interface Mysql Work Bench ................................................................... 63
Figura 22 - Plantação e nós da rede ......................................................................... 65
Figura 23 - Primeiro dia de teste ............................................................................... 66
Figura 24 - Interface Web .......................................................................................... 67
Figura 25 - Interface Web 2 ....................................................................................... 67
LISTA DE SIGLAS
ACK - Acknolegment
AODV - Abstract the Ad Hoc On-Demand Distance Vector
APS - Application Support Sublayer
API - Application Programming Interface
dBm - Decibel Miliwatt
DCL - Data Control Language
DDL - Data Definition Language
DML - Data Manipulation Language
DQL - Data Query Language
EEPROM - Eletrically Erasable Programmable Read-Only Memory
EMBRAPA - Empresa Brasileira de Pesquisa Agropecuária
FAO - Food and Agriculture Organization of the United Nations
FFD - Full Function Devices
GHZ - Giga Hertz
GND - Ground
HZ - Hertz
IBGE - Instituto Brasileiro de Geografia e Estatística
IDE - Integrated Development Environment
IEEE - Institute Of Electric And Electronic Engineers
IP - Internet Protocol
ISO - International Organization for Standardization
KB - Kilobyte
KBPS - Kilobytes Per Second
LED - Light Emitting Diode
OSI - Open System Interconnection
M - Metros
MA - Miliampère
MAC - Media Access Control
MY – Endereço Fonte
MW - Miliwatt
NWR - Zigbee Network Layer
OSI - Open Systems Interconnection
RDF - Reduced Function Device
RX - Receiver
SGBD - Sistema de Gerenciamento de Banco de Dados
SQL - Structured Query Language
SRAM - Static Random Access Memomy
TCP/IP - Transmission Control Protocol/Internet Protocol
TX - Transmitter
USB - Universal Serial Bus
V - Volts
WPAN - Wireless Personal Area Networks
ZDO - Zigbee Device Object
SUMÁRIO
1 INTRODUÇÃO ..................................................................................................... 16
2 OBJETIVOS......................................................................................................... 18
2.1 Objetivo Geral .................................................................................................... 18
2.2 Objetivos Específicos ........................................................................................ 18
3 REFERENCIAL TEÓRICO .................................................................................. 19
3.1 Smart Farm ........................................................................................................ 19
3.2 O Cultivo do Maracujá ....................................................................................... 20
3.2.1 Importância econômica ................................................................................ 22
3.2.2 As condições climáticas e o desenvolvimento de doenças no cultivo do
maracujá................................................................................................................... 22
3.3 Redes Sem Fio .................................................................................................. 24
3.3.1 Padrões de comunicação sem fio................................................................ 25
3.4 O padrão Zigbee ................................................................................................ 26
3.4.1 Surgimento do Zigbee .................................................................................. 26
3.4.2 Arquitetura e funcionamento do Zigbee ..................................................... 27
3.4.3 Endereçamento e envio de dados ............................................................... 33
3.5 Dispositivo Xbee ................................................................................................ 34
3.5.1 Principais Características ............................................................................ 34
3.5.2 Modos de Operação do Xbee ....................................................................... 37
3.5.3 Xbee Explorer USB........................................................................................ 39
3.6 Arduino .............................................................................................................. 40
3.6.1 Software ......................................................................................................... 41
3.6.2 Hardware ........................................................................................................ 42
3.6.3 Alimentação ................................................................................................... 43
3.6.4 Memória ......................................................................................................... 45
3.6.5 Entrada e Saída ............................................................................................. 45
3.6.6 Comunicação ................................................................................................. 45
3.7 Sensores ........................................................................................................... 46
3.8 Sensor DHT22 ................................................................................................... 46
3.9 Banco de Dados ................................................................................................ 47
15
3.9.1 Mysql .............................................................................................................. 48
3.10 Java ................................................................................................................... 49
3.10.1 Biblioteca RXTX............................................................................................. 49
3.11 Php .................................................................................................................... 50
3.12 Html ...................................................................... Erro! Indicador não definido.
3.13 JavaScript .......................................................................................................... 52
4 MATERIAL E MÉTODOS .................................................................................... 53
4.1 Hardware ........................................................................................................... 53
4.2 Software ............................................................................................................ 57
4.2.1 Código fonte Arduino ................................................................................... 58
4.2.2 Configuração dos módulos Xbee ................................................................ 59
4.2.3 Receptor dos dados ...................................................................................... 61
4.2.4 Banco de dados............................................................................................. 62
4.2.5 Página Web .................................................................................................... 64
5 RESULTADOS E DISCUSSÕES......................................................................... 65
6 CONSIDERAÇÕES FINAIS ................................................................................. 69
REFERÊNCIAS ......................................................................................................... 70
APÊNDICES ............................................................................................................. 74
16
1 INTRODUÇÃO
Segundo dados da Food and Agriculture Organization of the United Nations
(FAO) (2013) 870 milhões de pessoas no mundo sofrem de subnutrição, em 2050,
quando o numero de 7 bilhões de pessoas que habitam a terra aumentarem para 9
bilhões, será preciso duplicar a produção alimentar.
Com toda a escassez de
alimentos no mundo e com a necessidade de se duplicar a produção em 37 anos,
FAO (2013) afirma ainda que nos países da África, chega-se a perder 20% da
colheita por falta de infra-estrutura. Para Shashwathi et all (2012) o monitoramento
das plantações, que podem incluir diversos fatores como, temperatura, umidade
relativa do ar, umidade do solo entre outros, é muito importante para que se possam
tomar ações preventivas a fim de evitar perdas nas plantações, bem como aumentar
a qualidade do alimento.
Muitas vezes o agricultor é incapaz de monitorar alguns destes fatores
climáticos, para saber em que momento e em que quantidades utilizar agrotóxicos
que combatam algumas pragas e doenças, desenvolvidas pelas variações destes
fatores.
Sciro (2013) fala sobre o conceito de Smart Farm, que traduzido para o
português quer dizer: Fazendas Inteligentes. Este conceito diz que, através da
tecnologia da informação, os agricultores podem implantar recursos de forma mais
eficiente e monitorar toda sua plantação. É possível através da aplicação de
sistemas que adotem o conceito de Smart Farm, utilizar com maior eficiência todos
os recursos que a agricultura dispõe, através do monitoramento e gerenciamento
destes recursos.
No Brasil, segundo Maletti (2011) uma cultura que vem ganhando destaque é
a do maracujá. Segundo a Embrapa (2013) o Brasil é o maior produtor e consumidor
de maracujá do mundo. Esta cultura vem se tornando cada vez mais importante para
o país, por possuir um grande potencial de gerar renda. Esta fruta é na maioria das
vezes cultivada em pequenas propriedades, se tornando assim uma alternativa de
produção e de fonte de renda para pequenos e médios produtores.
17
Os agricultores que cultivam esta fruta precisam estar informados no que diz
respeito a variações climáticas. As variações climáticas são as principais causas do
desenvolvimento de pragas e doenças que afetam o cultivo do maracujá. Ao
perceber alguma destas variações, o agricultor poderá entrar com ações preventivas
ou de combate ao desenvolvimento destas doenças e pragas. Geralmente estas
ações preventivas ou de combate se dão, pelo uso de agrotóxicos específicos.
Partindo deste contexto, qual a necessidade de se desenvolver sistemas que
adotem o conceito de Smart Farms.
Diante deste problema, nasce a necessidade da criação de sistemas que
possuam a capacidade de capturar e gerenciar dados referentes a estes fatores
climáticos. Sistemas que sejam de fácil uso e que possibilitam ao agricultor
monitorar remotamente suas plantações em tempo real. Este trabalho surge com o
objetivo de desenvolver um protótipo, que partindo do conceito de Smart Farm, irá
possibilitar ao agricultor monitorar com eficiência sua plantação.
Este trabalho está organizado da seguinte forma: no capítulo 2 encontram-se
os objetivos a serem alcançados, no capítulo 3 encontra-se a fundamentação
teórica, que dará um embasamento cientifico para nosso trabalho. No capitulo 4
serão descritos os materiais e métodos que foram utilizados para a elaboração do
trabalho. Já no capitulo 5 encontram-se os resultados e as discussões do trabalho,
no capitulo 6 as considerações finais, e por fim, no capítulo 7 o referencial teórico
que subsidiou a elaboração do presente trabalho.
18
2 OBJETIVOS
Neste tópico encontram-se os objetivos a serem atingidos ao final deste
trabalho.
2.1 Objetivo Geral
Aplicar os conceitos de Smart Farm através do monitoramento da umidade
relativa do ar e a temperatura de uma lavoura de maracujá.
2.2 Objetivos Específicos
Estudar o conceito de Smart Farm buscando compreender como o mesmo poderia
ser aplicado em redes de dados;
Pesquisar a cultura do maracujá para compreender as necessidades as quais a
tecnologia de redes e informação poderia contribuir;
Estudar as tecnologias necessárias para o desenvolvimento do projeto;
Desenvolver um protótipo;
Realizar testes em campo.
19
3 REFERENCIAL TEÓRICO
3.1 Smart Farm
Segundo Shashwathi, et all (2012) a agricultura é a ciência, a arte e a prática
de cultivar o solo, importante para comercialização de produtos.
A principal
atividade econômica da Índia é agricultura, sendo que dois terços da população
dependem dela para sobreviver. Na Índia bem como em todo o mundo, vários
agricultores estão com grandes problemas quanto ao uso de fertilizantes. Outro
grande problema é a chuva, que muitas vezes é insuficiente ou muito irregular.
Ainda segundo Shashwathi et all (2012) com todos esses problemas, surgiu
à idéia de apresentar uma proposta para a necessidade dos agricultores, com o
objetivo de gerar informações que sejam importantes para eles. Idealiza-se uma
prestação de serviço que colha informação de localização do plantio, o tipo de solo,
o tipo de plantio e quais valores investidos em produtos, podendo assim apresentar
previsões quanto ao rendimento da safra bem como a produção nos últimos anos.
Para Shashwathi et all (2012) a utilização de serviços de monitoramento
ajuda a corrigir várias doenças nas lavouras e também em quais proporções utilizar
fertilizantes e inseticidas na terra cultivada.
Conforme Sciro (2013) o conceito de Smart Farm (Fazenda Inteligente),
consiste em que, a tecnologia da informação permita aos agricultores implantarem
recursos de forma mais eficiente, monitorar remotamente toda sua fazenda, desde
os níveis de umidade do solo, temperatura, umidade e até mesmo a segurança da
fazenda, entre outros.
Entre outras culturas, o cultivo do maracujá tem se tornado importante para a
agricultura e para a economia do país, sendo que conforme Embrapa (2013) o Brasil
é o maior produtor da fruta no mundo.
Segundo Lima e Borges (2007), a temperatura e a umidade estão entre os
principais fatores climáticos, que influenciam de forma direta, no cultivo do maracujá.
A literatura também mostra que estes dois fatores são os principais causadores de
20
doenças como, verrugose, antracnose e bacteriose, doenças que se não controladas
de forma correta, através do uso de produtos específicos, prejudicam de maneira
severa a plantação.
Segundo a Embrapa (2013), é vital para uma plantação que se possua
controle de informações referentes a estes fatores climáticos. Quando se possui um
sistema de Smart Farm nestas plantações, o agricultor passa a ter um maior controle
sobre elas. Através destes recursos, o agricultor poderá tomar ações preventivas,
sabendo em que quantidades e quando aplicar inseticidas ou fertilizantes na lavoura,
tendo assim uma safra mais produtiva e de qualidade (SCIRO, 2013).
3.2 O Cultivo do Maracujá
Segundo Embrapa (2013) o maracujá é uma planta de clima tropical com
ampla distribuição geográfica. A cultura do maracujá está em franca expansão tanto
para a produção de frutas para consumo in natura como para a produção de suco.
Os países considerados como os maiores produtores e exportadores mundiais da
polpa e do suco concentrado de maracujá são: Brasil, Colômbia, Peru e Equador, e
como maiores importadores, destacam-se Alemanha e Holanda. No entanto quando
se fala no mercado de fruto in natura, os países africanos são os maiores produtores
do fruto da cor roxo e os sul-americanos, os maiores produtores do fruto da cor
amarela. Os principais países importadores deste mercado in natura são Reino
Unido, França e Bélgica.
Ainda segundo a Embrapa (2013) o Brasil é o maior produtor e consumidor
mundial de maracujá. Como afirma Silva (2004), o cultivo do maracujá ganhou
destaque no Brasil a partir do início da década de 70, embora nos anos 50 já
existissem indústrias processadoras e envasadoras de suco de maracujá.
Conforme IBGE (2009) apud Maletti (2011) a área colhida de maracujá no
Brasil cresceu de forma acentuada a partir do ano de 1990 até 1996, decrescendo
ligeiramente até o ano de 1998 e voltando ao mesmo patamar em 2006. Em 2006 a
área colhida era de 44.363 hectares subindo para 50.795 em 2009, o que é
21
equivalente a 713.000 toneladas da fruta. Pode-se observar melhor esta oscilação
na figura 1:
Figura 1 - Oscilação da área colhida com maracujá no Brasil
Fonte: Maletti (2011)
Segundo Maletti (2011) O gênero Passiflora, planta responsável por gerar o
maracujá, possui um grande número de espécies, mais de 400, sendo cerca de 120
nativas do Brasil. Apesar disso, conforme Maletti (2011) os cultivos comerciais do
país baseiam-se numa única espécie, o maracujá-amarelo ou azedo (Passiflora
edulis), que representa mais de 95% dos pomares, isto devido à qualidade dos seus
frutos, vigor, produtividade e rendimento em suco.
Ainda conforme Maletti (2011) a região Nordeste tem liderado a produção
brasileira nos últimos anos, sendo responsável por metade da produção nacional,
em 1996, seguida pelas regiões Sudeste, Norte, Centro-Oeste e Sul. Uma alteração
significativa na distribuição geográfica dos pomares tem sido apontada por
Gonçalves e Souza (2006) apud Maletti (2011), o Pará, que se destacou como
principal produtor por alguns anos cedeu espaço para os pomares da Bahia, Ceará e
Espírito Santo, os três maiores produtores em 2006. O mesmo ocorre em São Paulo,
grande produtor do início da década de 90, com área de produção reduzida
significativamente, em função da elevada incidência de viroses.
Conforme afirma Embrapa (2013) o estado de Santa Catarina começou a
constar no levantamento de produção nacional do IBGE como produtor de maracujá,
apenas a partir de 1992, apresentando uma evolução significativa até 1996. Em
2012 conforme Embrapa (2013) Santa Catarina já estava entre os 14 maiores
produtores do Brasil com uma área de 340.000 hectares colhidos.
22
3.2.1 Importância econômica
Como pode ser visto anteriormente, as estatísticas mostram um crescimento
acentuado da área plantada e da produção de maracujá no Brasil, a partir de 1990.
Conforme Maletti (2011) até o início da década de 70, o Brasil nem constava
entre os principais países produtores, e hoje é o maior produtor mundial de
maracujá. O seu cultivo adquiriu expressão econômica a partir de 1986, quando a
ampliação
significativa
na
área
cultivada
e
na
produção,
conduziu
à
profissionalização da atividade.
Segundo Embrapa (2013) o maracujá amarelo é uma fruteira tropical nativa, e
seu cultivo tem evoluído rapidamente no País.
Conforme Hafle; et all (2010) o cultivo do maracujá tem se tornado muito
importante para pequenas e médias propriedades, tornando-se assim uma
alternativa de produção e de fonte de renda para pequenos e médios produtores. A
importância social está no fato de que a atividade propicia em torno de seis
empregos por hectare, sendo dois diretos e quatro indiretos, estando diretamente
associado à produção de base familiar.
3.2.2 As condições climáticas e o desenvolvimento de doenças no cultivo do
maracujá
Segundo Lima e Borges (2007) o maracujazeiro, cultura de clima quente e
úmido, desenvolve-se bem nas regiões tropicais e subtropicais. A temperatura e a
umidade estão entre os fatores climáticos mais importantes para o cultivo da planta,
influenciando diretamente a longevidade e a produtividade da cultura, bem como na
incidência de pragas e doenças.
Conforme Embrapa (2013) a faixa de temperatura entre 21 e 23ºC é
considerada como a mais favorável ao crescimento do maracujá, situando-se o
ótimo entre 23 e 25ºC.
23
Conforme Lima e Borges (2007) temperaturas baixas retardam o crescimento
da planta e reduzem a produção. Além disso, temperaturas muito elevadas ou muito
baixas afetam o crescimento dos frutos. No verão, em que a temperatura é mais
elevada, o período de germinação das sementes é menor do que nos meses mais
frios, além de favorecer o aparecimento de doenças como a bacteriose.
Como nos afirma Embrapa (2013) a umidade relativa do ar em torno de 60%
é a mais favorável ao cultivo do maracujazeiro. Deste modo, locais com umidade
relativa do ar acima de 60% quando associados às chuvas favorecem o
aparecimento de doenças, ou seja, verrugose, antracnose e bacteriose.
A baixa umidade relativa, associada à temperatura elevada e a ventos
constantes, causa dessecação dos tecidos pela transpiração excessiva, impedindo o
desenvolvimento do maracujazeiro.
Todas estas doenças podem ser controladas com base nas variações
climáticas, através do uso de produtos específicos para cada uma delas. A seguir
serão descritas algumas características das principais doenças encontradas no
cultivo do maracujá.
a) Verrugose: Segundo Embrapa (2013) também conhecida por sarna da
mangueira, a verrugose é causada pelo fungo Elsinoe mangiferae. Esta
doença usualmente não é de muita importância nos pomares, porém pode
causar danos em frutificações no período úmido do ano. Embora a doença
somente se desenvolva na epiderme dos frutos, eles perdem valor comercial
graças a sua aparência.
b) Antracnose: Conforme Embrapa (2013) esta é uma doença que incide
principalmente nas brotações jovens, ápices, folhas e ramos jovens,
impedindo seu crescimento. A umidade excessiva é uma das principais
condições para o desenvolvimento desta doença.
c) Bacteriose: Como nos afirma ainda Embrapa (2013) esta é considerada uma
das principais doenças da cultura e se desenvolve nos períodos mais quentes
24
e úmidos do ano. Ela produz pequenas lesões encharcadas e translucidas, as
quais necrosam,
assumindo
tonalidade
marrom-avermelhada,
com
o
desenvolvimento da doença, ocorre à seca das folhas e, posteriormente, a
desfolha, reduzindo consideravelmente a produtividade. Nos frutos, as
manchas são grandes e bem delimitadas. Essas manchas são superficiais,
entretanto, em condições favoráveis, podem penetrar na polpa, contaminando
as sementes e promovendo a sua fermentação.
3.3 Redes Sem Fio
Segundo Torres (2001) as redes de computadores apareceram através da
necessidade de troca de dados, não importando de onde qualquer pessoa estivesse
localizada. As redes de computadores já existem há muito tempo, desde época dos
primeiros computadores. Com o tempo a tecnologia teve uma grande evolução com
isso os computadores melhoraram a sua comunicação, tendo um custo cada vez
menor.
Segundo Pereira (2008) as redes sem fio, são baseadas no conjunto de
padrões IEEE 802.11, elas vem expandindo rapidamente nos últimos anos, no meio
empresarial e no uso doméstico.
Para Torres (2001) rede sem fio é um modo de transmissão de dados, feito
através de ondas de rádio, ao invés da utilização de cabos, um exemplo está em um
computador conectado a um receptor de rádio, que ira receber as informações de
um transmissor. A conexão sem fio não tem como objetivo substituir a conexão
cabeada, mas sim oferecer mais mobilidade para os usuários e também reduzir
custos.
Segundo Moraes (2011), as redes sem fio são hoje largamente utilizadas,
devido principalmente à facilidade do uso e de instalação. A tecnologia wireless vai
ao encontro das necessidades que os usuários possuem.
Conforme Vieira (2004) As redes sem fio estão cada vez mais sendo
utilizadas por dispositivos de comunicação, tendo vários tipos e tamanhos (celulares,
25
computadores, impressoras, sensores, maquinas e outros), estes são utilizados em
vários ambientes como residências, indústrias, edifícios e outros, permitindo
mobilidade para a utilização dos usuários. Com o tempo surgiram vários padrões de
tecnologias sem fio, cada uma com propósitos específicos, para serem utilizadas em
varias aplicações. A seguir discutiremos os padrões comerciais mais utilizados
atualmente.
3.3.1 Padrões de comunicação sem fio
Neste tópico serão abordadas as principais características dos padrões:
IEEE 802.11 e IEEE 802.15.
Afirma Farias (2013) que, como WLANs usam o mesmo método de
transmissão de ondas de radio AM/FM, as leis que as regem são as mesmas. O
Federal Comunications Comission (FCC) regula o uso dos dispositivos WLAN.
Sendo que no Brasil que regula uso do dispositivo é a Anatel. O Institute of Eletrical
and Eletronic Engineers (IEEE) é responsável pela criação e adoção dos padrões
operacionais. Os padrões mais conhecidos são:
a) IEEE 802.11
De acordo com Vieira (2004) o padrão IEEE 802.11 vem sendo utilizado em
varias circunstancias, o padrão esta em desenvolvimento com vários grupos de
trabalho, com o grande objetivo de melhorar o desempenho das aplicações. .
Conforme Wi-fi.org (2013) existem várias tecnologias hoje em funcionamento,
como podemos ver na tabela 1, os principais padrões 802.11 e suas principais
características.
26
Tabela 1 - Tecnologias Wi-fi
Wi-Fi
Tecnologias
802.11ª
802.11b
802.11g
802.11n
Banda de frequência
5 GHz
2.4 GHz
2.4 GHz
2.4 GHz, 5 GHz
2,4 ou 5 GHz (selecionável), ou
Largura de banda ou taxa
máxima de dados
54 Mbps
11 Mbps
54 Mbps
450 Mbps
de 2,4 de 5 GHz (simultâneos)
802.11ac
5 GHz
1,3 Gbps
Fonte: Autores (2013)
b) IEEE 802.15/WPANS
Segundo Barros e Oliveira (2005) as WPANs consistem em uma tecnologia
de redes sem fio que possui pequeno alcance, podendo alcançar até dezenas de
metros. O alcance do sinal pode variar de acordo com o dispositivo utilizado. De
acordo com Lugli (2012) a WPAN possui um alcance médio que pode variar de 10 a
100 metros, com uma baixa taxa de transmissão. Com esse padrão podem ser feitas
ligações de dispositivos ou redes de sensores sem fio, definido pelo IEEE 802.15.
Entre esses padrões, destaca-se o padrão IEEE 802.15.4/Zigbee, padrão de rede
que será utilizado neste trabalho, conforme será discutido a seguir.
3.4 O padrão Zigbee
Neste tópico serão abordadas, as características mais importantes, bem como
o funcionamento do padrão Zigbee.
3.4.1 Surgimento do Zigbee
Segundo Moraes (2011), as redes sem fio são amplamente utilizadas nos dias
de hoje, em razão principalmente da sua simplicidade de uso e de instalação.
Moraes (2011) certifica ainda que as tecnologias de redes sem fio atendem a muitas
necessidades que os usuários possuem.
27
Contudo de acordo com Maes (2007), durante muitos anos, não houve um
padrão de tecnologia sem fio que atendesse as necessidades específicas de
monitoramento remoto e controle de sensores, aplicações que exigem muitas vezes
uma base ampla de redes sem fio, com baixo custo, baixas taxas de transmissão e
com baixo consumo de energia.
Neste cenário surgiu a Zigbee Alliance, fundada em 2002 em parceria com a
IEEE, ela surgiu com o objetivo de desenvolver padrões que finalmente oferecessem
maior liberdade e flexibilidade para um mundo mais inteligente e mais sustentável
(ZIGBEE.ORG, 2013).
Neste momento, segundo Evangelista (2010) surge o padrão zigbee, com a
finalidade de definir um conjunto de protocolos de comunicação para redes sem-fio
de curto alcance e baixa taxa de tráfego de dados.
A Zigbee Alliance é formada por um conjunto de organizações de todos os
tipos e de todo o mundo. Seus membros incluem empresas multinacionais, grupos
reguladores governamentais, universidades e empreendedores. Ela permite que
seus membros colaborem e promovam a adoção do padrão Zigbee. Identifica-se
como uma associação sem fins lucrativos e qualquer pessoa pode juntar-se a
associação (ZIGBEE.ORG, 2013).
3.4.2 Arquitetura e funcionamento do Zigbee
O padrão Zigbee pode ser entendido a partir do modelo OSI. Faludi (2011)
nos diz que as camadas de aplicação e de rede, que ficam com a missão de
construir circuitos lógicos e de roteamento entre dois pontos, e pela gerência da
interface das aplicações específicas, ficam a cargo do padrão Zigbee que, além
disto, ainda determina os recursos de segurança do protocolo. As camadas de mais
baixo nível, a camada física e de enlace, que são responsáveis por transmitir os
dados por meio de um sinal eletromagnético e de controlar a ordem de acessos ao
meio, ficam a cargo do padrão 802.15.4, definido pela IEEE. Pode ser visto com
maior clareza estas funcionalidades na figura 2:
28
Figura 2 - Arquitetura do padrão Zigbee em camadas
Fonte: Evangelista (2010)
De acordo com Evangelista (2010) o protocolo Zigbee gerencia o
funcionamento das camadas mais elevadas do modelo OSI e ainda adiciona
algumas outras camadas que serão descritas a seguir.
Evangelista (2010) nos mostra de uma forma resumida que, a camada de
rede (NWR) é responsável por fazer a comunicação entre dois nós da rede, mesmo
que estes nós não possam se comunicar diretamente. A camada de aplicação (APS)
é responsável por gerenciar alguns processos entre a aplicação e a camada de
rede, enquanto a camada ZDO é responsável por definições gerais do padrão
Zigbee. Como foi dito, o Zigbee também implementa um processo de segurança
próprio, representado pela camada de Security Service Provider (SSP). A camada
mais alta é a Application Framework (AP), que é definida pela aplicação utilizada.
Conforme Lopes, Nascimento e Lima (2012), a faixa de frequência em que
atua e o número de canais que suporta são determinados de acordo com a
localidade, na Europa é de 868 MHz em um canal único, 915 MHz nos Estados
Unidos com 10 canais, e no resto do mundo de 2.4 MHz, com 16 canais, como
podemos ver na tabela 2:
29
Tabela 2 - Faixa frequência do padrão Zigbee no mundo
Banda
2,4 GHz
(ISM)
915 MHz
(ISM)
868 MHz
Frequência
(MHz)
2400 – 2483,5
Local
Disponível
Todo o mundo
Largura de
Banda
250 Kbps
Quantidade
de Canais
16
902 – 928
EUA
40 Kbps
10
868 – 868,6
Europa
20 Kbps
1
Fonte 1: Autores (2013)
Segundo Brito e Silva (2009), as redes ZigBee oferecem uma certa imunidade
a interferências, além de possibilitar a integração de até 254 nós em uma única
rede, sendo que através do possível agrupamento das redes é capaz de conectar
mais de 65.000 módulos, havendo a possibilidade de se conectar varias topologias
de rede, com taxas de transferência variando de 20Kbps e 250Kbps.
Todas as características que foram citadas até agora, representam
fisicamente a rede, contudo pode-se observar a partir das afirmações de Faludi
(2011) que o padrão Zigbee também se diferencia de algumas tecnologias de rede
sem fio, como o wifi e o bluetooth, no aspecto lógico, estas tecnologias não possuem
alguns recursos disponibilizados por ele, a figura 3, nos proporciona uma idéia do
posicionamento da tecnologia Zigbee em relação a outras tecnologias wireless.
Figura 3 - Posicionamento das tecnologias wirelles
Fonte: Teleco.com (2013)
Conforme afirma Faludi (2011) o método implantado pelo padrão Zigbee
permite a criação de uma rede onde a transmissão de dados pode ser feita por
30
roteamento de dados, ou seja, os dispositivos que desejam se comunicar não
necessitam estar ligados diretamente.
Rodruigues (2012) assegura ainda, que existem duas categorias em que
podem ser classificados os dispositivos Zigbee.
A primeira maneira em que
podemos classificar é com relação à função que ele esta desempenhando na rede,
sendo que esta maneira de classificação tem por base as características lógicas dos
dispositivos.
Esta classificação ocorre da seguinte maneira:
a) Router/Roteador: Como nos descreve Faludi (2011), um dispositivo roteador é
um nó Zigbee completo. Ele pode incorporar-se a redes existentes, enviar
informações, receber as informações de rota. Ele age como um mensageiro
para as comunicações entre outros dispositivos que estão muito longe de
transmitir as informações por conta própria. Na prática, são utilizados para
aumentar o alcance das redes.
b) Coordinator/Coodenador: Como afirmam Brito e Silva (2009), o dispositivo
coordenador é responsável por iniciar a rede, distribuir os endereços, fazer
manutenção da rede e o reconhecimento dos nós, podendo servir até como
gateway entre várias outras redes ou estrutura de redes Zigbee. Faludi (2011)
nos afirma ainda que as redes Zigbee possuem sempre um único
coordenador.
c) End Device/Dispositivo Final: Os dispositivos finais, conforme Faludi (2011)
podem participar das redes, enviar e receber informações, porém informações
que pertencem a ele, propriamente dito, eles não agem como mensageiros
entre qualquer outro dispositivo. Isto serve para que alguns dispositivos que
não irão desempenhar uma função mais complexa possam utilizar um
hardware mais barato e que possa ter um menor consumo de energia,
permanecendo a maior parte do tempo em modo sleep, ou seja, dormindo. Os
dispositivos end devices sempre precisam de um roteador ou um coordenador
para ser o seu dispositivo mestre, o mestre ajuda os dispositivos finais a
31
aderirem à rede, e também armazena as mensagens, enquanto os
dispositivos finais estão em modo sleep.
A segunda maneira em que se pode classificar um dispositivo é quanto às
funções que podem ser habilitadas por ele, esta classificação leva em conta, as
características físicas do dispositivo. Esta classificação ocorre da seguinte maneira:
a) FFD - Full Function Devices: Como nos mostra Brito e Silva (2009) os
dispositivos FFD, são aqueles mais complexos que podem funcionar como
coordenadores roteadores ou até mesmo como dispositivos finais. Esses
dispositivos podem se comunicar com qualquer nó da rede. Segundo
Rodrigues (2012) estes dispositivos possuem um hardware mais completo,
que se faz necessário para a implementação da pilha completa de
comunicação e de processamento, Rodrigues (2012) afirma que os
módulos Digi Xbee estão dentro desta categoria de dispositivos.
b) RDF - Reduced Function Device: Os dispositivos RDF conforme nos diz
Rodrigues (2012), são dispositivos mais simples, que por sua vez não
permitem a implementação completa da pilha de comunicação e de
processamento. Brito e Silva (2009) esclarece que estes dispositivos
funcionam apenas como dispositivos finais.
Levando em consideração as funções desempenhadas pelos dispositivos nas
redes Zigbee, pode-se ver a imensa possibilidade na formação de topologias de
rede utilizando este padrão, a seguir serão vistas as possíveis topologias de rede,
configuradas a partir do padrão Zigbee, estas topologias indicam como os
dispositivos estão conectados uns aos outros logicamente, e não a disposição física
necessariamente.
A três principais possíveis topologias de rede Zigbee são, ponto-a-ponto
(peer-to-peer), estrela e malha (mesh), conforme se observa na figura 4:
32
Figura 4 - Topologias de rede Zigbee
Fonte: Faludi (2011)
a) Ponto-a-ponto (peer-to-peer): Segundo Faludi (2011), uma rede ponto-aponto, consiste na topologia de rede mais simples que se pode implementar,
elas possui apenas dois nós. Faludi (2011) nos deixa claro que, uma rede que
não necessite de mais do que dois nós, não ira desfrutar das vantagens que o
padrão Zigbee dispõe.
b) Estrela: Silva (2011) nos aconselha uma topologia estrela quando a área de
cobertura da rede for pequena. Como nos descreve Faludi (2011), em uma
topologia em estrela, tem-se um coordenador no centro da rede e todos os
outros nós estão conectados a ele. Neste caso todas as mensagens passam
pelo ponto central da rede, e os dispositivos finais não podem se comunicar
diretamente entre si.
c) Malha (mesh): Conforme Rodrigues (2012) nesta topologia o ajuste de
roteamento de dados acontece automaticamente, bem como o monitoramento
de nós. As mensagens percorrem caminhos diferentes de acordo com a
necessidade, este trabalho fica a cargo dos coordenadores e dos roteadores.
Rodrigues (2012) nos deixa claro que esta topologia empregar todas as
características diferenciais do Zigbee.
33
3.4.3 Endereçamento e envio de dados
Segundo Rodrigues (2012) o endereçamento na rede Zigbee ocorre em dois
níveis, conforme o modelo ISO/OSI. O primeiro é o endereçamento de dispositivos,
que pode ser na camada de rede ou física e o segundo, o endereçamento na
camada de aplicação.
O endereçamento de dispositivo é feito em duas camadas separadas,
conforme Faludi (2011), a primeira forma é através de um endereço de 64 bits que é
inalterável, ele é dado pelo fabricante para cada módulo Zigbee. Pode-se comparar
esta forma de endereçamento ao endereço MAC em dispositivos de rede Ethernet. A
outra forma de endereçamento de dispositivos se dá por um endereço de 16 bits que
pode ser configurado conforme a necessidade da rede na qual o dispositivo se
encontra.
Quanto ao endereçamento na camada de aplicação, conforme diz Rodrigues
(2012), é considerado o dispositivo de destino e a identificação da informação
enviada, o Frame ID, que se assemelha ao socket TCP.
Os pacotes de dados das redes Zigbee podem ser transmitidos por unicast,
de um ponto a outro diretamente, ou broadcast, de um para todos ao mesmo tempo.
Caso não exista uma conexão direta entre o dispositivo transmissor e o receptor, a
transmissão é feita através de outros dispositivos da rede. Para que tudo isto possa
acontecer o dispositivo precisa encontrar o destino na rede e isto ocorre da seguinte
maneira:
a) Descoberta de endereço: Compreende em associar um endereço de 64 bits
imutável, a um endereço de 16 bits mutável. Conforme Rodrigues (2012), o
emissor envia uma mensagem em forma de broadcast informando ao destino
o endereço de 64 bits, quando recebida a mensagem, o receptor faz uma
comparação para saber se os endereços de 64 bits são idênticos, se forem, o
mesmo retorna a mensagem confirmando o seu endereço de 16 bits, assim o
emissor inicia a transmissão de dados.
34
b) Descoberta de rota: Segundo Rodrigues (2012) as redes Zigbee determinam
sua rota através do protocolo de roteamento Ad Hoc on-Demand Distance
Vector Routing (AODV). Conforme Puttini (2004) AODV é um protocolo de
roteamento reativo que utiliza um algoritimo de roteamento do tipo vetor de
distância. Esta rota é determinada relacionando-se a distância de acordo com
a utilização dos nós da rede. Conforme Rodrigues (2012) a transmissão de
dados nas redes do tipo Zigbee possui uma confirmação de sucesso de
transmissão, esta confirmação é conhecida como ACK, que se refere ao
termo inglês acknowledge, que significa reconhecimento ou confirmação. A
cada salto entre dispositivos é enviado um ACK ao transmissor, a fim de
informar se houve sucesso na transmissão. Se houver uma falha na
transmissão o módulo Zigbee tenta retransmitir o pacote, sendo que por
padrão é feito no máximo duas tentativas e se houver erro na retransmissão a
rede é capaz de perceber o erro, permitindo ações de controle.
3.5 Dispositivo Xbee
Existem vários dispositivos de hardware no mercado que se baseiam no
padrão zigbee, entre eles está um modelo bastante conhecido no mercado e que
será utilizado neste trabalho, o Xbee fabricado pela Digi International. Nestes tópicos
serão abordadas as principais características destes dispositivos.
3.5.1 Principais Características
Segundo Soares (2012) os dispositivos Xbee são compostos basicamente por
um microcontrolador e um transceptor. O microcontrolador contém o firmware1 com
a implementação do protocolo Zigbee e a especificação do comportamento do
dispositivo (Coordenador, Roteador ou Dispositivo Final).
1
Firmware: firmware é o conjunto de instruções operacionais programadas diretamente no hardware
de um equipamento eletrônico.
35
Conforme Digi International (2009) cada dispositivo Xbee possui um endereço
de rede (MY) de 16 bits que pode ser comparado ao endereço IP nas redes TCP/IP
e possui também o numero serial que é comparado ao endereço MAC das placas de
rede Ethernet.
Conforme Soares (2012) um rede composta por dispositivos Xbee possui
apenas um coordenador, com um endereço de rede (MY) igual a zero. Os
roteadores e os dispositivos finais podem ser usados em qualquer quantidade, de
acordo com a necessidade. Qualquer dispositivo Xbee que implemente o padrão
Zigbee pode comunicar-se com outro, mesmo este sendo de fabricantes diferentes.
Segundo Soares (2012) os módulos XBee são fabricados em diversas
versões, que variam de acordo com o modelo da antena, encapsulamento,
frequência de operação e protocolo utilizado. Podem-se ver os principais modelos na
figura 5:
Figura 5 - Módulos XBee da Digi International com diferentes antenas
Fonte: Rogercom.com (2013)
Conforme Digi International (2009) verifica-se a seguir as principais
características com relação ao seu desempenho:
a) Alcance Indoor: até 30m;
b) Alcance Outdoor: até 100m;
c) Potência Máxima de Transmissão: 1mW (0 dBm);
d) Taxa de Dados Interface Serial: até 115,2 Kbps;
e) Taxa de Dados de RF: 250 Kbps;
36
f) Sensibilidade do Receptor: -92 dBm;
g) Tensão de Alimentação: 2,8 - 3,4 V;
h) Corrente de Transmissão: 45mA (@ 3,3V);
Os módulos Xbee possuem vários periféricos já implementados, tais como,
saídas e entradas digitais, conversores analógico-digitais, canal de comunicação
Universal
Asynchronous
Receiver/Transmitter
(UART).
Assim
é
possível
implementar soluções de maneira rápida e eficiente, com hardware já validado. Na
figura 6 está apresentado à distribuição dos pinos no dispositivo Xbee e na tabela 3
o diagrama de pinos.
Figura 6 - Distribuição de pinos no dispositivo XBee.
Fonte: Adaptado de: Digi International (2009)
Tabela 3 - Diagrama de pinos dos módulos Xbee
Pino
Nome
Direction
Default State
Description
1
VCC
-
-
Power supply
2
DOUT
Output
Output
UART Data Out
3
DIN – CONFIG
Input
Input
UART Data in
4
DIO 12
Both
Disabled
Digital I/O 12
5
RESET
Both
Open-Connector
Modulo Reset (reset pulse
with full-up
must be at least 200 ns)
Output
RX Signal Strenght indicador/
6
RSSI PWM / DIO 10
Both
Digital IO
7
DIO 11
Both
Input
Digital I/O 011
8
[reserved]
-
Disabled
Do not connect
9
DTR / SLEEP_RQ / DIO 8
Both
Input
Pin sleep Control Line or
Digital IO8
10
GND
-
-
Ground
37
11
DIO4
Both
Disabled
Digital I/O 4
12
CTS / DIO7
Both
Output
Clear-to-Send Flow Controlo or
digital I/O 7, CTS, if enablem is
an output
13
ON / SLEEP
Output
Output
Module Status Indicator or
Digital I/O 9
14
VREF
Input
-
Not used for EM250, Used for
programmable secondary
processor. For compatibility
with other pin voltage reference
if analog sampling is desired.
Otherwise, connect to GND
15
Associate / DIO5
Both
Output
Assocated indicator, Digital I/O
5
16
RTS / DIO6
Both
Input
Request-to-Send Flow Control,
Digital I/O 6. RTS, if enable, is
an input
17
AD3 / DIO3
Both
Disabled
Analog input 3 or Digital I/O 3
18
AD2 / DIO2
Both
Disabled
Analog input 2 or Digital I/O 2
19
AD1 / DIO1
Both
Disabled
Analog input 2 or Digital I/O 1
20
AD0 / DIO0 / Commsing
Both
Disabled
Analog input 0, Digital I/O 0, or
Button
commissioning Button
Fonte: Autores (2013)
3.5.2 Modos de Operação do Xbee
Segundo Rodrigues (2012) pode-se realizar a comunicação entre dispositivos
Xbee de duas maneiras: de modo transparente, que é utilizada entre dois
dispositivos específicos, e modo API (Application Programming Interface), que
oferece uma interface para outras aplicações em relação à rede Zigbee. A seguir
serão vistas as principais características destes dois modos de operação. De acordo
com Digi International (2009), estão implementados os seguintes modos de
operação:
38
a) Modo Transparente: o modo padrão de operação do módulo, neste modo o
dispositivo trabalha simplesmente como transmissor de dados seriais. Todo o
dado inserido no pino de entrada serial será transmitido pela antena, e todo o
dado recebido pela antena é enviado pelo pino de saída da serial.
b) Modo API: Neste modo existe uma estrutura (quadros) que são categorizados
entre quadros de requisito e de resposta. Este modo permite que se utilize ao
máximo os recursos da rede Zigbee, como transmissão multiponto,
configuração remota entre outras aplicações.
Segundo Rodrigues (2012) durante um processo de comunicação, o
dispositivo Xbee possui uma série de estados em relação ao processo de
comunicação. Estes estados são independentes do modo de operação utilizado, são
eles os seguintes: sleep, repouso (idle), de transmissão, de recepção e de
comandos AT, a seguir será descrito melhor cada um dos estados.
a) Estado sleep: este modo permite aos dispositivos que possuem função de
dispositivos finais, ficar a maior parte do tempo com o mínimo de consumo de
energia, ou com o mínimo de clock2 da máquina e com a grande maioria dos
periféricos desligados. O módulo pode ser acordado via hardware, por meio
do pino 9, ou via configuração prévia pelo modo de comando. Até mesmo ser
subordinado a outro módulo Xbee coordenador de sleep, que lhe enviará os
dados a ele endereçados quando sair do modo de dormência.
b) Estado de repouso (idle): este estado é usado pelos dispositivos
coordenadores e roteadores da rede, já que eles não podem entrar em sleep
(desativação completa da rede). Sendo assim eles podem estar em repouso
quando não estão transmitindo ou recebendo dados, neste estado ocorre uma
diminuição da capacidade de processamento, havendo assim uma economia
2
Clock: é um pulso alternado de sinais de tensão.
39
no consumo de energia, embora não seja tão radicalmente como na função
sleep.
c) Estado de transmissão: quando um dado é recebido por um pino de entrada
de dados, o dispositivo Xbee entra em um modo de transmissão. O dispositivo
valida o endereçamento e a rota da mensagem, caso os endereços ou rotas
não sejam conhecidos é iniciado um processo de descobrimento de endereço
ou rota.
d) Estado de recepção: o dispositivo entra em estado de recepção quando existe
um sinal no canal utilizado, verificando se o mesmo é o endereço de destino
da informação. Caso seja, o destino envia um sinal de ACK para o dispositivo
de origem, e guarda o dado recebido em um buffer3. Este processo é análogo
porém invertido em relação a transmissão.
e) Estado de comandos AT: permite acesso às variáveis de configuração do
módulo. Inserindo a sequência de caracteres ("+++") no terminal, o dispositivo
entra neste modo, onde seus parâmetros podem ser monitorados ou
reconfigurados. Para encerrar este modo existe um timeout ou pode der
inserido um comando especifico.
3.5.3 Xbee Explorer USB
Conforme Digi International (2009) para que seja feita a configuração dos
módulos é necessário o uso de um hardware de interfaceamento entre o computador
e o módulo Xbee. O Xbee Explorer USB é uma interface USB para o módulo Xbee,
fabricado pela empresa Sparkfun, ele cria uma porta serial virtual, responsável pela
comunicação entre o computador e o Xbee. Este dispositivo facilita a configuração
3
Buffer: é uma região de armazenamento de memória física utilizada para armazenar
temporariamente os dados enquanto eles estão sendo movidos de um lugar para outro.
40
dos módulos Xbee além de poder ser usado pelo computador para receber os dados
da rede. Na figura 7 pode ser visto o Xbee Explorer.
Figura 7 - Xbee Explorer
Fonte: Sparkfun.com (2013)
3.6 Arduino
Segundo Silveira (2011) o Arduino foi criado em janeiro 2005, no Instituto de
Interatividade e Design, no curso de Arte e Design, na cidade de Ivrea, Itália, ele
surgiu da ideia de dois professores David Cuartielles e Massimo Banzi. Sendo que o
principal objetivo era criar uma ferramenta de hardware fácil de programar, para
pessoas que não tivesse um grande conhecimento com computadores, tendo um
baixo custo.
Conforme Silveira (2011) os professores se juntaram com outros membros
que eram especialistas em programação para criarem um ambiente de
desenvolvimento integrado e uma ferramenta de software que traduz uma linguagem
de alto nível como C.
Segundo McRoberts (2011) o Arduino pode ser utilizado para desenvolver
vários projetos, podendo ser conectado em computadores, em redes e até mesmo
na Internet, podendo assim disponibilizar os dados coletados em uma página de
internet, sendo exibidos em forma de texto, gráficos e tabelas para os usuários.
41
Para McRoberts (2011) com o Arduino é possível conectar vários dispositivos:
sensores de temperatura e umidade, sensores de distância, LEDs, interruptores.
Podendo assim coletar dados e emitir dados. Segundo Vasilevic (2013) existem
vários modelos de Arduino, a escolha do modelo dependera da necessidade de
cada usuário, os modelos se diferenciam pelos diferentes formatos e configurações.
Entre os modelos mais populares esta o Uno, o qual será utilizado neste projeto.
Segundo Silveira (2011) o Arduino é composto por duas partes principais:
hardware e software. Nas subseções serão descritas as principais características
que envolvem o software e o hardware do Arduino modelo Uno.
3.6.1 Software
Conforme Arduino CC (2013) o Arduino Uno foi desenvolvido para que seja
conectado no computador, sendo que o software é quem vai fazer essa conexão. O
software do Arduino permite que os dados sejam carregados para ele através do
upload.
Conforme McRoberts (2011) o programa utilizado para programação do
Arduino é o IDE do Arduino, o software é livre, e o código utilizado é baseado na
linguagem C. Sendo que através do código utilizado ele poderá executar a tarefas
pretendidas. O software utilizado, permite que sejam escritos códigos no editor, este
editor da a possibilidade de recortar, copiar, colar e substituir textos. A figura 8
mostra a interface do programa.
42
Figura 8 - Interface gráfica do Arduino 1.0.5
Fonte: Autores (2013)
3.6.2 Hardware
O hardware inclui um micro controlador e alguns componentes eletrônicos
montados numa placa de circuito impresso, o software residente na memória de
programas do microcontrolador. O hardware do Arduino incluí também shields que
43
são adaptadores que possibilitam conectar outros dispositivos e módulos. O uso de
shields não é obrigatório, ele pode ser substituído por uma Breadboard4.
De acordo com Gomes e Tavares (2013) o modelo Uno do Arduino tem como
principais características: microcontrolador ATmega328, tensão de operação de 5V,
14 pinos de entrada/saída digital, 6 pinos de entrada/saída analógicos, 32 KB de
memória flash, 2 KB de SRAM, 1 KB de EEPROM e velocidade de clock de 16 MHz.
Na figura 9 podemos ver o modelo Uno do Arduino bem como a sua dimensão.
Figura 9 - Modelo Arduino
Fonte: Arduino cc (2013)
3.6.3 Alimentação
Conforme Arduino CC (2013) a alimentação pode ser feita de duas formas, a
primeira através de conexão USB e a segunda podem ser alimentadas por uma
fonte de externa alimentação. Para a utilização da fonte externa é necessária que a
ela seja de 6 a 20 V. Pois se for menor 7 V , o pino de 5 V acaba fornecendo menos
4
Breadboard: placa com vários furos e conexões condutoras para montagem de circuitos elétricos
experimentais. (LOPES, 2008)
44
de 5 V deixando a placa vulnerável. Se for ao contrário, utilizar mais que 12 V, pode
superaquecer e danificando a placa. O correto e recomendado é de 7 a 12 V.
A figura 10 nos mostra os pinos de alimentação do Arduino.
Figura 10 - Pinos de alimentação do Arduino Uno
Fonte: Arduino cc (2013)
a) VIN é a tensão de entrada para a placa do Arduino, utilizando uma
fonte externa. Podendo fornecer tensão para o pino ou fornecendo
tensão através da tomada de energia, através do pino.
b) 5 V neste pino concede 5v regulada no regulador da placa.
c) 3.3 V- O pino 3.3 V gerado por um regulador on-board. Corrente
máxima é de 50 mA.
d) GND - Pinos de Aterramento.
e) IOREF Este pino da placa Arduino fornece a referência de tensão com
que o micro controlador opera. Um escudo configurado corretamente
pode ler a tensão pino IOREF e selecionar a fonte de alimentação
45
adequada ou habilitar tradutores de tensão nas saídas que operam de
5 V ou 3.3 V.
3.6.4 Memória
Conforme Arduino CC (2013) o ATmega328 possui 32 KB (sendo que 0,5 KB
é utilizado para bootloader), o bootloader é um arquivo responsável pela
inicialização da placa. Possui também 2 KB de SRAM, memória na qual ele pode
criar e manipular variáveis quando é executado e 1 KB de EEPROM, utilizada para
armazenar as informações à longo prazo.
3.6.5 Entrada e Saída
Segundo Justen (2013) as portas digitais são utilizadas quando se necessitam
obter valores exatos de tensão. O sistema utilizado é binário, com isso ele trabalha
em apenas duas tensões sendo elas 0V e 5V. Sendo que as portas digitais do
Arduino podem trabalhar com uma dessas tensões.
Ainda segundo Justen (2013) as portas analógicas, são apenas entradas,
como isso pode ter vários valores de tensão, na faixa de 0V a 5v.
Conforme Arduino CC (2013) a quantidade de pinos digitais é 14, sendo que
pode ser utilizado como entrada ou saída, através de funções especificas. Ele opera
em uma tensão de 5 V. Sendo que cada pino pode fornecer ou receber um máximo
de 40mA.
3.6.6 Comunicação
Segundo Arduino CC (2013) o arduino tem uma grande facilidade de
comunicação
com
computadores
e
outros
microcontroladores.
Fornecendo
comunicação de serie, nos pinos digitais, 0 (RX) e (1) TX. A comunicação serial
através do USB aparece como uma porta no software do computador, sendo que
nenhum driver é necessário para instalação.
46
3.7 Sensores
Segundo Wendling (2010) sensor é um termo usado para designar
dispositivos sensíveis a alguma forma de energia do ambiente, esta energia pode
ser luminosa, térmica, ou cinética, relacionando informações sobre grandeza física,
que precisa ser medida como, temperatura, pressão, velocidade, corrente,
aceleração, posição entre outros.
Ainda segundo Wendling (2010) um sensor nem sempre tem as
características elétricas necessárias para ser utilizado em um sistema de controle.
Normalmente o sinal de saída deve ser manipulado antes da sua leitura no sistema.
Conforme Loureiro (2013) a mais de uma década os investimentos
multimilionários em pesquisa de tecnologia em cima desses dispositivos estão tendo
retorno. Hoje os sensores estão se tornando cada vez menores e mais baratos.
Sendo que o hardware e software são fundamentais para a implantação. A maioria
das pessoas acredita que essa tecnologia tem potencial para se tornar tão
importante quanto à internet. Permitindo compartilhar informações não importando
onde esta esteja armazenada.
Existem diversos tipos de sensores, que podem ser usados nas mais diversas
aplicações, a escolha destes, será feita de acordo com a necessidade que o usuário
possui, a seguir serão descritas algumas características de um tipo de sensor
denominado DHT22, que será utilizado neste trabalho.
3.8 Sensor DHT22
De acordo com o Aosong Electronics (2013) o sensor DHT22 é um sensor de
umidade relativa do ar e temperatura, com saída digital calibrada. Na figura 11 pode
ser visto o sensor DHT22.
47
Figura 11 - Sensor DHT22
Fonte: Aosong Electronics (2013).
Este é um sensor de alta precisão. Possui uma exclusiva tecnologia para medir a
umidade, garantindo a confiabilidade e estabilidade. Possui internamente um
microcontrolador de 8 bits para tratar o sinal. A seguir pode ser visto as principais
características deste dispositivo.
a) Tensão de alimentação: 3 a 5.5 V;
b) Saída do sinal: digital de um fio;
c) Tipo do sensor: Capacitivo
d) Faixa de medição: Umidade 0% a 99.9%; Temperatura -40 a 80ºC;
e) Precisão: Umidade +-2%RH; Temperatura: +-0.5ºC;
f) Período de medição: 2s
g) Dimensões: 25x15x7mm
3.9 Banco de Dados
Segundo Machado, Abreu (2004) um dado nada mais é do que um registro de
uma informação, uma serie de processos. O banco de dados é um conjunto de
dados.
Em um banco de dados é possível criar estruturas, manter os dados e
gerencia-los.
Conforme Date (2003) o sistema de banco de dados é basicamente um
sistema computadorizado, tendo como propósito geral armazenar informações,
permitindo assim que o usuário busque e atualize as informações quando solicitado.
48
Com a evolução dos bancos de dados surgiram os SGBD Sistemas Gerenciadores
de Banco de Dados, permitindo maior facilidade no gerenciamento de dados.
3.9.1 Mysql
Segundo Machado, Abreu (2004) a linguagem SQL foi desenvolvida pela IBM,
utilizando os conceitos de Codd.
Codd foi quem criou uma linguagem padrão
utilizada para manipular informações de banco de dados relacionais.
De acordo Longo (2006) o Mysql é banco de dados relacional eficaz,
aperfeiçoado para aplicações web. O Mysql é utilizado para estabelecer uma
comunicação entre aplicativos e bancos de dados. Ele permite ao usuário carregar
os dados que estão gravados no banco, realizando assim consultas nestes dados.
Conforme Machado e Abreu (2004) a linguagem SQL pode ser dividida em
subconjuntos, são eles: DDL, DML, DQL e DCL, a seguir serão abordadas as
principais características destes subconjuntos e quais os comandos utilizados:
a) DDL: permite a criação elementos do banco de dados, índices e tabelas;
(create,alter, drop);
b) DML: permite alteração dos dados que estão no banco de dados; (Select,
Insert, Uptdate, Delete, Commit e Rollback) ;
c) DQL: permite retirar os dados do banco de dados (Grant e Revoke);
d) DCL: segurança interna do banco de dados .
Segundo Longo (2006) o SGBD é compatível com vários sistemas
operacionais sendo eles: Windows, Linux e outros sistemas. O Mysql é compatível
com varias linguagens de programação, sendo que a seguir serão descritas algumas
características das linguagens utilizadas neste trabalho.
49
3.10
Java
Conforme Deitel (2003) a linguagem de programação Java, desenvolvida pela
Microsystems, teve sua origem nas pesquisas de um pequeno grupo de
desenvolvimento, denominado Green. O objetivo deste grupo era criar novas
gerações de dispositivos portáteis capazes de se comunicarem de forma diferente,
ampliando sua portabilidade de uso.
Como afirma Possani (2012) a linguagem de programação Java foi
desenvolvida seguindo o conceito de programação orientada a objetos, este tipo de
programação é um paradigma de análise, ou seja, projeto e programação de
sistemas de software baseado na composição e interação entre diversas unidades
de softwares chamadas de objeto.
Segundo Mendes (2009) a linguagem Java é considerada simples porque
permite o desenvolvimento de sistemas em diferentes sistemas operacionais e
arquiteturas de hardware, sem que o programador tenha que se preocupar com
detalhes de infra-estrutura. Desta forma, o programador consegue desempenhar seu
trabalho com mais produtividade e eficiência.
Conforme Possani (2012) a linguagem Java foi projetada para atender as
necessidades do desenvolvimento de aplicações em um ambiente distribuído, em
rede, e heterogêneo, por isso é tão utilizado dentro das empresas. Uma outra
grande vantagem da tecnologia são os ambientes de desenvolvimento gratuitos que
ela dispõe.
A linguagem Java é orientada a objetos, ou seja, se baseia na composição e
interação entre diversas unidades de software, que também pode ser chamada de
classes. Conforme Mendes (2009) existem algumas coleções de classes prontas
conhecidas como bibliotecas ou pacotes. Existe uma serie de bibliotecas que
poderiam ser citadas, contudo serão descritas apenas algumas características da
biblioteca RXTX, utilizada neste trabalho.
3.10.1 Biblioteca RXTX
50
Conforme rxtx.org (2013) a biblioteca RXTX é utilizada para viabilizar a
comunicação, tanto serial quanto paralela. Ela é baseada na API5 Javacomm que é
distribuída pela própria Sun, uma das empresas envolvidas no desenvolvimento da
linguagem Java.
Ainda conforme rxtx.org (2013) a biblioteca RXTX possui uma grande
vantagem sobre a Javacomm, ela é compatível com Linux, Windows e Mac,
enquanto que a Javacomm em sua atual versão, é compatível apenas com Linux,
trazendo certas limitações para o processo de desenvolvimento para múltiplas
plataformas.
3.11 Php
Segundo Melo e Nascimento (2007) a linguagem PHP surgiu no final de 1994,
quando, Rasmus Lerdorf criou uma série de utilitários para monitorar sua página
pessoal e obter informações sobre seus visitantes. Com o passar do tempo, mais
funcionalidades foram requeridas. Rasmus escreveu então uma implementação na
linguagem C destes utilitários, que deu origem ao núcleo do que ficou conhecido
como PHP/FI. Este pacote foi o início do PHP como o conhecemos hoje.
Conforme Barreto (2000) PHP é uma linguagem que permite criar sites WEB
dinâmicos, possibilitando uma interação com o usuário através de formulários,
parâmetros da URL e links. A diferença entre PHP e linguagens semelhantes como
Javascript, é que o código PHP é executado no servidor, sendo enviado para o
cliente apenas HTML puro. Desta maneira é possível interagir com bancos de dados
e aplicações existentes no servidor, com a vantagem de não expor o código fonte
para o cliente. Isso pode ser útil quando o programa está lidando com senhas ou
qualquer tipo de informação confidencial.
Como nos afirma Melo e Nascimento (2007) o PHP não tem custo de licença
justamente por ser um software livre. Isto significa que ele pode ser instalado em
5
API: Interface de Programação de Aplicativos, é um conjunto de rotinas e padrões estabelecidos por
um software para a utilização das suas funcionalidades por aplicativos que não pretendem
envolver-se em detalhes da implementação do software, mas apenas usar seus serviços.
51
qualquer máquina, para qualquer número de usuários, sem que isto denote a
violação de alguma lei de direito autoral.
3.12 HTML
De acordo com Tanenbaum (2003) o HTML (Hyper text Markup Language) é
uma linguagem de marcação, uma linguagem que descreve como os documentos
devem ser formatados. Com isso permiti ao usuário criar páginas web, podendo
incluir textos, gráficos e ponteiros para outras páginas. Uma vantagem sobre uma
linguagem com marcação e outra sem, é que se pode ter maior facilidade para criar
um navegador destinado à linguagem, basta apenas o navegador entender os
comandos de marcação. Com estes comandos de marcação, cada arquivo é
padronizado, sendo possível qualquer navegador fazer a leitura e formatar
novamente. É possível utilizar editores ou processadores de texto que são
exclusivos de HTML, para fazer boa parte do trabalho.
Conforme Tanenbaum (2003) a página web HTML consiste em tags, estas
são comandos de formatação, o arquivo vai começar e terminar com tags. Podemos
visualizar algumas seções de tags na figura 12.
Figura 12 - Tags
Fonte: Tanenbaum (2003)
52
Conforme Freemann e Freeman (2008) quando o navegador faz a leitura de
um arquivo HTML, ele traduz todas as tags que envolvem o texto, as tags informam
ao navegador o significado do texto. O navegador tem a função de solicitar uma
página HTML a um servidor web, podendo assim receber e exibir na sua janela.
Portanto é o servidor web é quem vai receber as solicitações, e encaminhar para o
navegador.
3.13 JavaScript
De acordo com Falangan (2004) JavaScript é uma linguagem de criação de
scripts, que tem a função de interpretar recursos de orientação objeto. A linguagem
foi incorporada em vários navegadores sendo eles: Netscape, Internet Explorer e
outros.
Conforme Falangan (2004) existem algumas diferenças da linguagem Java
para JavaScript. O JavaScript consegue controlar um conteúdo no navegador,
porem não consegue desenhar gráficos e desempenhar operações de rede. Já o
Java não tem nenhum controle com o navegador, porem oferece recursos gráficos e
recursos de rede.
De acordo com Tanenbaum (2003) o JavaScript tem como função poder
acompanhar o movimento do mouse sobre objetos na tela. Em algumas páginas da
web que utilizam JavaScript, quando o cursor do mouse é deslocado sobre algum
texto ou imagem.
53
4 MATERIAL E MÉTODOS
Neste capítulo serão apresentados os métodos utilizados para atingir o
objetivo proposto. A organização deste capítulo apresenta-se em duas seções que
apresentam de forma organizada as sequências das atividades que antecedem a
implementação do projeto.
A primeira seção abordará o desenvolvimento do projeto com base no
hardware que envolverá os componentes utilizados bem como o esquema de
ligação dos mesmos. Na segunda seção será abordado o desenvolvimento do
projeto com base no software, que envolverá configurações de dispositivos bem
como desenvolvimento dos sistemas utilizados.
4.1
Hardware
Os dispositivos utilizados neste projeto, bem como justificativas de uso,
estarão descritas no decorrer deste capítulo. Para que fosse elaborado o protótipo,
buscou-se conhecer todas as características bem como o esquema elétrico de cada
um deles.
Como base para o projeto, optou-se por usar o microcontrolador Arduino Uno,
por se tratar de um microcontrolador robusto e de baixo custo. O Arduino Uno pode
ser alimentado com uma tensão que varia de 6 a 20 V, visto que na fase de
desenvolvimento deste projeto, utilizou-se uma fonte de alimentação de 12 V, ligada
a energia elétrica convencional.
Os módulos, transmissores e receptores sem fio, responsáveis pela
transferência de dados, serão os módulos Xbee da Digi Internaional. Os módulos
Xbee foram escolhidos para o projeto, por possuírem características que atendem as
necessidades deste projeto. Entre elas está o alcance do sinal, que é de 100 metros,
bem como o mínimo de energia que ele necessita para operar.
O Arduino Uno possui uma tensão de funcionamento de 5 V, ou seja os
dados enviados através do pino (tx) ao pino (rx) do Xbee estarão sempre em uma
54
tensão de 5 V. Visto que segundo Digi International (2013) o Xbee possui uma
tensão rigorosa de 3.3 V, se faz necessário outro dispositivo intermediário para fazer
a conversão de tensão. Existem algumas maneiras de se fazer esta conversão, um
Shield Xbee, pode ser uma das melhores opções, ele é ligado ao Arduino,
recebendo o módulo Xbee e fazendo a conversão. O Shield Xbee é um produto caro
por isso optou-se por não usá-lo neste projeto. Outra maneira de se fazer esta
conversão é utilizando um conversor de nível lógico, que possui um valor muito
inferior ao Shield Xbee. Este conversor de nível lógico passa a tensão de 5 V para
3.3 V para que seja feita uma comunicação segura. Ele também funciona no sentido
inverso, passando de 3.3 V do Xbee para 5 V do Arduino. Com base nestas
informações optou-se por utilizar esta segunda opção no projeto, na figura 13 pode
ser visto a imagem do conversor de nível lógico.
Figura 13 - Conversor de nível lógico
Fonte: Sparkfun.com (2013)
Para que fosse utilizado este conversor, foi necessária a utilização de uma
Breadboard, para montar os circuitos. Na figura 14 está a imagem de uma
Breadboard.
55
Figura 14 - Breadboard
Fonte: breadboardphilly.org (2013)
O módulo Xbee precisa de apenas 4 ligações para operar, os 3 V de energia
no pino 1, um fio de aterramento (GND) no pino 10, entrada de dados (RX) pino 3 e
saída (TX) pino 2, os módulos Xbee possuem muitos outros pinos que não serão
utilizados neste projeto, a distribuição dos pinos pode ser vista no capitulo 4 deste
trabalho.
Até o momento foram descritas algumas características e como deve ser
montado o esquema elétrico do Arduino Uno, bem como do módulo Xbee, agora
será descrito o funcionamento e o esquema elétrico do sensor DHT22, utilizado
neste projeto para coletar dados de temperatura e umidade.
Optou-se pela utilização do sensor DHT22 por se tratar de um sensor com
baixo custo e alta precisão, principalmente quando comparado ao DHT11, na figura
15 pode ser visto melhor algumas diferenças entre estes dois sensores.
Figura 15 - Principais diferenças entre os dois sensores
Fonte: labdegaragem.com (2013)
56
O valor de temperatura é verificado através de um termistor NTC6 e a
umidade relativa através de um sensor capacitivo (capacitor de polímero especial).
Há também uma curva de compensação de temperatura que fica salva dentro de
uma memória ROM7 que faz ajustes por toda a faixa de atuação deste sensor.
Para o funcionamento do sensor DHT22 é necessário fazer a ligação do pino
1 que receberá a energia, ele pode receber uma tensão entre 3.3 e 6 V, o pino 2
será responsável pelo recebimento de dados e o pino 4 servira como aterramento.
Será utilizado também um resistor na entrada de 5 V, limitar e estabilizar a corrente
elétrica.
Na figura 16 pode ser vista a ligação de todos os dispositivos utilizados neste
protótipo, exceto o módulo Xbee receptor que será descrito a seguir.
Figura 16 - Esquema Elétrico do protótipo
Fonte: Autores (2013)
Na figura 17 pode ser vista a imagem real do protótipo.
6
NTC: (Negative Temperature Coefficient) - termístores cujo coeficiente de variação de resistência
com a temperatura é negativo: a resistência diminui com o aumento da temperatura.
7
ROM: um tipo de memória que permite apenas a leitura.
57
Figura 17 - Prótotipo
Fonte: Autores (2013)
O protótipo visto nas imagens 18 e 19, ficou no meio da lavoura e será
responsável pela coleta e envio dos dados. Para receber os dados gerados pelo
protótipo, foi utilizado um adaptador USB para o Xbee receptor, através deste
adaptador, denominado Xbee Explorer, o módulo Xbee receptor foi conectado ao
Computador que recebeu receber os dados coletados.
O Xbee Explorer faz um interfaceamento entre o computador e o módulo
Xbee, ele facilita tanto o recebimento dos dados como também a configuração dos
módulos Xbee.
4.2
Software
Neste tópico serão descritas com detalhamento todas as configurações
realizadas nos dispositivos utilizados, assim como o desenvolvimento de códigos
fontes.
58
4.2.1 Código fonte Arduino
Depois de concluída a montagem do protótipo, no que diz respeito ao
hardware, iniciou-se um estudo da linguagem de programação utilizada pelo
microcontrolador Arduino, o qual será responsável pela captura e envio dos dados
referentes a temperatura e umidade. No site arduino.cc é possível encontrar muitos
materiais de estudo, assim como exemplos de códigos, que se adaptados, podem
ser usados neste projeto. A linguagem de programação do Arduino é baseada nas
linguagens C/C++.
A partir deste estudo foi desenvolvido o código fonte, para o desenvolvimento
foi necessária a instalação da IDE do Arduino, um ambiente integrado de
desenvolvimento, encontrado no site oficial do projeto.
Para que fosse possível a coleta dos dados, foi necessário inserir a biblioteca
DHT.h, como sugerido pelo site do projeto. Esta biblioteca foi inserida para que fosse
possível a utilização do sensor de temperatura e umidade DHT22.
Depois de inserida a biblioteca, foram feitas algumas adaptações no código
fonte exemplo adquirido do site arduino.cc. Entre estas adaptações esta o intervalo
10 segundos definido para o envio dos dados através da porta serial. Foi definido
também no código, em qual pino digital estava ligado o sensor DHT22. Depois de
realizadas as alterações necessárias para o bom funcionamento do protótipo, foi
carregado o código fonte para dentro do microcontrolador Arduino, o código
funcionou perfeitamente. Na figura 18 pode ser visto o código em desenvolvimento
na IDE do Arduino.
59
Figura 18 - Código fonte
Fonte: Autores (2013)
4.2.2 Configuração dos módulos Xbee
Depois de concluído o código fonte do Arduino, foi iniciado um estudo para
entender melhor o funcionamento dos módulos Xbee, que iriam enviar as
informações coletadas pelo Arduino até um receptor.
Os módulos Xbee possuem dois modos de operação, modo transparente, que
é utilizado principalmente em redes ponto a ponto e o modo API (Application
Programming Interface), que oferece uma interface para outras aplicações em
relação a rede Zigbee, como por exemplo criar uma rede mesh.
Para este projeto, optou-se pela utilização do modo transparente, por se tratar
que um protótipo que utilizou apenas dois módulos Xbee, o transmissor e o receptor.
Por padrão os módulos Xbee vem configurados em modo transparente. O software
XCTU para Windows, encontrado no site da Digi International, é o mais
recomendado para realizar as configurações dos módulos Xbee. Na figura 19 pode
ser visto a imagem da interface do software.
60
Figura 19 - Interface XCTU
Fonte: Roger.com (2013)
Através deste software foram verificadas todas as configurações padrão do
Xbee. Todos os dois módulos vieram configurados para operar no canal 12,
operando na rede 3332 por padrão, com uma taxa de transmissão padrão de 9600
bps. No modo transparente esta configuração é suficiente para se estabelecer uma
comunicação ponto a ponto entre dois módulos Xbee. Todo o dado inserido no pino
de entrada serial será transmitido pela antena, e todo o dado recebido pela antena é
enviado pelo pino de saída da serial.
61
4.2.3 Receptor dos dados
Os dados são recebidos através do módulo Xbee receptor que está
conectado a um computador por meio de um adaptador USB. Estudou-se algumas
maneiras de se receber estes dados de forma que eles pudessem ser manipulados
futuramente. Entre pesquisas e opiniões de profissionais da área, conclui-se que
desenvolver um pequeno sistema baseado na linguagem de programação Java seria
a melhor opção. A partir desta decisão procurou-se conhecer de forma mais
detalhada o funcionamento desta linguagem de programação.
A troca de pacotes entre o nó receptor da rede e o computador é realizada
através de uma interface serial. Para tanto, conclui-se que seria necessário o
desenvolvimento de uma classe JAVA baseada na biblioteca RXTX para obter
acesso ao hardware e realizar o recebimento de dados.
Ainda por meio das pesquisas realizadas, buscou-se exemplos de códigos
que foram desenvolvidos com objetivos semelhantes. Para o desenvolvimento da
aplicação foi utilizado o software Eclipse, que é um IDE gratuito, para
desenvolvimento Java. Na figura 20 pode ser vista a interface do Eclipse com a
classe principal em desenvolvimento.
62
Figura 20 - Ide Eclipse
Fonte: Autores (2013).
Por fim optou-se por criar 4 classes dentro do código Java, são elas:
principal.java, Server.java, serialcomm.java e banco.java. A classe principal.java
como o próprio nome sugere, é a classe principal, responsável por iniciar o programa
e chamar a segunda classe, server.java. A classe server.java, é apenas uma
interface gráfica, responsável por chamar a classe serialcomm.java. A classe
serialcomm.java identifica as portas que estão disponíveis para conexão e realiza a
comunicação serial. Fica a cargo desta classe também chamar a classe banco.java,
classe responsável por gravar as informações no banco de dados.
Depois de criadas todas as classes, foram feitas ainda várias modificações no
código, surgiram vários erros e desafios durante o desenvolvimento, desafios que
precisaram de bastante dedicação e persistência para que fossem resolvidos.
Por fim chegou-se a uma aplicação que atendeu as necessidades do projeto.
4.2.4 Banco de dados
O protótipo desenvolvido necessitava que suas informações fossem
armazenadas. Portanto, depois de concluído a aplicação em Java que seria
63
responsável por receber todas as informações, iniciou-se a procura por um banco de
dados na qual fosse possível armazenar a gerenciar os dados posteriormente.
Optou-se por utilizar o banco de dados Mysql, por se tratar de um banco de
dados eficaz e aperfeiçoado para web. A escolha deste considerou também o fato
de ser uma ferramenta fácil de utilizar e possuir uma distribuição gratuita.
O pacote do Mysql encontrado no site oficial, contem uma interface gráfica
chamada de Mysql Workbench, que facilita a manipulação do banco. Por padrão o
Mysql vem com todas as configurações básicas para funcionar localmente, portanto,
foi necessária apenas a escolha de uma senha durante a instalação. Na figura 21
pode ser vista a interface Mysql do Work Bench.
Figura 21 - Interface Mysql Work Bench
Fonte: Autores (2013)
Depois de realizado a instalação, foi iniciada a criação do banco de dados. Foi
criado um banco de dados com o nome de monitoramento e dentro deste banco
uma tabela chamada leituras. Tabelas são objetos de um banco de dados que
64
contêm todos os dados. Nas tabelas, os dados são organizados de maneira lógica
em um formato de linha e coluna semelhante ao de uma planilha.
Portanto foi criada uma tabela contendo as seguintes colunas: id,
temperatura, umidade e data. Dentro destas colunas estarão armazenadas todas as
informações recebidas pela aplicação Java descrita anteriormente.
4.2.5 Página Web
A página Web permite que o agricultor possa interagir de maneira simples
com as informações coletadas de sua lavoura. Por isso a ultima parte do projeto era
a criação desta página.
Esta página deveria ser o mais simples possível, pois não houve tempo hábil
suficiente durante o projeto, para que se pensasse em algo mais robusto. Esta
página foi desenvolvida utilizando as linguagens de programação: HTML, PHP e
Java Script. Cada uma destas linguagens possui características especificas.
Características estas fundamentais para o desenvolvimento da página Web.
A página desenvolvida possui, além de uma imagem no cabeçalho, um
campo contendo a umidade e a temperatura atual e um campo onde podem ser
buscadas informações referentes a períodos de monitoramento. Estas informações
serão buscadas no banco de dados. O agricultor poderá ver estas informações em
uma tabela que conterá a data e hora em que foram feitas as leituras das
informações desejadas. Esta tabela permitirá ao agricultor analisar de forma mais
clara as variações climáticas ocorridas durante um determinado período de tempo.
Para a realização de testes, esta página Web será hospedada em um servidor
Web local, não necessitando ser hospedada em um servidor remoto, evitando assim
custos.
65
5 RESULTADOS E DISCUSSÕES
Quando finalizada toda a parte de desenvolvimento do protótipo, iniciou-se a
fase de testes. O teste descrito neste tópico foi realizado em uma plantação de
maracujá, situada na cidade de São João do Sul, (SC).
O protótipo responsável pela coleta e transmissão dos dados que ficou no
meio da lavoura foi alimentado, para fim de testes, com uma bateria alcalina de 9 V.
O teste teve como objetivo verificar a distância máxima possível, entre o nó
transmissor e o nó receptor. Os nós foram colocados a uma distância de 90 metros
um do outro, e pode ser confirmada a eficiência dos módulos Xbee. A área da
plantação onde foi realizado o primeiro teste, possui 5.000 m². Na figura 22 é
possível ter uma idéia da dimensão da plantação bem como da distância entre os
nós, sendo que o nó transmissor esta localizado no local indicado pela seta.
Figura 22 - Plantação e nós da rede
Fonte: Autores (2013).
66
Os dados recebidos pelo nó receptor foram extremamente consistentes, não
havendo nenhuma perda de dados a esta distância. Na figura 23 é possível ver os
dados recebidos na interface serial da IDE do Arduino, neste primeiro teste.
Figura 23 - Primeiro dia de teste
Fonte: Autores (2013)
Depois de realizado o teste de conexão e distância foi realizado outro teste
para verificar a aplicabilidade do protótipo em geral, este teste envolveu, conexão
com a aplicação Java, conexão com o banco e a página Web. Este teste foi
realizado no mesmo local do primeiro e com a mesma distância entre os nós.
Foi obtido um resultado satisfatório neste segundo teste, onde o protótipo
funcionou perfeitamente. Na figura 24 pode ser vista a imagem da página Web
exibindo a temperatura é a umidade atual, nela podem ser vistos também os campos
onde podem ser inseridos os períodos de tempo para busca no banco de dados.
67
Figura 24 - Interface Web
Fonte: Autores (2013)
Depois de verificado a aplicabilidade para o monitoramento da temperatura e
umidade atual, foi verificado o desempenho da página quando se necessitou fazer
uma busca por períodos de tempo. A busca foi realizada em períodos de horas, pois
entre dias não haveriam dados suficientes para o teste. Na figura 25 pode ser vista a
busca realiza com sucesso.
Figura 25 - Interface Web 2
Fonte: Autores (2013)
68
Com os testes realizados na plantação de maracujá, verificou-se a
funcionalidade
do
protótipo.
Levando
em
conta
o
tempo
hábil
para
o
desenvolvimento, e tendo visto que o projeto envolveu muitos componentes de
hardware e também o desenvolvimento de aplicações que teriam de trabalhar juntas
de forma síncrona, foi possível concluir que o projeto foi um sucesso.
Pode ser visto ao final dos testes a importância que um sistema de Smart
Farm possui para os agricultores, tendo em vista a importâncias das informações,
bem como a facilidade do agricultor de entender o funcionamento do projeto, sendo
que ele precisará apenas acessar uma página Web, onde estarão disponíveis todas
as informações que ela deseja.
Sabendo do bom resultado final do projeto e que as informações gravadas em
um banco de dados poderiam ser acessadas a qualquer momento de forma rápida e
simples, foi bastante satisfatório para os desenvolvedores.
69
6 CONSIDERAÇÕES FINAIS
Tendo em vista a necessidade de sistemas de monitoramento para lavouras,
não apenas de maracujá, mas de uma maneira geral, foi possível perceber a
importância que este projeto possui para a cultura do maracujá, bem como para a
agricultura regional.
Visto que uma boa parte da produção de alimentos no Brasil é perdida devido
a falta de monitoramento, tanto no período da safra como no período pós colheita,
sabe-se do potencial que projetos como este. Sabe-se que com a realização de
projetos como este, é possível minimizar sim os impactos causados por fatores
climáticos como a temperatura e a umidade relativa do ar.
Os desenvolvedores deste projeto sentem-se realizados por terem alcançado
o objetivo proposto. Que era de criar um protótipo baseado no conceito de Smart
Farm, que fosse capaz de capturar dados referentes a temperatura e umidade de
uma lavoura de maracujá e disponibilizá-los de forma simples ao agricultor
interessado.
Mesmo com o objetivo inicial do trabalho sendo alcançado, muitos outros
trabalhos podem ser realizados a partir deste. Em um primeiro momento seria
conveniente estudar uma fonte de energia que seja durável e de baixo custo para
alimentar o protótipo que ficará coletando os dados na lavoura, visto que foi utilizada
apenas uma bateria de 9 V para fins de teste. Em um segundo momento pode-se
pensar em um aperfeiçoamento na página web, tornando-a mais intuitiva e de fácil
uso para o agricultor. Isso pode ser feito criando campos separados para que o
agricultor possa inserir a data e a hora da busca, e também gerando gráficos a partir
dos dados coletados.
Contudo conclui-se que através de pesquisas cientificas em busca das
necessidades do mercado e do estudo de tecnologias existentes, muito projetos
podem ser desenvolvidos a partir do conceito de Smart Farm, contribuindo de forma
relevante para a agricultura.
70
REFERÊNCIAS
AOSONG ELECTRONICS CO.LTD. DATA SHEET: Digital-output relative humidity &
temperature sensor/module DHT22, 2013.
ALL, Hafle; Et. Rentabilidade Econômica do Cultivo do Maracujazeiro Amarelo Sob
Diferentes Podas e Formação. Paraíba: Instituto Federal de Educação Ciência e
Tecnologia da Paraíba, 2010.
ARDUINO. Cc. Arduino. Disponível em: <http://arduino.cc/> Acesso 05 nov. 2013.
BARRETO, Mauricio Vivas de Souza. Curso Linguagem PHP. 2000.
BARROS, Héden Sousa,OLIVEIRA, Marcelo.
Tecnologia Wireless (Wlans).
Instituto de Estudos Superiores da Amazônia Curso de Engenharia da Computação,
2005.
BRITO, Marcos Vinicius Toledo; SILVA, Robson Paulo Fernandes. Implementação
De Bacnet Sobre Zigbee Para Rede De Automação Predial Wireless. 2009.
Smart Farm. Disponível em: <www.csiro.au>. Acesso em: 10 out. 2013.
CLARO, Daniela Barreiro; SOBRAL, João Bosco Mangueira. Programando em
Java. 2008.
DATE, C. J. Introdução a Sistemas de Banco de Dados. 9 Reimpressão. Rio de
Janeiro. Elsevier. 2003.
DEITEL, H.M; DEITEL, P.J. Java Como Programar. 2003.
DIGI INTERNATIONAL. DATA SHEET: XBee/XBee-PRO RF Modules. Minnetonka:
Digi International Inc, 2009.
EVANGELISTA, Davi Stoll. Integração De Redes De Sensores Zigbee Para
Automação Predial Utilizando Módulos Meshbean. 2010.
FARIAS,
P.C.B
Artigos
de
Redes
Wireless
–
Parte
<http://www.juliobattisti.com.br/artigos/wireless/001.asp> acesso em 19 out 2013
1
FAO. Alimentos. Disponível em <https://www.fao.org.br/> acesso em 03 out 2013.
FREEMAN, Elisabeth; FREEMAN. Use a Cabeça: O guia amigo sobre HTML e CSS
2ºedição, Editora Alta Books, 2008.
71
FLANAGAN, David. Javascript: O Guia Definitivo 4º edição, Artmed Editora S.A, 2004.
GOMES, E.L.B; TAVARES, L.A. Uma solução com Arduino para controlar e monitorar processos industriais. 2013 Disponível
<http://www.inatel.br/pos/index.php/downloads/doc_download/26-luis-tavares-arduino.>..
JUSTEN, Alvaro. Curso de Arduino. Disponível em:
<http://www.cursodearduino.com.br/apostila/apostila-rev4.pdf>. Acesso em: 25 nov.
2013.
LIMA, Adelise de Almeida; BORGES, Ana Lúcia. EXIGÊNCIAS CLIMÁTICAS DO MARACUJAZEIRO. 2007. Disponível em: <www.todafruta.com.br>. Acesso em: 1 dez.
2013.
LONGO, Rafael. Estudo e Avaliação da Utilização de Bancos de Dados para o Armazenamento
de
Dados
MIDI,
2006.
Disponível
em:
<https://repositorio.ufsc.br/bitstream/handle/123456789/85325/233576.pdf?sequence=1
> acesso em 25 out 2013
LOPES, Alexandre Pereira; NASCIMENTO, Dalton Barbosa; LIMA, Mayara Moreira.
Zigbee na indústria. 2012.
LOUREIRO, A.F. Redes de Sensores Sem Fio. 2006. Disponível em :
<http://www.ic.unicamp.br/~cmbm/desafios_SBC/loureiroredesensores.pdf> acesso 01
nov. 2013.
LUGLI, Alexandre Baratella; SOBRINHO, Darlan Guilherme. Tecnologias Wireless
Para Automação Industrial: Wireless_Hart, Bluetooth, Wisa, Wi-Fi, Zigbee E Sp100. 2012. Disponível em:
<http://www.inatel.br/pos/index.php/component/docman/doc_download/27-darlansobrinho-wireless> acesso em 23 nov 2013
MACHADO, Felipe, ABREU, Mauricio. Projeto de banco de dados: Uma visão pratica.
Editora Érica Ltda., 2004.
MALETTI, Laura Maria Molina. AVANÇOS NA CULTURA DO MARACUJÁ NO BRASIL.
Jaboticabal - Sp: Revista Brasileira de Fruticultura, 2011.
Mandioca e Fruticultura: Maracujá. Disponível em: <www.cnpmf.embrapa.br> Acesso
em: 10 nov. 2013.
MCROBERTS, Michael. Arduino básico. 1ed. São Paulo. Novatec Editora, 2011.
MELO, Alexandre Altais; NASCIMENTO, Mauricio G.F..Php Profissional
Aprenda A Desenvolver Sistemas Profissionais
Orientados A Objetos Com Padrões De Projeto. 2007.
72
MENDES, Douglas Rocha. Programação Java com Ênfase em Orientação a
Objetos. 2009.
MORAES, Alexandre Fernandes de. Redes de Computadores: Fundamentos. 7. ed.
São Paulo: Érica, 2011.
O PADRÃO Zigbee. Disponível em: <zigbee.org>. Acesso em: 15 out. 2013.
PEREIRA, H.P.: Segurança em redes wireless 802.11 infra estruturadas; Universidade Federal de Lavras MG (UFLA)
POSSANI, Rafael Guedes. Re-Engenharia do software SCMS para uma
linguagem orientada a objetos (JAVA). 2012.
PUTTINI, Ricardo Staciarini. Um Modelo de Segurança para Redes Móveis AD HOC.
2004. 192 f. Tese (Doutorado) - Curso de Engenharia Elétrica, Universidade de
Brasília Faculdade de Tecnologia Departamento de Engenharia Elétrica, Brasília,
2004.
RODRIGUES, Fausto Perez. Solução de automação remota utilizando gnu/linux
embarcado e o protocolo zigbee/802.15.4. 2012.
RXTX. Disponível em: <http://rxtx.qbang.org/>. Acesso em: 20 nov. 2013.
SILVA, Leandro Honorato de Souza. Desenvolvimento de uma Rede de Sensores
Sem Fio Utilizando ZigBee para Aplicações Diversas. 2011.
SILVA, José Rafael da. Maracujá: Produção, pós-colheita e mercado. Fortaleza: Instituto
Frutal, 2004.
SILVEIRA, João Alexandre. Experimentos com o Arduino: Monte seus próprios
projetos com o Arduino utilizando as linguagens C e Processing. São Paulo. Editora
Ensino Profissional. 2011.
SHASHWATHI, N; BORKOTOKY, P; SUHAS K. Smart Farming: A Step towards Techno-Savvy Agriculture. 2012. Disponível em <
http://research.ijcaonline.org/volume57/number18/pxc3883773.pdf>. Acesso em: 21
nov. 2013.
SOARES, Sergio Aurelio Ferreira. Rede de Sensores Sem Fio Para Localização e
Monitoramento de Pequenos Ruminantes. 2012.
TANENBAUM, A. S. Redes de Computadores. 4. ed. Tradução Vandenberg D. de
Souza; Rio de Janeiro: Elsevier, 2003.
73
TORRES, Gabriel. Redes de Computadores: curso completo. Axcel Books do Brasil
Editora Ltda. 2001
VASILJEVÍC, Gabriel. Apostila de Arduino. Disponível em:
<http://escoladeverao.weebly.com/uploads/5/0/3/7/5037808/apostila_v0.5a.pdf>. Acesso
em: 23 out 2013.
VIEIRA, D.L.F. IEEE 802.11. 2004. Disponível em:
<http://www.ravel.ufrj.br/sites/ravel.ufrj.br/files/publicacoes/tutorial_padrao_ieee_802.11_
2.pdf>. Acesso em: 03 nov. 2013.
WENDLING, Marcelo. Sensores. Guaratinguetá, 2010.
WI-FI Org. 802.11.
-
.
74
APÊNDICES
APÊNDICE A – Código Arduino
APÊNDICE B- Código Classe Principal.java
APÊNDICE C- Código Classe Server.java
APÊNDICE D- Código Classe SerialComm.java
APÊNDICE E- Código Classe Banco.java
APÊNDICE F- Código Página Web index
APÊNDICE G- Código Página Web buscaleitura
75
APÊNDICE A: Código Fonte Arduino
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHT22);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("h");
Serial.print(h);
Serial.print("t");
Serial.println(t);
delay(10000);
}
APÊNDICE B- Código Classe Principal.java
76
package serial;
import serial.SerialComm;
public class Principal {
public static void main(String args[]) {
Server server = new Server();
server.interfaces();
}
}
APÊNDICE C- Código Classe Server.java
package serial;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
77
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class Server
{
SerialComm serial = new SerialComm(); //chama classe que faz a conecção
serial e identifica portas
protected static final ActionListener ActionListener = null;
public static JFrame frame;
public static JPanel content;
public static JPanel panel1;
public static JPanel panel2;
public static JPanel panel3;
public static JButton btn_disconnect;
public static JList list_clients;
public static DefaultListModel list_clients_model;
public static String porta;
public void interfaces()
78
{
serial.disponivel();
porta=SerialComm.ports[0];
final JComboBox comList = new JComboBox(SerialComm.ports);
comList.setEditable(true);
comList.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox)e.getSource();
String newSelection = (String)cb.getSelectedItem();
porta = newSelection;
}
}
);
btn_disconnect = new JButton();
btn_disconnect.setText("Iniciar");
btn_disconnect.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
btn_disconnect.setText("Parar");
comList.setEnabled(false);
btn_disconnect.removeActionListener(this);
serial.execute();
}
});
list_clients_model = new DefaultListModel();
list_clients = new JList(list_clients_model);
list_clients.addListSelectionListener(new ListSelectionListener()
79
{
@Override
public void valueChanged(ListSelectionEvent e)
{
if (e.getValueIsAdjusting())
{
System.out.println(list_clients.getSelectedIndex());
}
}
});
frame = new JFrame();
frame.setTitle("Server Arduino");
frame.addWindowListener(new WindowListener()
{
public void windowActivated(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
@Override
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void windowDeactivated(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
});
80
panel1 = new JPanel();
panel1.setLayout(new GridLayout(1, 1, 1, 1));
panel1.add(btn_disconnect);
panel1.add(comList);
panel2 = new JPanel();
panel2.add(new JLabel());
panel3 = new JPanel();
panel3.setLayout(new BorderLayout(1, 1));
panel3.add(panel1, BorderLayout.NORTH);
panel3.add(new JScrollPane(list_clients), BorderLayout.CENTER);
panel3.add(panel2, BorderLayout.SOUTH);
content = new JPanel();
content.setLayout(new GridLayout(1, 1, 1, 1));
content.add(panel3);
content.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
frame.setContentPane(content);
frame.pack();
frame.setSize(350, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
81
APÊNDICE D- Código Classe SerialComm.java
package serial;
import gnu.io.CommPortIdentifier;
import gnu.io.PortInUseException;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import gnu.io.UnsupportedCommOperationException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.TooManyListenersException;
import java.sql.Timestamp;
/**
*
* @author prototipo
*/
public class SerialComm implements SerialPortEventListener {
InputStream inputStream;
82
protected static final ActionListener ActionListener = null;
public void execute() {
Server.btn_disconnect.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
);
banco banco = new banco();
String portName = Server.porta;
CommPortIdentifier portId = getPortIdentifier(portName);
if(portId != null) {
try {
SerialPort serialPort = (SerialPort) portId.open(this.getClass().getName(), 2000);
inputStream = serialPort.getInputStream();
serialPort.addEventListener(this);
serialPort.notifyOnDataAvailable(true);
83
serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
}
catch (PortInUseException e) {}
catch (IOException e) {}
catch (UnsupportedCommOperationException e) {
e.printStackTrace();
}
catch (TooManyListenersException e) {}
} else {
Server.list_clients_model.addElement(portName+" Porta Serial não
disponível");
}
}
/**
* Get The port name
**/
/**
*Get the Port Identifier
**/
public CommPortIdentifier getPortIdentifier(String portName) {
Enumeration portList = CommPortIdentifier.getPortIdentifiers();
84
Boolean portFound = false;
while (portList.hasMoreElements()) {
CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
if (portId.getName().equals(portName)) {
Server.list_clients_model.addElement("Conectado na porta
"+portName);
portFound = true;
return portId;
}
}
}
return null;
}
public static ArrayList<String> portas = new ArrayList<String> ();
public static String[] ports;
public void disponivel()
{
Enumeration portList = CommPortIdentifier.getPortIdentifiers();
int i=0;
while (portList.hasMoreElements())
{
CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
{
portas.add(portId.getName());
85
i++;
}
}
int numPorts = portas.size();
ports = new String[numPorts];
for(i=0; i<numPorts; i++)
{
ports[i] = portas.get(i);
}
}
String result2= "";
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:
byte[] readBuffer = new byte[16];
try {
int numBytes = 0;
while (inputStream.available() > 0) {
86
numBytes = inputStream.read(readBuffer);
}
String result = new String(readBuffer);
result = result.substring(0, numBytes);
System.out.println(result.length()+" - "+result);
Timestamp time = new Timestamp(System.currentTimeMillis());
String daata = String.valueOf(time);
String resposta = result;
Date now = new Date();
Long longtime = new Long(now.getTime()/1000);
System.out.println(longtime.intValue());
banco.grava(result, longtime.intValue());//método da classe banco para
gravar na tabela
} catch (IOException e) {}
break;
}
}
}
APÊNDICE E- Código Classe Banco.java
87
package serial;
import java.security.Timestamp;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.PreparedStatement;
public class banco {
public static void grava(String ler, int time) {
if(ler.length()==14)
{
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con;
int posH = ler.indexOf("h");
int posT = ler.indexOf("t");
String Humidity = ler.substring(posH+1, posT);
String Temperature = ler.substring(posT+1, ler.length());
con = DriverManager.getConnection("jdbc:mysql://localhost",
"root", "1234");
String query ="INSERT INTO
monitoramento.leituras(temperatura, umidade, data) VALUES (?,?,?)";
PreparedStatement str;
str = (PreparedStatement) con.prepareStatement(query);
str.setString(1, Temperature);
88
str.setString(2, Humidity);
str.setInt(3, time);
str.execute();
str.close();
Server.list_clients_model.addElement(time+" - U: "+Humidity+ " T:
"+Temperature);
System.out.println("Umidade: "+Humidity+ " Temperatura: "+Temperature);
} catch (ClassNotFoundException e) {
System.out.println("Classe nao encontrada");
} catch (SQLException e){
System.out.println("Erro de Conexao!");
}
}
}
}
APÊNDICE F- Código Página Web index
<?php
$conect = mysql_connect("127.0.0.1","root","1234"); // coneccao com o banco
if(!$conect) die ("<h1>Falha na Conecao com o banco</h1>"); // erro caso nao
conecte
89
$db = mysql_select_db("monitoramento"); // seleciona o banco monitoramento
$query = mysql_query("select * from leituras order by id desc limit 0,1");
?>
<html>
<head>
<script type="text/javascript" src="js/jquery.js" charset="utf-8"></script>
<title>Projeto Arduino</title>
<style>
body{margin:0}
#conteudo{ margin:0 auto; width:1000px; height: 500px; background-color:#ffffff;}
#topo{position:relative; float:left; width:1000px; height:200px; background-image:
url(imagens/topo.png);}
#arduino{position:absolute; width:50px; height:50px; background-image:
url(imagens/arduino_logo.png); top:15px; left:15px;}
#zigbee{position:absolute; width:50px; height:72px; background-image:
url(imagens/Zigbee.png); top:75px; left:15px;}
#ifc{position:absolute; width:280px; height:112px; background-image:
url(imagens/logo_IFC.png); top:5px; right:15px;}
#titulo{position:absolute; width:280px; height:50px; top:142px; right:273px; fontfamily:arial; font-weight:bold; color:#ffffff}
#redes{position:absolute; width:80px; height:80px; background-image:
url(imagens/logo_Redes.png); top:5px; right:300px;}
#atual{position:relative; float:left; width:1000px; height:30px; font-family:arial; fontweight:bold; border-bottom:1px solid #000000;}
#busca{position:relative; float:left; width:1000px; height:200px;}
90
#graph{position:relative; float:left; width:700px; height:200px;}
#campo{position:relative; float:left; width:200px; height:20px; border:1px solid
#000000; font-family:arial; text-align: center;}
</style>
<script>
function busca()
{
data1=$("#data1").val();
data2=$("#data2").val();
valor1 = new Date(data1).getTime() / 1000;
valor2 = new Date(data2).getTime() / 1000;
$("#graph").html("");
$("#graph2").html("");
$.ajax({
type:"POST",
url:"buscaleitura.php",
dataType:"json",
data:{data1:valor1 , data2:valor2},
success: function(json)
{
qtd = json.qtd;
$("#graph").append("<div id='campo'><strong>Data</strong></div><div
id='campo'><strong>Temperatura</strong></div><div
id='campo'><strong>Umidade</strong></div>");
for(i=0; i<qtd; i++)
{
temp=json[i].temperatura;
umi=json[i].umidade;
dat=json[i].data;
91
mydate = new Date (dat*1000);
$("#graph").append("<div id='campo'>"+mydate.toLocaleString()+"</div><div
id='campo'>"+temp+"</div><div id='campo'>"+umi+"</div>");
}
}
});
}
</script>
</head>
<body>
<div id="conteudo">
<div id="topo">
<div id="arduino"></div>
<div id="zigbee"></div>
<div id="ifc"></div>
<div id="titulo">Monitoramento de Temperatura e Umidade do Ar</div>
<div id="redes"></div>
</div>
<div id="atual">
<?php
while($dados = @mysql_fetch_array($query)) // cria um array que qnto ele tiver
dados...
{
$temp = $dados['temperatura']; // armazena em $temp os resultados do campo
temperatura
$umi = $dados['umidade']; // armazena em $umi os resultados do campo umidade
echo "Temperatura: $temp Umidade: $umi<br>"; // imprime na tela os resultados
}
?>
92
</div>
<div id="busca">
data 1<input type="text" id="data1"> data 2<input type="text" id="data2"> <button
type="button" onclick="javascript:busca();">Busca</button>
<div id="graph"></div>
<div id="graph2"></div>
</div>
</div>
</body>
</html>
APÊNDICE G- Código Página Web buscaleitura
<?php
$conect = mysql_connect("127.0.0.1","root","1234"); // coneccao com o banco
if(!$conect) die ("<h1>Falha na Conecao com o banco</h1>"); // erro caso nao
conecte
$db = mysql_select_db("monitoramento"); // seleciona o banco monitoramento
$data1 = $_POST['data1'];
$data2 = $_POST['data2'];
$query = mysql_query("select * from leituras where data>=$data1 and data<= $data2
order by id asc");
$r=0;
while($dados=mysql_fetch_array($query))
{
$temp = $dados['temperatura'];
93
$umi = $dados['umidade'];
$data = $dados['data'];
$arr[$r]['umidade'] = $umi;
$arr[$r]['temperatura'] = $temp;
$arr[$r]['data'] = $data;
$arr['qtd'] = $r;
$r++;
}
echo json_encode($arr);
?>
Download