Relatório Técnico - Páginas Pessoais -...

14
Universidade Tecnológica Federal do Paraná - UTFPR Departamento Acadêmico de Informática - DAINF Departamento Acadêmico de Eletrônica - DAELN Engenharia de Computação Oficina de Integração 3 (IF66J) – S71 – 2014/2 Relatório Técnico Sistema de treinamento para corrida de orientação Cristiano da Cunha Ribas [email protected] Hadryel Ruda Acioli Holanda [email protected] Rafhael Weslley Lemes de Souza [email protected] Fevereiro de 2015 Resumo Este documento apresenta o desenvolvimento de um sistema de treina- mento para corrida de orientação. Tal sistema foi idealizado com o intuito de melhorar e facilitar o treinamento de praticantes deste esporte, gerando informações de tempo, distância e ritmo diretamente no smartphone. O projeto foi dividido em duas partes: o desenvolvimento do hardware, ca- paz de fornecer informações geográficas e referentes ao local de treino de determinado ponto; e o desenvolvimento do software, que interpreta es- sas informações e as mostra de maneira simples para o usuário, além de armazená-las para posterior consulta. Ao fim do projeto, obteve-se um protótipo funcional de hardware e software, demonstrado a partir de tes- tes, que tiveram seus resultados comparados a ferramentas disponíveis no mercado, podendo, portanto, passar a ser utilizado como ferramenta de treino. Ao longo deste documento serão detalhados componentes, ferra- mentas e métodos utilizados no projeto. 1 Introdução A corrida de orientação foi criada na Suécia em 1918 e disseminada amplamente no âmbito militar dos demais países nórdicos. Somente a partir de 1970, tam- bém no contexto militar, o esporte foi gradualmente difundido no Brasil. A ori- entação é um esporte individual praticado em meio à natureza, onde o competi- dor utiliza uma bússola e um mapa topográfico para escolher caminhos que lhe permitam atingir os controles indicados no percurso contido no mapa. Durante o percurso, é indispensável a passagem do atleta em determinados pontos no terreno sinalizados no mapa, chamados de pontos de controle. Nesses postos, o competidor deve picotar seu cartão de controle em prismas (totens que mate- rializam os pontos de controle), para sinalizar sua passagem. Em campeonatos, o vitorioso em cada categoria é quem faz o trajeto em menor tempo. O tempo total gasto para percorrer o trajeto é variável de acordo com a capacidade física 1

Transcript of Relatório Técnico - Páginas Pessoais -...

Universidade Tecnológica Federal do Paraná - UTFPR

Departamento Acadêmico de Informática - DAINF

Departamento Acadêmico de Eletrônica - DAELN

Engenharia de ComputaçãoOficina de Integração 3 (IF66J) – S71 – 2014/2

Relatório TécnicoSistema de treinamento para corrida de

orientação

Cristiano da Cunha Ribas – [email protected]

Hadryel Ruda Acioli Holanda – [email protected]

Rafhael Weslley Lemes de Souza – [email protected]

Fevereiro de 2015

Resumo

Este documento apresenta o desenvolvimento de um sistema de treina-mento para corrida de orientação. Tal sistema foi idealizado com o intuitode melhorar e facilitar o treinamento de praticantes deste esporte, gerandoinformações de tempo, distância e ritmo diretamente no smartphone. Oprojeto foi dividido em duas partes: o desenvolvimento do hardware, ca-paz de fornecer informações geográficas e referentes ao local de treino dedeterminado ponto; e o desenvolvimento do software, que interpreta es-sas informações e as mostra de maneira simples para o usuário, além dearmazená-las para posterior consulta. Ao fim do projeto, obteve-se umprotótipo funcional de hardware e software, demonstrado a partir de tes-tes, que tiveram seus resultados comparados a ferramentas disponíveis nomercado, podendo, portanto, passar a ser utilizado como ferramenta detreino. Ao longo deste documento serão detalhados componentes, ferra-mentas e métodos utilizados no projeto.

1 Introdução

