Upload
vongoc
View
217
Download
0
Embed Size (px)
Citation preview
Faculdade de Ciência e Tecnologia de Montes Claros
Felipe Túlio de Castro
DESENVOLVIMENTO DE UMA APLICAÇÃO MÓVEL
BASEADA NA PLATAFORMA ANDROID PARA O CONTROLE DE SISTEMAS DE IRRIGAÇÃO
Montes Claros - MG 2012
Felipe Túlio de Castro
DESENVOLVIMENTO DE UMA APLICAÇÃO MÓVEL BASEADA NA PLATAFORMA ANDROID PARA O CONTROLE DE SISTEMAS DE
IRRIGAÇÃO
Monografia apresentada ao Curso de Engenharia de Computação da Faculdade de Ciência e Tecnologia de Montes Claros, como parte dos requisitos para obtenção do título de Engenheiro de Computação.
Orientador: PROF. MS. JOÃO CARNEIRO NETTO
Montes Claros - MG 2012
FUNDAÇÃO EDUCACIONAL MONTES CLAROS Faculdade de Ciência e Tecnologia de Montes Claros
Felipe Túlio de Castro
DESENVOLVIMENTO DE UMA APLICAÇÃO MÓVEL BASEADA NA
PLATAFORMA ANDROID PARA O CONTROLE DE SISTEMAS DE
IRRIGAÇÃO
Esta monografia foi julgada adequada como parte dos
requisitos para a obtenção do diploma de Engenheiro de
Computação. Aprovada pela banca examinadora da
Faculdade de Ciência e Tecnologia de Montes Claros
______________________________________
Prof. Maurílio José Inácio
Coord. do Curso de Engenharia de Computação
Banca Examinadora
Prof. Ms. João Carneiro Netto, FACIT ____________________________ (Orientador)
Prof. Dr. Alberto Alexandre Assis Miranda, FACIT ____________________________
Montes Claros, 31 de outubro de 2012.
Dedico este trabalho a todos aqueles que assim como eu acreditam que a força de vontade e o trabalho digno mudarão o mundo.
AGRADECIMENTOS
Agradeço a Deus pela oportunidade de aprimorar meus conhecimentos e experiências
de vida.
Agradeço a João Carneiro Netto pela orientação nesse trabalho e por ter sido o primeiro
professor a me incentivar no caminho da pesquisa e do desenvolvimento tecnológico.
Agradeço a meus pais por terem me ajudado e me criado da melhor forma possível.
Agradeço a Aline Angélica Costa Teixeira por me mostrar que os recursos do mundo
devem ser preservados também para os animais.
Agradeço a Breno Peixoto dos Santos pelo ânimo e pela paciência com os quais ele me
tratou todos esses anos.
Agradeço a Dávila Patrícia Ferreira Cruz pelas incontáveis ajudas nos trabalhos em
equipe.
Agradeço a Camila Tejada Berloffa por sempre corrigir as formatações de meus
trabalhos acadêmicos.
Agradeço a Maurílio José Inácio pelas inúmeras contribuições técnicas e pela atenção
disponibilizada ao longo de todos esses anos de curso.
Agradeço a Renato Dourado Maia por me mostrar que ainda existem professores
apaixonados pelo que fazem.
Agradeço a Luciana Balieiro Cosme por me ensinar que programação pode ser
divertida.
Agradeço aos demais amigos, dos mais variados grupos aos quais pertenço, por me
ajudarem a compreender melhor minha própria existência.
Por fim, agradeço aos demais colegas e mestres da faculdade, pelas inúmeras
experiências vividas.
“(...) Android represents an exciting new opportunity to write innovative applications for mobile devices.”
Reto Meier – Software Developer
RESUMO
Esse trabalho visa entender o funcionamento dos sistemas automatizados de irrigação, propondo o desenvolvimento de um aplicativo que transforme um dispositivo móvel em uma ferramenta capaz de comunicar-se com uma base de dados disponível na Internet, facilitando a visualização das informações obtidas por uma rede de sensores colocada na fazenda. Foram utilizadas técnicas e ferramentas de desenvolvimento de software, específicas para a plataforma móvel Android, juntamente com serviços de armazenamento de dados baseados no conceito de Computação nas Nuvens, disponibilizados pelo servidor Cosm. Para efeito de testes preliminares, dados artificiais foram inseridos na base de dados do servidor. A comunicação entre o aplicativo móvel e o serviço de armazenamento de dados deu-se de forma satisfatória, alcançando tempos médios de resposta na faixa dos segundos. O sistema integrado demonstrou eficiência no objetivo de obter os dados rapidamente, auxiliando na visualização das informações, o que acarretaria em uma tomada de decisão mais consciente sobre como e quando utilizar o recurso hídrico disponível para a irrigação da cultura.
Palavras-Chave: Android, Cosm, irrigação.
ABSTRACT
This work aims to understand the functioning of automated irrigation systems and suggests the development of an application that turns a mobile device into a tool capable of communicating with a database available on the Internet, facilitating the visualization of information obtained by a network of sensors placed in a farm. Techniques and tools for software development, specific for the Android mobile platform, were used along with data storage services based on the Cloud Computing concepts, made available by the Cosm server. For the purpose of preliminary tests, artificial data were inserted on the database of the server. The communication between the mobile application and the data storage service happened satisfactorily, reaching average response times in the range of seconds. The integrated system demonstrated efficiency in obtaining the data quickly, aiding in the visualization of information, which would result in a decision-making that is more conscious about how and when to use the hydric resource available for the irrigation.
Keywords: Android, Cosm, irrigation.
LISTA DE ILUSTRAÇÕES
FIGURA 1 - Esquema da estrutura de uma rede de sensores sem fio. ................................... 15
FIGURA 2 - Estrutura geral de funcionamento do projeto WaterBee. ................................... 16
FIGURA 3 - Arquitetura da plataforma Android. ................................................................. 20
FIGURA 4 - Tablet Samsung Galaxy Tab P6210. ................................................................ 24
FIGURA 5 - Página inicial do software Eclipse. ................................................................... 26
FIGURA 6 - Tela inicial do portal para cadastro de usuários. ............................................... 27
FIGURA 7 - Tela para criação de feeds. ............................................................................... 28
FIGURA 8 - Aviso de criação de feeds com sucesso. ........................................................... 28
FIGURA 9 - Página inicial do portal do Cosm. .................................................................... 29
FIGURA 10 - Tela após o login com destaque para o serviço de criação de chaves. ............. 30
FIGURA 11 - Erro retornado quando não há permissão de uso do recurso de Internet. ......... 31
FIGURA 12 - Erro retornado quando não existe tratamento de manipulação de threads. ...... 32
FIGURA 13 - Linha de código que fornece a permissão para usar o recurso de Internet. ...... 32
FIGURA 14 - Página inicial do aplicativo. ........................................................................... 33
FIGURA 15 - Painel de configuração dos parâmetros. ......................................................... 34
FIGURA 16 - Mensagem de aviso do aplicativo quando um parâmetro é ultrapassado. ........ 35
FIGURA 17 - Aviso de desligamento automático. ................................................................ 35
FIGURA 18 - Tela de apresentação dos dados obtidos no servidor. ...................................... 36
FIGURA 19 - Visualização da corrente elétrica em forma de gráfico.................................... 37
FIGURA 20 - Visualização da temperatura em forma de gráfico. ......................................... 37
FIGURA 21 - Visualização da umidade do solo a 40 centímetros em forma de gráfico. ........ 38
FIGURA 22 - Visualização da umidade do solo a 60 centímetros em forma de gráfico. ........ 38
FIGURA 23 - Visualização da umidade do ar em forma de gráfico. ..................................... 39
FIGURA 24 – Estrutura JSON disponibilizada pelo servidor Cosm. ..................................... 40
FIGURA 25 - Fluxograma da lógica de execução para receber dados. .................................. 41
FIGURA 26 - Função que busca os dados do servidor Cosm. ............................................... 42
FIGURA 27 - Código-fonte responsável pela impressão dos dados na tela. .......................... 42
FIGURA 28 - Tela de controle remoto dos recursos de irrigação. ......................................... 43
FIGURA 29 - Instância da válvula 01 no Cosm com o gatilho armazenado. ......................... 44
FIGURA 30 - Fluxograma do controle remoto do sistema de irrigação. ................................ 45
FIGURA 31 - Código-fonte que executa a criação de uma trigger. ....................................... 46
FIGURA 32 - Mensagem de confirmação do acionamento remoto. ...................................... 46
FIGURA 33 - Fluxograma para o desligamento de válvulas. ................................................ 47
FIGURA 34 - Tela de informações sobre o ambiente de monitoramento. ............................. 48
SUMÁRIO
INTRODUÇÃO .................................................................................................................. 10
CAPÍTULO 1 A TECNOLOGIA NA AGRICULTURA ................................................. 12 1.1 Irrigação de precisão .................................................................................................... 13 1.2 Sistema de aquisição de dados ..................................................................................... 14 1.2.1 Sistemas embarcados................................................................................................. 15 1.3 Mudança de paradigma ............................................................................................... 15 1.4 A Internet e o advento da Computação nas nuvens .................................................... 17 1.5 Dispositivos móveis e suas plataformas ....................................................................... 17 1.6 A plataforma Android .................................................................................................. 18 1.6.1 Open Handset Alliance (OHA) .................................................................................. 19 1.7 Arquitetura da plataforma Android ........................................................................... 19 1.7.1 Linux Kernel (Núcleo Linux)..................................................................................... 20 1.7.2 Android Runtime (Tempo de execução do Android) ................................................ 21 1.7.3 Libraries (Bibliotecas) ................................................................................................ 21 1.7.4 Application Framework (Framework de aplicações) ................................................. 21 1.7.5 Applications (Aplicações) ........................................................................................... 22
CAPÍTULO 2 MATERIAIS E MÉTODOS ...................................................................... 23 2.1 Tablet Galaxy Tab P6210 ............................................................................................. 23 2.2 Linguagem de programação Java................................................................................ 24 2.3 Android Software Development Kit (SDK) ................................................................... 25 2.4 Eclipse ........................................................................................................................... 26 2.5 Servidor Cosm .............................................................................................................. 26
CAPÍTULO 3 RESULTADOS: APRESENTAÇÃO, ANÁLISE E DISCUSSÃO .......... 29 3.1 Desenvolvimento do aplicativo..................................................................................... 48 3.2 Ferramentas para conexão com a Internet ................................................................. 49 3.3 Formato dos dados disponibilizados pelo Cosm.......................................................... 49
4 CONSIDERAÇÕES FINAIS .......................................................................................... 51
REFERÊNCIAS ................................................................................................................. 52
10
INTRODUÇÃO
Os agricultores do norte de Minas Gerais dificilmente podem contar com a sempre
regular precipitação de chuva, de forma a gerar um bom cultivo de seus campos. Quando
alguns projetos de irrigação foram iniciados na região, como o projeto Jaíba, a situação
mostrou capacidade de melhorar. Junto a esse novo cenário tem-se um aumento na utilização
de tecnologias de automação para os processos do campo agrícola. Esse aumento contribui
para que os processos tendam a se tornar mais produtivos, desde que exista uma forma de
gerenciamento bem clara e precisa. A crescente demanda por tecnologia na agricultura,
principalmente no contexto do processo de irrigação, força os modelos antigos de sistemas
automatizados a necessitarem de ferramentas rápidas e de fácil utilização para gerenciar as
informações obtidas nas fazendas. Com essa premissa, inúmeras pesquisas estão sendo
trabalhadas para alcançar a maximização da produção dos campos agrícolas e a minimização
da área de plantio, o que acarreta em uma menor degradação do meio ambiente.
Tendo em vista que a manutenção de um campo agrícola consome tempo considerável
do ser humano, é válido otimizar esse recurso para gerar conforto, ganho de tempo e
confiabilidade nas decisões adotadas diariamente. O objetivo deste trabalho é propor um
aplicativo que funcione em dispositivos móveis – seja em um smartphone ou em um tablet –
baseados na plataforma Android. O aplicativo é integrado a um servidor de armazenamento
de dados denominado Cosm. Através dessa integração, a aplicação móvel deve ser capaz de
gerir e facilitar o controle dos processos de irrigação, obtendo os dados disponíveis no
servidor da Internet e os apresentando aos usuários do sistema para que a tomada de decisões
tenha maior embasamento técnico, o que aumentará a usabilidade dos recursos. O resultado
dessa integração é aplicado no problema de monitoramento de ambientes.
Nos capítulos a seguir serão descritos todos os passos do presente trabalho. No capítulo
1 serão apresentados ao leitor alguns conceitos e ferramentas tecnológicas, bem como o
contexto da agricultura e da necessidade de precisão e confiabilidade de informações do
ambiente.
No capítulo 2 serão descritos os métodos, as ferramentas e as técnicas utilizadas para o
desenvolvimento da aplicação móvel e para a integração com o servidor Cosm
disponibilizado na Internet. O ambiente de testes e os equipamentos utilizados também serão
apresentados ao leitor.
11
No capítulo 3, os resultados obtidos com os testes realizados em laboratório serão
apresentados e discutidos. Figuras e tabelas descreverão as respostas conseguidas na
integração do software com o servidor. Serão propostas algumas telas de controle e
visualização de informações para o aplicativo. Com os dados de funcionamento da integração
dos sistemas, foi possível levantar análises e opiniões sobre a aplicabilidade do produto obtido
nesse trabalho, a fim de averiguar a eficácia do mesmo.
Por fim, na parte destinada às considerações finais, são feitas algumas considerações e
indagações sobre as impressões dos resultados e uma possível continuidade do projeto.
Apresentam-se também nessa parte algumas ideias para novos testes a serem produzidos em
pesquisa futura.
12
CAPÍTULO 1 A TECNOLOGIA NA AGRICULTURA
A agricultura sempre foi um meio de sobrevivência utilizado pelo homem. O alimento
fornecido pela natureza dava vida e força aos que os colhiam e hoje não é diferente. Contudo,
nos últimos tempos o homem está enfrentando uma dificuldade nas questões da
sustentabilidade e da provisão de alimentos para a humanidade. Segundo afirma Lemos,
Nogueria e Torre-Neto (2004), a área cultivada no planeta era de 1,5 bilhões de hectares para
os 6 bilhões de pessoas que viviam na Terra em 2004. Na época em que o artigo foi publicado
na revista Analytica – periódico especializado em instrumentação e controle de qualidade –
havia uma previsão de que em 2025, teríamos no planeta mais de 8 bilhões de pessoas e
apenas 1,6 bilhões de área de cultivo.
Tendo em mente problemas como este, inúmeras pesquisas e tecnologias estão sendo
trabalhadas e desenvolvidas para melhorar o processo de agricultura, desde a plantação até a
colheita. Surgem então técnicas para aumento de produtividade no campo, como por exemplo,
a chamada automação agrícola.
A ideia por trás do conceito de automação agrícola é fornecer ao campo da agricultura
ferramentas tecnológicas capazes de simplificar e controlar melhor os recursos existentes para
o processo, gerando um resultado mais significativo e com menos desperdício para o
produtor. O uso mais racional dos recursos naturais, a economia da energia utilizada e a maior
eficiência dos processos são algumas metas objetivadas na automação da agricultura. Com
este conceito temos a união de várias áreas do conhecimento contribuindo para a elevação dos
níveis de qualidade dos processos e produtos.
Os resultados do avanço tecnológico nesta área para a sociedade são consideráveis.
Quando o processo tem suas variáveis internas e externas avaliadas, é possível saber qual
parte da produção está ou ficará abaixo do esperado e buscar soluções para contornar o
problema. Com estas informações em mãos, existe uma maior produtividade da lavoura e,
consequentemente, mais alimentos com melhor qualidade são produzidos. Com a
automatização, temos uma redução dos acidentes de trabalho e uma minimização dos erros
originados por falha humana, o que evita retrabalhos e prejuízos aos produtores, influenciando
numa plausível queda nos preços dos produtos perante o mercado consumidor.
De acordo com o site do Laboratório de Automação Agrícola (LAA), do Departamento
de Engenharia de Computação e Sistemas Digitais da Escola Politécnica da Universidade de
São Paulo, a automação agrícola vem se desenvolvendo significativamente no mundo e no
13
Brasil. Entre os campos de pesquisa existentes pode-se citar a monitoração de veículos e
implementos agrícolas (semeadora, carregadora de cana-de-açúcar), o controle de ambientes
(casas de vegetação), a zootecnia de precisão e a modelagem de fotossíntese e seqüestro de
carbono.
1.1 Irrigação de precisão
Existem muitas ramificações que podem ser trabalhadas dentro da agricultura de
precisão, mas uma em especial se destaca devido a sua importância. A irrigação, quando
trabalhada corretamente, fornece para a cultura um material fundamental para seu
crescimento, a água. Porém, se ela não for trabalhada periodicamente, a chance de sua
plantação não prosperar é grande. A forma como a irrigação será tratada no projeto de cultivo
poderá ditar o sucesso ou o fracasso do mesmo.
A irrigação de precisão utiliza tecnologias que permitem aplicar quantidades uniformes de águas em locais precisos dentro do perfil do solo, proporcionando tratamentos diferenciais de irrigação focalizando plantas individualmente ou pequenas áreas dentro do campo (CRUZ, 2009, p. 22).
Esta técnica possui os mesmos objetivos e a mesma forma de trabalho da agricultura de
precisão, com a diferença de ser especializada para um processo específico. Seu campo de
atuação restringe-se a controlar e melhorar o fornecimento de água para a cultura, de maneira
que os recursos hídricos não sejam desperdiçados. Resumidamente, a irrigação de precisão
pode ser entendida como a definição de quando utilizar a água e do quanto utilizar.
Inúmeros contratempos surgem com o despejo incorreto da água sobre o solo. Quando
este é pouco abastecido, ele acaba não fornecendo o devido ambiente para que as plantas
cresçam e assim elas serão de baixa qualidade. Isso gera um desperdício da água que foi
utilizada e que não teve serventia nenhuma. Por outro lado, quando muito abastecido, o solo
satura e sua aeração fica impedida. Além disso, o excesso da água acaba propiciando o
desenvolvimento de doenças, que podem causar prejuízo à cultura (ALBUQUERQUE;
DURÃES, 2008 apud GUIMARÃES, 2011).
Para que a ideia da irrigação de precisão funcione corretamente e seja viável para o
produtor, é preciso levar em conta alguns fatores que a tornam um bom investimento. Por
14
exemplo, os sistemas de aquisições de dados precisam ser aliados a um bom gerenciamento
das análises e a definição de uma política administrativa (SONKA; BAUER; CHERRY, 1997
apud CRUZ, 2009).
1.2 Sistema de aquisição de dados
Um sistema de aquisição de dados é um conjunto de ferramentas eletrônicas e
computacionais unidas para desempenhar funções específicas, sendo capazes de coletar,
armazenar e divulgar os dados advindos do solo.
A vantagem no uso de sistemas como este é a sua confiabilidade nos dados coletados. A
precisão com que os componentes conseguem armazenar e repassar estes dados aos
operadores do sistema é fundamental para a adoção de futuras estratégias de irrigação. Além
disso, a possibilidade de se ter informações sobre o cultivo de forma remota poupa tempo para
o produtor.
Muito já se evoluiu em termos de tecnologias para a plantação e para a irrigação em si.
Diversos modelos já foram criados e muitas ferramentas foram combinadas para fornecer uma
irrigação inteligente. Os sistemas embarcados, as redes de sensoriamento e os computadores
pessoais são amplamente utilizados na irrigação de precisão.
Uma técnica bem aceita hoje é fazer o uso de uma rede de sensores conectada a um
computador para monitorar as variáveis que influenciam numa plantação. Sensores de
temperatura do ar, de pressão hidráulica, de temperatura do solo, de umidade relativa do ar e
outros são instalados no campo e programados para comunicar-se com o computador, assim
como mostra a Fig. 1.
15
FIGURA 1 - Esquema da estrutura de uma rede de sensores sem fio. Fonte: http://www.wirelessbrasil.org
1.2.1 Sistemas embarcados
O conjunto de componentes, alguns sendo hardware e outros sendo software, embutidos
dentro de outros equipamentos eletroeletrônicos e que possuem a finalidade de realizar
alguma atividade específica são os sistemas conhecidos como embarcados. Este tipo de
sistema é programado para resolver questões e problemas de coisas do cotidiano. Seu
processamento é feito para uma ou algumas funções em especial, diferentemente do
computador que é uma ferramenta para cálculos e tarefas gerais.
Os sistemas embarcados estão em grande parte de eletrônicos como o celular, a
televisão com alguma funcionalidade mais interativa com o usuário, o computador de bordo
de um veículo etc.
A praticidade é o ponto principal que incentiva o uso desta ferramenta. Suas dimensões
reduzidas permitem o deslocamento fácil, tornando o sistema de aquisições de dados flexível
para se adaptar às mudanças de localização que se fizerem necessárias.
1.3 Mudança de paradigma
Apesar das muitas vantagens que podem ser associadas à estrutura de projetos de
irrigação automatizados, ela não atende a demanda da mobilidade que hoje é imprescindível
para muitas pessoas. Ter um computador centralizador de dados da rede de sensores foi uma
conquista para a irrigação de precisão muito valiosa, mas que hoje não pode cobrir a
16
facilidade que é ter um dispositivo móvel capaz de te mostrar relatórios de suas culturas a
uma distância considerável.
Pensando na mudança comportamental da sociedade, um grupo de pesquisadores
europeus desenvolveu uma estrutura diferente, agregando a estrutura antiga algumas
tecnologias que agora convivem com o ser humano. A Internet e os dispositivos móveis como
os smartphones e os tablets estão presentes nos bolsos de parte considerável da população.
Denominado de WaterBee, o projeto europeu consiste em uma série de sensores que medem o
conteúdo de água no solo e outros parâmetros que influenciem diretamente na plantação. Os
dados obtidos são encaminhados através da rede até um gateway1 para então serem enviados a
um serviço central hospedado na Internet. Os relatórios destes dados são apresentados ao
usuário através de um aplicativo móvel instalado no smartphone ou por um navegador de
Internet instalado no computador pessoal.
Observamos que o elemento do computador pessoal não foi abolido da estrutura, apenas
criou-se uma forma alternativa de visualização para o usuário. Junto a essa mudança, surgiu o
elemento do smartphone. A escolha de incluir a plataforma móvel na estrutura de projetos de
irrigação de precisão foi baseada em sua grande visibilidade e adesão. Segundo Lecheta
(2010), no ano de 2010 estudos mostravam que mais de 3 bilhões de pessoas possuíam um
aparelho celular, e isso correspondia a mais ou menos metade da população mundial. A Fig. 2
mostra a interligação entre os elementos existentes para o sistema de irrigação do projeto
WaterBee.
FIGURA 2 - Estrutura geral de funcionamento do projeto WaterBee. Fonte: http://www.waterbee.eu
1 Gateway é uma espécie de “portão de entrada” que separa uma rede local da Internet. Ela serve, basicamente, como ferramenta para prover a comunicação entre estas duas redes diferentes.
17
O projeto europeu WaterBee é pioneiro na utilização do elemento móvel para servir
como aplicação cliente do sistema de aquisição de dados desenvolvido para a plantação.
Apesar de ainda estar em fase de testes, o projeto mostrou bons resultados e ganho
significativo de produtividade graças à arquitetura proposta que usufrui da praticidade e
conectividade dos dispositivos móveis. Novos testes estão sendo feitos para verificar o
desempenho do WaterBee em outros ambientes de cultura.
1.4 A Internet e o advento da Computação nas nuvens
A Internet se popularizou muito desde os tempos de sua criação. Hoje, ela está
disponível não somente às grandes universidades e centros militares, mas também nas casas,
shoppings, comércios, indústrias etc. A disponibilidade que possuímos de acessá-la traz
inúmeros benefícios para quem deseja reduzir custos ou melhorar a usabilidade do espaço
pessoal e profissional. A computação nas nuvens veio consolidar a proposta de um serviço de
informática onde se paga por aquela estrutura computacional que foi realmente utilizada, ou
seja, “cada parte desta infraestrutura é provida como um serviço e, estes são normalmente
alocados em centros de dados, utilizando hardware compartilhado para computação e
armazenamento.” (BUYYA et al., 2009b apud SOUSA; MOREIRA; MACHADO, 2009,
[s.n.t]).
O termo nuvem é usado como metáfora para a Internet e a computação baseada nela foi
projetada para vislumbrar três benefícios básicos:
O primeiro benefício é reduzir o custo na aquisição e composição de toda infraestrutura requerida para atender as necessidades das empresas, podendo essa infraestrutura ser composta sob demanda e com recursos heterogêneos e de menor custo. O segundo é flexibilidade que esse modelo oferece no que diz respeito à adição e substituição de recursos computacionais, podendo escalar tanto em nível de recursos de hardware quanto software para atender as necessidades das empresas e usuários. O último benefício é prover uma abstração e facilidade de acesso aos usuários destes serviços. (SOUSA, MOREIRA; MACHADO, 2009, [s.n.t]).
1.5 Dispositivos móveis e suas plataformas
Inúmeros são os sistemas operacionais que hoje estão competindo entre si por uma
parcela do mercado consumidor de dispositivos móveis e, portanto, temos que “a escolha de
18
uma plataforma ideal para o desenvolvimento de um projeto significa optar por uma solução
que forneça os melhores benefícios, em termos de custos, eficiência e tempo de
desenvolvimento esperados para a finalização do projeto” (AQUINO, 2007, p. 3).
Segundo Morimoto (2009), os principais sistemas operacionais existentes para
smartphones no mercado são o PalmOS da Palm Inc., o Windows Mobile da Microsoft, o
Symbian OS da Psion, o BlackBerry OS da empresa canadense Research In Motion, o iPhone
OS da Apple e o Android da Google Inc.
Um dos motivos mais claros para esta grande diversificação de empresas investindo no
setor de mobilidade é a demanda que o consumidor faz por comodidade e aumento de
produtividade. Quando o usuário utiliza um só equipamento com todas as funcionalidades de
que ele necessita em seu dia-a-dia, seja na vida pessoal ou na profissional, sua produtividade é
aumentada graças ao ganho com tempo de acesso e manuseio de dados, além de gerar mais
comodidade no armazenamento e deslocamento dos mesmos. O fator conectividade também é
essencial na decisão de usar ou não um dispositivo móvel. Possuir um equipamento capaz de
te deixar a par de todas as informações sobre o que acontece ao seu redor pode ser um grande
diferencial quando se trata de tomar decisões constantemente. Lecheta (2010) afirma que as
empresas buscam ferramentas modernas e ágeis para o desenvolverem soluções corporativas,
visando o aumento do lucro, enquanto que o usuário comum deseja um celular com design
elegante e moderno e que seja fácil de utilizar, possuindo diversas aplicações a favor de seu
entretenimento e lazer.
Com tantas opções a disposição do consumidor no mercado, cada qual com suas
características, faz-se necessário definir um sistema operacional a ser trabalhado. Assim, para
efeito deste trabalho, o sistema operacional escolhido foi o Android, o sistema da empresa
Google Inc..
1.6 A plataforma Android
A plataforma Android é baseada no kernel2 2.6 do já conhecido sistema operacional
Linux3 e oferece aos desenvolvedores “(...) um ambiente de desenvolvimento bastante
poderoso, ousado e flexível.” (LECHETA, 2010, p. 19). Uma característica interessante sobre
2 Kernel é um termo em inglês para a palavra núcleo. 3 Linux é um sistema operacional muito conhecido pela comunidade como o possível concorrente do sistema Windows da Microsoft. O Linux, salvo algumas exceções, é utilizado para computadores pessoais.
19
o Android é o fato de que ele é livre e de código-fonte aberto. Desta maneira, a evolução e o
melhoramento da plataforma podem ser feitos por muitos programadores ao redor do mundo,
promovendo rapidez nas correções de falhas existentes na plataforma.
Apesar de ter o código-fonte aberto e livre para o uso de qualquer um, a plataforma é
mantida oficialmente por um grupo de empresas de tecnologias que centraliza os esforços de
divulgação do Android para a comunidade de desenvolvedores e para os consumidores. Esta
aliança é conhecida pelo nome Open Handset Alliance.
1.6.1 Open Handset Alliance (OHA)
Este grupo é composto por grandes empresas do ramo de tecnologia e telefonia,
empresas essas lideradas pelo Google. O objetivo desta aliança é “(...) definir uma plataforma
única e aberta para celulares para deixar os consumidores mais satisfeitos com o produto
final.” (LECHETA, 2010, p. 21). Os membros são compostos por organizações de diversos
países. No site da OHA (vide referências bibliográficas), é possível encontrar os nomes dos
membros da aliança divididos por área de mercado em que elas atuam.
A OHA também afirma em seu site que o Android foi desenvolvido a partir do zero
para que ele fosse a primeira plataforma aberta, completa e livre criado especificamente para
ser utilizado em dispositivos móveis. O fato de um sistema operacional ter sido imaginado e
modelado para dispositivos móveis reforça a possibilidade de o sistema ser capaz de gerenciar
o gargalo gerado entre gastar menos energia e ter maior desempenho.
1.7 Arquitetura da plataforma Android
A plataforma do Android possui vários módulos necessários para uma boa execução dos
aplicativos baseados nela. Cada parte é responsável por algumas atividades específicas de
controle e execução dos recursos dos dispositivos móveis e dos acessos ao sistema
operacional. Esses módulos gerenciam a forma de trabalho da plataforma. De acordo com
Frank Ableson (2008), designer de software da IBM, a melhor maneira de descrevermos a
plataforma é como uma pilha, devido ao fato dela ser um conjunto empilhado de
componentes. A Fig. 3 apresenta a arquitetura da plataforma Android. Os módulos mostrados
20
na figura abaixo vão desde núcleo do sistema até as aplicações de interação com o usuário.
Cada parte será descrita nos tópicos a seguir.
FIGURA 3 - Arquitetura da plataforma Android. Fonte: http://www.linhadecodigo.com.br
1.7.1 Linux Kernel (Núcleo Linux)
O Android foi baseado na versão 2.6 do núcleo do Linux e ele “(...) é responsável por
gerenciar a memória, os processos, threads4 e a segurança dos arquivos e pastas, além de
redes e drivers5 .” (LECHETA, 2010, p. 23). O núcleo também provê uma camada de
abstração entre o hardware do dispositivo e as pilhas de requisições as operações do sistema.
Como o núcleo do Linux já é bem desenvolvido em termos de codificação, pois seu
estudo e desenvolvimento se dão há muito anos, o Android apresenta grande estabilidade de
funcionamento durante sua execução, assim como o próprio sistema operacional Linux.
4 Thread é uma das maneiras utilizadas por um processo para dividir a si mesmo em duas ou mais tarefas que podem ser executadas simultaneamente. 5 Driver é um software que executa a função de controlar a comunicação entre componentes eletrônicos e o núcleo do sistema operacional.
21
1.7.2 Android Runtime (Tempo de execução do Android)
De acordo com Reto Meier (2010), o Android Runtime é a engrenagem que se encarrega
de fornecer funções para aplicação desenvolvida e, junto com as bibliotecas, constituir base
para a estrutura dela. É a parte do sistema que fica executando a plataforma do Android no
dispositivo móvel em que ele está instalado. Este módulo é composto por duas partes: a parte
da máquina virtual chamada Dalvik e pelas bibliotecas do núcleo do sistema.
Estes arquivos são necessários para que as aplicações desenvolvidas para o Android
consigam acessar as funcionalidades que o sistema operacional oferece e assim possam
executar as configurações de que necessitam.
1.7.3 Libraries (Bibliotecas)
As libraries, que em português significa bibliotecas, são conjuntos de arquivos de
código que fornecem ao desenvolvedor as funções e a possibilidade de comunicar o aplicativo
que está sendo criado com os recursos existentes no sistema. Um exemplo é a biblioteca
gráfica OpenGL/ES que dá a possibilidade de criar aplicações usando uma interface gráfica
para interação entre o usuário e o sistema operacional. Esse conjunto de bibliotecas presente
na estrutura da plataforma Android fornece grande parte das bibliotecas disponíveis para a
linguagem Java, usada para o desenvolvimento, bem como provê as bibliotecas específicas
para Android.
1.7.4 Application Framework (Framework de aplicações)
Algumas aplicações possuem partes de códigos parecidas. Para que não seja gerado
retrabalho é possível utilizar o framework6 de aplicações para reutilizar funções de outras
aplicações.
A arquitetura da aplicação foi projetada para simplificar o reuso dos componentes. Qualquer componente pode publicar suas capacidades e quaisquer outros
6 Framework é uma técnica aplicada no desenvolvimento de um software para, basicamente, explorar o potencial de reutilização de partes de software já desenvolvidas.
22
componentes podem então fazer uso dessas capacidades, sujeito às restrições de segurança reforçadas pelo framework. (AQUINO, 2007, p. 7).
Segundo Reto Meier (2010), o framework disponibiliza uma abstração genérica para
facilitar o acesso ao hardware e o gerenciamento da interface com o usuário. A abstração
também possibilita ao desenvolvedor utilizar os recursos dos dispositivos de forma mais
simples.
1.7.5 Applications (Aplicações)
O sistema do Android fornece também para seus usuários um conjunto de aplicações
básicas e de uso geral que são pré-instaladas no dispositivo. Posteriormente, este módulo
passa a gerenciar também a comunicação entre futuras aplicações que forem instaladas no
Android e o núcleo do sistema. Uma característica importante dessa camada é que “ela
executa juntamente com o Android Runtime, usando as classes e serviços disponíveis pelo
framework de aplicações” 7 (MEIER, 2010, p. 14).
7 Traduzido pelo autor.
23
CAPÍTULO 2 MATERIAIS E MÉTODOS
O trabalho desenvolvido visa propor e medir o desempenho operacional de um software
que se baseia na plataforma móvel Android, integrando-o a um sistema de armazenamento de
dados baseado em Computação nas Nuvens para recebimento e visualização de dados. A
princípio, para levantar os requisitos do sistema (quais dados deveriam ser armazenados e
como o software deveria trocar informações com o sistema de armazenamento), foram
realizadas entrevistas com especialistas em desenvolvimento de software. Logo após, foram
feitos alguns estudos retrospectivos em livros e periódicos para determinar com mais precisão
os índices de maior importância e assim poder coletar os dados mais relevantes para o estudo.
Logo após a análise dos dados, todo o desenvolvimento prático dessa pesquisa ocorreu em um
laboratório. Os ambientes de desenvolvimento e teste foram controlados.
Com o intuito de submeter o software a uma bateria de testes a fim de averiguar seu
desempenho funcionando em um aparelho real, o dispositivo móvel tablet Galaxy Tab P6210,
da Samsung, foi escolhido como ambiente de testes dentre todos os demais tablets existente
no mercado graças aos recursos oferecidos.
2.1 Tablet Galaxy Tab P6210
O tablet Galaxy Tab P6210 é um dos modelos da Samsung, empresa de produtos
eletrônicos, para concorrer no disputadíssimo mercado dos equipamentos móveis. Entre as
diversas características do equipamento escolhido, destaca-se o fato do mesmo possuir um
módulo de conexão wi-fi, ou seja, capacidade para conexão com a Internet através de uma
rede sem fio. Além disso, a tela de 7 polegadas de alta resolução, os dois processadores de
1.2GHz para um bom desempenho, uma memória interna de 16GB e o sistema Android,
versão 3.28, fizeram deste dispositivo uma boa escolha para ambiente de testes do software
desenvolvido. Abaixo segue a Fig. 4, referente ao equipamento. O dispositivo ainda conta
com outros recursos que não serão citados neste trabalho por motivo de irrelevância para o
estudo proposto.
8 As informações descritivas do produto foram obtidas no portal eletrônico da Samsung.
24
FIGURA 4 - Tablet Samsung Galaxy Tab P6210. Fonte: http://www.shoptime.com.br
Escolhido o dispositivo, o software foi executado para algumas avaliações. A partir
deste ponto, a coleta de informações para o projeto se deu na forma de tabulações e análises
dos experimentos realizados com o software instalado no dispositivo, sendo estes dados,
posteriormente, submetidos a interpretações. Contudo, antes de iniciar o desenvolvimento da
aplicação, foi necessário configurar o ambiente de desenvolvimento corretamente. Esse
ambiente consiste de algumas ferramentas que são utilizadas para criar, testar e visualizar o
progresso do projeto.
2.2 Linguagem de programação Java
A linguagem Java foi desenvolvida pela empresa Sun Microsystems no inicio da década
de 90 com a meta de ser mais simples e eficiente do que as linguagens existentes no mercado
naquela época. Sua sintaxe é muito semelhante às sintaxes das linguagens C e C++. Além
disso, a linguagem Java foi desenvolvida para ser mais segura, ou seja, ela possui mecanismos
que impedem o desenvolvedor de realizar algumas operações que, normalmente, outras
linguagens oferecem e que podem gerar riscos se não forem implementadas com cautela,
como por exemplo, o uso de ponteiros.
25
Existem diversas versões da linguagem, sendo uma versão para cada tipo de aplicação a
ser desenvolvida. São elas:
a) java SE: para o desenvolvimento de aplicações que funcionarão no computador
pessoal do usuário;
b) java EE: plataforma para desenvolver sistemas orientados a empresas;
c) java ME: plataforma para aplicações que executarão em dispositivos móveis e em
serviços embarcados.
Segundo o portal Linha de Código, as aplicações do Android funcionam baseadas na
linguagem Java e, portanto, as ferramentas para desenvolvimento em Java devem estar
presentes no computador utilizado pelo desenvolvedor. Desta maneira, o primeiro item a ser
instalado no ambiente é o Java SE Development Kit (JDK), que, segundo Friesen (2010), é o
“kit” que contém todas as ferramentas necessárias para o desenvolvimento de aplicações em
Java, incluindo o compilador da linguagem.
Os desenvolvedores também utilizam uma edição especial criada pelo Google da
plataforma Java para criar aplicações que rodem em dispositivos habilitados para Android.
Esta edição é conhecida como plataforma Android (FRIESEN, 2010).
2.3 Android Software Development Kit (SDK)
O Android SDK é o software utilizado para desenvolver aplicações no Android, que
tem um emulador para simular o celular, ferramentas utilitárias e uma API completa para a
linguagem Java, com todas as classes necessárias para desenvolver as aplicações (LECHETA,
2010).
O instalador do Android SDK para o sistema operacional Windows é encontrado
facilmente no site disponibilizado na Internet especialmente para os desenvolvedores da
plataforma. O próprio site oferece um breve passo-a-passo de como instalar e configurar
corretamente o ambiente para construir um aplicativo para Android. Agora, é necessário
instalar também um plugin chamado Android Development Tools (ADT), que adiciona
suporte integrado para projetos e ferramentas Android. O plugin ADT nada mais é senão um
conjunto de ferramentas de desenvolvimento da plataforma e que também é encontrado no
site.
26
2.4 Eclipse
O Eclipse é um ambiente de desenvolvimento integrado (em inglês Integrated
Development Environment) para o desenvolvimento de aplicações Java, mas ele também pode
ser usado para o desenvolvimento de aplicações utilizando outras linguagens como PHP, C++
e outras. No site oficial da ferramenta existem diversas versões da IDE que podem ser
baixadas gratuitamente. A Eclipse Foundation, organização sem fins lucrativos, é que
mantém e coordena o desenvolvimento de novas versões da IDE e divulga projetos que
utilizem o software.
Para efeito de execução deste trabalho, foi usada a versão 3.6 do Eclipse, conhecida
como Helios. O Eclipse possui uma característica interessante. Ele não é instalado no
computador. Para utilizar o ambiente de desenvolvimento, descompacta-se o arquivo em uma
pasta de nome qualquer. Depois, basta clicar no ícone com o nome Eclipse. A tela inicial da
IDE Eclipse é mostrada na Fig. 5.
FIGURA 5 - Página inicial do software Eclipse. Fonte: http://www.oficinadanet.com.br
2.5 Servidor Cosm
27
De acordo com a proposta deste trabalho o aplicativo móvel deve ser capaz de ler e
apresentar ao usuário os dados armazenados pelo hardware de sensoriamento em um servidor
na nuvem. O serviço escolhido para desenvolver os experimentos foi o Cosm.
O Cosm, segundo a definição encontrada no próprio portal web, é um serviço que
objetiva conectar pessoas, sensores e dispositivos na nuvem. O Cosm funciona tendo como
alicerce um conceito idealizado em meados de 1980 no Massachusetts Institute of Technology
(MIT), chamado Internet das Coisas (do inglês Internet of Things) que, segundo o portal
Inovação Tecnológica, representa a interação dos objetos físicos por intermédio de uma
simples conexão com a Internet. Ainda de acordo com o portal eletrônico, o serviço foi
fundado em 2008, sob o nome de Pachube, e sempre trabalhou com a visão de que a cultura
aberta é melhor do que a cultura privada e de que o compartilhamento é o melhor caminho.
O serviço do Cosm possui uma comunidade de desenvolvedores e entusiastas que é bem
estabelecida e engajada no trabalho de diversas áreas. Para fazer começar a fazer parte dessa
comunidade é necessário ter uma conta de usuário que permitirá utilização dos serviços
oferecidos no portal web e também o acesso aos dados através do aplicativo. A Fig. 6
apresenta a tela inicial do Cosm e na parte destacada é possível configurar o e-mail, nome de
usuário e uma senha.
FIGURA 6 - Tela inicial do portal para cadastro de usuários. Fonte: o autor.
Depois de configurada a conta, um e-mail de verificação é enviado a sua caixa de
entrada e após a confirmação de recebimento o usuário tem permissão de uso dos serviços do
28
Cosm. Em posse desses serviços, a primeira coisa a ser criada no portal é um feed que,
segundo a documentação do Cosm, é um ambiente representativo dos dados. As Fig. 7 e Fig.
8 apresentam o processo de criação de feeds e aviso de sucesso, respectivamente.
FIGURA 7 - Tela para criação de feeds. Fonte: o autor.
FIGURA 8 - Aviso de criação de feeds com sucesso. Fonte: o autor
29
CAPÍTULO 3 RESULTADOS: APRESENTAÇÃO, ANÁLISE E DISCUSSÃO
Ao término do processo de desenvolvimento do software, uma bateria de testes foi
iniciada para averiguar a integração entre o aplicativo móvel e o servidor Cosm. Estes
experimentos foram reproduzidos em laboratório, com observação cuidadosa do ambiente e
com uso de dados reais de monitoramento obtidos por um sistema embarcado colocado em
uma plantação de bananas localizada a nove quilômetros do centro da cidade de Janaúba
(SOUZA et al., 2012). Tais dados são enviados pelos sensores e pelo sistema embarcado para
um feed público cujo ID é 66879. Para acesso a esses dados armazenados, o aplicativo
baseado na plataforma Android faz uso do seguinte link: https://cosm.com/feeds/66879. Os
resultados obtidos nesses experimentos apresentaram-se satisfatórios para o contexto
proposto.
Através do portal web oferecido pelo Cosm é possível visualizar os pontos de dados, os
valores e gráficos de dados armazenados em relação ao tempo, bem como inserir, modificar e
excluir valores de feeds. Após a criação da conta e do feed no servidor, deve-se configurar
mais alguns itens. A Fig. 9 apresenta a página inicial do portal do Cosm e destaca a parte
referente à login de usuário. Nesse momento, é necessário realizar o login para acesso aos
recursos disponibilizados e conseguir realizar as configurações iniciais.
FIGURA 9 - Página inicial do portal do Cosm. Fonte: o autor.
30
Efetuado o login, é preciso criar uma chave (do inglês key) de acesso, que permitirá o
aplicativo externo a realizar operações nos dados do servidor. O tipo de chave pode ser
escolhido dentre as opções de leitura, exclusão, criação, atualização ou todos os anteriores.
Criada a chave, essa deve ser inserida no aplicativo para que seja possível buscar ou enviar
informações ao servidor, dependendo do tipo de chave escolhida. A Fig. 10 mostra a tela
inicial depois de efetuado o login e destaca o local de criação das chaves.
FIGURA 10 - Tela após o login com destaque para o serviço de criação de chaves. Fonte: o autor.
Durante as pesquisas bibliográficas e os testes executados, verificou-se que aplicativos
baseados na plataforma móvel Android necessitam de permissão para acessar o módulo de
Internet do dispositivo em que eles estiverem instalados. Sem essa permissão, a aplicação
avisa o usuário do erro ocorrido e para de executar. A Fig. 11 apresenta a resposta de erro que
a aplicação sem permissão retornou.
31
FIGURA 11 - Erro retornado quando não há permissão de uso do recurso de Internet. Fonte: o autor.
Depois de concedida a autorização de uso do recurso, é preciso usar técnicas de
manipulação de threads que permitam o aplicativo a se conectar a Internet e retornar o valor
lido. Segundo o Guia de Referência encontrado no site oficial Android Developers, o
funcionamento dos aplicativos baseia-se em uma única thread denominada Main Thread ou
UI Thread. Todas as requisições ao sistema operacional e aos recursos são feitas através dela,
sendo, portanto, “uma boa prática mover toda operação lenta e que consuma tempo de
processamento para fora da thread principal e colocá-la em threads de fundo” (MEIER, 2010,
p. 300). Essa prática garante que não haverá falha na estrutura do programa. Caso esse
tratamento não seja realizado, o aplicativo acusa um erro. A Fig. 12 apresenta o erro retornado
nesse caso.
32
FIGURA 12 - Erro retornado quando não existe tratamento de manipulação de threads. Fonte: o autor.
Por outro lado, quando a permissão é acrescentada no arquivo denominado
“AndroidManifest.xml” e o tratamento de uso de threads é feito no código-fonte, o aplicativo
consegue fazer uso do recurso de Internet e assim é possível executar o método que cria a
conexão com o servidor na nuvem. Na Fig. 13 é apresentada a linha de código que fornece a
permissão para o software usar o recurso da Internet e a Fig. 14 mostra a interface gráfica
inicial do aplicativo quando a permissão é concedida e o erro não ocorre. Essa tela recebe do
usuário informações que possibilitam o software comunicar-se com o servidor disponibilizado
pelo serviço do Cosm.
FIGURA 13 - Linha de código que fornece a permissão para usar o recurso de Internet. Fonte: o autor.
33
FIGURA 14 - Página inicial do aplicativo. Fonte: o autor.
Com o preenchimento correto dos dados nos campos iniciais do software, sendo eles o
feed e a chave criados pelo usuário no Cosm para utilização, o aplicativo constrói a Uniform
Resource Locator (URL) capaz de acessar o endereço eletrônico onde estão disponíveis os
dados. As requisições feitas do aplicativo baseado em Android para o servidor na nuvem
utilizam o protocolo HyperText Transfer Protocol (HTTP), responsável por acessar o
endereço de Internet especificado e retornar o valor armazenado. Após a configuração do feed
e da chave, o usuário tem cinco opções de acesso ao sistema. Ele pode configurar parâmetros
que acionam o alarme para desligar o sistema de irrigação, pode buscar os dados do servidor
para visualização em tabelas ou em gráficos, pode utilizar o controle remoto do sistema de
irrigação e por fim visualizar informações relativas ao local de onde os dados estão sendo
capturados. A função para ligar a irrigação utilizando valores mínimos de parâmetros
configurados pelo usuário foi avaliada como um requisito em potencial. Entretanto, para a
estrutura utilizada nesse trabalho, essa função não é necessária. O sistema de irrigação é
ligado todos os dias em horário configurado no dispositivo embarcado, responsável pelo
serviço de ligamento. Portanto, por padrão, o sistema de irrigação começa em estado de
funcionamento. Contudo, o operador do aplicativo pode acionar o sistema de irrigação
remotamente, caso ele tenha sido desligado em algum momento anterior, através do painel de
controle descrito mais a frente.
34
Se o usuário decidir por configurar os parâmetros de verificação, surgirá a tela
apresentada pela Fig. 15, onde ele define valores de máximo que servem como base de
verificação para o aplicativo comparar com os valores atuais buscados no servidor.
FIGURA 15 - Painel de configuração dos parâmetros. Fonte: o autor.
Se em algum momento de solicitação dos dados o valor atual armazenado no Cosm
estiver acima do configurado (essa condição vale para todas as variáveis), o aplicativo, através
de comparações, envia uma mensagem avisando o usuário que ele deve desligar o sistema de
irrigação. Se apenas o valor de uma das quatro variáveis tiver ultrapassado o valor
configurado, o sistema deve ser desligado. A Fig. 16 mostra-nos um exemplo da tela de aviso
referente à corrente elétrica na motobomba, em que o valor atual ultrapassou o máximo
estipulado. O aplicativo ainda faz outra verificação a fim de analisar o quanto o valor atual da
corrente elétrica, buscado no Cosm, ultrapassou o valor configurado. Se o valor atual tiver
ultrapassado 30% (trinta por cento) do valor configurado, ele envia um sinal de desligamento
automático para servidor Cosm e imprime uma mensagem avisando o usuário. A Fig. 17
apresenta essa mensagem de aviso.
35
FIGURA 16 - Mensagem de aviso do aplicativo quando um parâmetro é ultrapassado. Fonte: o autor.
FIGURA 17 - Aviso de desligamento automático. Fonte: o autor.
Outra possibilidade oferecida pelo software é visualizar os dados vindos do servidor.
Caso esse botão seja pressionado, a tela descrita pela Fig. 18 é apresentada para que o
operador do aplicativo visualize as informações obtidas. Através dessa tela o operador
consegue visualizar o nome da instância no servidor, o valor corrente no momento da
solicitação e os valores de máximo e mínimo, dentro do período das últimas 6 horas.
36
FIGURA 18 - Tela de apresentação dos dados obtidos no servidor. Fonte: o autor.
O operador do sistema ainda possui a opção de visualizar os dados em forma de
gráficos, a fim de perceber a variação ao longo do tempo. Os gráficos apresentados nas Fig.
19, Fig. 20, Fig. 21, Fig. 22 e Fig. 23 mostram a representação das instâncias armazenadas e
recuperadas no servidor Cosm. Com esse auxílio visual o operador pode observar os picos de
mínimos e máximos registrados pelos sensores nas últimas 6 horas de monitoramento.
37
FIGURA 19 - Visualização da corrente elétrica em forma de gráfico. Fonte: o autor.
FIGURA 20 - Visualização da temperatura em forma de gráfico. Fonte: o autor.
38
FIGURA 21 - Visualização da umidade do solo a 40 centímetros em forma de gráfico. Fonte: o autor.
FIGURA 22 - Visualização da umidade do solo a 60 centímetros em forma de gráfico. Fonte: o autor.
39
FIGURA 23 - Visualização da umidade do ar em forma de gráfico. Fonte: o autor.
Essas informações são obtidas porque o serviço web do Cosm oferece aos usuários
meios de capturá-los para que sirvam como dados de entrada aos aplicativos. Essas
informações são disponibilizadas através do formato Javascript Object Notation (JSON).
Com essas informações é possível descobrir a data e a hora de armazenamento, a localização
de onde os dados são enviados, o criador do feed, o valor atual dos dados, bem como outras
informações relativas ao dado buscado. A Fig. 24 apresenta a estrutura dos dados no formato
JSON disponibilizado pelo servidor, descrevendo a hierarquia e o nome de cada campo.
Baseado nessa hierarquia é possível desmembrar a estrutura para capturar os nomes dos dados
e seus respectivos valores. A plataforma Android oferece métodos que trabalham com o
manuseio de objetos e vetores JSON.
40
FIGURA 24 – Estrutura JSON disponibilizada pelo servidor Cosm. Fonte: http://www.cosm.com/docs/v2.
41
A seguir, na Fig. 25, é apresentado um fluxograma de execução da lógica de
recebimento de dados. Seguindo esses passos, o aplicativo consegue solicitar, capturar e
apresentar os dados que estavam armazenados no Cosm ou algum erro que possa ter ocorrido
para o usuário.
FIGURA 25 - Fluxograma da lógica de execução para receber dados. Fonte: o autor.
A Fig. 26 nos traz o código-fonte da função que busca os dados do Cosm. Essa função
constrói a URL que será usada para solicitar os dados ao servidor, executa-a e guarda esses
dados em um buffer. Depois, o conteúdo desse buffer é processado e transformado em uma
string que será enviada para apresentação na tela do aplicativo. Na Fig. 27 temos o tratamento
de exceção responsável por formatar na tela do software o resultado obtido após a resposta do
42
servidor. Para todos os dados as funções são as mesmas. Entretanto, na função que mostra o
dado, apenas trocam-se textos específicos como o título, por exemplo, para respeitar a
concordância com a informação a ser mostrada.
FIGURA 26 - Função que busca os dados do servidor Cosm. Fonte: o autor.
FIGURA 27 - Código-fonte responsável pela impressão dos dados na tela. Fonte: o autor.
Retornando à tela inicial do aplicativo, o usuário ainda tem a possibilidade de controlar
remotamente o acionamento ou o desligamento da motobomba, bem como das válvulas
43
distribuídas ao longo da plantação. Cada setor da área de irrigação, previamente dividida a
interesse do agricultor, possui uma válvula. Caso seja de interesse do operador do software é
possível ligar ou desligar essas válvulas utilizando a tela demonstrada pela Fig. 28. Nessa tela,
o usuário deve escolher primeiro o setor que deseja irrigar, depois ligar a válvula e após esse
processo ligar a motobomba. Todos esses passos visam garantir que o recurso hídrico tenha
para onde escoar quando a motobomba seja ligada.
FIGURA 28 - Tela de controle remoto dos recursos de irrigação. Fonte: o autor.
A cada escolha do usuário no painel, um gatilho (do inglês trigger) é enviado ao
servidor do Cosm, que se encarrega de armazenar o gatilho e espera que o sistema embarcado
busque aquela informação. A Fig. 29 apresenta a tela do Cosm que mostra a instância da
válvula 01 com o gatilho acionado. Para todas as demais válvulas, bem como para a
motobomba, existe uma instância igual à representada pela figura que recebe os gatilhos
enviados.
44
FIGURA 29 - Instância da válvula 01 no Cosm com o gatilho armazenado. Fonte: o autor.
A Fig. 30 descreve o fluxo de funcionamento para o controle remoto. Nele percebemos
a necessidade de abrir alguma válvula antes de acionar a motobomba para que a água tenha
para onde escoar, como já mencionado anteriormente. Além disso, observamos também que o
primeiro passo é escolher o setor, já que cada válvula pertence a um setor em específico. No
caso de a sequência não ser obedecida, o aplicativo apresenta uma mensagem avisando o
operador da sequência correta de operação, retornando o fluxo para passo inicial.
45
FIGURA 30 - Fluxograma do controle remoto do sistema de irrigação. Fonte: o autor.
O código-fonte que cria o gatilho para acionamento remoto é mostrado na Fig. 31 logo
abaixo. O código cria uma variável com base na chave de acesso e depois cria uma variável
do tipo Trigger. A partir desse momento, os parâmetros dessa variável são configurados e, por
fim, a função disponibilizada pela biblioteca do Cosm para a plataforma Android com o
intuito de criação de triggers é acionada. Em caso positivo dessa execução de passos, a
mensagem de sucesso é mostrada para o usuário. Essa mensagem é apresentada na Fig. 32.
46
FIGURA 31 - Código-fonte que executa a criação de uma trigger. Fonte: o autor.
FIGURA 32 - Mensagem de confirmação do acionamento remoto. Fonte: o autor.
É possível ainda o usuário desejar fechar alguma válvula para impedir a irrigação de
algum setor. Neste caso, algumas restrições devem ser atendidas para garantir a integridade do
sistema de irrigação. A Fig. 33 apresenta o fluxo de ações a serem tomadas para que o
processo se dê corretamente.
47
FIGURA 33 - Fluxograma para o desligamento de válvulas. Fonte: o autor.
Finalizando a descrição da gama de opções de controle que aparecem na tela principal
do aplicativo, o usuário pode buscar as informações relativas à localidade onde o sistema
embarcado junto com a rede de sensores está coletando os dados. Juntamente a essas
informações, o operador também pode ver metadados (dados que se referem e descrevem
outros dados) do feed configurado no Cosm. A Fig. 34 mostra a tela que retorna esses
metadados.
48
FIGURA 34 - Tela de informações sobre o ambiente de monitoramento. Fonte: o autor.
Após o fim da bateria de desenvolvimento e de testes, os dados coletados foram
submetidos a algumas análises e os resultados apresentados promoveram algumas discussões
válidas sobre o sistema. Essas análises são abordadas e discutidas a partir de três pontos de
vista diferentes.
3.1 Desenvolvimento do aplicativo
A modularização do código-fonte utilizada pela plataforma do Android mostrou-se de
fácil manuseio e de grande flexibilidade para o desenvolvedor já dentro da pasta raiz do
projeto. Os arquivos são distribuídos de forma a agrupar os que tenham propósitos
semelhantes, mantendo-os na mesma pasta. A plataforma também oferece suporte a
Programação Orientada a Objetos (POO), permitindo que o código seja adaptado e corrigido
mais facilmente, pois cada tipo de função está contido em um tipo de arquivo específico.
Dessa maneira, cada parte do código fica separada e organizada em estruturas hierárquicas,
garantindo ao desenvolvedor uma maior agilidade para encontrar o que deseja.
Ainda sobre a questão do desenvolvimento, os resultados expuseram uma característica
referente às diferenças das plataformas do Android. Como dito no capítulo 3, é preciso utilizar
49
alguma técnica de manipulação de threads para ter acesso ao recurso de Internet do
dispositivo. De acordo com o Guia de Referência do desenvolvedor Android e com o livro de
Meier (2010), existem três técnicas que podem ser usadas para trabalhar com threads: a
primeira delas é fazendo uso da ferramenta StrictMode, disponível a partir do nível 9 da API
do Android. Essa técnica, entretanto, foi desenvolvida apenas para capturar acessos acidentais
ao disco ou a rede dentro da thread principal da aplicação, o que não a torna a melhor
ferramenta para esse caso. A segunda maneira de trabalhar com threads é usando a ferramenta
AsyncTask, que também faz parte da API de desenvolvimento do Android. De acordo com o
Guia de Referência do site oficial, essa ferramenta permite ao desenvolvedor realizar
operações de fundo (background) e depois retornar o valor a UI thread para exibição. Por fim,
o desenvolvedor pode programar a própria thread e usar a classe Handler, também disponível
na API, para sincronizar com a UI thread.
A escolha de qual técnica utilizar fica com o desenvolvedor. Contudo, considerando os
objetivos e possibilidades descritos nas referências bibliográficas dos três métodos, bem como
a relação de custo e benefício entre o tempo de desenvolvimento e o ganho de desempenho,
decidiu-se neste projeto fazer uso da ferramenta AsyncTask.
3.2 Ferramentas para conexão com a Internet
Em questão de ferramentas de desenvolvimento para realizar a comunicação com a
Internet, a plataforma Android possui diversas bibliotecas (pacotes de arquivos com funções
específicas para cada objetivo) que fornecem métodos e funções de acesso ao protocolo HTTP
para o dispositivo móvel. Essa diversidade abrange uma grande parcela de tipos de
desenvolvedores, permitindo que os mesmos escolham a forma que mais agrada para
programar. Além disso, a simplicidade de liberar ao software o uso do recurso de Internet do
dispositivo apenas uma vez é interessante, pois não torna a codificação repetitiva.
3.3 Formato dos dados disponibilizados pelo Cosm
Lucas Jordan e Pieter Greyling (2011) dizem que o JSON é um formato de intercâmbio
de dados independente de linguagem. Eles também afirmam que este formato é leve, baseado
em texto e oferece suporte a vários tipos de dados, tais como: sequência de caracteres,
50
números, booleanos (dados que assumem apenas dois valores, verdadeiro ou falso), vazio (do
inglês Null), objetos e vetores, tornando o modelo bastante atrativo para compartilhar dados
pela Internet.
A flexibilidade de se trabalhar com o formato JSON é um fator interessante para os
desenvolvedores. É possível escolher quais e quantos dados capturar do servidor. Como visto
nos resultados, os dados foram desmembrados e apresentados para o usuário final de diversas
maneiras. Para efeito desse trabalho, apenas o formato JSON foi utilizado para aquisição e
apresentação de dados. Contudo, é interessante ressaltar que o Cosm oferece mais duas
opções de estrutura para capturar os dados armazenados: o Extensible Markup Language
(XML) e o Comma-Separated Values (CSV). Segundo o portal web do Cosm, a estrutura
XML contém a mesma quantidade de dados que o JSON, enquanto que a estrutura CSV
apresenta menos informações, sendo recomendada para dispositivos embarcados simples.
51
4 CONSIDERAÇÕES FINAIS
Sabe-se que parte considerável dos projetos é concebida a partir de necessidades
apresentadas por comunidades, organizações ou qualquer outro grupo de pessoas onde se
precisa realizar um processo ou serviço mais rapidamente e com maior precisão. Na criação
das tecnologias isso não seria diferente. Quando nesses casos de necessidade, elas existem
visando preencher essas lacunas.
O presente trabalho consistiu, inicialmente, no desenvolvimento de uma aplicação
baseada em plataforma móvel que oferecesse ao usuário um método rápido para visualizar as
informações sobre o ambiente onde a plantação se encontra, gerando maior comodidade. Em
seguida, o trabalho partiu para a ideia de integração do aplicativo móvel a conceitos e serviços
de computação na nuvem. Nos resultados, verificou-se que a obtenção dos dados reais
enviados por um sistema embarcado localizado em uma fazenda na cidade de Janaúba e
armazenados na nuvem alcançou, através da integração, o desempenho esperado,
demonstrando que a ideia pode entrar em uma nova fase de testes. Dessa forma, conclui-se
que os objetivos propostos no trabalho foram alcançados.
Visando a continuidade do projeto, propõe-se a realização de novos experimentos no
sistema que constituiu na integração do software baseado na plataforma Android com o
serviço de computação nas nuvens do servidor Cosm. No que tange o software, verifica-se a
necessidade de executá-lo em outros dispositivos móveis, a fim de averiguar o desempenho
do mesmo quando se possui diferentes configurações de hardware nos smartphones e tablets.
É possível também trabalhar no projeto de melhorias da usabilidade do sistema, aprimorando
o contato do usuário com o sistema. Com dados coletados a partir dos sensores e com as
estatísticas de funcionamento do sistema como um todo, em um espaço de tempo maior para
análise, será então possível comparar o desempenho desse modelo proposto com os demais
modelos existentes para monitoramento de culturas e irrigação de precisão.
Por fim, após a comparação de desempenho, é possível projetar e desenvolver novas
funcionalidades para o aplicativo, de forma a fornecer ao usuário mais alguns meios de
controle do ambiente, expandindo a aplicabilidade do sistema.
52
REFERÊNCIAS
AQUINO, Juliana França Santos. Plataformas de desenvolvimento para dispositivos móveis. 2007. Monografia – Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro, Rio de Janeiro, 2007. Disponível em: <http://www-di.inf.puc-rio.br/~endler/courses/Mobile/Monografias/07/Android-Juliana-Mono.pdf>. Acesso em: 17 abr. 2012.
CRUZ, Tadeu Macryne Lima. Estratégia de monitoramento e automação em sistemas de irrigação utilizando dispositivos de comunicação em redes de sensores sem fio. 2009. Dissertação (Mestrado em Engenharia Agrícola) – Faculdade de Engenharia Agrícola, Universidade Federal do Ceará, Fortaleza, 2009. Disponível em: <http://www.ppgea.ufc.br/ dissertacaotadeu.pdf>. Acesso em: 15 fev. 2012.
Eclipse Foundation. Portal eletrônico disponibilizado para divulgar o ambiente de desenvolvimento de aplicações Eclipse. Disponível em: < www.eclipse.org> Acesso em: 16 jul 2012.
FRIESEN, Jeff. Learn Java for Android Development. Nova Iorque: Apress Media LLC, 2010.
Guia de Referência do desenvolvedor Android. Portal eletrônico que disponibiliza informações sobre versões, ferramentas e técnicas para o desenvolvimento de sistema na plataforma. Disponível em: < http://developer.android.com/guide/components/processes-and- threads.html> Acesso em: 20 abr 2012.
Guia do Hardware. Sítio eletrônico para disponibilização de artigos, tutoriais, revisões técnicas de equipamentos e partes de livros produzidos pelo mantenedor do sítio. Disponível em: < http://www.hardware.com.br/livros/smartphones/capitulo-plataformas.html> Acesso em: 01 fev 2012.
GUIMARÃES, Vinícius Galvão. Automação e monitoramento remoto de sistema de irrigação na agricultura. 2011. Monografia (Graduação em Engenharia Mecatrônica) – Faculdade de Engenharia Mecatrônica, Universidade de Brasília, Brasília, 2011. Disponível em: <http://lara.unb.br/~adolfo/tg/TG11%20Vin%C3%ADcius%20Galv%C3%A3o.pdf>. Acesso em: 19 abr 2012
IBM DeveloperWorks. Apresenta um recurso técnico da IBM para desenvolvedores de software e profissionais de TI. Aqui você encontrará ferramentas, códigos, artigos e outros materiais referentes às tecnologias promovidas pela empresa IBM. Disponível em:
53
<http://www.ibm.com/developerworks/br/library/os-eclipse-android/index.html>. Acesso em: 22 nov. 2011.
Inovação Tecnológica. Portal eletrônico para divulgação de artigos e notícias relativas as diversas áreas do conhecimento científico. Disponível em: < http://www.inovacaotecnologica.com.br/noticias/noticia.php?artigo=usp-internet-das-coisas&id=010150120802> Acesso em: 02 ago 2012.
JORDAN, Lucas; GREYLING, Pieter. Practical Android Projects. Nova Iorque: Apress Media LLC, 2011.
Laboratório de Automação Agrícola. Apresenta assuntos relacionados com os temas de trabalho do grupo de pesquisa do Departamento de Engenharia de Computação e Sistemas Digitais da Escola Politécnica da Universidade de São Paulo. Disponível em: <http://www.pcs.usp.br/~laa/html/pagina.php?p=apresentacao>. Acesso em: 29 dez 2011.
LECHETA, Ricardo R. Google Android: Aprenda a criar aplicações para dispositivos móveis com o Android SDK. 2ª ed. São Paulo: Novatec, 2010.
LEMOS, Sherlan Guimarães; NOGUERIA, Ana Rita de Araujo; TORRE-NETO, André. A agricultura na era da informação: desafios e propostas para automação em análises de solos. Revista Analytica, São Paulo, v. 8, n. 8, 2004. Disponível em: < http://www.revistaanalytica.com.br/ed_anteriores/08/8%20Art%20Agricultura.pdf>. Acesso em: 18 abr 2012.
Linha de código. Site para divulgação e fomento de conhecimentos diversos sobre linguagens e técnicas de programação entre a comunidade de desenvolvedores. Disponível em: <http://www.linhadecodigo.com.br/artigo/2811/instalando-o-android-sdk-na-plataforma-linux.aspx>. Acesso em: 21 abr 2012.
MEIER, Reto. Professional Android 2: Application Development. Indianapolis: Wrox Press, 2010.
Cosm. Portal eletrônico do servidor de armazenamento de dados onde se encontra tutoriais, textos, códigos para o desenvolvimento e utilização do servidor. Disponível em: <www.cosm.com> Acesso em: 10 jul 2012.
Open Handset Alliance. Sítio eletrônico para apresentar ao mercado as especificações do projeto da plataforma Android, bem como seus objetivos e membros mantenedores da ideia.
54
Disponível em: <www.openhandsetalliance.com/oha_members.html> Acesso em: 24 ago 2012.
Projeto WaterBee. Encontra-se informações sobre a evolução e o desenvolvimento do projeto de irrigação WaterBee que está sendo pesquisado e discutido na Europa. Disponível em: < http://www.waterbee.eu>. Acesso em: 21 abr 2012.
Samsung Eletronics. Portal eletrônico para divulgação e propaganda dos equipamentos vendidos pela empresa, sendo possível encontrar especificações técnicas dos mesmos. Disponível em: < www.samsung.com/br/consumer/cellular-phone/cellular-phone-tablets/tablet/GT-P6210UWLZTO-spec> Acesso em: 10 ago 2012.
SOUSA, F. R. C.; MOREIRA, L. O.; MACHADO, J. C. Computação em Nuvem: Conceitos, Tecnologias, Aplicações e Desafios. In: Escola Regional de Computação Ceará – Maranhão – Piauí, III, 2009, Parnaíba, Capítulo 7. Disponível em: <http://www.es.ufc.br/~flavio/files/ Computacao_Nuvem.pdf> Acesso em: 14 fev 2012.
SOUZA, Thalis A. et al. Desenvolvimento de aplicação de monitoramento de ambientes utilizando sistema embarcado e computação nas nuvens. In: Fórum de Ensino, Pesquisa, Extensão e Gestão, VI, 2012, Universidade Estadual de Montes Claros. Montes Claros. Disponível em: <http://www.fepeg.unimontes.br/?q=printpdf/node/3695> Acesso em: 30 nov. 2012.
Revista Analytica. Apresenta assuntos relacionados à instrumentação e controle de qualidade, divididos em artigos e publicações da versão on-line da revista. Disponível em: <http://www.revistaanalytica.com.br/ed_anteriores/08/8%20Art%20Agricultura.pdf>. Acesso em: 29 dez 2011.
WirelessBR. Site brasileiro independente e sem vínculos com empresas ou organizações comerciais para divulgação de novas tecnologias de telecomunicações. Disponível em: http://www.wirelessbrasil.org/wirelessbr/colaboradores/thienne_johnson/rssf-intro.htm. Acesso em: 21 abr 2012.