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); ?>