A corrida de orientação foi criada na Suécia em 1918 e disseminada amplamenteno âmbito militar dos demais países nórdicos. Somente a partir de 1970, tam-bém no contexto militar, o esporte foi gradualmente difundido no Brasil. A ori-entação é um esporte individual praticado em meio à natureza, onde o competi-dor utiliza uma bússola e um mapa topográfico para escolher caminhos que lhepermitam atingir os controles indicados no percurso contido no mapa. Duranteo percurso, é indispensável a passagem do atleta em determinados pontos noterreno sinalizados no mapa, chamados de pontos de controle. Nesses postos,o competidor deve picotar seu cartão de controle em prismas (totens que mate-rializam os pontos de controle), para sinalizar sua passagem. Em campeonatos,o vitorioso em cada categoria é quem faz o trajeto em menor tempo. O tempototal gasto para percorrer o trajeto é variável de acordo com a capacidade física

1

Sistema de treinamento para corrida de orientação 2

e cognitiva dos participantes, englobando sua aptidão na leitura de mapas, con-dicionamento físico e sua habilidade de adaptação aos diversos terrenos [11].

Alguns problemas são encontrados quando pondera-se o atual sistema decontrole utilizado nas corridas de orientação. Como as corridas são realizadasem um trajeto diferente, deve ser elaborado um cartão, que é descartável, espe-cífico para cada uma. O tempo que o atleta consome para marcar seu cartão écontabilizado na duração total da corrida. Além disso o participante consegueavaliar seus dados apenas no fim da corrida, o que é aceitável para uma compe-tição, mas que poderia ser melhorado no caso de um treinamento.

No entanto, com a implantação de um dispositivo eletrônico nos pontos decontrole e um smartphone capaz de interagir com ele, não haveria a necessidadede confecção de um cartão exclusivo para cada corrida, pois o sistema poderiaser utilizado em qualquer região, baseado nas coordenadas geográficas. Alémdisso, o registro da passagem do competidor pelo controle seria mais ágil e ha-veria o acesso a informações sobre a corrida, que seriam úteis no treinamentodos atletas. Essa informações poderiam ser acessadas durante e após o treino,podendo fazer comparações com outros participantes ou otros treinos.

Deste modo, o objetivo deste trabalho é desenvolver um protótipo do sis-tema embarcado que permite descrever o desempenho do competidor em cadaparte da corrida. Cada ponto de controle terá um dispositivo capaz de gerar umQR-Code baseado no número deste posto, zona UTM em que está localizado,latitude, longitude e altitude. Além de gerar o código, o dispositivo também oapresentará em um Liquid Crystal Display (LCD). O atleta necessitará de umsmartphone com sistema operacional Android e o aplicativo específico insta-lado, que identificará e interpretará o QR-Code, assim que for identificado pelacâmera. Assim, haverá informação das coordenadas, distância e tempo entreum ponto e outro. Esses dados poderão ser usados nos treinamentos para apri-morar o ritmo e o tempo dos esportistas. O funcionamento do projeto pode servisto no storyboard da Figura 1. O participante deve fotografar o QR-Code pre-sente no ponto de controle com o smartphone que contém o aplicativo do pro-jeto. O participante deve então se deslocar até um segundo ponto de controlepara fotografar um novo QR-Code. A partir disso, é possível obter informaçõesde distância percorrida e ritmo, através do aplicativo.

Sistema de treinamento para corrida de orientação 3

Figura 1: Storyboard de funcionamento do projeto divido em 4 partes. 1) Obtém pri-meiro QR-Code. 2) Desloca-se até o próximo ponto de controle. 3) Obtém próximoQR-Code. 4) Disponibiliza informações sobre a corrida no smartphone. Fonte: [6].

2 Sistema embarcado

2.1 Arduino

O projeto foi montado tendo como base a plataforma Arduino [2]. O modeloadotado foi o Arduino Mega 2560, que possui 54 pinos de entrada e saída, 16 en-tradas analógicas, entrada USB e um conector de alimentação para uma fonteexterna, além de possuir um botão de reset e um cristal oscilador. O motivo daescolha para a placa adotada foi dado devido a memória disponível de 256kB[3], sendo mais do que suficiente para a execução do projeto. O dispositivo é ali-mentado com uma bateria de 5 volts. Foram usadas 11 entradas da placa para acomunicação com um display, 4 entradas para a comunicação com um móduloGPS e 7 entradas para um teclado matricial.

2.2 Módulo GPS

