sistema de identificaÇÃo de participantes em postos de...
TRANSCRIPT
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. Trata-
se 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 tratar-
se 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.
27
3.3.1 Funcionamento dos Elementos de Hardware
3.3.1.1 Leitura 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.2 Gravaçã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.3 Operaçã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/wp-content/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/wp-content/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/enabling-timekeeping-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-module-kit-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