APLICATIVO EM ANDROID PARA CONTROLE DE UNIDADES ROBTICAS MVEIS COM ARDUINO
PICOS PI 2013
ALLAN JHEYSON RAMOS GONALVES
APLICATIVO EM ANDROID PARA CONTROLE DE UNIDADES ROBTICAS MVEIS COM ARDUINO
Trabalho de Concluso de Curso apresentado ao Curso de Bacharelado em Sistemas de Informao do Campus Senador Helvdio Nunes de Barros da Universidade Federal do Piau UFPI, como requisito final para obteno do ttulo de Bacharel em Sistemas de Informao.
ORIENTADOR: PROF. MSc. ALGEIR PRAZERES SAMPAIO
PICOS - PI 2013
ALLAN JHEYSON RAMOS GONALVES
APLICATIVO EM ANDROID PARA CONTROLE DE UNIDADES ROBTICAS MVEIS COM ARDUINO
Trabalho de Concluso de Curso apresentado ao Curso de Bacharelado em Sistemas de Informao do Campus Senador Helvdio Nunes de Barros da Universidade Federal do Piau UFPI, como requisito final para obteno do ttulo de Bacharel em Sistemas de Informao.
Data de Aprovao:
__________________________________________ Prof. Algeir Prazeres Sampaio, MSc. (Orientador)
__________________________________________ Prof. Ismael de Holanda Leal, Esp. (Membro)
__________________________________________ Prof. Ivenilton Alexandre de Souza Moura, Esp. (Membro)
Eu, Allan Jheyson Ramos Gonalves, abaixo identificado(a) como autor(a), autorizo a biblioteca da Universidade Federal do Piau a divulgar, gratuitamente, sem ressarcimento de direitos autorais, o texto integral da publicao abaixo discriminada, de minha autoria, em seu site, em formato PDF, para fins de leitura e/ou impresso, a partir da data de hoje.
Picos-PI, 18 de abril de 2013.
FICHA CATALOGRFICA Servio de Processamento Tcnico da Universidade Federal do Piau Biblioteca Jos Albano de Macdo
G635a Gonalves, Allan Jheyson Ramos. Aplicativo em Android para controle de unidades robticas mveis com Arduino / Allan Jheyson Ramos Gonalves. 2013. CD-ROM : il. ; 4 pol. (57 p.)
Monografia(Bacharelado em Sistemas de Informao) Universidade Federal do Piau. Picos-PI, 2013. Orientador(A): Prof. MSc. Algeir Prazeres Sampaio
1. Android. 2. Arduino. 3. Robtica. I. Ttulo.
CDD 005.1
Dedico este trabalho minha famlia, em especial aos meus pais, Valdenora La Ramos e Reginaldo Borges Gonalves, que sempre acreditaram no meu potencial e me deram total apoio ao longo desta caminhada, e ao meu av, Valdemar de Moura Ramos (In Memoriam), pelo exemplo de perseverana, os ensinamentos de vida compartilhados e pela inspirao para esta conquista que sempre foi to importante para ele quanto para mim.
AGRADECIMENTOS
A todos os meus colegas de turma por todos os momentos de aprendizado proporcionados ao longo desta jornada turbulenta e cheia de surpresas.
Ao meu orientador, Prof. MSc. Algeir Prazeres Sampaio, pelo auxlio e disposio para desenvolver este trabalho que no seria possvel sem o seu conhecimento e sua experincia na rea de TI.
Aos demais professores da UFPI campus Picos, que foram fundamentais para o meu crescimento profissional. minha me, Valdenora La Ramos, pelo esprito guerreiro e persistente de ser, que sempre foi referncia para mim a cada nova etapa de desafios durante esta jornada. Ao meu pai, Reginaldo Borges Gonalves, pela orientao e pelas palavras de apoio a cada momento de insegurana que passei durante esta importante fase da minha vida. s minhas tias: Valderina Lha Ramos, Valdinez La Ramos e Vanusa Lha Ramos, por oferecerem a mim todo o afeto que uma me pode oferecer ao filho. A todos os familiares e amigos que sempre me apoiaram e me fizeram crescer como pessoa e como profissional.
O covarde nunca tenta, o fracassado nunca termina e o vencedor nunca desiste. (Norman Vicent Peale)
RESUMO
A comunicao entre dispositivos eletrnicos vem desenvolvendo-se de forma cada vez mais objetiva e diversificada. Esta evoluo criou a necessidade de implantao de interfaces comuns entre os diversos tipos de dispositivos produzidos. O objetivo deste trabalho desenvolver um sistema capaz de manipular um rob que utiliza a plataforma Arduino atravs de sinais digitais emitidos pelas interfaces de comunicao Bluetooth e Wi-Fi de um smartphone com sistema operacional Android instalado. O projeto motivado pelo grande crescimento do uso da plataforma Arduino na rea da robtica para a prototipao de novas ideias, atrelado ao crescimento do uso do sistema operacional Android nos dispositivos mveis em todo o mundo. O sistema foi desenvolvido para o controle de um rob mvel, mais precisamente um carro rob, com movimentos de avanar, retroceder e girar para ambos os lados. O usurio tem a opo de escolher qual interface deseja utilizar para controlar o rob e a partir da, ter acesso ao modo de controle.
The communication between electronic devices is evolving from an increasingly diverse and objective. This development has created the need to implement common interfaces between different types of devices produced. The objective of this work is to develop a system capable of handling a robot that uses the Arduino platform digital signals emitted by communication interfaces Bluetooth and Wi-Fi on a smartphone with Android operating system installed. The project is motivated by the large growth in the use of the Arduino platform in robotics for prototyping new ideas, linked to the growing use of the Android OS on mobile devices worldwide. The system was developed to control a mobile robot, more precisely a robot car with movements forward, backward and turn to both sides. The user has the option to choose which interface you want to use to control the robot and from there, you will have access to the control mode.
Figura 2.1.1 - Arquitetura do Android .................................................................... 19 Figura 2.2.1 - Placa Arduino Duemilanove ............................................................ 22 Figura 2.2.2 - Protoboard e Mdulo Bluetooth ...................................................... 23 Figura 3.3.1 - Diagrama de Casos de Uso ............................................................. 28 Figura 4.1.1 - Tela inicial do aplicativo .................................................................. 30 Figura 4.1.2 - Modo de comunicao via Bluetooth ............................................. 31 Figura 4.1.3 - Menu de opes no Modo Bluetooth .............................................. 32 Figura 4.1.4 - Modo de comunicao via Wi-Fi ..................................................... 34 Figura 4.1.5 - Menu de opes no Modo Wi-Fi ...................................................... 35 Figura 4.1.6 - Fluxo de navegao no Aplicativo .................................................. 36
2D 2 Dimenses 3D 3 Dimenses CC Corrente Contnua IDE Integrated Development Environment IP Internet Protocol LED Light Emitting Diode LIPPO Laboratrio de Investigaes e Pesquisas em Poticas Digitais MAC Media Access Control OS Operational System PWM Pulse Width Modulation RX Via de Recepo de Dados SDK Software Development Kit SMS Short Message Service SQL Structured Query Language TX Via de Transmisso de Dados USB Universal Serial Bus
SUMRIO
INTRODUO .......................................................................................................... 14 1.1 Motivao ..................................................................................................... 15 1.2 Problema ...................................................................................................... 15 1.3 Abordagem ................................................................................................... 16 1.4 Objetivos ...................................................................................................... 16 1.4.1 Objetivo geral ..................................................................................... 16 1.4.2 Objetivos especficos.......................................................................... 16 1.5 Organizao do documento ......................................................................... 17 2 REFERENCIAL TERICO ................................................................................... 18 2.1 Android OS ................................................................................................... 18 2.1.1 Arquitetura do Android........................................................................ 18 2.2 Arduino ......................................................................................................... 21 2.3 Robtica ....................................................................................................... 23 2.3.1 Robtica Mvel ................................................................................... 24 3 CONCEPO DO PROJETO............................................................................... 26 3.1 Projetos Atuais do LIPPO ............................................................................. 26 3.2 Concepo ................................................................................................... 26 4 IMPLEMENTAO ............................................................................................... 29 4.1 Implementao Android ............................................................................... 29 4.1.1 Cenrios ............................................................................................. 29 4.1.2 Cenrio do Menu ................................................................................ 29 4.1.3 Cenrio de Conexo Bluetooth .......................................................... 30 4.1.4 Cenrio de Conexo Wi-Fi ................................................................. 33 4.2 Implementao Arduino ............................................................................... 36 4.2.1 Recebendo dados do Android via Bluetooth ...................................... 37 5 TESTES REALIZADOS ........................................................................................ 40 5.1 Interface grfica ........................................................................................... 40 5.2 Teste de comunicao Bluetooth ................................................................. 41 5.3 Teste de comunicao Wi-Fi ........................................................................ 41 CONSIDERAES FINAIS ...................................................................................... 43 REFERNCIAS......................................................................................................... 45
APNDICES ............................................................................................................. 47 Apndice A Algoritmo Android - Comunicao Bluetooth ............................... 48 Apndice B - Algoritmo Android Comunicao Wi-Fi ....................................... 51 Apndice C Cdigo Arduino................................................................................ 54 Apndice D Esquema em protoboard ................................................................ 56 Apndice E Circuito do Rob Mvel ................................................................... 57
14
Captulo 1
INTRODUO
cada dia mais comum a utilizao de robs mveis nas mais diversas atividades pessoais, profissionais e cientficas. Todas as atividades que envolvem manipulao de unidades mveis exigem alguma forma de controle sobre esta, seja manualmente ou automaticamente realizada atravs de sensores e atuadores embarcados. O uso de aplicaes em dispositivos mveis para controle de robs uma alternativa bastante adequada para este fim, j que os aparelhos produzidos atualmente, mais conhecidos como smartphones possuem no mnimo uma interface para comunicao direta com outros dispositivos. Em sua grande maioria, possuem interface para comunicao Wi-Fi e Bluetooth. Os smartphones funcionam com um sistema operacional embarcado e o Android OS vem ganhando cada vez mais espao no mercado entre os utilizadores de dispositivos mveis. Isto se deve a sua distribuio livre e gratuita, alm de disponibilizar aos usurios o seu cdigo-fonte para que possam personalizar o sistema e desenvolver aplicativos livremente. Esta facilidade e flexibilidade fazem do Android um sistema operacional popular e com muitas possibilidades para o desenvolvimento de novos projetos. Em uma conferncia da Google em 2011, foi realizada uma demonstrao em que ficou muito claro que o Android tem como novo objetivo o desenvolvimento de projetos que possam facilitar tarefas das pessoas no cotidiano. Para fazer isto necessria a unio de hardware e software e a alternativa encontrada foi incorporar a plataforma Arduino para auxiliar neste desenvolvimento. Muitos projetos de robtica envolvem a utilizao da plataforma Arduino, que uma alternativa bastante expansvel e descomplicada para o desenvolvimento de prottipos. Trata-se basicamente de um kit de desenvolvimento de software alm de um kit de desenvolvimento de acessrios capaz de incorporar inmeros sensores e mdulos de comunicao para interagir com outros aparelhos. Este trabalho apresenta uma aplicao envolvendo comunicao entre Android e Arduino para controle de um rob mvel. A aplicao poder ser utilizada 15
ainda para outras finalidades, bastando realizar a programao adequada no Arduino para que os comandos do aplicativo Android sejam atendidos adequadamente.
1.1 Motivao
O grande avano da robtica nos ltimos anos vem despertando os estudiosos da rea para a criao de novas possibilidades e aplicaes utilizando sofisticados mecanismos atuadores. Robs esto sendo utilizados nas mais diversas situaes e estas cada vez menos provveis para a concepo humana. Torna-se evidente a necessidade de explorao dos mais diversos meios de controle para unidades robticas mveis no atual cenrio tecnolgico que estamos vivendo. Muitas formas de comunicao podem ser aplicadas com a utilizao da plataforma Arduino, dentre elas podem ser citadas o Bluetooth, Wi-Fi, Rdio Frequncia, Infravermelho, dentre outras. Esta grande variedade de formas de comunicao tornam o uso do Arduino cada vez mais crescente em projetos de robtica e automao, este foi um dos fatores que mais fortaleceram a ideia deste projeto. As possibilidades de criar um novo produto ou servio utilizando esta tecnologia so inmeras e por isso cada vez maior o nmero de desenvolvedores que optam por utilizar o Arduino na concepo de um novo trabalho na rea. Fatores como estes fortalecem ainda mais os trabalhos e consequentemente tornam o processo de resoluo de possveis problemas ou imprevistos que venham a ocorrer durante a implementao, mais simples e rpidos atravs da troca de informaes em fruns de discusso e sites especializados.
1.2 Problema
A implementao de aplicativos em Android tem, em sua maioria, foco em proporcionar entretenimento e/ou comunicao entre pessoas. Este trabalho busca proporcionar uma forma de comunicao entre dispositivos como objetivo final, neste caso, entre Android e Arduino. A manipulao de robs atravs de computadores j realidade atualmente, mas no h um consenso ou uma forma 16
padro de utilizao destes controladores, muito menos no que tange aos dispositivos mveis. Nos ltimos anos a plataforma Arduino se tornou muito popular pela facilidade e rapidez na construo de um novo prottipo. Isto atraiu muitos novos entusiastas para a rea da robtica. A ideia produzir um aplicativo padro para o sistema operacional Android para que este possa ser utilizado para controlar qualquer rob mvel terrestre que utilize a plataforma Arduino, bastando que seja implementado um pequeno cdigo de recepo dos dados na plataforma, que tambm disponibilizado neste trabalho. Esta padronizao poderia facilitar futuros projetos relacionados a este, evitando o retrabalho com a implementao da comunicao entre o Android e o Arduino.
1.3 Abordagem
Neste trabalho implementamos uma aplicao para o sistema operacional Android com a finalidade de obter uma forma de controle para unidade robticas mveis que utilizem a plataforma Arduino, descrevendo suas funcionalidades e possibilidades de aplicao pelo usurio. Foi utilizada a linguagem de programao Java na IDE Eclipse no ambiente Windows com o SDK do Android para o desenvolvimento do aplicativo. 1.4 Objetivos 1.4.1 Objetivo geral
Construir um aplicativo para o sistema operacional Android visando controlar uma unidade robtica com Arduino.
1.4.2 Objetivos especficos
Obter uma comunicao estvel entre Android e Arduino; Adquirir conhecimento sobre o desenvolvimento de aplicaes para o sistema operacional Android; 17
Construir uma unidade robtica mvel utilizando a plataforma Arduino;
1.5 Organizao do documento
Este documento est organizado em 6 captulos, onde o Captulo 1 refere-se a definio da rea do trabalho, a motivao para realiz-lo, o problema abordado e algumas contribuies do projeto para a rea de estudo. O Captulo 2 traz o embasamento para a aplicao atravs do referencial terico, abordando trabalhos e estudos j consolidados por outros autores e estudiosos da rea da robtica, Android OS e da plataforma Arduino. No Captulo 3 abordada a concepo do projeto, descrevendo alguns fatores que influenciaram para que o estudo pudesse ser realizado. O Captulo 4 mostra como a aplicao foi desenvolvida, seu funcionamento e algumas imagens da sua interface grfica e recursos de controle sobre o Arduino. Em seguida, no Captulo 5 so descritos os resultados dos testes realizados com a aplicao e um rob em ambiente aberto, no prprio Campus Universitrio da UFPI, Picos. Concluindo, o Captulo 6 apresenta uma sntese do trabalho, abordando alguns aspectos que influenciaram o desenvolvimento do projeto. 18
Captulo 2
REFERENCIAL TERICO
2.1 Android OS
A empresa Google, h alguns anos percebeu o grande crescimento do nicho de mercado dos dispositivos mveis no mundo. A exigncia dos usurios tornou-se maior e os fabricantes desses aparelhos precisavam atender essa crescente necessidade de melhoria e variedade de recursos para os dispositivos. A partir desta percepo, o Google juntou-se com alguns fabricantes de aparelhos celulares e da surgiu um grupo chamado de Open Handset Alliance, com o objetivo de criao de um sistema operacional de cdigo livre para os celulares. Observando o grande crescimento da utilizao da internet em dispositivos mveis, a Google adquiriu o Android Inc., em 2005, para centralizar o seu desenvolvimento em uma plataforma de dispositivos mveis. As ideias revolucionrias da Apple introduzidas no iPhone em 2007 foram rapidamente adaptadas para incluso destes recursos com distines definidas, como um maior controle para os desenvolvedores. A Open Handset Alliance um grupo de empresas liderado pelo Google que inclui operadores de telefonia mvel, fabricantes de aparelhos portteis, fabricantes de componentes, provedores de plataformas e solues de software para empresas de marketing. A partir de um ponto de vista de desenvolvimento de software, o Android fica bem ao centro do software livre (ABLESON, 2009). Segundo LECHETA (2009, apud SILVA, 2009), o Android uma plataforma para smartphones, baseada no sistema operacional Linux, possui diversos componentes, com uma variada disponibilidade de bibliotecas e interface grfica, alm de disponibilizar ferramentas para a criao de aplicativos.
2.1.1 Arquitetura do Android
19
O Android possui uma arquitetura dividida em cinco componentes: Aplicao, Framework de Aplicao, Bibliotecas, Ambiente de Execuo e o Kernel do Linux, estrutura mostrada na Figura 2.1 e melhor detalhada em seguida com uma apresentao das camadas com seus principais componentes e caractersticas.
Figura 2.1.1 - Arquitetura do Android Fonte: <http://developer.android.com>
Applications (Aplicaes): o Android possui nativamente diversos aplicativos como programa de envio de mensagem SMS (Short Message Service), cliente de e-mail, mapas, calendrio, navegador de internet e outros. A linguagem Java utilizada no desenvolvimento de todos os aplicativos para Android (ANDROID, 2013). Os aplicativos desenvolvidos ficam nesta camada e so o que os usurios finais encontram no Android. Application Framework (Framework de Aplicao): ambiente que disponibiliza inmeros recursos para auxiliar o desenvolvedor a realizar o seu trabalho. a parte do Android que est mais bem documentada e detalhada, pelo fato de ser esta a camada que fornece aos desenvolvedores criativos a possibilidade 20
de criarem aplicaes inovadoras para o mercado (GARGENTA, 2011 apud FERNANDES; LAURINDO, 2011). Os recursos disponibilizados pelo Framework de Aplicao permitem o desenvolvimento de novos aplicativos com reaproveitamento das funcionalidades presentes na plataforma. A arquitetura do aplicativo projetada para simplificar a reutilizao de componentes e qualquer aplicao pode criar recursos prprios e estes podem ser disponibilizados para que outra aplicao possa utiliz-los. Este mecanismo permite ainda que componentes padres sejam substitudos pelo usurio (ANDROID, 2013). Libraries (Bibliotecas): o Android OS possui bibliotecas nativas C/C++, muitas delas produzidas pela comunidade de cdigo livre. Elas facilitam o desenvolvimento de aplicaes e possibilitam o acesso s funcionalidades de hardware. Entre elas esto um mecanismo de renderizao web rpido utilizado pelo Safari, Chrome entre outros navegadores, um completo banco de dados SQL (Structured Query Language), uma implementao cdigo aberto do Java, bibliotecas de grfico 3D e camada de certificado de segurana (GARGENTA, 2011 apud FERNANDES; LAURINDO, 2011). O banco de dados do Android o SQLite, que permite que o banco de dados seja utilizado pelos aplicativos para Android. Cada aplicativo pode criar vrios bancos de dados que somente estaro disponveis para a aplicao que os criou, garantindo assim a segurana dos dados do sistema. No SQLite so utilizados comandos SQL padro, tornando o desenvolvimento de aplicativos que precisam de armazenamento ainda mais fcil (LECHETA, 2009 apud FERNANDES; LAURINDO, 2011). Android Runtime (Ambiente de Execuo Android): existe a necessidade de uma mquina virtual Java para execuo dos aplicativos, j que todos os aplicativos do Android so escritos na linguagem Java. Esta mquina virtual Java chamada Dalvik especial para executar aplicaes Java em dispositivos mveis (LECHETA, 2009 apud FERNANDES; LAURINDO, 2011). Convencionalmente o cdigo fonte Java compilado utilizando o compilador Java e aps esta, o bytecode executado na JVM (Java Virtual Machine Mquina Virtual Java), mas no Android aps a compilao no compilador Java, o cdigo recompilado pelo compilador Dalvik para gerar um bytecode especfico. Este bytecode Dalvik que ser executado na mquina virtual Dalvik (GARGENTA, 2011 apud FERNANDES; LAURINDO, 2011). Os cdigos Java de aplicaes para Android resultam na gerao do bytecode (.class) normalmente, posteriormente este 21
ser compilado para o formato .dex (Dalvik Executable), sendo esta a aplicao compilada, estes arquivos juntamente com os demais recursos da aplicao so compactados em um arquivo, o Android Package File que o resultado final do aplicativo (LECHETA, 2009 apud FERNANDES; LAURINDO, 2011). Kernel Linux: o framework Java utilizado no desenvolvimento de aplicaes para Android, mas as bibliotecas padro esto fora deste escopo. As bibliotecas Java utilizadas para o Android so otimizadas para um ambiente de recursos limitados. O Android invoca o kernel do Linux para execuo de servios solicitados por aplicaes, mas no se trata de um Linux embarcado (STEELE; TO, 2011 apud FERNANDES; LAURINDO, 2011). O kernel Linux responsvel pela gerencia dos recursos primrios do sistema, como threads, memria, processos, segurana do sistema de arquivos e outros drivers de hardware (LECHETA, 2009 apud FERNANDES; LAURINDO, 2011). Cada execuo de uma aplicao gera um novo processo no sistema, se necessrio por falta de memria ou por inatividade do processo, o Android pode encerrar este processos (LECHETA, 2009 apud FERNANDES; LAURINDO, 2011).
2.2 Arduino
Arduino uma plataforma de prototipagem eletrnica de cdigo aberto baseada em hardware e software flexveis e fceis de usar. Destina-se aos mais diversos tipo de pessoas e interesses, como artistas, designers ou qualquer pessoa interessada em criar objetos ou ambientes interativos (ARDUINO, 2013). A utilizao do Arduino na rea da robtica muito frequente pela grande flexibilidade de escalabilidade do sistema em desenvolvimento. praticamente infinito o nmero de novas conexes que podem ser estabelecidas entre diversas placas, sensores e atuadores da plataforma. A programao embarcada tambm muito atrativa e simples, o microcontrolador da placa programado usando uma linguagem baseada em Wiring (Muito parecida com C) e o ambiente de desenvolvimento bastante simples e objetivo. O ambiente pode ser percebido atravs dos sensores que captam sinais de acordo com sua finalidade e transmitem esses sinais para o microcontrolador, que responsvel por gerenciar e executar todo o cdigo 22
embarcado e atravs disto efetuar alguma aes pr-definidas na programao, como acender um LED, por exemplo. As placas podem ser construdas mo ou compradas pr-montadas, o software pode ser baixado gratuitamente. Os projetos de hardware esto disponveis sob uma licena de cdigo aberto, o usurio livre para adapt-los s suas necessidades (ARDUINO, 2013). A Figura 2.2 mostra uma placa Arduino Duemilanove, que pode ser adquirida facilmente atravs da internet ou em lojas de eletrnica e robtica.
Figura 2.2.1 - Placa Arduino Duemilanove Fonte: < http://uriedubot.wordpress.com/>
Trabalhar com Arduino uma tarefa bem simples, no necessrio conhecimento em eletrnica, basta um conhecimento em programao bsica e j possvel fazer alguns pequenos projetos com esta plataforma. Para programar a placa, h duas funes que necessitam ser declaradas: a funo setup(), que ser executada apenas uma vez, quando a placa for iniciada e a funo loop(), que 23
responsvel por tratar dos eventos que iro ocorrer aps o carregamento da funo anterior, nesta funo que o tratamento de aes deve ser implementado. A estrutura da placa permite a expanso do tamanho e complexidade das conexes e do cdigo de acordo com a necessidade que o projeto requerer. A expanso pode se dar com perifricos conhecidos como Shields, que podem ser acoplados diretamente na placa ou interligados atravs de jumpers utilizando uma placa de ensaio conhecida como protoboard, que uma placa com muitos furos e conexes condutoras para montagem de circuitos eltricos experimentais sem a necessidade de solda. A Figura 2.3 mostra um Mdulo de comunicao Bluetooth (mais direita) e um chip ponte H, conectados diretamente a uma protoboard.
Figura 2.2.2 - Protoboard e Mdulo Bluetooth Fonte: o Autor
2.3 Robtica
A robtica uma cincia que mescla fsica, mecnica, matemtica, design, inteligncia artificial, eletrnica e programao, e tem por objetivo compreender o processo de controle e montagem de sistemas que interagem com o mundo real com pouca ou mesmo nenhuma interveno humana (MARTINS, 1993 apud ZANELATTO, 2004). Os sistemas que processam informaes para efetuar aes so chamados de robs. O desejo de construir sistemas cada vez mais complexos sempre foi retratado nos filmes de fico cientfica e estes foram grandes impulsionadores para 24
que as ideias pudessem ser estimuladas e desenvolvidas pela cincia. Muitas necessidades de servios antes supridas totalmente por pessoas, atualmente esto sendo substitudas pela aplicao de robs, se no completamente, em boa parte dos processos. Esta aplicao se d principalmente da rea industrial, em operaes que envolvem grande preciso e esforo. A palavra robtica (ATTROT, 2002 apud ZANELATTO, 2004) foi utilizada pela primeira vez por Isaac Asimov, um escritor que produziu vrias obras de fico cientfica envolvendo os robs. Ele tambm criou as trs leis da robtica, considerando que os robs eram seres que no cometiam erros: Um rob no pode ferir um ser humano ou, por inao, permitir que um humano seja ferido; Um rob deve obedecer s ordens dadas por humanos, exceto quando isto conflitar com a Primeira Lei; Um rob deve proteger sua prpria existncia, a menos que isto conflite com a Primeira ou a Segunda Lei.
2.3.1 Robtica Mvel
Segundo a RIA (Robot Institute of America), um rob um manipulador re-programvel, multifuncional, projetado para mover materiais, peas, ferramentas ou dispositivos especiais, em movimentos variveis, programados para a realizao de uma variedade de tarefas (VIEIRA, 2011). GUERRA, 2009 apud VIEIRA, 2011 divide-os em: Robs Manipulados: so dispositivos com vrios graus de liberdade e operados manualmente; Robs de Sequncia Fixa: so dispositivos manipuladores que desempenham tarefas sucessivas de acordo com um mtodo predeterminado e imutvel, muito difcil de ser modificado; Robs de Sequncia Varivel: dispositivos que desempenham tarefas sucessivas que podem ser facilmente modificadas; Robs Repetitivos: so dispositivos que repetem uma sequncia de tarefas gravadas, e so conduzidos ou controlados por um operador humano; 25
Robs de Controle Numrico: o operador alimenta o rob com um programa de movimentao ao invs de trein-lo manualmente; Robs Inteligentes: apresentam capacidade de compreender seu ambiente e a habilidade de executar tarefas apesar das mudanas que se apresentam no seu meio. 26
Captulo 3
CONCEPO DO PROJETO
3.1 Projetos Atuais do LIPPO
O LIPPO (Laboratrio de Investigao e Pesquisa em Poticas Digitais) foi criado em agosto do ano de 2010, a partir de recursos obtidos atravs da participao da UFPI em consrcio formado entre a UNB (Universidade de Braslia), UFG (Universidade Federal de Gois) e a UFPI (Universidade Federal do Piau em Picos). Atualmente o LIPPO conta com uma equipe de desenvolvedores de projetos e estagirios com foco na rea de robtica, trabalhando tanto na construo de robs como tambm na sua codificao embarcada utilizando a plataforma Arduino como microcontrolador do circuito. Os projetos buscam estabelecer comunicao com a plataforma Arduino utilizando tecnologias e dispositivos variados. Os resultados obtidos com estas iniciativas proporcionam um leque de novas possibilidades para o laboratrio e para a comunidade acadmica.
3.2 Concepo
O desenvolvimento de aplicaes Android vem crescendo cada vez mais desde a sua implantao gerida pelo Google. O grande fator que impulsionou esta grande massa de desenvolvedores foi a disponibilizao do cdigo fonte do sistema para que as empresas fabricantes de dispositivos, assim como os usurios mais avanados, pudessem personalizar seus sistemas e aplicaes. Alm do cdigo fonte disponvel, existem ferramentas muito simples para o desenvolvimento em Android com a possibilidade de qualquer pessoa com um conhecimento bsico em programao possa fazer alguns programas que utilizem comunicao em rede ou manipulao de objetos da tela do aparelho, por exemplo. Estes programas utilizam o recurso arrastar e soltar, atravs da criao de 27
diagramas de blocos no formato de peas de quebra-cabeas que representam as classes e os mtodos utilizados na programao tradicional. Um exemplo de aplicao o AppInventor. Com ele possvel desenvolver uma aplicao online e baixar o arquivo .apk para instalar em um tablet ou smartphone. Estas facilidades fazem com que os usurios tenham maior interesse em conhecer melhor o sistema, fidelizando o uso destes com o Android. A partir do momento em que se conhece uma ferramenta como esta e h certo domnio sobre ela, possvel que um usurio antes leigo em programao torne-se em pouco tempo um bom desenvolvedor de aplicativos Android. Juntamente com as ferramentas de criao de aplicativos, vem surgindo tambm muitas bibliotecas que facilitam o desenvolvimento de aplicaes que exigem comunicao em rede com outros dispositivos. Uma delas a biblioteca Amarino, que foi utilizada na segunda verso do aplicativo desenvolvido neste projeto. Trata-se de uma biblioteca que implementa mtodos de comunicao Bluetooth, gerenciando a conexo do Android com um mdulo ligado ao Arduino. Para que este processo possa ocorrer com xito, necessrio ainda que seja implementado um cdigo especfico em cada lado da comunicao, que podem funcionar como clientes, servidores ou ainda como ambos simultaneamente. Observando esta gama de recursos, surgiu a ideia de se trabalhar com o Android para a manipulao de robs mveis atravs desta plataforma. Alm dos recursos lgicos disponveis para a programao de sistemas, os smartphones e tablets que executam o Android, possuem algumas interfaces que viabilizam muitos projetos envolvendo o Arduino com a utilizao de Shields e mdulos de comunicao. Alguns destes recursos foram implantados neste projeto. Primeiramente podem ser citadas as formas de comunicao utilizadas. Para que esta comunicao pudesse ser estabelecida, foi necessrio avaliar as interfaces disponveis no smartphone utilizado pelo autor do projeto. O modelo adotado foi o Samsung Galaxy Y - S5367, que possui interface de comunicao Wi-Fi e Bluetooth possibilitando a utilizao destes recursos pelo aplicativo desenvolvido. Outro recurso disponvel no aparelho e utilizado pela aplicao o acelermetro. Os acelermetros so sensores que permitem medir foras de 28
acelerao, inclinao, rotao, vibrao, coliso e acelerao da gravidade (SILVA VIEIRA, 2011). A ideia para este recurso seria a possibilidade de alternar o modo de controle do aplicativo entre a forma convencional utilizando botes e esta, atravs da inclinao do aparelho para representar os movimentos do rob. A grande quantidade de possibilidades para o projeto tornou a ideia mais viva para sua concepo e aps algumas semanas de investigao sobre o tema j foi possvel estabelecer conexes simples entre Android e Arduino. O tema deste projeto torna-se muito relevante para as reas abrangidas pelo Android, Arduino e Robtica, levando em considerao o fato de que este pode ser parte de um projeto maior futuramente.
3.3 Diagrama de casos de uso
A interao do usurio com o aplicativo se d pelo simples acesso ao menu de opes de comunicao, seguido do estabelecimento de uma conexo com o Arduino, completados estes dois passos, o usurio estar apto a realizar o controle atravs do envio de comandos do Android para o rob mvel.
Figura 3.3.1 - Diagrama de Casos de Uso
Fonte: o Autor 29
Captulo 4
IMPLEMENTAO
Neste captulo so detalhados os processos do desenvolvimento do aplicativo Android e do software embarcado no Arduino, desde os primeiros testes de comunicao at a sua verso atual com possibilidade de mltiplas formas de conexo.
4.1 Implementao Android
4.1.1 Cenrios No desenvolvimento do aplicativo foi utilizada a linguagem de programao Java com o kit de desenvolvimento de software para Android OS. Todos os recursos de conexo so acessados atravs do toque na tela, com exceo dos menus, que podem ser exibidos atravs da tecla nativa de menu do aparelho. Os recursos de controle podem ser enviados tambm atravs do sensor Acelermetro do aparelhos atravs da inclinao do mesmo para representar os movimentos que o rob deve executar. 4.1.2 Cenrio do Menu Ao abrir o aplicativo, o usurio ir se deparar com uma tela para escolha do modo de comunicao que ir utilizar para se conectar ao rob, podendo optar pela conexo via Bluetooth ou Wi-Fi. As formas de comunicao esto representadas pelo seu smbolo usual e as telas de controle em ambas so bem semelhantes, observando os requisitos necessrios para cada tipo de conexo. A Figura 4.1 representa a tela inicial do aplicativo no emulador Android: 30
Figura 4.1.1 - Tela inicial do aplicativo Fonte: o Autor
4.1.3 Cenrio de Conexo Bluetooth
Para que uma conexo Bluetooth seja estabelecida entre Android e Arduino, necessrio que seja incluso no cdigo o endereo fsico do dispositivo que receber a conexo, neste caso o mdulo Bluetooth que estar conectado ao Arduino. Aps a seleo do modo Bluetooth para conexo, ir aparecer a tela representada pela Figura 4.2 onde o usurio poder enviar comandos para o Arduino atravs do toque na tela. 31
Figura 4.1.2 - Modo de comunicao via Bluetooth Fonte: o Autor
Com esta tela j possvel perceber que a interface est voltada para o controle direcional do rob, envolvendo os movimentos em todas as direes. Para que a conexo seja estabelecida o usurio dever utilizar a tecla de Menu do aparelho. Ser mostrado um menu com algumas opes na parte de baixo da tela conforme mostrado na Figura 4.3, a opo que deve ser escolhida inicialmente Abrir Conexo. Ao escolher esta opo o aplicativo ir acionar o mecanismo de inteno de conexo no endereo fsico pr-definido na programao, ou seja, o endereo MAC do mdulo Bluetooth. O mdulo Bluetooth possui um LED indicativo de conexo, que pisca alternadamente quando est sem conexo ativa. Para constatar que a conexo foi estabelecida com xito, o usurio poder conferir na parte inferior da tela do dispositivo um texto com a palavra Conectado! ou ainda verificar se o LED do mdulo Bluetooth no Arduino est com o LED aceso ininterruptamente. 32
Figura 4.1.3 - Menu de opes no Modo Bluetooth Fonte: o Autor
Aps o devido estabelecimento da conexo, possvel enviar comandos ao Arduino atravs do toque nos botes de direo disponveis na tela. Para utilizar o controle atravs da inclinao do aparelho, basta acionar o Menu e selecionar a opo Acelermetro, fazendo isto todos os comandos que antes eram enviados pelos botes passam a ser executados de acordo com a posio do aparelho. Os botes no ficam inativos, porm o envio dos comandos emitidos pelos botes ocorrem uma vez a cada toque, j os comandos do Acelermetro so enviados num fluxo constante, por isso sempre iro sobrepor os comandos dos botes. Para enviar o comando que representa o Stop (boto azul central), por exemplo, o aparelho deve ficar na posio horizontal. Os dados obtidos pelo sensor so avaliados e h uma tolerncia de inclinao para este comando devido dificuldade de manter o aparelho exatamente na posio em que os eixos X e Y estejam com o valor 0. A Tabela 4.1 mostra como os valores so interpretados pelo aparelho e em seguida enviados ao Arduino: 33
Valor do Sensor Eixo X Eixo Y Estado Comando Enviado < -4 > -4 e < 4 FRENTE '2' > -4 e < 4 > 4 ESQUERDA '4' > -4 e < 4 > -4 e < 4 PARADO '5' > -4 e < 4 < -4 DIREITA '6' > 4 > -4 e < 4 R '8' Tabela 4.1 - Comandos enviados utilizando Acelermetro Fonte: o Autor
Esta forma de comandos possibilita o controle direcional do rob com sinais digitais fixos, mas podem ser transmitidos numa faixa de valores determinada de acordo o valor obtido no sensor para que assim seja possvel controlar a intensidade de energia que o Arduino deve repassar a um motor de corrente contnua para controlar sua velocidade, por exemplo.
4.1.4 Cenrio de Conexo Wi-Fi
No modo de comunicao via Wi-Fi a interface de usurio bem semelhante anterior, com um componente a mais no topo da tela para que o usurio possa inserir o endereo IP do servidor que ir receber o sinal. Neste caso, dispensado o endereo fsico do mdulo de recepo no Arduino para que a conexo seja estabelecida. A Figura 4.4 mostra a interface grfica do cenrio. Ao inserir o IP, basta tocar no Toggle Button ao lado para iniciar a conexo, importante ressaltar que o servidor j deve estar aguardando a conexo no momento do toque no boto para que esta possa ser estabelecida com sucesso, caso contrrio o aplicativo ir exibir uma mensagem com o nome do erro encontrado, neste caso ser a falha na conexo pelo fato de que o servidor no estava aguardando conexes. Quando uma conexo estabelecida com o servidor, da mesma forma que acontece no Modo Bluetooth, uma mensagem informa a conexo, o diferencial 34
neste caso que tambm possvel verificar uma linha verde no Toggle Button, logo abaixo do texto interno ao boto. Aps a conexo, o modo de controle funciona de forma idntica ao do Modo Bluetooth. Neste modo, os comandos so enviados via Sockets pela rede. O servidor foi testado com a utilizao de um computador rodando o cdigo que dever ser executado pelo Shield Wi-Fi ligado ao Arduino para que os comandos sejam encaminhados aos atuadores do rob.
Figura 4.1.4 - Modo de comunicao via Wi-Fi Fonte: o Autor
Os valores enviados neste modo so os mesmos do Modo Bluetooth que esto representados na Tabela 4.1, tanto no modo de controle por botes quanto no modo de controle por acelermetro. Quando o controle por acelermetro est ativo, os comandos so enviados num fluxo constante com um intervalo de meio segundo de um para o outro, ou seja, com o aparelho na posio horizontal o comando PARADO estar sendo enviado ao servidor duas vezes a cada segundo. 35
Ao inclinar o aparelho, o sensor ir indentificar o valor das variveis X e Y e ir atualizar o comando que deve ser enviado, substituindo o valor anterior pelo atual. Diferente do Modo Bluetooth, o menu do Modo Wi-Fi ter apenas dois itens: Acelermetro e Voltar. As funes de Abrir Conexo e Fechar Conexo presentes no Modo Bluetooth, foram implementadas aqui para serem executadas de acordo com o estado do boto presente ao lado da rea de endereo IP do Servidor. Na Figura 4.5 pode ser observada a tela do aplicativo no momento em que pressionada a tecla de Menu do aparelho. A tecla Voltar, tanto no Modo Bluetooth quanto no Modo Wi-Fi, encerram a atividade atual e abrem a tela inicial do aplicativo onde constam os botes para escolha do modo de comunicao que ser adotado na conexo com o Arduino, portanto no possvel sair de um modo para outro sem antes passar pela tela inicial. A Figura 4.6 mostra um esquema do fluxo de navegao no aplicativo.
Figura 4.1.5 - Menu de opes no Modo Wi-Fi Fonte: o Autor
36
A comunicao entre Android e Arduino implementada no aplicativo trata especificamente da finalidade de controlar um rob mvel terrestre, seja ele com rodas, pernas ou outros membros, manipulando a direo que este deve seguir de acordo com os comandos transmitidos na conexo. Porm, outros tipos de projetos em Arduino podem se utilizar deste aplicativo para estabelecer uma forma de controle, basta que os comandos sejam aplicados a determinada tarefa implementada no Arduino.
Figura 4.1.6 - Fluxo de navegao no Aplicativo Fonte: o Autor
4.2 Implementao Arduino
O cdigo embarcado na placa Arduino bem mais simples e menos complexo que o cdigo da aplicao Android. Para o Arduino fazer o gerenciamento entre comandos recebidos e aes a ser executadas basta um simples comando para recepo dos dados (entrada), com devida identificao do contedo, seguido 37
de um envio de comando (sada) atravs de suas portas analgicas ou digitais para os componentes do rob, no caso deste projeto, para os motores de locomoo e direo. A comunicao via Bluetooth no Arduino tem idntica forma de atuao de uma comunicao serial, portanto, o cdigo que manipula transaes utilizando um cabo serial entre um computador e o Arduino tambm capaz de manipular transaes de um mdulo Bluetooth sem nenhuma alterao em sua estrutura. A nica diferena que ser encontrada nesta mudana ser a utilizao dos pinos RX/TX (recepo/transmisso) no Arduino quando este estiver trabalhando com a comunicao Bluetooth. Geralmente estes pinos encontram-se nos pinos digitais zero e um, respectivamente.
4.2.1 Recebendo dados do Android via Bluetooth
Para que o Arduino possa receber os dados enviados pela aplicao, basta utilizar o software Arduino e implementar a funo setup() com a chamada de incio da comunicao serial, da seguinte forma: Serial.begin(9600);. O valor passado no parmetro (9600) representa a taxa de transferncia da comunicao que ser iniciada, neste caso, esta taxa est ajustada para o valor em que opera o mdulo Bluetooth, ou seja, a comunicao serial foi iniciada com uma taxa de transferncia de 9600 bits por segundo. Ainda na funo inicial, necessrio definir como pinos de sada, os pinos que sero responsveis por enviar os comandos recebidos do Android para os motores do rob: pinMode(9,OUTPUT);. Esta funo serve para definir o pino que ser utilizado pela aplicao e seu modo de operao, podendo este ser de entrada ou sada. No caso apresentado, a declarao indica que o pino 9 ter o modo de operao definido como pino de sada, assim ele poder apenas enviar energia. Definida a funo setup(), a funo loop() poder ser codificada. O cdigo bem simples e objetivo: if(Serial.available() > 0) char c = Serial.read();. Esta condio est testando se h alguma conexo serial disponvel no momento. O mtodo available retorna um inteiro indicando a quantidade de conexes. Aps esta declarao, dentro das chaves do if so declaras as rotinas que o Arduino deve executar. A varivel c exemplificada, estar armazenando o comando que foi 38
recebido pela comunicao serial enquanto houver comunicao disponvel, tendo seu valor atualizado a cada nova interao. Para interagir com a aplicao Android, o cdigo neste ponto ser apenas de verificao do valor recebido seguido de alguma ao representativa do comando em questo, exemplificando: para realizar a ao de parar o rob, a aplicao envia o caractere 5; a varivel c ir armazenar este valor; atravs de uma verificao do valor contido em c, o comando pode ser executado pelo Arduino: if(c == 5) PARADO();. Neste caso, a funo PARADO() est declarada e implementada em outro trecho do programa e est apenas sendo chamada. Seu contedo apenas envia o valor LOW para os dois pinos de controle de cada motor, onde esto conectados os fios de positivo e negativo, fazendo com que o motor fique parado por falta de energia para moviment-lo. Com este fluxo, o processo de comunicao entre Android e Arduino torna-se simples e eficiente, podendo operar uma unidade robtica com objetividade. Sintetizando, o cdigo Arduino para controlar (parar) um motor ficar assim:
Com este cdigo embarcado na placa, basta conectar os fios de um motor CC nas portas digitais 9 e 10 do Arduino. Para fazer com que a funo PARADO() gire um motor quando executada, basta que um dos parmetros LOW seja 39
substitudo por HIGH. Este cdigo pode ser testado tambm atravs do recurso Serial Monitor do software Arduino, com uso do cabo USB entre o computador e a placa. Vale lembrar que o mdulo Bluetooth utiliza a mesma forma de comunicao do cabo serial, portanto se o cabo e o mdulo estiverem conectados ao Arduino simultaneamente, no ser possvel fazer o upload do cdigo para a placa atravs do cabo serial, como tambm no ser possvel enviar comandos atravs do Serial Monitor. Caso ambos estejam conectados, uma soluo rpida a interrupo da energia do mdulo desconectando o seu fio positivo. No Apndice B consta o esquema de ligao do rob em protoboard.
40
Captulo 5
TESTES REALIZADOS
Os primeiros testes de comunicao deste projeto foram realizados com o objetivo de acender um LED atravs da aplicao Android. O cdigo utilizado no Arduino foi implementado para que, ao receber um determinado sinal atravs do mdulo Bluetooth, a placa enviasse energia para que o LED fosse aceso. Aps algumas semanas de pesquisa o objetivo inicial foi alcanado, possibilitando assim uma nova fase de desenvolvimento. Esta nova fase trouxe como desafio a implementao da aplicao em Android, com uma interface amigvel e funcional.
5.1 Interface grfica
A primeira verso do aplicativo tinha um objetivo apenas funcional, buscando apenas estabelecer um padro de comunicao com a definio de botes especficos para cada comando que seria enviado para a placa de hardware do rob. Os botes foram inseridos na rea correspondente tela do smartphone sem considerar uma melhor disposio de layout para o usurio. Nesta etapa, surgiram alguns problemas de estabilidade do aplicativo durante a navegao entre as telas de controle e menus. Outro problema detectado foi a perda de comunicao utilizando o acelermetro devido inatividade de recursos visuais, ou seja, aps certo tempo controlando o rob com o acelermetro, a tela se apagava e a comunicao era perdida. Algumas pesquisas sobre os eventos ocorridos revelaram a necessidade de utilizao de funes nativas do Android para a manuteno da usabilidade da aplicao. Estabelecidos os comandos e botes correspondentes, a parte funcional j em funcionamento passou a ser migrada para uma interface amigvel e ao mesmo tempo confortvel para que o usurio tivesse a liberdade de utilizar os controles sem a necessidade de conferir a tela do aplicativo a cada novo boto que desejasse utilizar. 41
Aps o estabelecimento de um padro visual para o aplicativo, foi desenvolvida a interface em forma de setas direcionais para representar os movimentos de locomoo do rob. Concluda a aplicao Android e o cdigo Arduino, foi montado um rob mvel utilizando uma base pronta, apenas conectando os motores aos pinos do Arduino com o intermdio de um chip L293D (ponte H) para realizar a movimentao dos dois motores em ambos os sentidos. Com todos os componentes em funcionamento, foram realizados vrios testes de comunicao e controle, ajustando a aplicao Android e o cdigo Arduino conforme eram percebidas as deficincias do projeto. Em sua verso final, o aplicativo tem uma conexo estvel com o Arduino.
5.2 Teste de comunicao Bluetooth
Nesta verso, um teste bastante surpreendente foi o teste de alcance do controle via Bluetooth, que demonstrou que esta forma de comunicao pode ser utilizada em maior escala para este tipo de atuao. O mdulo Bluetooth utilizado no Arduino neste projeto um dispositivo Classe um, modelo AUBTM-22 adquirido no site da Tato (www.tato.ind.br), que possui alcance de at cem metros. O teste foi realizado em ambiente aberto na Universidade Federal do Piau, Campus Senador Helvdio Nunes de Barros em Picos. O trajeto do rob foi partir do local onde estava o controle afastando-se at o limite onde foi possvel trafegar com sua estrutura. O alcance constatado neste teste foi de aproximadamente 50 metros, onde foi enviado o comando para o rob fazer a curva e retornar. O mesmo encerrou seu trajeto no mesmo local de onde partiu, com o usurio portador do controle no mesmo local em que a conexo foi iniciada.
5.3 Teste de comunicao Wi-Fi
Utilizando o modo Wi-Fi, possvel estabelecer a comunicao de duas formas: ad-hoc, conectando o Android diretamente ao shield Wi-Fi, ou infraestrutura, utilizando algum ponto de acesso (roteador) como mediador da conexo. O teste realizado foi utilizado utilizando o prprio roteador do laboratrio, que faz a distribuio de sinal de internet sem fio para os usurios do mesmo. 42
O teste de comunicao Wi-Fi foi realizado no prprio laboratrio de desenvolvimento. Devido falta do shield necessrio para a comunicao neste modo, foi implementado um cdigo de um servidor socket em Java para simular a comunicao entre Android e Arduino com esta tecnologia. O cdigo foi executado no Eclipse IDE rodando em um notebook com sistema operacional Windows. O cdigo tinha a funo apenas de receber o comando emitido pelo aplicativo Android e mostrar este comando na tela do computador para que fosse constatado o recebimento do mesmo. O teste foi satisfatrio e revelou grande eficincia do aplicativo com esta forma de comunicao, tanto na utilizao de botes quanto no controle por acelermetro. 43
Captulo 6
CONSIDERAES FINAIS
Neste trabalho foram abordados temas relevantes da tecnologia alcanada nos ltimos anos. A grande massa de dispositivos Android possibilita a integrao dos usurios com aplicativos capazes de padronizar as formas de comunicao e compartilhamento de dados na rede mundial de computadores. O aplicativo construdo neste trabalho de grande importncia para o estudo da comunicao entre o Android e o Arduino. A sofisticao da robtica cresce cada vez mais e a plataforma Arduino vem destacando-se como uma das melhores ferramentas de prototipao na rea. A facilidade de produo proporciona rpido avano no conhecimento para principiantes neste universo to diversificado da tecnologia. Algumas dificuldades foram enfrentadas no incio do projeto especificamente no que tange ao desenvolvimento da aplicao em Android, como os erros de execuo no momento de navegao entre as telas do aplicativo, erros de conexo constantes, entre outras dificuldades que impediram um fluxo constante e crescente de evoluo do projeto, porm, todos estes problemas foram sanados e a aplicao mostra-se confivel quanto ao seu objetivo. O desafio de desenvolver um aplicativo que possibilita duas formas de comunicao distintas com a plataforma Arduino foi superado com este trabalho. Sua estrutura mostra-se alinhada aos objetivos do projeto com grande possibilidade de expanso futura. A implementao foi realizada de forma gradativa e modularizada, sendo testada aps a implantao de cada novo componente no projeto, tornando sua credibilidade ainda maior. Os testes de estabilidade da conexo e alcance da comunicao comprovam que o aplicativo pode ser utilizado com segurana em novos projetos da rea. O tempo de resposta do rob ao comando enviado pelo smartphone quase imediato. A dirigibilidade atravs do acelermetro pode ser melhorada de acordo com a prtica do usurio, o aperfeioamento poder ser mais lento quando este no est habituado com este tipo de recurso. 44
Como trabalhos futuros supe-se a implementao de um banco de dados para a aplicao para armazenar: Dados das conexes para estatsticas de estabilidade; Configuraes personalizadas do usurio. Supe-se ainda a criao de um menu de configuraes para que o usurio possa: Inserir, mover ou excluir botes da interface grfica, possibilitando assim uma personalizao do aplicativo para outras finalidades alm do controle de robs mveis; Configurar os comandos que cada boto deve enviar; Configurar a frequncia de envio dos comandos; Configurar o envio de faixas de valores de acordo com o valor do sensor Acelermetro para trabalhar com os pinos analgicos do Arduino (PWM). 45
REFERNCIAS
ABLESON, Frank. Publicao de artigos cientficos. Introduo ao desenvolvimento do Android, mar. 2013. Disponvel em: <http://www.ibm.com/developerworks/br/library/os-android-devel/>. Acesso em: 27 mar. 2013 ANDROID, Disponvel em: < http://developer.android.com/guide/basics/what-is- android.html >. Acesso em: mar. 2013 ARDUINO, Disponvel em: <http://arduino.cc/>. Acesso em: 29 mar. 2013 ATTROT, Wesley. Aplicaes da Robtica no Ensino de Cincia da Computao. Um Estudo de Caso. Monografia (Bacharelado em Cincia da Computao) - Universidade Estadual de Londrina, Londrina, 2002. In: ZANELATTO, Marcelo Stuani. Robtica Educacional nos Cursos de Cincia da Computao, 2004. Disponvel em: <http://www2.dc.uel.br/nourau/document/?view=81>. Acesso em 29 mar. 2013 CANO, Carlos E. V. Tcnica de navegao de um rob mvel baseado em um sistema de viso para integr-lo a uma clula de manufatura. Disponvel em: <http://vsites.unb.br/ft/enm/sistmec/site/admin/publicacoes/villa.pdf>. Acesso em: 12 mai. 2012
FERNANDES, Anita Maria da Rocha; LAURINDO, Rafael Daniel. Publicao de artigos cientficos. Sistema de Controle Baseado em Telefonia Celular. Disponvel em: < http://www.aedb.br/seget/artigos11/13214145.pdf>. Acesso em: 27 mar. 2013 GARGENTA, Marko. Learning Android. Sebastopol: OReilly Media, 2011. In: SILVA, Luciano dipo Pereira da. Utilizao da plataforma Android no desenvolvimento de um aplicativo para o clculo do Balano Hdrico Climatolgico, 2009. Disponvel em: <http://bhcmovel.googlecode.com/files/TCC%20-%20Final.pdf>. Acesso em 15 mar. 2013 GUERRA, S.C.S. Sistema de Navegao para Veculo Autnomo Utilizando Lgica Difusa. 128 p. Dissertao (Mestrado). Escola de Engenharia de So Carlos, Universidade de So Paulo, So Carlos, 2009. In: VIEIRA, Manoel Alexandre. Sistema de telemetria para robs mveis, 2011. Trabalho de Concluso de Curso. Universidade Federal do Vale do So Francisco, Juazeiro, 2011. Disponvel em: <http://www.univasf.edu.br/~ccomp/monografias/monografia_3.pdf>. Acesso em 22 mar. 2013 LECHETA, R. R. Google Android: Aprenda a criar aplicaes para dispositivos mveis com o Android SDK. So Paulo: Novatec, 2009. In: SILVA, Luciano dipo Pereira da. Utilizao da plataforma Android no desenvolvimento de um aplicativo para o clculo do Balano Hdrico Climatolgico, 2009. Disponvel em: <http://bhcmovel.googlecode.com/files/TCC%20-%20Final.pdf>. Acesso em 15 mar. 2013 46
MARTINS, AGENOR. O Que Robtica. So Paulo: Editora Brasiliense, 1993. In: ZANELATTO, Marcelo Stuani. Robtica Educacional nos Cursos de Cincia da Computao, 2004. Disponvel em: <http://www2.dc.uel.br/nourau/document/?view=81>. Acesso em 29 mar. 2013 SILVA VIEIRA, JOSE CARLOS. Plataforma Mvel Area QuadRotor. Escola de Engenharia, Universidade do Minho. Tese de mestrado. STEELE, J.; TO, N. The Android Developers Cookbook Building Applications with the Android SDK. Boston: Pearson Education, 2011. In: SILVA, Luciano dipo Pereira da. Utilizao da plataforma Android no desenvolvimento de um aplicativo para o clculo do Balano Hdrico Climatolgico, 2009. Disponvel em: <http://bhcmovel.googlecode.com/files/TCC%20-%20Final.pdf>. Acesso em 15 mar. 2013
47
APNDICES
48
Apndice A Algoritmo Android - Comunicao Bluetooth
BluetoothAdapter meuAdaptador; BluetoothSocket socket; BluetoothDevice dispositivo; OutputStream saida; InputStream entrada; Thread xthread; byte[] conteudo; int posConteudo; int cont; volatile boolean trabParado; public boolean btConectado = false; public boolean ativ_acel = false; private SensorManager sensorMgr; public float eixoX, eixoY; private long lastUpdate = -1;
public void parear() {//Parear Android com mdulo Arduino meuAdaptador = BluetoothAdapter.getDefaultAdapter(); if (!meuAdaptador.isEnabled()) { Intent enableBluetooth = new Intent( BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBluetooth, 0); } if (meuAdaptador == null) { txInforme.setText("Adaptador bluetooth indisponivel."); } Set<BluetoothDevice> pareados = meuAdaptador.getBondedDevices(); if (pareados.size() > 0) { for (BluetoothDevice temp : pareados) { if (temp.getName().equals("AUBTM-22")) { dispositivo = temp; break; } } } txInforme.setText("Dispositivo no encontrado!"); }
public void infoStatus() {//Manipulador de mensagens final Handler handler = new Handler(); final byte delimiter = 127; trabParado = false; posConteudo = 0; conteudo = new byte[1024]; 49
xthread = new Thread(new Runnable() { public void run() { while (!Thread.currentThread().isInterrupted() && !trabParado) { try { int bytesAvailable = entrada.available(); if (bytesAvailable > 0) { byte[] packetBytes = new byte[bytesAvailable]; entrada.read(packetBytes); for (int i = 0; i < bytesAvailable; i++) { byte b = packetBytes[i]; if (b == delimiter) { byte[] encodedBytes = new byte[posConteudo];
System.arraycopy(conteudo, 0, encodedBytes,0, encodedBytes.length); final String data = new String( encodedBytes, "US-ASCII"); posConteudo = 0; handler.post(new Runnable() { public void run() {
public void wfrente() { try { servidor = (EditText) findViewById(R.id.ipservidor); server = servidor.getText().toString(); socket = new Socket(server, 7776); os = new DataOutputStream(socket.getOutputStream()); os.writeUTF("2");//Enviando comando ao Arduino os.flush(); os.close(); socket.close(); } catch (Exception e) { Toast.makeText(ModoWifi.this, "Erro :" + e.getLocalizedMessage(), Toast.LENGTH_SHORT).show(); } }
public void wesquerda() { try { servidor = (EditText) findViewById(R.id.ipservidor); server = servidor.getText().toString(); socket = new Socket(server, 7776); os = new DataOutputStream(socket.getOutputStream()); os.writeUTF("4"); os.flush(); os.close(); socket.close(); } catch (Exception e) { Toast.makeText(ModoWifi.this, "Erro :" + e.getLocalizedMessage(), Toast.LENGTH_SHORT).show(); } }
public void wparado() { try { servidor = (EditText) findViewById(R.id.ipservidor); server = servidor.getText().toString(); socket = new Socket(server, 7776); os = new DataOutputStream(socket.getOutputStream()); 52
int m1f=7, m1t=8;//Pinos motor 1 int m2f=12, m2t=13;//Pinos motor 2
void setup(){ pinMode(m1f,OUTPUT);//Definindo como pinos de sada pinMode(m1t,OUTPUT); pinMode(m2f,OUTPUT); pinMode(m2t,OUTPUT); Serial.begin(9600);//Iniciando comunicao Serial }
M M d du ul lo o B Bl lu ue et to oo ot th h M Mo ot to or r C CC C D Di ir re e o o A Al li im me en nt ta a o o A Ar rd du ui in no o D Du ue em mi il la an no ov ve e M Mo ot to or r C CC C L Lo oc co om mo o o o 57
Santana, Ivani. Configuraóes Da Dança Na Cultura Digital Relatos Sobre Experimentaóes e Reflexoes Da Dança Com Mediaçao Tecnológica en CenaCorpoDrama PDF