O módulo GPS usado no projeto corresponde ao GPS Shield for Arduino FZ0039,que é um shield próprio para Arduino. Entre as características do dispositivo,pode-se citar: bom desempenho para trabalhar com um sinal de baixa inten-sidade, possui interface para micro SD, opera em temperaturas entre -40 e 85

Sistema de treinamento para corrida de orientação 4

graus Celsius e é alimentado pela mesma tensão que o Arduino. Para orienta-ção da equipe sobre esse módulo, foi usado o site do fabricante, que possui osesquemáticos, as bibliotecas que podem ser usadas para a obtenção das coor-denadas através do GPS e o datasheet do produto [16]. Para o funcionamento,além da pinagem padrão do shield, devem ser feitas as ligações entre os pinosde comunicação serial RX e TX. A taxa de comunicação com o Arduino para am-bas as portas é de 9600 bits por segundo. Os dados obtidos para as coordenadassão: latitude, longitude e altitude. O módulo possui ainda uma antena para umaobtenção mais rápida e precisa dos dados.

2.3 Display LCD

Foi utilizado o display a-Si TFT LCD Single Chip Driver da marca Adafruit paraapresentar dados necessários para o participante e compor parte da interfacegráfica do projeto. Este display atendeu aos requisitos, pois possui uma reso-lução de 240 por 320 pixels e pode apresentar até 262 mil cores. Como o QR-Code é desenhado em duas cores (clara e escura), era essencial que o fundofosse claro, diferentemente da maioria dos LCD que possuem o fundo geral-mente verde. Portanto, com essa gama de cores, foi possível forçar o brancono fundo do QR-Code e pintar o código em cor preta. O display possui 2,4 po-legadas, o quê torna-o facilmente visível para o participante e legível para quea câmera do smartphone possa interpretá-lo. Para facilitar a integração com oprojeto, foi adquirido o shield acoplado ao display, o qual pôde ser conectadoao Arduino Mega seguindo as informações contidas no datasheet[15]. Este da-tasheet contém as informações referentes aos pinos e chip de controle utilizadopor ele. É com base neste chip que foram escolhidas as bibliotecas a serem uti-lizadas, que serão mencionadas no capítulo referente ao desenvolvimento dosoftware. Os pinos do shield são para: tensão; aterramento; controle do cartãode memória; controle de tela, como clear, write e ajuste de brilho; entrada declock para o display. Como não foi necessária a utilização de cartão de memóriano projeto, tais pinos não foram utilizados.

2.4 Teclado Matricial

Foi utilizado o teclado matricial composto por 4 linhas e 4 colunas, totalizando16 botões. Este teclado possui uma membrana adesiva que o permite ser coladoem uma superfície sólida, evitando o uso de parafusos que poderiam danificara estrutura do projeto.

O teclado tem a função de interfacear a configuração do dispositivo porparte dos organizadores da corrida de orientação. Através dele é possível definiro código de prisma correspondente ao ponto de controle e definir o momentoem que deve ser feita a aquisição de dados a partir do GPS.

Sistema de treinamento para corrida de orientação 5

2.5 Integração do Hardware

A integração de todos os componentes de hardware pode ser visualizada na Fi-gura 2.

Figura 2: Esquemático da integração do hardware. O arduino (sob shield do display)faz a integração entre as partes do projeto. Fonte: [9].

O Arduino é a base do projeto. Ele é responsavel por fazer as leituras dosdados do GPS, identificar os botões pressionados do teclado e gerar o QR-Codecorrespondente às coordernadas do ponto em questão. Acoplado ao Arduinoencontra-se o módulo de GPS. Ele determina as coodenadas do ponto atual eenvia para o Arduino por meio de comunicação serial. Em paralelo com o mó-dulo de GPS está o LCD, que faz a interação com o usuário para ligar, desligar,reiniciar e atribuir o número do controle, além de exibir o QR-Code gerado pelomicrocontrolador. O teclado matricial é ligado nas portas digitais do Arduino eserve como dispositivo de entrada para os comandos descritos anteriormente.

2.6 Estrutura do Código

