UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE INFORMÁTICA ENGENHARIA DE COMPUTAÇÃO BRUNO SILVA KINOPF CAUÃ BARNEZE ROCHA LUCAS CHOCIAY MARIANA F. MACHADO CABRAL RAFAEL HENRIQUE ZALESKI SISTEMA DE IDENTIFICAÇÃO DE PARTICIPANTES EM POSTOS DE CONTROLE DE CORRIDAS DE ORIENTAÇÃO RELATÓRIO FINAL CURITIBA 2013 BRUNO SILVA KINOPF CAUÃ BARNEZE ROCHA LUCAS CHOCIAY MARIANA F. MACHADO CABRAL RAFAEL HENRIQUE ZALESKI SISTEMA DE IDENTIFICAÇÃO DE PARTICIPANTES EM POSTOS DE CONTROLE DE CORRIDAS DE ORIENTAÇÃO Relatório Final para projeto apresentado na disciplina de Oficina de Integração 2, no curso de Engenharia de Computação da Universidade Tecnológica Federal do Paraná Orientador: Prof. Raul M. P. Friedmann CURITIBA 2013 RESUMO KINOPF, Bruno Silva; ROCHA, Cauã Barneze; CHOCIAY, Lucas; CABRAL, Mariana F. Machado; ZALESKI, Rafael Henrique. Sistema de Identificação de Participantes em Postos de Controle de Corridas de Orientação. 2013. 34 f. Relatório Final(Oficina de Integração 2) - Engenharia de Computação, Universidade Tecnológica Federal do Paraná. Curitiba, 2013. Este relatório apresenta os conteúdos teóricos e descrição de desenvolvimento de um protótipo para um sistema capaz de identificar participantes e registrar sua passagem em postos de controle de corridas de orientação através de comunicação sem fio por ondas de rádio. É parte integrante de um futuro sistema de controle do evento completo, capaz de gerar tanto os relatórios individuais do competidor quanto os relatórios e classificações gerais por categoria. Palavras-chave: Corrida de Orientação. RFID. Identificação. Protótipo. Posto de Controle. ABSTRACT KINOPF, Bruno Silva; ROCHA, Cauã Barneze; CHOCIAY, Lucas; CABRAL, Mariana F. Machado; ZALESKI, Rafael Henrique. Contestant Identification System on Control Posts of Guidance Races. 2013. 34 f. Relatório Final(Oficina de Integração 2) - Engenharia de Computação, Universidade Tecnológica Federal do Paraná. Curitiba, 2013. This report presents the theory and a description for the development of a prototype of a system capable of identifying contestants and register their passage on control posts of orienteering races through wireless communication using radio waves. It’s an integrant part of a future system for complete event control, capable of generating individual reports for a contestant and reports for general classification by category. Keywords: Orienteering Race. RFID. Identification. Prototype. Control Post. LISTA DE ILUSTRAÇÕES Figura 1 – Mapa em escala 1:10.000 do terreno da Pista Permanente de Orientação Heróis da Lapa. Formato Original: A4 210x297mm) .................................................. 8 Figura 2– Cartão de descrição dos postos de controle da Pista Permanente de Orientação Heróis da Lapa.......................................................................................... 9 Figura 3– Ilustração de prisma numerado. ................................................................ 10 Figura 4– Cartão de picote de postos de controle com ilustração de picotador. ....... 11 Figura 5 – Diagrama de blocos de um sistema RFID ................................................ 14 Figura 6 – Diagrama de blocos simplificado de um microcontrolador ....................... 16 Figura 7 – Diagrama de blocos do sistema proposto ................................................ 20 Figura 8 – Arduino Uno R3 e suas Dimensões Aproximadas.................................... 22 Figura 9 – Diagrama de blocos do MFRC522 ........................................................... 23 Figura 10 – Exemplificação do bloco de memória trailer do cartão MIFARE Classic 1K .............................................................................................................................. 24 Figura 11 – Diagrama esquemático do sistema proposto ......................................... 26 Figura 12 – Janela de seleção de modo de operação ............................................... 29 Figura 13 – Janela do modo de operação Largada ................................................... 30 Figura 14 – Janela do modo de operação Base ........................................................ 31 Figura 15 – Janela do modo de operação Chegada ................................................. 31 SUMÁRIO 1 INTRODUÇÃO .....................................................................................................7 1.1 PROBLEMATIZAÇÃO E OBJETIVO.................................................................10 2 REVISÃO BIBLIOGRÁFICA ................................................................................13 2.1 SISTEMAS DE IDENTIFICAÇÃO POR RADIOFREQUÊNCIA (RFID) .............13 2.1.1 Camada de Operação Física ..........................................................................14 2.1.2 Camada de Operação Virtual..........................................................................15 2.2 MICROCONTROLADORES E ARDUINO.........................................................15 2.2.1 Microcontroladores .........................................................................................15 2.2.2 Arduino ...........................................................................................................17 2.3 RELÓGIO DE TEMPO REAL (RTC) .................................................................17 2.4 DIODO EMISSOR DE LUZ (LED) .....................................................................18 3 METODOLOGIA ...................................................................................................19 3.1 DESCRIÇÃO DO PROJETO ............................................................................19 3.2 COMPONENTES ..............................................................................................21 3.2.1 Arduino Uno R3 ..............................................................................................21 3.2.2 Shield RFID MFRC522 ...................................................................................22 3.2.3 Cartão MIFARE Classic 1K .............................................................................23 3.2.4 RTC ................................................................................................................24 3.2.5 LEDs ...............................................................................................................25 3.3 MONTAGEM DO SISTEMA E FUNCIONAMENTO ..........................................25 3.3.1 Funcionamento dos Elementos de Hardware .................................................27 3.3.1.1 Leitura de Dados .........................................................................................27 3.3.1.2 Gravação de Dados ....................................................................................27 3.3.1.3 Operação dos LEDs ....................................................................................29 3.3.2 Funcionamento da Aplicação de Software ......................................................29 4 RESULTADOS E DISCUSSÕES .........................................................................32 4.1 RESULTADOS OBTIDOS .................................................................................32 4.2 PROBLEMAS ENCONTRADOS DURANTE O DESENVOLVIMENTO ............32 4.3 DESENVOLVIMENTOS FUTUROS..................................................................33 5 CONCLUSÃO .......................................................................................................34 REFERÊNCIAS .......................................................................................................35 7 1 INTRODUÇÃO A corrida de orientação é uma atividade competitiva realizada ao ar livre em que os competidores devem utilizar um mapa e uma bússola para se orientar em meio a um terreno amplo geralmente composto por florestas e trilhas. O aspecto competitivo reside no fato de cada participante ter que passar obrigatoriamente em alguns pontos específicos do terreno, chamados formalmente de postos de controle, em uma sequência correta. O competidor que passar por todos os postos de controle, em sua ordem correta, e alcançar o ponto de chegada no menor tempo, vence a prova em sua categoria. [1] O mapa representa o terreno em escala reduzida. Este inclui as referências aos postos de controle que devem ser passados para conclusão da prova. Na Figura 1 podemos observar um exemplo de mapa para uma pista permanente de orientação, onde podem ser vistas as localizações dos postos de controle no terreno como círculos numerados. Na Figura 2 pode ser visto um exemplo do cartão de descrição dos postos de controle, o qual fica geralmente no verso do mapa e possui tabelas que indicam a natureza dos postos de controle, ou seja, o que os competidores devem estar procurando visualizar nas proximidades do posto de controle especificado. O significado dos símbolos, tanto no mapa quanto na tabela, podem ser vistos na obra em [1] e nas normas ISOM 2000[2] e International Specification For Control Descriptions[3]. Além do mapa e do cartão de descrição dos postos de controle, os competidores podem utilizar uma bússola para auxiliar sua navegação. Apesar de existir um vencedor, a maioria dos praticantes encara concluir o percurso como a melhor parte da prova.[1] 8 Figura 1 – Mapa em escala 1:10.000 do terreno da Pista Permanente de Orientação Heróis da Lapa. Formato Original: A4 210x297mm) Fonte: [4] 9 Figura 2– Cartão de descrição dos postos de controle da Pista Permanente de Orientação Heróis da Lapa Fonte: [4] 10 1.1 PROBLEMATIZAÇÃO E OBJETIVO Ao chegar em um posto de controle de uma pista de orientação, poderá ser encontrado no mesmo uma estrutura chamada prisma, que consiste normalmente de um objeto na forma de uma base triangular com faces laterais quadradas como pode ser visto na Figura 3. Cada prisma possui uma identificação numérica de seu respectivo posto de controle e um picotador. Cada participante de uma corrida de orientação recebe um cartão de controle ou cartão de picote. Neste cartão que é pessoal e intransferível, o participante deve utilizar o picotador no prisma do posto de controle para marcar no lugar correto que o mesmo passou por este posto de controle. Cada picotador possui um padrão geométrico de picote específico ao seu posto de controle, um destes padrões pode ser visto em destaque no cartão de picote da Figura 4. O competidor comprova que completou a prova ao chegar no ponto de chegada com o cartão completamente marcado com os picotes dos postos de controle necessários para a conclusão da mesma.[1] Figura 3– Ilustração de prisma numerado. Fonte: [1] 11 Figura 4– Cartão de picote de postos de controle com ilustração de picotador. Fonte: [1] Um dos problemas neste sistema de picote é que, apesar do mesmo garantir que o participante passou por todos postos necessários, não garante que o mesmo se deu na ordem correta, o que acaba exigindo uma fiscalização do itinerário da prova ou a criação de um percurso que não favoreça a troca na ordem de passagem dos postos. Além disso, por apenas tratar-se normalmente de uma folha de papel picotado, os cartões de controle ficam sujeitos a fraudes como utilização de picotadores falsos e à picotagem do cartão de outro competidor. Além das fraudes, a espera para utilização do picotador pode ser grande, caso vários participantes cheguem em um tempo próximo ao posto de controle. Existem sistemas que ao invés de utilizarem o cartão de picote, implementam sistemas eletrônicos como o SPORTIDENT e o EMIT, porém estes sistemas são custosos e de difícil 12 implementação pois são normalmente dimensionados para eventos maiores com um número elevado de participantes. O objetivo deste projeto é substituir o sistema de picote e cartão de controle por um sistema informatizado de identificação por radiofrequência, capaz de realizar a marcação da passagem nos postos de controle de uma maneira rápida e a prova de fraudes. O sistema em cada posto de controle deve ser capaz de gravar dados que indicam a passagem pelo mesmo, sem redundância, em um dispositivo que seja único ao participante e muito difícil de ser alterado manualmente pelo mesmo, funcionando como uma espécie de “cartão de picote eletrônico”, sendo altamente portátil, prático de ser utilizado e resistente à intempéries. 13 2 REVISÃO BIBLIOGRÁFICA 2.1 SISTEMAS DE IDENTIFICAÇÃO POR RADIOFREQUÊNCIA (RFID) A identificação por radiofrequência (ou RFID, do inglês, Radio-Frequency IDentification) é uma técnica de captura e gravação de dados em uma etiqueta, ou em inglês, tag, através de uma comunicação sem fio dada por ondas de rádio. Tratase de uma tecnologia relativamente nova, acreditando-se que sua concepção se originou na identificação de aviões militares durante a 2ª Guerra Mundial e a partir disto começou a ser desenvolvida para diversas outras utilizações.[5] Os sistemas RFID permitem leitura e gravação de dados, sem contato direto, de etiquetas eletrônicas através de sinais eletromagnéticos. Estes sinais eletromagnéticos são essencialmente ondas de rádio de diferentes frequências que, em sistemas RFID, vão normalmente de 125 kHz até 960 MHz. Quanto maior a frequência de operação do sistema, maior a quantidade de dados que pode ser transmitida através da onda e maior seu alcance. A maior parte dos sistemas RFID existentes opera na frequência de 13,56 MHz devido à combinação de propriedades que essa frequência possui, como sua alta taxa de transferência de dados e baixo alcance, o que diminui a existência de interferências.[2] Um sistema RFID consiste em duas camadas principais que chamaremos de camada de operação física e camada de operação virtual. No diagrama de blocos da Figura 5 é possível visualizar um sistema RFID usual e os componentes que o definem, separados entre a camada de operação física e a camada de operação virtual. Estes componentes e suas funções serão explicados brevemente na sequência. 14 Figura 5 – Diagrama de blocos de um sistema RFID Fonte: Autoria própria. 2.1.1 Camada de Operação Física Etiqueta: Etiquetas são os sistemas que são anexados em algum objeto como, por um exemplo, um cartão de plástico. Estes sistemas consistem em dois componentes principais: uma antena e um microcontrolador. Dependendo da aplicação, outros componentes como sensores podem ser integrados ao sistema. A antena da etiqueta comunica-se com o leitor através de ondas eletromagnéticas, que no caso de etiquetas passivas, também recebem a energia necessária para operação da mesma. O microcontrolador armazena a identificação única que cada etiqueta possui em forma numérica e outros dados que devem ser lidos ou gravados na etiqueta. Uma etiqueta ativa, além destes componentes, também possui uma bateria para operação de seu circuito; Leitor: Um leitor RFID consiste basicamente em dois componentes principais: uma antena e o circuito comunicador. A antena é utilizada para se comunicar com a etiqueta através de ondas eletromagnéticas. Caso a etiqueta seja do tipo passiva, a antena fornecerá energia para a mesma, através de indução eletromagnética, para a operação de seu circuito integrado. O circuito 15 comunicador realiza as tarefas de enviar dados através da antena do leitor, receber dados oriundos da antena da etiqueta e mandar estes dados para a parte do sistema em que está integrado para processamento. A arquitetura detalhada do leitor pode ser visualizada em [5]; Zona de Comunicação: A zona de comunicação é um espaço físico tridimensional onde o sistema se mantém operacional e consiste de tudo que existe nas proximidades da etiqueta e do leitor por onde as ondas eletromagnéticas viajam. Consiste na região do espaço em que o leitor lê/escreve dados de/em uma etiqueta.[5] 2.1.2 Camada de Operação Virtual Sistema Intermediário: O sistema intermediário é o sistema responsável por enviar e receber dados diretamente do leitor, processar os dados da maneira especificada, armazená-los e enviá-los para a aplicação adequada. O sistema intermediário também inclui o software utilizado para monitoramento, configuração e funcionamento do hardware do leitor;[5] Aplicação: Os dados conseguidos através do sistema intermediário serão utilizados pela aplicação, que é um software, para processos relevantes ao propósito do sistema RFID. Em um sistema de cartões de estacionamento, por exemplo, a aplicação irá receber do sistema RFID o horário em que o veículo entrou no estacionamento e processar este horário com o de retirada do veículo para calcular o preço que o cliente deve pagar. 2.2 MICROCONTROLADORES E ARDUINO 2.2.1 Microcontroladores Um microcontrolador é um circuito integrado composto de diversos elementos computacionais e periféricos que se comunicam entre si, como pode ser visualizado no diagrama de blocos da Figura 6, consistindo em um sistema 16 computacional completo.[6] Cada componente possui uma função específica explicada brevemente na sequência. Figura 6 – Diagrama de blocos simplificado de um microcontrolador Fonte: Autoria própria. Unidade Central de Processamento (CPU): Assim como nos computadores normais, a CPU de um microcontrolador é responsável por realizar as operações lógicas e aritméticas, entre outras, sobre os dados recebidos; Memória: Onde todos os dados e programas ficam armazenados, antes, durante e depois do processamento pela CPU; Entradas: Dispositivos conectados nas entradas do microcontrolador fornecem os dados para a CPU processar, estes dados vem de um sistema externo; Saídas: Os dispositivos conectados nas saídas do microcontrolador recebem os dados após o processamento feito pela CPU. Além dos componentes principais existem vários periféricos como conversores AC/DC e temporizadores que podem ser incluídos em um microcontrolador. Alguns desses periféricos e informações mais detalhadas sobre o funcionamento de um microcontrolador podem ser vistas em [6]. 17 2.2.2 Arduino O Arduino é uma ferramente de hardware, mais especificamente uma placa microcontroladora, para a criação de computadores que utilizem sensores e atuadores que possam interagir mais com o mundo físico ao contrário de um computador convencional. O Arduino é composto por dois componentes principais: uma plataforma computacional física de código aberto baseada em um microcontrolador e um ambiente de desenvolvimento para a criação de aplicações computacionais (IDE). O Arduino contém o que é necessário para sua operação através de um computador comum, logo é utilizado amplamente em ambientes didáticos. Existem vários modelos diferentes fabricados de Arduino, porém por tratarse de um projeto de código aberto, é possível a montagem de Arduino próprio, dado os recursos e conhecimento necessário para fazê-lo. Os diversos modelos diferentes de Arduinos fabricados oficialmente podem ser visualizados no site oficial do Arduino Team[7]. O Arduino pode ser utilizado para desenvolver objetos interativos, que recebem entradas de uma grande variedade de chaves ou sensores, controlando uma grande variedade de luzes, motores e outras saídas físicas. O Arduino é capaz de armazenar aplicações criadas em seu ambiente de desenvolvimento podendo assim realizar as funções desejadas por contra própria sem a necessidade de um computador.[7] O uso de um Arduino pode ser extendido através do uso de placas de circuito periféricas contendo outros dispositivos, por exemplo um leitor RFID, chamadas shields. Shields são conectados diretamente ao Arduino, utilizando as portas adequadas.[8] 2.3 RELÓGIO DE TEMPO REAL (RTC) Um relógio de tempo real (ou RTC, do inglês, Real-Time Clock), é um sistema composto normalmente por um circuito integrado, um cristal oscilador e uma fonte de energia. O RTC é capaz de fornecer o tempo atual quando necessário, pois o mesmo o mantém sempre atualizado, possibilitando a equipamentos eletrônicos a 18 implementação de funções como alarme e calendário. A vantagem que os RTCs possuem sobre outros sistemas que desempenham a mesma função é o seu baixo consumo de energia. Um RTC só pode ser tão preciso quanto a sua referência usada, normalmente um cristal oscilador. A frequência característica de um cristal depende do formato do mesmo e pode ser controlada pelo fabricante dependo dos ângulos em que o mesmo é cortado. Porém a manufatura de cristais com diferentes ângulos requer um trabalho complexo e custoso.[9] Os cristais mais utilizados oscilam em frequências de 32,768 kHz devido ao seu custo-benefício e facilidade de fabricação. 2.4 DIODO EMISSOR DE LUZ (LED) Um diodo emissor de luz (ou LED, do inglês, Light Emitting Diode) é um dispositivo semicondutor que "emite luz quando polarizado diretamente"[10]. Quando um LED é diretamente polarizado, elétrons livres encontram lacunas na estrutura deste semicondutor, liberando energia na forma de fótons, portanto emitindo uma luz. Este efeito é chamado de eletroluminescência e os LEDs podem exibir diversas cores diferentes, conforme o comprimento de onda, que varia com os materiais semicondutores empregados. LEDs são especialmente úteis para se obter uma reposta visual do estado dos sistemas em que estão integrados, devido também à rapidez com que podem ser ligados e desligados.[10] 19 3 METODOLOGIA 3.1 DESCRIÇÃO DO PROJETO O projeto consiste em um sistema RFID completo, capaz de substituir o cartão de postos de controle de uma corrida de orientação por uma etiqueta RFID adequada, e o picotador nos postos de controle por um leitor RFID e um sistema intermediário, capaz de fornecer à etiqueta do participante, que possui identificação única, os dados necessários para comprovar sua passagem pelo posto, bem como o tempo em que esta passagem foi feita, através do uso de um RTC no sistema. Esta etiqueta será cadastrada antes da corrida através de uma aplicação, que irá definir os dados a serem gravados na etiqueta como o nome do participante e outras informações relevantes à corrida de orientação em questão, como sua categoria. Quando o participante alcançar o ponto de chegada da corrida de orientação, os dados em sua etiqueta serão lidos e processados e a aplicação, a partir destes dados, irá determinar se o participante passou por todos postos necessários, em sua ordem correta, e sua classificação ao fim da prova. Para a concepção do protótipo os componentes utilizados, e sua função no sistema, são os seguintes: Componente Função no Sistema Arduino Uno R3 Sistema intermediário(Controle do leitor RFID, leitura do RTC, comunicação com PC). Shield RFID MFRC522 da NXP Semicondutores Leitor RFID Cartão MIFARE Classic 1K Etiqueta RFID Circuito Integrado DS1307 com cristal oscilador de 32,768 kHz e bateria CR2032 de 3V RTC LEDs vermelho, verde e amarelo Sinalização de estado do sistema Quadro 1 – Componentes Utilizados no Sistema e suas Funções Fonte: Autoria Própria. No diagrama de blocos da Figura 7 é possível observar de maneira simplificada a comunicação entre estes componentes no sistema. A aplicação, embora não seja um componente físico, desempenha diversos papéis no sistema. 20 Estes papés, junto com uma descrição detalhada dos componentes e seu funcionamento, serão explicados nas seções seguintes. Figura 7 – Diagrama de blocos do sistema proposto Fonte: Autoria própria. 21 3.2 COMPONENTES 3.2.1 Arduino Uno R3 No protótipo o sistema intermediário é um Arduino modelo Uno R3 que utiliza o microcontrolador ATmega328 da Atmel como seu processador central. Em termos de conexões, este modelo possui 14 entradas/saídas digitais, das quais 6 podem ser utilizadas como saídas PWM (modulação por largura de pulso); 6 entradas analógicas; 1 conexão USB e 1 conexão de energia. A principal diferença do modelo Uno para outros modelos de Arduino é a utilização de um chip Atmega382 da Atmel programado para fazer a conversão entre USB-serial enquanto outros modelos utilizam o chip de conversão USB-serial da FTDI. Mais informações sobre esse recurso e suas utilidades estão disponíveis no site do Arduino Team[11]. Abaixo está um sumário das principais características do modelo Uno, traduzido diretamente do site oficial do Arduino Team[11]. Microcontrolador: ATmega328; Tensão de operação: 5V; Tensão de entrada (Recomendada): 7-12V; Tensão de entrada (Limites): 6-20V; Pinos de entrada/saída digital: 14, dos quais 6 podem fornecer saída PWM (modulação por largura de pulso); Pinos de entrada analógica: 6; Corrente contínua por pino de entrada/saída: 40 mA; Corrente contínua para o pino 3.3V: 50 mA; Memória flash: 32 kB (ATmega328) dos quais 0.5 kB são utilizados pelo gerenciador de boot; Memória SRAM: 2 kB (ATmega328); Memória EEPROM: 1 kB (ATmega328); Velocidade de Clock: 16 MHz. Algumas destas características serão mais detalhadas na seção de montagem e funcionamento do projeto. A Figura 8 mostra a aparência do Arduino Uno R3. 22 Figura 8 – Arduino Uno R3 e suas Dimensões Aproximadas Fonte: [11] 3.2.2 Shield RFID MFRC522 O shield utilizado consiste em um microcontrolador MFRC522 com antena da NXP Semicondutores, com a pinagem correta para conexão ao Arduino via protocolo SPI. O circuito integrado MFRC522 é um leitor/gravador altamente integrado para comunicação sem fio por ondas de rádio na frequência de 13,56 MHz. O transimissor interno do MFRC522 é capaz de energizar uma antena de leitura/gravação desenvolvida para comunicar-se com etiquetas RFID padrão ISO/IEC 14443 A/MIFARE sem a necessidade de circuitos ativos adicionais. O módulo receptor do MRFRC522 fornece uma implementação robusta e eficiente para demodulação e decodificação de sinais das etiquetas RFID compatíveis. O MFRC522 oferece os protocolos de comunicação SPI (do inglês, Serial Peripheral Interface), Serial UART e I2C-bus. Para o projeto em questão, o protocolo utilizado foi o SPI (mais detalhes sobre o mesmo serão vistos na seção 3.3. 23 Na Figura 9 é possível observar um diagrama de blocos para o MFRC522, a antena recebe o sinal analógico e o repassa para a interface analógica, que é responsável pela modulação e demodulação destes sinais. O módulo UART (do inglês, Universal Asynchronous Receiver/Transmitter) sem contato gerencia os requerimentos padrão para os protocolos de comunicação com o hospedeiro, no caso, o Arduino. O buffer FIFO (do inglês, First In, First Out) garante transferência de dados rápida e conveniente para o/do hospedeiro e contactless UART e vice-versa, através do protocolo de conexão escolhido.[12] Figura 9 – Diagrama de blocos do MFRC522 Fonte: [12]. Os pinos presentes no shield, para conexão do MFRC522 com o Arduino são Reset, SS (do inglês, Slave Select), MOSI (do inglês, Master Output Slave Input), MISO (do inglês, Master Input Slave Output), SCK (do inglês, Serial Clock), Ground (Aterramento) e 3,3V (Alimentação). 3.2.3 Cartão MIFARE Classic 1K A etiqueta RFID utilizada para testes do sistema é um cartão do tipo MIFARE Classic 1K. Este cartão possui dois elementos principais, o chip de circuito integrado microcontrolador MF1S503x e uma antena de transmissão. O circuito integrado MF1S503x, produzido pela NXP Semicondutores possui uma memória EEPROM de 1kB, uma interface de radiofrequência e uma unidade de controle digital. A antena, formada por uma bobina com um número pequeno de voltas, transmite energia e dados para o circuito integrado MF1S503x.[13] A interface de radiofrequência que existe no circuito MF1S503x consiste em: Modulador/Demodulador; Retificador; Regenerador de Clock; 24 Power-On Reset (POR); Regulador de Tensão. Outros recursos relevantes que existem no circuito incluem: Protocolo anti-colisão: Múltiplos cartões no alcance do leitor podem ser selecionados e manuseados separadamente; Autenticação: Antes de qualquer operação na memória do cartão, o procedimento de autenticação certifica que o acesso a qualquer trecho de memória só é possível dada a combinação de duas chaves criptográficas(sendo uma delas opcional) para cada bloco de memória; Organização memória EEPROM: O 1kB de memória EEPROM é organizado em 16 setores com 4 blocos cada. Um bloco de memória contém 16 bytes. O último bloco de cada setor se chama trailer e contém as duas chaves (sendo uma delas opcional) para acesso e condições de acesso programáveis para cada bloco neste setor, como pode ser visto na Figura 10; Figura 10 – Exemplificação do bloco de memória trailer do cartão MIFARE Classic 1K Fonte: [13] Identificador Único: Cada cartão contém um código numérico interno de identificação criado durante sua fabricação armazenado no bloco de memória inicial, utilizado para dados do fabricante. 3.2.4 RTC O RTC do projeto utiliza o circuito integrado DS1307 da Dallas Semiconductor, um cristal oscilador de frequência 32,768 kHz e uma bateria CR2032 de 3V. O circuito integrado DS1307 é capaz de fornecer segundos, minutos, horas, dia, mês, dia da semana e ano (incluindo ano bissexto até 2100). Além disso, o circuito é capaz de ajustar o dia para meses com menos de 31 dias, incluindo as correções necessárias para anos bissextos. O relógio opera nos modos de 24 horas 25 ou 12 horas com indicações AM/PM. O circuito contém ainda um sistema capaz de detectar falhas de energia, utilizando uma fonte reserva para manter seu funcionamento.[14] Um RTC é tão preciso quanto seu cristal, e no caso do cristal utilizado de 32,768 kHz, o mesmo possui uma precisão de 20 ppm ou ±0,65536 Hz, o que traduz em um erro de ±51,8 segundos por mês no fornecimento do tempo. Dado que uma corrida de orientação dificilmente durará mais que um dia, e que o fornecimento da hora será calibrado a partir da largada, este erro torna-se aceitável neste contexto.[15] A bateria CR2032 de 3V é mais do que suficiente para energizar o RTC pelo que se presume seja muito tempo, apesar de ser dificil saber perfeitamente quanto, já que o mesmo consome no mínimo 500nA de corrente durante sua operação.[14] 3.2.5 LEDs Três LEDs são utilizados no projeto: um de luz vermelha, um de luz amarela e um de luz verde. Os LEDs utilizados funcionam com tensão de 2,2V. Um resistor de 220 ohms é utilizado em cada para garantir que a corrente fique em torno de 13,64mA, dentro do limite que os LEDs utilizados possuem de 20mA 3.3 MONTAGEM DO SISTEMA E FUNCIONAMENTO A conexão dos componentes foi feita utilizando-se de uma placa de ensaio (ou protoboard) para evitar a necessidade de soldas que seriam difíceis de serem desfeitas no caso de montagem incorreta. O diagrama esquemático da montagem pode ser visto na Figura 11. 26 Figura 11 – Diagrama esquemático do sistema proposto Fonte: Autoria própria. 27 3.3.1 Funcionamento dos Elementos de Hardware 3.3.1.1Leitura de Dados Durante a aproximação do cartão com o shield RFID haverá uma transmissão de sinal pela antena do cartão e recepção deste sinal pela antena do shield RFID. O shield RFID está conectado ao Arduino utilizando o protocolo SPI. O protocolo SPI é um protocolo de dados serial síncrono, utilizado por microcontroladores para se comunicarem com dispositivos periféricos, ou para comunicação entre dois microcontroladores, no caso, o microcontrolador presente no Arduino e o microcontrolador presente no shield RFID.[16] Em uma conexão SPI existe sempre um dispositivo que controla outros dispositivos periféricos chamado mestre, que neste caso é o Arduino. O shield RFID é um dispositivo escravo. A conexão se dá através dos seguintes pinos: MISO (Master Input Slave Output): O pino de conexão do escravo para enviar dados ao mestre(Utilizado durante a leitura do cartão); MOSI (Master Output Slave Input): O pino do mestre para envio de dados aos escravo (Utilizado durante gravação no cartão); SCK (Serial Clock): Pino responsável pelos pulsos de clock que sincronizam a transmissão de dados gerada pelo mestre; SS (Slave Select): O pino em cada dispositivo que o mestre pode usar para ligar ou desligar dispositivos específicos. Após receber o sinal analógico do shield RFID, o Arduino transforma as informações contidas neste sinal em dados digitais capazes de serem manipulados através de aplicação escrita em seu ambiente de desenvolvimento. No projeto, o Arduino irá receber do cartão os dados do participante e definir se o mesmo concluiu a corrida de orientação e qual sua classificação na mesma. 3.3.1.2Gravação de Dados Ao contrário da leitura, na gravação a antena do shield RFID enviará o sinal analógico e a antena do cartão irá recebê-lo. A interface de radiofrequência existente no circuito dentro do cartão é capaz de receber este sinal e transformá-lo em dados 28 digitais para serem armazenados na memória do mesmo, dado que o mesmo tenha sido autenticado. A memória do cartão de 1kB é dividida em 64 blocos de 16 bytes, estes blocos são divididos em 16 setores, contendo portanto 4 blocos em cada. Cada setor possui um bloco chamado trailer onde estão contidas as chaves de autenticação, logo o mesmo não pode ser editado. O primeiro bloco do cartão (0) e o último (63) também não permitem gravação por razões não especificadas pelo fabricante. No projeto são utilizados dois blocos para armazenamento de informações sobre o participante, sobrando em torno de 640 bytes utilizáveis para registro de passagem pelos postos de controle. Cada registro de passagem ocupará 9 bytes na disposição seguinte: 2 bytes para armazenar a numeração do posto de controle; 2 bytes para o ano atual de passagem no posto de controle; 1 byte para o mês atual de passagem no posto de controle; 1 byte para o dia atual de passagem no posto de controle; 1 byte para a hora atual de passagem no posto de controle; 1 byte para o minutos atual de passagem no posto de controle; 1 byte para o segundo atual de passagem no posto de controle; Os blocos para armazenamento de informações sobre os participantes armazenam as seguintes informações: 2 bytes de ponteiro para a numeração dos bytes totais; 3 bytes para número de identificação na Confederação Brasileira de Orientação (CBO); 4 bytes para categoria do participante (4 dígitos alfanuméricos); 23 bytes para armazenamento do nome do participante. Os bytes de ponteiro para numeração dos bytes totais servem para simular um armazenamento linear no cartão, ou seja, ao invés de pensar em termos de blocos, numeramos os bytes do cartão. Cada vez que um posto de controle armazena informações no cartão, o ponteiro é atualizado para 9 bytes a frente do valor anterior. Existe uma lógica que faz o ponteiro avançar mais quando chega em um bloco de autenticação, apontando sempre para os blocos de gravação, somente. 29 3.3.1.3Operação dos LEDs Enquanto o sistema estiver ligado, o LED verde sempre se manterá aceso. Durante a gravação ou leitura do cartão, o LED amarelo irá se manter aceso e o LED vermelho só acenderá caso ocorra algum erro durante a leitura ou gravação no cartão. 3.3.2 Funcionamento da Aplicação de Software Apesar do hardware composto ser o mesmo para postos de controle, ponto de chegada e ponto de largada, o que irá definir a operação do mesmo para cada uma destas funções será a aplicação de software criada. A aplicação criada na linguagem java permite a mudança do modo de operação do sistema após o mesmo ser ligado, não podendo ser mudado novamente até o desligamento e religamento ou reset do sistema. Para selecionar um dos modos, o Arduino deve se comunicar com um computador capaz de executar o programa e se comunicar através de sua porta USB. O usuário escolherá o modo adequado através de uma janela seleção que pode ser visualizada na Figura 12. Figura 12 – Janela de seleção de modo de operação Fonte: Autoria própria. Caso o modo escolhido seja o Modo Posto de Controle, o computador pode ser desconectado e o programa continuará em execução no Modo Posto de Controle diretamente no Arduino. O funcionamento do Modo Posto de Controle e dos outros modos disponíveis será descrito a seguir: Modo Partida: Quando selecionado, o sistema operando em Modo Largada necessita de conexão com um computador. O responsável 30 pela operação da aplicação no computador deve cadastrar os cartões para cada participante, fornecendo ao cartão o nome do participante, a categoria que está competindo e o seu número de identificação na Confederação Brasileira de Orientação. A janela de registros exibe informações sobre o funcionamento do programa. A aplicação em Modo Largada pode ser vista na Figura 13. Figura 13 – Janela do modo de operação Largada Fonte: Autoria própria. Modo Posto de Controle: O software em modo base não necessita de um computador para o seu funcionamento. Após o número do posto de controle for definido no programa, o Arduino pode ser desconectado do computador e o programa continuará funcionando no mesmo, fornecendo ao cartão do participante que passar pelo posto a identificação do mesmo. A janela de registros exibe informações sobre o funcionamento do programa. A Figura 14 mostra a tela para definição do número de identificação do posto de controle durante a operação em Modo Base. 31 Figura 14 – Janela do modo de operação Base Fonte: Autoria própria. Modo Chegada: Em modo chegada o programa fica aguardando a passagem das etiquetas dos competidores. A cada passagem, o programa salva os dados em um arquivo de texto que em seguida pode ser processado para atualizar a classificação parcial dos participantes. A janela de registros exibe informações sobre o funcionamento do programa. A Figura 15 mostra o programa operando em Modo Chegada. Figura 15 – Janela do modo de operação Chegada Fonte: Autoria própria. Todos os modos de operação comunicam ao Arduino a hora do computador que por sua vez comunica este valor ao RTC, em um formato de Dia, Mês, Ano, Hora, Minuto e Segundo para sincronia do mesmo 32 4 RESULTADOS E DISCUSSÕES 4.1 RESULTADOS OBTIDOS Após a montagem do protótipo de funcionamento do sistema, foi possível realizar a leitura de um cartão do tipo MIFARE Classic 1K e gravação de dados no mesmo, através do Arduino conectado à um computador executando o programa criado pela equipe. O programa pode ser manipulado para fornecer qualquer dado ao cartão e receber qualquer dado do mesmo, sejam estes dados na forma de texto ou de valores numéricos. Além disso, foi possível selecionar qual seção da memória do cartão seria escolhida para receber os dados, porém descobriu-se que organizar os bytes de forma numerada ao invés de trabalhar com as seções seria mais simples. O RTC montado foi capaz de fornecer o tempo, a partir da sincronização do tempo inicial com o tempo no computador, incluindo segundo, minuto, hora, dia, mês e ano de segundo em segundo. Os LEDs se comportaram como deveriam. Dada a rapidez nas leituras e gravações, de 1 a 2 segundos, o resultado obtido no projeto foi como o esperado e apesar de ser um protótipo, seu funcionamento já satisfaz como solução do problema proposto. 4.2 PROBLEMAS ENCONTRADOS DURANTE O DESENVOLVIMENTO Durante o desenvolvimento, o problema frequente sempre foi a dificuldade no desenvolvimento de um software que fosse capaz de realizar as operações necessária de leitura/gravação através do Arduino. Material de referência neste quesito existia em abundância apenas para conexão com protocolo UART, sendo que o modelo de shield utilizado só possuía os pinos que possibilitavam a conexão por protocolo SPI. Após muita pesquisa, encontrou-se uma loja online do Reino Unido[17] que vendia o shield em questão e disponibilizava o código exemplo para conexão SPI. O código possuía várias funções úteis para controle do shield MFRC522 porém ainda assim era extenso e confuso. Após mais alguma pesquisa na internet foi encontrada uma adaptação prática desde código exemplo feita por 33 alguém chamado Miguel Balboa[18]. Esta adaptação transformava o código exemplo em uma biblioteca para o Arduino, facilitando o desenvolvimento de um programa já que as funções encontravam-se agora na biblioteca. Porém testes com esta biblioteca só resultaram no cartão negando a autenticação sempre que tentávamos alguma operação sobre o mesmo. Após revisão do datasheet do cartão e do código de Miguel Balboa15, descobrimos que o mesmo não continha a seleção do cartão para autenticar, um método do protocolo anti-colisão, logo o cartão negava autenticação pois ainda não havia sido selecionado pelo shield. Outro problema encontrado foi durante o funcionamento do RTC. Após a montagem o mesmo não funcionava, porém foi descoberto que o problema estava nos contatos da protoboard utilizada para testes. Por fim, o projeto inicial previa uma tela de LCD para que os participantes pudessem visualizar se o posto de controle estava fornecendo dados para o seu cartão, porém a tela simplesmente parou de funcionar, não foi descoberto o motivo e a equipe chegou a conclusão que LEDs poderiam realizar a função da tela de LCD com a utilização de menos energia, logo a mesma acabou sendo descartada do projeto. 4.3 DESENVOLVIMENTOS FUTUROS Apesar de o Arduino Uno ser um sistema intermediário eficiente, a placa Arduino Uno contém alguns elementos desnecessários para o sistema. A fabricação de um sistema contendo os mesmos microcontroladores do Arduino Uno e do shield RFID MFRC522 com os outros componentes que sejam necessários para o funcionamento do sistema poderia reduzir o custo do sistema em um todo. Como o sistema irá ficar em terreno ao ar livre, estará sujeito a ações climáticas, logo uma carcaça deve ser desenvolvida para abrigar o mesmo das ações do tempo. 34 5 CONCLUSÃO Apesar de no início o projeto parecer bastante complicado para uma equipe que não havia conhecimento anterior do assunto, o mesmo prosseguiu conforme o cronograma planejado. Isto deve-se ao fato da equipe também ter se adiantado durante o período de férias acadêmicas e adquirido os componentes necessários para a montagem do sistema, junto com um estudo do tema de identificação por radiofrequência. Através do estabelecimento de metas e divisão das funções, o trabalho pôde ser concluido dentro das expectativas da equipe, mesmo com o aparecimento de alguns problemas durante o desenvolvimento, os quais foram solucionados sem desvios no cronograma inicial. Com o desenvolvimento deste projeto muitos novos conhecimentos foram adquiridos, entre eles o uso da plataforma Arduino, o funcionamento de sistemas de identificação por radiofrequência e o funcionamento de microcontroladores, todos assuntos que ainda não haviam sido abordados durante o curso de Engenharia de Computação. Concluindo, a experiência total foi positiva e espera-se que o protótipo desenvolvido possa ser evoluído em um sistema completo que possibilite seu uso prático nas corridas de orientação, algo que não foi possível de ser realizado ainda.. 35 REFERÊNCIAS 1 FRIEDMANN, Raul M. P.. Fundamentos de Orientação, Cartografia e Navegação Terrestre. 2 ed. Curitiba: Editora UTFPR, 2008. 2 International Orienteering Federation. International Specification for Orienteering Maps 2000 (ISOM2000). Disponível em: <http://orienteering.org/wpcontent/uploads/2010/12/International-Specification-for-Orienteering-Maps-2000.pdf> Acesso em: 28 abr. 2013. 3 International Orienteering Federation. International Specification for Control Descriptions(2004). Disponível em: < http://orienteering.org/wpcontent/uploads/2010/12/Control-Descriptions-2004-symbols-only1.pdf>. Acesso em: 28 abr. 2013. 4 Quartel General da 5ª Região Militar - 5ª Divisão de Exército em parceria com a Universidade Tecnológica Federal do Paraná / Câmpus Curitiba da e com o Centro de Desenvolvimento Regional do CISM para as Américas. Pista Permenante de Orientação Heróis da Lapa. Curitiba, 2012. 5 KARMAKAR, Nemai Chandra. Handbook of Smart Antennas for RFID Systems. Hoboken: John Wiley & Sons, Inc., 2010. 6 HEATH, Steve. Embedded Systems Design. 2 ed. London: Newnes, 2003. 7 Arduino Team. What is Arduino? Disponível em: <http://www.arduino.cc/en/Guide/Introduction>. Acesso em: 15 abr. 2013. 8 MCROBERTS, Michael. Beginning Arduino. New York: Apress, 2010. 9 Digi-Key Corporation. Enabling Timekeeping Function and Prolonging Battery Life in Low Power Systems. Disponível em: <http://www.digikey.com/us/en/techzone/microcontroller/resources/articles/enablingtimekeeping-function.html>. Acesso em: 15 abr. 2013. 10 FRENZEL JR., Louis E. Fundamentos de Comunicação Eletrônica – Volume 1. 3 ed. Porto Alegre: AMGH Ltda., 2013. 36 11 Arduino Team. Arduino Uno. Disponível em: <http://arduino.cc/en/Main/ArduinoBoardUno>. Acesso em: 15 abr. 2013. 12 NXP Semiconductors. MFRC522 Contactless reader IC product data sheet. Disponível em: <http://www.nxp.com/documents/data_sheet/MFRC522.pdf>. Acesso em: 15 abr. 2013. 13 NXP Semiconductors. MIFARE Classic 1K - Mainstream contactless smart card IC for fast and easy solution development product data sheet. Disponível em: <http://www.dfrobot.com.cn/image/data/TOY0019/MF1S50.pdf>. Acesso em: 15 abr. 2013. 14 Dallas Semiconductor. DS1307 64 x 8 Serial Real-Time Clock datasheet. Disponível em: <http://www.datasheetcatalog.org/datasheet/maxim/DS1307.pdf>. Acesso em: 15 abr. 2013 15 KUDAPALI, Kantesh. Run-Time Calibration of Watch Crystals. Disponível em: <http://ww1.microchip.com/downloads/en/AppNotes/01155a.pdf>. Acesso em: 15 abr. 2013. 16 Arduino Team. A Brief Introduction to the Serial Peripheral Interface (SPI). Disponível em: <http://arduino.cc/en/Reference/SPI>. Acesso em: 15 abr. 2013. 17 B2CQShop. Arduino RFID module Kit 13.56 Mhz with Tags SPI W and R By COOQRobot. Disponível em: <http://www.b2cqshop.com/products/203-rfid-modulekit-1356-mhz-with-tags-spi-w-and-r-for-arduino.aspx>. Acesso em 15 abr. 2013 18 BALBOA, Miguel. Arduino RFID Library for MFRC522. Disponível em: <https://github.com/miguelbalboa/rfid>. Acesso em 15 abr. 2013