O firmware presente no Arduino mantém o controle dos módulos do disposi-tivo. Ao ser iniciado, o usuário deverá determinar o ponto da corrida que seráarmazenado no QR-Code a ser gerado. É feita a leitura do GPS para a obtençãoda latitude, longitude e altitude. Os dados de entrada juntamente com os obti-dos pelo GPS são formatados e o dispositivo gera um QR-Code a ser exibido noLCD. Se desejado, pode-se redefinir as entradas e coordenadas no dispositivo,gerando um novo QR-Code. Do teclado matricial foram definidas funções paraas teclas numéricas (0 a 9), D e A. As teclas numéricas servem para a definiçãodo ponto de controle da corrida, e as outras duas servem para as operações deconfirmar ou abortar as funções do dispositivo. A estrutura de execução podeser visualizada na Figura 3.

Sistema de treinamento para corrida de orientação 6

Figura 3: Fluxograma de execução do código no Arduino. Fonte: autoria própria

2.7 Aquisição dos Dados do GPS

O código feito para a aquisição dos dados do GPS foi baseado nos exemplos defuncionamento da biblioteca TinyGPS 13.0 [8], responsável por fazer a leitura ea interpretação das coordenadas para o Arduino, e modificado para as necessi-dades do projeto. Um exemplo do retorno obtido com essa biblioteca pode servisto a seguir, onde os campos são, na sequência: latitude, longitude e altitude.

LAT=-25.448379, LON=-49.265518,ALT=932

2.8 Formação do QR-Code

O QR-Code é gerado no dispositivo de acordo com o padrão ISO/IEC 18004 [4].O modelo utilizado é o padrão atual, que corresponde ao Modelo 2. Ele estáconfigurado com um padrão de correção Q, que possibilita a recuperação do có-digo mesmo que tenha 25% de área danificada. O QR-Code é gerado no Arduinoe é baseado na bilioteca Zxing [7]. O código implementado usa as coordena-das obtidas no GPS, juntamente com parâmetros ajustados pelo usuário, paragerar o QR-Code que será lido pelo aplicativo Android. A seguir é apresentadoum pseudo-código demonstrando o funcionamento deste algoritmo que gera oQR-Code.

PontoDeControle : Integer ,CoordenadasGPS : String ,StringParaQR : String ,Versao : Integer ,

Sistema de treinamento para corrida de orientação 7

FatorCorrecao : Char ;

INÍCIOEscreva ( ’ Digite o ponto de controle ’ ) ;Leia ( a )PontoDeControle <− a ;CoordenadasGPS <− ObterCoodernadas ( ) ;StringParaQR <− Codifica ( PontoDeControle , CoordenadasGPS ) ;Versao <− 2 ;FatorCorrecao <− ’Q’ ;GeraQRCode( Versao , FatorCorrecao , StringParaQR ) ;MostraQRCode ( ) ;FIM

3 Aplicativo para Android

3.1 Estrutura e Design da Aplicação

O design do aplicativo foi construído visando a facilidade de seu manuseio du-rante a corrida, a fim de não impactar na performance do participante. Para issoforam utilizados botões grandes e intuitivos para cada função. O fluxo de utili-zação se dará a partir da abertura do aplicativo. A tela inicial possui um botãochamado "Iniciar". Quando o usuário clicar neste botão, estará iniciando umanova corrida. Então, este botão desaparecerá e dará lugar a dois novos botõesdenominados "Câmera"e "Encerrar", além das informações de ritmo, distân-cia e quantidade de prismas ultrapassados. Ao clicar em "Câmera", é aberta afunção de câmera do smartphone, que espera identificar um QR-Code. Se o QR-Code identificado pela câmera estiver dentro dos padrões de forma e tamanhoestipulados, esse ponto será contabilizado para o participante e retornará à telaanterior, com os dois botões e informações sobre a corrida. Agora, essa tela in-dicará que o participante ultrapassou um ponto de controle, porém só indicaráritmo e distância depois que o atleta ultrapassar o segundo prisma. Ao clicar em"Encerrar", o usuário indica que essa corrida acabou e seus dados estão armaze-nados. Também foi criado um menu lateral do tipo navigation drawer seguindoos padrões de desenvolvimento de fragments estipulado pela Google [1]. Estemenu contém 3 subseções: corrida, que retorna para a tela inicial; histórico,com informações de outras corridas; e sobre, falando sobre os desenvolvedo-res e sobre o projeto. A seção "Histórico"terá uma lista com todas as corridasjá realizadas pelo usuário. Ao acessar uma corrida, o participante terá a lista detodos os pontos de controle daquela corrida, com informações geográficas decada um deles e os dados da corrida: quantidade de prismas, ritmo, distância etempo totais.

Na Figura 4 são mostradas imagens do aplicativo. A figura ’A’ mostra o menu

Sistema de treinamento para corrida de orientação 8

estilo Navigation Drawer com as opções para o usuário; ’B’ mostra uma corridainiciada; ’C’ mostra a tela inicial, que é também a tela que aparece depois queo usuário encerra uma corrida; ’D’ contém a tela do submenu ’Histórico’, ondemostra as corridas já feitas pelo atleta; e, em ’E’, são mostrados os detalhes dealguma das corridas escolhida pelo usuário.

Figura 4: Imagens das telas do aplicativo. Autoria própria.

3.2 Interpretação do QR-Code

Para interpretar o QR Code a partir das imagens da câmera do smartphone,utilizou-se a biblioteca QRCodeReaderView [10], que é uma adaptação para odesenvolvimento na plataforma android da biblioteca ZXing [7]. A bibliotecapossui uma função de leitura de QR-Code, que consiste no reconhecimento einterpretação do código e fornece como variável de retorno a informação pre-sente no QR-Code identificado. O core dessa biblioteca é composto por algo-ritmos de processamento de imagens, capazes de identificar um QR-Code naimagem da câmera, antes mesmo de tirar a foto. Como mencionado no capítulosobre QR-Code, para sua identificação, deve-se considerar suas três extremida-des quadrangulares, que são padrão em todos os QR-Codes [4]. A partir dessasextremidades, é possível determinar parâmetros de escala e de orientação que,junto com os demais elementos da imagem, tornam possível interpretá-la utili-zando outro algoritmo, que transforma os quadrados brancos e pretos em umamatriz binária. Decodificando essa matriz no formato específico de cada apli-cação, tem-se a informação do código, que é, então, retornado pelo método noformato de uma String.

3.3 Persistência em Banco de Dados

A persistência dos dados de cada corrida é feita em um banco de dados SQLite,disponível em todos os aparelhos com sistema operacional Android. Cada infor-mação gerada pelo usuário ou para o usuário é mantida nesse banco de dados.Quando o participante seleciona a opção de iniciar uma nova corrida, essa infor-mação é armazenada, para garantir a segurança dos dados daquela corrida. As-

Sistema de treinamento para corrida de orientação 9

sim, caso o participante feche o aplicativo sem querer durante a corrida, quandoabrí-lo novamente, poderá continuar a navegação de onde havia parado. A per-sistência é feita utilizando a biblioteca Sugar ORM [13], que é capaz de enxergaras classes como entidades e, com isso, fazer a relação de classes com tabelasdo banco de dados. Essa biblioteca cria as tabelas necessárias, baseando-se nasclasses de modelo e é capaz de fazer várias operações no banco de dados, deacordo com o que for necessário no código. Diferentemente de outras aplica-ções semelhantes, como JPA para a linguagem Java voltada para o âmbito Webou mesmo seus frameworks derivados, a Sugar ORM dispensa o uso de arquivose scripts de configuração. Essa interação se deve ao fato de o banco de dadosSQLite ser uma versão mais simples, porém tão confiável quanto, o MySQL [14].

4 Resultados

O resultado do funcionamento do projeto pode ser explicado a partir do se-guinte exemplo de utilização: foram coletadas informações de dois pontos ge-ográficos, utilizando o sistema embarcado como mostram a Figura 5 e a Figura6 e, então, tais informações foram interpretadas pelo aplicativo de smartphone,como pode ser visto na Figura 7.

Sistema de treinamento para corrida de orientação 10

Figura 5: Mapa com a posição e QR-Codes equivalentes do primeiro ponto. Fonte: [12].

Tal demonstração foi realizada com informações referente a um teste de fun-cionamento do projeto, como um todo. Para fim de comparação, as coorde-nadas geradas foram inseridas no Google Maps e, com isso, pôde-se comparara distância retornada por esse e a distância apresentada no aplicativo, como éapresentado na Figura 8. A distância encontrada utilizando o Google Maps foi de280 metros, enquanto a do aplicativo proposto foi de 259 metros. Tal diferençapode ser justificada pelo fato de o sistema gerar QR-Codes com imprecisão deaté 11 metros em cada ponto. Então, se considerar 11 metros de imprecisão paracada ponto, poderia chegar a um total de 22 metros entre os 2 pontos.

Sistema de treinamento para corrida de orientação 11

Figura 6: Mapa com a posição e QR-Codes equivalentes do sgeundo ponto. Fonte: [12].

Figura 7: Informações mostradas pelo aplicativo. Fonte: autoria própria.

Sistema de treinamento para corrida de orientação 12

Figura 8: Distância entre os dois pontos mostrados no teste. Fonte: [12].

5 Conclusão

O objetivo de criar um dispositivo capaz de auxiliar no treinamento da cor-rida de orientação foi alcançado com sucesso. O hardware desenvolvido repre-senta um ponto de controle da corrida, enquanto o software desenvolvido parasmartphone representa o cartão utilizado para marcar os pontos da prova. Paraefeito os testes de funcionamento do sistema, apenas um protótipo foi desen-volvido, simulando dois pontos de controle da corrida.A configuração do hard-ware deve ser feita pelos responsáveis pela organização do treinamento. Os par-ticipantes ficam encarregados apenas de utilizar o smartphone com o aplicativoda corrida para que possam realizar o treino. O sistema poderia contar com osdados do GPS obtidos a partir do smartphone do participante, mas isso pode-ria gerar diferenças em informações importantes para o projeto como distânciapercorrida e ritmo, além de poder haver maior perda de tempo na obtenção dascoordenadas de um ponto de controle. Os resultados obtidos com os testes dodispositivo foram condizentes com o esperado, onde a funcionalidade de se ob-ter o ritmo e a distância percorrida pelo partipante da corrida foi alcançada. Osistema ainda apresenta algumas restrições de funcionalidade devido aos com-ponentes utilizados, entre elas o não funcionamento do dispositivo em ambi-ente fechado e possíveis falhas de obtenção das coordenadas a partir do GPS.Entretanto, para as condições previamente estabelecidas pelo funcionamentoda corrida de orientação, o sistema se mostrou eficaz e capaz de responder atodos os testes propostos.

Esse relatório descreve os passos utilizados para o desenvolvimento de umsistema auxiliar de treinamento para a corrida de orientação e deve ser utilizadojuntamente com as referências aqui citadas para seu entendimento de forma

Sistema de treinamento para corrida de orientação 13

eficaz.

Agradecimentos

• Ao professor Raul M. P. Friedmann, pelo suporte, incentivo e orientaçãodurante o projeto.

• Aos professores Gustavo Benvenutti Borba e Guilherme Alceu Schneider,pelo suporte durante o semestre.

• A todos os envolvidos direta ou indiretamente na execução deste projeto.

Sistema de treinamento para corrida de orientação 14

Referências

[1] Android navigation drawer style. http://developer.android.com/

design/patterns/navigation-drawer.html.

[2] Arduino. http://www.arduino.cc/.

[3] Arduino mega. http://arduino.cc/en/Main/arduinoBoardMega2560.

[4] ISO/IEC 18004, Information technology, Automatic identification and datacapture techniques, Bar code symbology, QR Code.

[5] Pacific. http://pacificlearningacademy.com/2012/03/the-3d-

pythagorean-theorem.

[6] Storyboard that. http://www.storyboardthat.com.

[7] Zxing - multi-format 1d/2d barcode image processing library. https://

github.com/zxing/zxing.

[8] Arduniana. Tinygps. https://github.com/mikalhart/TinyGPS.

[9] LLC Clever Prototypes. Fritzing. http://fritzing.org/home/.

[10] dlazaro66. Qrcodereaderview. https://github.com/dlazaro66/

QRCodeReaderView.

[11] Raul M. P. Friedmann. Fundamentos de Orientação, Cartografia e Navega-ção Terrestre. Editora UTFPR, 2008.

[12] Google. http://maps.google.com.

[13] Satya Narayan. Sugar orm. http://satyan.github.io/sugar/.

[14] Oracle. Mysql. http://www.mysql.com/.

[15] LTD. SAMSUNG ELECTRONICS CO. S6D1121 Datasheet.

[16] Aaron Weiss. GPSShield-v16 Datasheet.