unesp universidade estadual paulista campus de … · para registrar, fiscalizar e gerir a entrada...
TRANSCRIPT
UNESP – UNIVERSIDADE ESTADUAL PAULISTA
CAMPUS DE SOROCABA
ENGENHARIA DE CONTROLE E AUTOMAÇÃO
Diego Polaz Mateus
Estudo e Desenvolvimento de um Sistema para
Gerenciamento usando Tags RFID.
Sorocaba
2014
Diego Polaz Mateus
Estudo e Desenvolvimento de um Sistema para
Gerenciamento usando Tags RFID.
Trabalho de Graduação do Curso de
Engenharia de Controle e Automação da
UNESP Sorocaba, com o objetivo de
obter o título de Bacharel em Engenharia
de Controle e Automação
Orientador: Prof. Drº Galdenoro Botura
Jr.
Sorocaba
2014
Ficha catalográfica elaborada pela Biblioteca da Unesp – Campus Experimental de
Sorocaba
Mateus, Diego Polaz. Estudo e desenvolvimento de um sistema para
gerenciamento usando tags RFID / Diego Polaz Mateus,
2014 77 f. : il.
Orientador: Galdenoro Botura Junior
Trabalho de Conclusão de Curso (Graduação)–
Universidade Estadual Paulista. Campus Experimental de
Sorocaba, Sorocaba, 2014
1. Radiofrequência - Identificação. 2. Controle de
estoque. 3. Banco de dados. I. Universidade Estadual
Paulista. Campus Experimental de Sorocaba. II. Título.
DEDICATÓRIA
Aos meus pais e familiares que sempre me
me apoiaram nesta empreitada, mesmo com
todas as dificuldades encontradas durante o
percurso.
Aos meus companheiros da República HM
que sempre estiveram juntos em todos os
momentos da faculdade, fossem eles bons
ou ruins.
RESUMO
Processos de Controle de Estoque são amplamente difundidos em ambientes industriais
e comércios. Através deles, pode-se planejar compra e venda de produtos mantendo sempre
um nível adequado, uma vez que um estoque alto gera custos referentes a armazenamento e
depreciações, enquanto que um estoque baixo pode provocar perda de vendas ou atraso de
entregas de produtos. Este projeto teve o intuito de gerar um Controle de Estoque utilizando
tecnologia RFID via rede, onde determinadas pessoas poderiam acessar o Banco de Dados
e gerenciar seus produtos da melhor forma possível.
Palavras – Chave: RFID. Controle de Estoque. Banco de Dados. Produtos.
ABSTRACT
Inventory Management Processes are highly disseminated on industrial environments
and markets in general. Through them, buying and selling products were planned, always
on an appropriated level, once a high inventory level generates costs on storages and
depreciations, whereas a low inventory level may cause a selling loss or products delivery
delays. This project had the intention of generate an Inventory Management, using RFID
technology in computer networks, where some particular people could access the database
and manage their products in the best way possible.
Key Words: RFID. Inventory Management. Database. Products.
LISTA DE ILUSTRAÇÕES
Figura 1 - Componentes Etiqueta RFID. ................................................................................... 18
Figura 2 - Leitor interagindo com Tag RFID .............................................................................. 24
Figura 3 - Ilustração Banco de Dados ....................................................................................... 27
Figura 4 - Leitor ID-12 ............................................................................................................... 34
Figura 5 - Arduino ..................................................................................................................... 35
Figura 6 - Etiquetas utilizadas no projeto .................................................................................. 38
Figura 7 - Tela inicial do Visual Studio ...................................................................................... 39
Figura 8 - Forma de Controle feito antigamente ........................................................................ 40
Figura 9 - Circuito utilizado no Projeto ...................................................................................... 41
Figura 10 – Arquitetura do projeto............................................................................................. 42
Figura 11 - Tela inicial Software do Arduino .............................................................................. 43
Figura 12 - Aba Menu ............................................................................................................... 44
Figura 13 - Aba Cadastro de Produtos ...................................................................................... 45
Figura 14 - Exemplo de Cadastro ............................................................................................. 47
Figura 15 – Aba Buscar Produto ............................................................................................... 48
Figura 16 - Exemplo de Pesquisa ............................................................................................. 48
Figura 17 - Tela de Exclusão de Produto .................................................................................. 49
Figura 18 - Exemplo de Exclusão de Produto ........................................................................... 50
Figura 19 - Resultado da Busca após a exclusão de dados ...................................................... 50
Figura 20 - Log de Alterações ................................................................................................... 51
Figura 21 - Saída do Software .................................................................................................. 52
Figura 22- Fluxograma do Software .......................................................................................... 53
LISTA DE TABELAS
Tabela 1 - Especificações do Projeto ........................................................................................ 32
Tabela 2- Parâmetros do ID-12 ................................................................................................. 33
Tabela 3- Parâmetros ID-20 ...................................................................................................... 34
Tabela 4- Características Arduino Uno R3. ............................................................................... 37
Tabela 5 - Identificação de Etiquetas ........................................................................................ 41
Tabela 6 - Dados contidos nas Etiquetas .................................................................................. 46
SUMÁRIO
1. INTRODUÇÃO..................................................................................................................... 8
1.1. JUSTIFICATIVAS............................................................................................................................... 9
1.2. OBJETIVOS ....................................................................................................................................10
2. CONCEITUAÇÃO .............................................................................................................. 11
2.1. RFID ..............................................................................................................................................11
2.2. HISTÓRIA DO RFID ........................................................................................................................12
2.3. COMPONENTES ............................................................................................................................14
2.3.1. ANTENAS ..................................................................................................................................14
2.3.2. ETIQUETAS E LEITORES RFID ....................................................................................................17
2.3.3. LEITOR ......................................................................................................................................23
2.3.4. MIDDLEWARE RFID...................................................................................................................25
2.4. BANCO DE DADOS ........................................................................................................................27
2.5. REDES ...........................................................................................................................................29
2.6. LINGUAGEM C# ............................................................................................................................30
3. MATERIAIS E MÉTODOS ................................................................................................. 32
4. RESULTADOS E DISCUSSÕES ....................................................................................... 40
5. COMENTÁRIOS FINAIS E CONCLUSÕES ....................................................................... 54
6. REFERÊNCIAS ................................................................................................................. 56
APÊNDICE A – CÓDIGO ARDUINO ........................................................................................ 58
APÊNDICE C – ABA ADICIONAR PRODUTO.......................................................................... 63
APÊNDICE D – ABA BUSCAR PRODUTO .............................................................................. 69
APÊNDICE E – EXCLUIR PRODUTO ...................................................................................... 74
8
1. INTRODUÇÃO
A Tecnologia de Identificação por Rádio Frequência foi utilizada inicialmente na
Segunda Guerra Mundial. Na década de 1940, tanto os países do eixo quanto os aliados
usavam um radar, inventado em 1935 por Robert Alexander Watson-Watt, para detectar a
aproximação de aviões (DUARTE, O. C. M. B). O motivo para tal uso foi a necessidade de
identificação destes aviões, uma vez que, com a aproximação destes, não era detectado de
forma concreta se o avião que se aproximava era aliado ou inimigo.
A solução encontrada pelos alemães foi a movimentação das aeronaves de tal forma
que, o sinal refletido chegasse de forma diferente da usual ao radar. Já os britânicos
desenvolveram um sistema de identificação chamado de IFF (identify friend or foe)
(DUARTE, O. C. M. B). Isto era feito inserindo um transmissor na aeronave, que ao
receber um sinal do radar transmitia outro sinal que possibilitava assim, a identificação
deste como aliado.
Ao longo dos anos, a utilização desta tecnologia foi gradativamente aumentando,
tornando possível a implementação da mesma em diversas áreas.
Segundo (DAVID IRWIN, J), “rastreamento de itens, como em controle de estoques,
visa seguir o movimento dos bens em diferentes pontos e em diferentes tempos por uma
razão específica”.
As vantagens desta utilização são bem claras: providenciam informações detalhadas
sobre o movimento dos itens durante todo seu ciclo de vida, permitindo assim, que um
controle seja feito em função das necessidades que se apresentem durante todo o processo.
A grande visão comercial do RFID é mudar a maneira como se move a cadeia de oferta
e demanda (TUTORIAL REPORTS). Em tempos anteriores, os fabricantes produziam bens
baseados em forecasts e esperavam que fossem consumidos no tempo planejado. Caso
ocorresse uma alteração de curso e alguns bens se tornassem escassos, demandas não
seriam atendidas e oportunidades não seriam aproveitadas, gerando assim, prejuízos.
Atualmente o controle de estoques é peça fundamental dentro de empresas, pois através
deste, gestores são capazes de prever o quanto será necessário comprar em futuros pedidos,
9
aumentando o uso eficiente dos meios internos da empresa e minimizando as necessidades
de investimentos em capitais investidos em estoque (DIAS, Marco Aurélio P).
1.1. JUSTIFICATIVAS
Nos últimos tempos ocorreram constantes modificações no mundo empresarial, devido
principalmente a instabilidade do mercado, aos grandes avanços tecnológicos, a
globalização e a crescente competitividade.
Diante destes fatos, foi necessário uma alteração na forma de agir das empresas,
buscando sempre uma maior adaptabilidade, agilidade e dinamismo em seus processos,
uma vez que somente aquelas melhores capacitadas seriam capazes de sobreviver no
mercado.
Para tal, soluções que diminuam o custo, aumentem os lucros, acelerem os processos e
aprimorem a qualidade de seus produtos estão sendo pesquisadas.
Uma das principais soluções buscadas no ambiente industrial nos últimos tempos reflete
a necessidade de controlar estoques. Entretanto, a realização desta prática esbarra no
confronto de interesses entre as áreas comerciais e as de produção, onde a primeira prefere
um maior estoque para atender futuras vendas e possuir uma margem de segurança na
produção, enquanto que a outra parte necessita ter um estoque enxuto, com a finalidade de
reduzir custos e não comprometer o fluxo de caixa.
A solução para tal dilema está no planejamento deste estoque, visando sanar as
necessidades de acordo com a sazonalidade das vendas.
Segundo (DAL-RY, SIVALDO), “o Controle de Estoque é o procedimento adotado
para registrar, fiscalizar e gerir a entrada e saída de mercadorias e produtos na empresa, seja
ela uma indústria, comércio ou prestadora de serviços”.
O principal objetivo em controlar estoques é otimizar o investimento nesse processo,
reduzindo custos desnecessários e garantindo que sempre haverá matéria prima disponível
para vendas futuras, visto que a manutenção de estoques gera altas despesas para as
10
empresas e o gerenciamento destes bens deve permitir que o capital investido seja o menor
possível.
Além do citado acima, também se deve: identificar os itens pouco utilizados, com
defeitos ou obsoletos; fornecer a base de dados para o planejamento (a curtos e longos
prazos) das necessidades de estoque, e; assegurar um suprimento adequado dos produtos
para atender de forma eficiente a demanda dos clientes.
Por outro lado, uma má administração dos bens de uma empresa pode gerar: atrasos nos
prazos de entregas de produtos; aumento crescente de estoques, gerando altos custos de
armazenamento; elevado nível de deterioração; dificuldade na localização de produtos,
entre outros.
Segundo (DIAS, MARCO AURÉLIO P), atualmente o controle de
estoques é peça fundamental dentro de empresas, pois através
deste, gestores são capazes de prever o quanto será necessário
comprar em futuros pedidos, aumentando o uso eficiente dos meios
internos da empresa e minimizando as necessidades de
investimentos em capitais investidos em estoque.
1.2. OBJETIVOS
A finalidade deste trabalho é criar um sistema de gerenciamento de Tags RFID em rede,
com o intuito de controlar o estoque de uma grande empresa da cidade de Sorocaba/SP,
diminuindo os gastos e facilitando o planejamento para compras de bens futuros, através de
uma interface amigável e prática. Para isto, será utilizado um Leitor RFID (ID-12) de Tags
passivas de baixa frequência conectada a um microprocessador Arduino e a um
computador, com um baixo custo de projeto.
11
2. CONCEITUAÇÃO
2.1. RFID
A tecnologia RFID (Radio Frequency Identification – Identificação por
Radiofrequência), é um método que utiliza etiquetas (tags) para diversos tipos de
identificação, fazendo com que haja uma comunicação através de ondas eletromagnéticas
entre uma antena que normalmente se localiza acoplada a um microchip e a antena do
sistema (HESSEL, F. et al). Este sistema é cada vez mais utilizado no mundo atual e suas
principais aplicações são em áreas de logística e distribuição, medicina, controle de fluxos,
entre outros. O ponto chave desta tecnologia é a capacidade que ela possui de rastrear
objetos, dando confiabilidade e segurança ao projeto.
Comparada a tecnologia de identificação por código de barras, as etiquetas de RFID
fornecem uma identificação única, fato que não é observado na anterior. Somado a isto,
algumas etiquetas apresentam informações adicionais relativas aos objetos que estão
atrelados a elas.
Este sistema possui o seguinte funcionamento: um aparelho que possui a função de
leitura de tags RFID envia através de uma antena, sinais de radiofrequência. Caso um
objeto seja atingido pela radiação, há um acoplamento entre este e a antena, fazendo com
que os dados presentes na etiqueta sejam lidos pelo leitor. A informação é então
identificada e enviada ao computador.
O acoplamento supracitado normalmente é eletromagnético ou magnético e este
depende da utilidade e necessidade da aplicação. Também, de acordo com a necessidade,
deve-se escolher a frequência de operação do sistema.
Outro ponto importante que deve ser citado é que tanto a antena quanto a etiqueta
possuem antenas para a comunicação.
Por apresentar alto grau de dinamismo no processo de aquisição de informação, sem
impor grandes barreiras à entrada de dados, o RFID constitui-se em uma grande
oportunidade para o Brasil nesse mercado, especialmente em aplicações voltadas ao
12
atendimento de necessidades específicas do processo de manufatura das indústrias
brasileiras (HESSEL, F. et al).
2.2. HISTÓRIA DO RFID
A Tecnologia de Identificação por Rádio Frequência foi utilizada inicialmente na
Segunda Guerra Mundial. Na década de 1940, tanto os países do eixo quanto os aliados
usavam um radar, inventado em 1935 por Robert Alexander Watson-Watt, para detectar a
aproximação de aviões (DUARTE, O. C. M. B). O motivo para tal uso, foi a necessidade de
identificação destes aviões, uma vez que, com a aproximação destes, não era detectado de
forma concreta se o avião que se aproximava era aliado ou inimigo.
A solução encontrada pelos alemães foi a movimentação das aeronaves de tal forma
que, o sinal refletido chegasse de forma diferente da usual ao radar. Já os britânicos
desenvolveram um sistema de identificação chamado de IFF (identify friend or foe)
(DUARTE, O. C. M. B). Isto era feito inserindo um transmissor na aeronave, que ao
receber um sinal do radar, transmitia outro sinal que possibilitava assim, a identificação
deste como aliado.
Nos anos de 1950, apenas o exército, laboratórios de pesquisas e grandes empresas
comerciais faziam uso desta tecnologia, uma vez que possuia um alto custo e os
componentes possuiam grandes dimensões.
No final dos anos 1960 e no início dos anos 1970, empresas tais como Sensormatic e
Checkpoint Systems introduziram novos usos de RFID nas aplicações menos complexas e
mais amplamente usadas. Essas empresas começaram a desenvolver equipamentos de
vigilância eletrônica de produtos para proteger os itens de inventário, tais como vestuário
em lojas de departamento e livros em bibliotecas (DUARTE, O. C. M. B).
As primeiras utilizações comerciais deste sistema foram em controle de furtos em
lojas , onde as etiquetas que eram afixadas nos produtos, ao entrar em contato com um
sensor, faziam um alarme disparar. Basicamente o mesmo que é feito nos dias de hoje.
13
Eram conhecidos como sistemas de etiquetas de um bit e eram baratos para fabricar,
implementar e manter.
Na década de 1970, foram registradas as primeiras patentes que utilizavam esta
tecnologia. A primeira delas, concedida a Mario W. Cardullo, baseava-se em um sistema
ativo de RFID com memória regravável. Logo após, Charles Walton desenvolveu um
sistema passivo, utilizado para destravar portas sem o auxílio de chaves.
Quem não poderia ficar para trás é o governo americano, que trabalhava no
desenvolvimento de um sistema de rastreamento de material radioativo para o Energy
Department e outro de rastreamento de gado para o Agricultural Department (DUARTE,
O. C. M. B).
Todos estes sistemas utilizavam etiquetas de Baixa Frequência (125 KHz). Foi então
que as empresas passaram a utilizar sistemas de Alta Frequência (13,56 MHz).
Foram desenvolvidos também, nos anos 80, sistemas de Frequência Ultra Alta,
viabilizando leituras com distâncias superiores a dez metros
Já nos anos 90, iniciou-se a cobrança de pedágios eletrônicos em alguns países
europeus, nos Estados Unidos e no Brasil.
Entretanto, como as etiquetas ainda possuiam altos preços, o sistema não era utilizado
em grandes quantidades.
Somente com a combinação de melhor alcance, maior velocidade e preços atrativos,
as etiquetas de Ultra Alta Frequência (UHF) começaram a ser utilizadas em maior escala.
Em razão destas características, tornaram-se os principais candidatos a utilização nas
aplicações das cadeias de abastecimento, incluindo o rastreamento de paletes e caixas,
controle de inventário e gerenciamento de armazéns e de logística (DUARTE, O. C. M. B).
14
2.3. COMPONENTES
2.3.1. ANTENAS
Por definição, uma antena é um dispositivo criado para transmitir ou receber energia
eletromagnética (TELECOMHALL).
Uma onda eletromagnética caracteriza-se pela presença de campos elétricos e
magnéticos variantes no tempo e no espaço. Essas variações temporais e espaciais
determinam a propagação da onda, que transfere energia entre pontos distintos de um meio
(HESSEL, F. et al).
A antena responsável pela transmissão radia ondas eletromagnéticas para os meios de
propagação.
Neste processo, correntes e tensões de Rádio Frequência (RF) são observadas na
estrutura da antena transmissora, fato que acaba gerando campos eletromagnéticos. Estes
são irradiados para uma antena receptora, induzindo correntes e tensões de RF para o
receptor, estabelecendo um enlace de comunicação entre os pontos. Além disso, a antena
deve dirigir a radiação ou captá-la em direções desejadas, excluindo as direções
indesejadas.
A densidade de potência gerada por uma antena, é mensurada pela equação abaixo:
(1)
Onde:
- é a impedância intrínsica do meio;
- é a intensidade do campo magnético e;
- H é a intensidade do campo magnético.
15
Já E é dado por:
(2)
- k é a constante eletrostática;
- Q é a carga e;
- d é a distância.
Substituindo (2) em (1), tem-se:
(3)
Nota-se então, que a densidade de potência é inversamente proporcional a distância do
campo magnético em relação a antena. Portanto, quanto mais distante da antena, menor o
campo magnético.
Impedância e Parâmetros Associados
Toda antena apresenta uma impedância de entrada num sistema de alimentação, que é
dada pela seguinte fórmula:
(4)
Em que:
- é a impedância nos terminais da antena;
- é a resistência da antena;
- é a reatância da antena.
Portanto, uma antena consiste em uma associação em série de um resistor, de um
indutor e de um capacitor. O resistor é composto por uma resistência responsável pelas
perdas ôhmicas nos materiais condutores e dielétricos e, por uma resistência de radiação,
que é responsável pela potência radiada pela antena.
16
A reatância é responsável pelo armazenamento da energia pelos campos elétricos e
magnéticos nas proximidades da antena. Ela constitui a parte imaginária da impedância e
não é responsável pela radiação ou dissipação de potência, como se conhece da teoria de
circuitos. Quando, em uma dada frequência, as energias armazenadas se igualam, ocorre a
ressonância da antena e, a reatência será igual a zero. Logo, a impedância torna-se
puramente resistiva.
Com o objetivo de transferir a máxima potência para o meio de propagação, uma antena
deve ter sua impedância casada com o sistema de alimentação. O casamento de
impedâncias minimiza a reflexão das ondas incidentes na interface entre a linha e a antena
e, em consequência, melhora a transmissão (HESSEL, F. et al).
Existem pelo menos três formas distintas de expressar o casamento de impedâncias
entre uma linha de transmissão terminada por uma carga (no caso, a antena): o coeficiente
de reflexão (c), o Voltage Standing Wave Rati (VSWR) e a perda de retorno (RL – Return
Loss). O primeiro fornece informação sobre a amplitude e a fase da onde refletida na
interface. Os outros dois parâmetros se relacionam apenas com o valor numérico da
reflexão. Assim, o coeficiente de reflexão é uma grandeza complexa, enquanto VSWR e
perda de retorno são grandezas escalares (HESSEL, F. et al).
Na interface, o coeficiente de reflexão Γ é determinado por:
(5)
Na equação (5), observa-se que, para uma antena operando na ressonância (Za é
um número real), quanto mais próximo do valor de Zo ( geralmente, real) for o valor de Za,
melhor será o casamento de impedância entre linha e a antena. Para Za = Zo, Γ será nulo,
significando que a condição de casamento ideal foi atingida (HESSEL, F. et al).
De outra forma, o deslocamento entre a antena e a linha resulta em uma onde
estacionária, com VSWR dado por:
(6)
17
Na condição de casamento ideal, VSWR=1.
A medida da transferência de energia pode ser também estimada pela perda de
retorno normalmente expressa em dB e determinada por:
(7)
É interessante notar que, em geral, a impedância da linha de alimentação é um
valor real (por exemplo, 50 ohms, 75 ohms, etc.), e a impedância da antena é um número
complexo, exceto na ressonância. Consequentemente, Γ será um valor complexo,
fornecendo informação do módulo e da fase da onda refletida, enquanto a determinação do
VSWR e da RL envolve apenas o módulo de Γ que os caracteriza como grandezas escalares,
conforme mencionado anteriormente (HESSEL, F. et al).
Em termo práticos, um casamento de impedância é geralmente considerado
aceitável se VSWR ≤ 1,5 o que corresponde a uma perda de retorno > -14 dB e a um módulo
do coeficiente de reflexão │ Γ │. Ou correspondente, ainda, a um coeficiente de reflexão
de potência definido por Γp = │ Γ │², que, nesse caso, é igual a 0,04, significando que 96%
da potência do sinal transportado pela linha são transferidos para a antena (HESSEL, F. et
al).
2.3.2. ETIQUETAS E LEITORES RFID
Toda etiqueta RFID possui como propósito básico enviar informações referentes a um
objeto para um leitor. Elas possuem um mecanismo interno que são capazes de armazenar
dados e comunicá-los com os devidos meios.
Basicamente, como pode ser visto na Figura 1 ela consiste em:
Um circuito integrado (CI), que contém um microprocessador. Também possui
uma memória interna para armazenar dados e alguns processamentos lógicos. Os
tipos de memórias podem ser:
- Somente Leitura: esta etiqueta recebe um número serial único, tornando-a a prova de
adulteração;
18
- Uma gravação/Várias Leituras: possibilita uma gravação após a industrialização,
fato que pode reduzir custos de produção;
- Leitura/Gravação: é uma excelente opção para quem procura flexibilidade,
entretanto sua segurança e confiabilidade é baixa.
Antena ou elemento de acoplamento, responsável por receber e transmitir as
ondas de radiofrequência. A antena energiza a etiqueta absorvendo a energia do
campo de RF do equipamento leitor e com isso pode inicializar o processamento
do chip. Esse processo é denominado acoplamento devido à antena precisar estar
acoplada ao campo eletromagnético emitido pelo leitor RFID. Tecnicamente, o
conceito de acoplamento designa a transferência de energia de um componente
para outro. Nesse caso, do ar para a antena. O tamanho da antena afeta diretamente
o tamanho da etiqueta. Antenas tipo baixa frequência e alta frequência costumam
ser em formato circular. Antenas ultra frequência costumam ter mais segmentos
retos, gerando etiquetas em formato retangular (HESSEL, F. et al);
Substrato, responsável por manter os componentes da etiqueta em seus devidos
lugares;
Conectores, responsável pela junção entre o CI e a antena através de dois
condutores.
Figura 1 - Componentes Etiqueta RFID.
Fonte: http://leonardo4c.files.wordpress.com/2009/04/RFID.jpg
19
Uma etiqueta deve apresentar os seguintes sistemas (HESSEL, F):
- interface com o ambiente;
- relógio de referência;
- modulação e demodulação dos sinais analógicos/digitais;
- operações básicas das etiquetas;
- algoritmo de sincronização;
- codificador e decodificador
Existem etiquetas com os mais variados formatos de antenas, substratos, invólucros e
chips, a fim de atender aos mais variados tipos de aplicação e necessidades.
Classificação das Etiquetas
As etiquetas podem ser classificadas em: Ativas, Semipassivas e Passivas.
Etiquetas Passivas
Não necessitam de baterias internas. Sua alimentação é dada pelo contato com o campo
eletromagnético do leitor, gerando uma corrente elétrica na etiqueta que é capaz de habilitar
as funções de leitura, escrita e transmissão. Seu alcance é limitado pela capacidade de
potência do leitor.
Sua utilização é a mais comum entre as empresas por possuir baixo custo de aquisição,
sendo esta, uma de suas maiores vantagens. A maioria delas também são pequenas e têm
uma longa vida útil.
Entretanto, possuem baixo alcance e necessitam de uma maior potência do leitor.
Em relação a sua comunicação, todas as etiquetas passivas e semipassivas se acoplam
ao sinal transmitido ao leitor, uma vez que não são capazes de transmitir o seu próprio
sinal.
20
Existem dois tipos de acoplamentos possíveis, o Acoplamento difuso de retorno
(backscatter) e o acoplamento indutivo. Estes interferem significamente na faixa de leitura
entre a etiqueta e o leitor e podem ser classificadas em (HESSEL, F. et al):
- próxima: dentro de 1 cm;
- remota: de 1 cm a 1 m;
- faixa longa: mais de 1m.
O acoplamento difuso de retorno é utilizado em etiquetas UHF e micro-ondas. Nesse
tipo de acoplamento as etiquetas refletem a mesma frequência emitida pelo leitor, mas
alteram diversas qualidades dessa reflexão para enviar informações para o leitor. Nesse
processo, um leitor envia um sinal para uma etiqueta e ela responde, por reflexão, a uma
parte dessa energia de volta para o leitor. Um dispositivo de carga contido na etiqueta, tal
como um capacitor, possibilita essa reflexão. O capacitor se carrega quando ele armazena a
energia recebida do leitor. Quando a etiqueta responde, ela usa essa energia para retornar o
sinal ao leitor. O capacitor se descarrega nesse processo (SIGHT, S.V.B).
Devido ao fato do leitor e da etiqueta estarem cada um usando a mesma frequência para
estabelecer a comunicação, eles geralmente a fazem um de cada vez. Essa comunicação é
chamada de half-duplex. O leitor continua a gerar energia para a etiqueta, mesmo quando o
leitor estiver esperando pela etiqueta ou recebendo dela. Além de refletir a energia de volta
para o leitor para comunicações, a antena da etiqueta conduz um pouco dessa energia para
um pequeno chip. O chip controla um resistor entre as duas metades da antena. Quando as
duas metades da antena se conectam diretamente com baixa resistênciam, elas refletem o
sinal do leitor com uma alta amplitude. Quando o resistor separa as duas metades da antena,
elas refletem o sinal do leitor com uma amplitude menor. Alternando o resistor dentro e
fora do circuito, o chip pode criar um sinal Amplitude Shift Keying (ASK) modulado pela
carga, para transmitir um número identificador (ID) único armazenado na memória do chip
(GLOVER, B; BHATT, H).
O acoplamento indutivo é utilizado para etiquetas de baixas e altas frequências, sendo
um tipo comum de acoplamento remoto. Um leitor fornece energia para as etiquetas
21
acopladas indutivamente, usando uma antena espiral para gerar um campo magnético. O
campo dirige a corrente por uma espiral na etiqueta por indução de forma muito semelhante
a de um transformador transferindo energia entre duas bobinas. O campo fornece bastante
energia para o chip, o qual pode então se comunicar com o leitor pela modulação de carga
quase que da mesma forma que o acoplamento backscatter. Um resistor da etiqueta, liga e
desliga, gerando flutuações no campo magnético, o que cria alterações de voltagem na
antena do leitor. Existem três métodos para gerar uma frequência de resposta da etiqueta
(HESSEL, F. et al):
- Método subtransportador: a etiqueta liga e desliga seu resistor muito rapidamente.
Assim, a etiqueta parece gerar duas novas frequências, uma acima do portador e outra
abaixo. Essas duas novas frequências são chamadas de subtransportadoras. O leitor pode
reconhecê-las facilmente porque elas diferem das frequências que o próprio leitor gera. A
etiqueta envia informações para o leitor modulando uma ou mais das subtransportadoras
(HESSEL, F. et al);
- Método sub-harmônico: divide a frequência da portadora por um valor inteiro –
geralmente dois – para produzir uma frequência para a etiqueta utilizar nas suas respostas
(HESSEL, F. et al);
- Método sequencial: é uma variação do método backscatter, já que utiliza a mesma
frequência para enviar dados da etiqueta para o leitor. O campo do leitor carrega um
capacitor na etiqueta e então desliga. A etiqueta então utiliza um oscilador para criar seu
próprio campo magnético na mesma frequência do leitor. O leitor é capaz de detectar esse
campo porque o seu próprio campo está desligado. A etiqueta codifica os dados usando
FSK, acelerando e desacelerando a oscilação do circuito (HESSEL, F. et al);
Etiquetas Semi Passivas
As etiquetas semi passivas possuem uma bateria interna de baixo custo, que possui
como principal função, alimentar os circuitos internos. Ela não transmite sinais e é
inicializada quando recebem uma potência do leitor.
22
Suas vantagens principais são o fato de serem mais resistentes à interferência, em
comparação à etiquetas passivas e ao fato de evitarem a falha da potência do sinal do leitor.
Além disso, enviam um sinal mais forte para o leitor, podem transmitir a distâncias maiores
e são capazes de armazenar mais informações.
Suas desvantagens estão na sua espessura, que é um pouco maior em relação às
etiquetas passivas, além da necessidade de substituição da bateria.
Etiquetas Ativas
Compostas por um transmissor e uma bateria interna, as etiquetas ativas podem
significamente aumentar a distância de transmissão entre a etiqueta e o leitor.
Elas possibilitam o armazenamento de uma quantidade maior de informações e podem
executar algumas funções na ausência de um leitor, ou podem tomar a iniciativa de
começar a comunicação com algum leitor próximo (caso de um alarme, por exemplo), ou
até enviar continuamente informações sobre o status de algum evento, como temperatura,
localização, entre outros.
Uma desvantagem é o fato das baterias terem que ser monitoradas e substituídas de
acordo com o uso.
São muito utilizadas em rastreamento de objetos de alto valor como suprimentos
militares, além de serem utilizadas em aplicações comerciais nas quais as condições
ambientais e os requisitos das aplicações exigem uma comunicação mais robusta entre
etiqueta e leitor.
Colisão dos sinais emitidos pelas etiquetas
Considerado um grande desafio na implementação de sistemas RFID, a colisão de sinais
provenientes de etiquetas é um fator importante a ser considerado. Esse problema exige a
aplicação de protocolos anticolisão para a identificação do sinal individual de cada etiqueta.
Esses sinais utilizam a mesma frequência no espectro e, quando emitidos simultaneamente
23
por mais de uma etiqueta, se tornam não identificáveis para os equipamentos interrogadores
(HESSEL, F. et al);
Os protocolos anticolisão atualmente padronizados utilizam algoritmos que tentam
identificar as mensagens individuais de cada etiqueta eletrônica. Nos diversos testes
disponíveis na literatura técnica e científica, é possível verificar que cada protocolo
anticolisão padronizado poderá funcionar melhor para uma determinada situação específica
(HESSEL, F. et al);
São alguns exemplos de protocolos: ALOHA LST e FST, Btree, entre outros.
2.3.3. LEITOR
O leitor é o componente de comunicação entre o sistema RFID e os sistemas externos
de processamento de informações. A complexidade dos leitores depende do tipo de etiqueta
e das funções a serem aplicadas (IDENTIFICAÇÃO POR RADIOFREQUÊNCIA).
Seu funcionamento é o seguinte: é alimentado por uma fonte externa podendo ser desde
uma simples tomada ou uma bateria. Através dessa fonte, o leitor transmite seus sinais de
ondas de rádio, enquanto que internamente, circuitos integrados possuem a missão de
controlar o fluxo de eletricidade, modulando a frequência e a amplitude das ondas geradas
pelo leitor. Então, transfere o fluxo de eletricidade até a antena, através de um cabo coaxial,
sendo que a antena é a responsável por enviar as ondas de RF que, através de modulação,
carregam os dados a serem enviados até as etiquetas. Após o recebimento deste sinal de
resposta da etiqueta, o leitor trata esses sinais internamente em seus chips internos e
decodifica esses sinais em informação útil a ser transferida para um computador.
24
Figura 2 - Leitor interagindo com Tag RFID
Posto isso, o leitor deve enviar a informação para um computador, onde esta será
tratada de acordo com o desejo do programador. Os tipos de comunicação existentes são:
serial, USB, Ethernet e interfaces para comunicação sem fio, como por exemplo Wi-Fi,
Bluetooth, entre outros.
Para realização de um projeto, deve ser levado em consideração as especificações dos
leitores, que normalmente são dadas pelo fabricante. Estas são: frequência de operação,
protocolos suportados, potência de saída das antenas, número de antenas que pode ser
utilizado, configuração de software e atualizações disponíveis.
Estas especificações devem ser definidas no início do projeto, para tal, deve se ter noção
das características desejadas para o sistema e o ambiente.
Em relação a frequência de operação, sendo esta um dos aspectos mais importantes da
comunicação entre etiqueta e leitor, possui faixas de Baixa Frequência (LF) em 135KHz ou
menor, Alta Frequência (HF) em 13,56 MHz, Ultra Alta Frequência (UHF) começando em
433 MHz e frequências de Microondas em 2,45 GHz e 5,8 GHz.
A escolha da frequência para o projeto define a taxa de transferência de dados da
comunicação. No caso de frequências elevadas, o projeto possuirá antenas e etiquetas em
tamanhos menores, somados a um grande alcance de leitura. É o que as etiquetas de UHF
proporcionam, além do bom custo benefício.
25
Outro componente de um leitor é a antena. Cada leitor pode suportar entre uma a quatro
com uma variedade de configurações, dentre elas:
- Uma ou duas antenas, normalmente utilizadas em esteiras.
- Quatro antenas, normalmente utilizados em portais de leituras.
Para a escolha da melhor configuração, deve-se também levar em consideração a
natural perda de sinal do cabo, o que pode limitar a distância máxima entre cada antena até
o equipamento leitor. As distâncias máximas entre leitor e antena variam muito de acordo
com o cabo e as interferências do meio ambiente, mas normalmente um comprimento de
até dois metros evitam problemas. Distâncias maiores devem ser analisadas (HESSEL, F. et
al);.
2.3.4. MIDDLEWARE RFID
Segundo [COULOURIS, G., DOLLIMORE, J.,KINDBERG,
T], middleware é uma camada de software intermediária entre a
aplicação e o restante do sistema. Essa camada fornece abstração
para o desenvolvimento de aplicações distribuídas, bem como para
o mascaramento da heterogeneidade das redes, do hardware,
sistemas operacionais, linguagens de programação, dentre outros.
Apesar dessa definição mais abrangente e genérica, normalmente uma plataforma de
middleware é específica para um domínio de aplicação, por exemplo: middleware para
RFID, middleware para banco de dados de alto desempenho, middleware para
compartilhamento de dados, etc. Para cada domínio de aplicação, uma plataforma de
middleware formada por API’s, frameworks e serviços provê abstrações para o
desenvolvimento de novas aplicações. No caso de RFID, uma plataforma de middleware
tem o objetivo de: i) desacoplar das aplicações toda a complexidade de interação com a
infraestrutura física RFID; e ii) filtrar e dar semântica aos dados RFID lidos do ambiente
(HESSEL, F).
É importante ressaltar que uma aplicação não necessariamente precisa utilizar um
middleware para interagir com a rede de leitores RFID. No entanto, isso demanda que ela
26
implemente os protocolos de comunicação específicos de cada leitor, trate dos detalhes de
envio de comando para realizar operações de leitura e escrita em etiquetas RFID de
diferentes formatos, gerencie e monitore a rede de leitores e processe todo o volume de
dados gerado pela infraestrutura RFID (HESSEL, F).
Vantagens e Desvantagens do RFID
As principais vantagens da tecnologia RFID, em relação a outras análogas, são: a leitura
não requer uma “linha de visão” direta; múltiplos itens podem ser lidos ao mesmo tempo;
existem diversas formas de identificadores, permitindo a utilização em uma variedade de
ambientes; capacidade de identificar univocamente bilhões de itens; alguns tipos de
identificadores podem ser gravados e regravados muitas vezes; rastreabilidade de produtos
e de seres vivos; eliminação dos problemas decorrentes de oxidação, sujeira e desgaste de
superfície; prevenção de roubos e falsificação de mercadorias; contagem instantânea de
estoque, facilitando os inventários.
Em decorrência dessas vantagens, outros benefícios são obtidos, como: maior
confiabilidade; aumento da segurança em operações repetitivas; eliminação de erros
humanos; redução de custos operacionais; aumento na velocidade dos processos; redução
de perdas; melhor controle de qualidade.
Por se tratar de uma tecnologia relativamente nova, e consequentemente a sua utilização
em baixa escala por enquanto, existem algumas desvantagens associadas à tecnologia
RFID. A principal delas se refere ao custo elevado, pois a implantação de um sistema RFID
em empresas envolve diversos investimentos, como aquisição de etiquetas, leitores,
antenas, ferramentas para filtragem de dados, sistemas de comunicação, mão-de-obra para
configuração e manutenção, entre outros.
Existem ainda outros problemas, como: falta de padronização; problemas no uso em
materiais metálicos e condutivos, uma vez que a identificação por radiofrequência ocorre
através de campos magnéticos e esses materiais podem interferir negativamente no
desempenho, afetando o alcance de transmissão das antenas (através de encapsulamento
esse problema pode ser amenizado); dificuldades para identificação de materiais líquidos,
27
pois absorvem a energia do sinal muito mais rapidamente, dificultando a comunicação com
o leitor.
2.4. BANCO DE DADOS
Segundo (KORTH, H.F.;SILBERSCHATZ, A), “um Banco de Dados é uma coleção de
dados inter-relacionados, representando informações sobre um domínio específico”,
portanto, sempre que forem agrupadas informações que possuam algum tipo de relação, há
um banco de dados.
Há vários tipos de bancos de dados, que vão desde uma lista telefônica, um catálogo de
uma biblioteca ou até um sistema de controle de Recursos Humanos (RH) de uma empresa.
Existem também os Sistemas de Gerenciamento de Banco de Dados (SGBD), que são
softwares capazes de manipular os dados contidos nos mesmos e informar ao usuário aquilo
que ele considera necessário.
Um sistema de Banco de Dados é composto por quatro itens principais:
• Dados;
• Hardware;
• Software;
• Usuário.
Figura 3 - Ilustração Banco de Dados
28
Exemplos destes SGBD são o Access, MySQL, Oracle, entre outros.
Microsoft Access
O Microsoft Access (nome completo Microsoft Office Access), também conhecido por
MSAccess, é um sistema relacional de administração de banco de dados da Microsoft,
incluído no pacote do Microsoft Office Professional, que combina o Microsoft Jet Database
Engine com uma interface de usuário gráfica (graphical user interface). Ele permite o
desenvolvimento rápido de aplicações que envolvem tanto a modelagem e estrutura de
dados como também a interface a ser utilizada pelos usuários (OFICINA DA NET).
Microsoft Access é capaz de usar dados guardados em Access/Jet, Microsoft SQL
Server, Oracle, ou qualquer recipiente de dados compatível com ODBC (OFICINA DA
NET).
O desenvolvimento da estrutura de dados se dá de forma muito intuitiva, bastando que o
desenvolvedor possua conhecimetos básicos em modelagem de dados e lógica de
programação (OFICINA DA NET).
Programadores relativamente inexperientes e usuários determinados podem usá-lo para
construir aplicações simples, sem a necessidade de utilizar ferramentas desconhecidas
(OFICINA DA NET).
Microsoft Access também foi o nome de um programa de comunicação da Microsoft,
destinado à competir com ProComm e outros programas. Essa versão provou ser um
fracasso e foi abandonada. Anos depois a Microsoft reusou o nome para o seu programa de
banco de dados (OFICINA DA NET).
Como o Microsoft Access é um sistema pago, foi utilizado para este projeto a versão
Runtime, que possui as mesmas propriedades e possibilita que as máquinas que não
possuam o Access, acessem o banco de dados. Sua única limitação é a impossibilidade de
alterar a estrutura do aplicativo.
Para o que foi proposto neste trabalho, a utilização do Microsoft Access Runtime atende
aos requisitos do projeto e por ele ter custo zero, viabiliza um maior lucro em possíveis
29
vendas futuras de projetos. Sua limitação está na incapacidade do usuário de alterar dados
diretamente da tabela, fato que auxilia na segurança do sistema.
2.5. REDES
A rede de computadores é um grupo de computadores de funcionamento independente
do outro e interconectados por cabos de rede. A rede permite o compartilhamento de
softwares, informações, arquivos e demais serviços (REBOUÇAS, F.).
A rede pode atuar em computadores, em periféricos (impressoras, scanners, e outros
equipamentos), e em máquinas de linha de produção. A rede de computadores reduz custo
com a aquisição de softwares, minimiza processos de envio de projetos, significa economia
de tempo e melhor desempenho operacional numa empresa (REBOUÇAS, F.).
A primeira tentativa de implementação de uma rede ocorreu em setembro de 1940,
através dos trabalhos de George Stibitz, que utilizou uma máquina de teletipo para envio de
instruções de sua Model K situada na Faculdade de Dartmouth para uma calculadora na
cidade de Nova York (REBOUÇAS, F.).
Em 1964, desenvolveram o Sistema de Compartilhamento de Tempo de Dartmouth
para vários usuários situados em trabalhos de sistemas de computadores. Na época, a
General Eletric e a Bell Labs conseguiram rotear conexões telefônicas através do
computador Dec´s PDP-8 (REBOUÇAS, F.).
Os conhecimentos em rede aumentaram significativamente na década de 90, atualmente
há vários tipos específicos de redes, as mais conhecidas são:
- LAN – Local Area Network – é uma rede local situada num domicílio, sala comercial
ou lan house;
- MAN – Metropolitan Area Network – utilizada entre duas cidades;
- WAN – Wide Area Network- Utilizada entre pontos intercontinentais, como por
exemplo, o sistema bancário internacional;
30
- RAN- Regional Area Network- rede presente em determinada região delimitada
(REBOUÇAS, F.).
Há diversas aplicações para redes, tais como:
- Aplicações comerciais: compartilhamento de recursos, facilidade de comunicação
entre colaboradores de empresas, comércio eletrônico, entre outros;
- Aplicações domésticas: comunicação entre pessoas, entretenimento, acesso a
informações remotas;
- Aplicações móveis: comércio eletrônico, acompanhamento de atividades, entre
outros.
2.6. LINGUAGEM C#
O C# (leia-se C-Sharp), é uma linguagem de programação orientada a objetos, que foi
desenvolvida pela Microsoft e faz parte da plataforma .NET. Embora a linguagem C# tenha
sido criada do zero, foi baseada na linguagem C++ e tem muitos elementos da linguagem
Pascal e Java (PACIEVITCH, Y.).
A plataforma .NET teve suas bibliotecas inicialmente feitas em Simple Managed C
(SMC), porém esta limitou muito o trabalho na plataforma. No inicio de 1999 foi montada
uma equipe, liderada por Anders Hejlsberg, com o objetivo de criar uma nova linguagem
para a plataforma .NET. Esta linguagem seria criada para desprender a plataforma .NET de
outras linguagens, pois o código das linguagens já existentes limitava o desenvolvimento da
plataforma (PACIEVITCH, Y.).
Esta linguagem foi desenvolvida com o nome de Cool. No momento do lançamento da
plataforma .NET, mudaram o nome da linguagem para C#. A criação da linguagem C#
ajudou muito no desenvolvimento do .NET, pois a plataforma não precisou se adequar a
nenhum código de alguma linguagem já existente. O C# foi criado especificamente para
.NET, sendo que muitas outras linguagens tem suporte à C#. Algumas destas linguagens
31
são VB.NET, C++ e J#. Embora a linguagem C# seja considerada muito semelhante ao
Java, existem também varias diferenças:
- Java não tem a função de implementar propriedades nem sobrecarga de operadores, o
C# tem esta função.
- Java não tem a função de implementar um modo inseguro que pode ser utilizado para
manipulação de ponteiros e aritmética sem checagem. Esta função é característica do C#.
- Java possui as exceções checadas, enquanto as exceções em C# não são checadas
(assim como em C++).
- Enquanto Java utiliza comentários Javadoc para gerar documentação automática, O
C# Utiliza o XML.
- C# tem suporte à indexadores, e o Java não (PACIEVITCH, Y.).
Estas são algumas das funções que o C# desenvolveu e não existem no Java
(PACIEVITCH, Y.).
Entre as linguagens de programação, o que mais muda é o jeito de escrever o código, e
não as palavras em si. Quando uma pessoa aprende uma linguagem de programação, fica
muito mais fácil aprender as demais (do .NET), pois as maiores mudanças são na sintaxe, o
jeito como esta o código (PACIEVITCH, Y.).
32
3. MATERIAIS E MÉTODOS
Como a necessidade do projeto era a leitura de etiquetas a pequenas distâncias, sendo
uma etiqueta por vez e não necessitando de velocidades altas de leitura, o projeto foi
especificado da seguinte forma:
Tabela 1 - Especificações do Projeto
Tipo de Tag Passiva
Frequência de Operação Baixa Frequência
Taxa de Transmissão de Dados 125 KHz
Distância de Comunicação 12 cm
Codificação Manchester 64 Bit
Portanto foram utilizados os seguintes materiais:
- Microprocessador Arduino Uno Rev.3;
- Leitor ID-12;
- Tags passivas de baixa frequência;
- Microsoft Access Runtime.
Com estas informações, os equipamentos adquiridos para o projeto foram
satisfatoriamente adequados, uma vez que atendiam a todos estes requisitos.
Outro ponto importante é o baixo custo do projeto, fato que explica a aquisição de
softwares gratuitos, como o Microsoft Access Runtime.
33
3.1. Leitor ID – 12
Como podemos ver na tabela 1 abaixo, devido à utilização do ID-12, este projeto
possibilita uma leitura das etiquetas a uma distância de até doze centímetros. Distâncias
maiores não são suportadas.
Caso sejam aproximadas duas etiquetas juntas próximas ao leitor, apenas a etiqueta
mais próxima será lida, enquanto que a outra não constará no projeto. Este problema pode
ser solucionado utilizando-se um leitor diferente, como por exemplo um portal, onde várias
etiquetas podem ser lidas ao mesmo tempo.
Além disto, as etiquetas utilizadas foram as de baixa frequência (LF), ou seja, de 125
kHz, portanto, para este projeto não se pode utilizar etiquetas de outras frequências.
O Leitor deve ser alimentado com tensão entre +4,6V e +5,4V e possuir uma tensão
nominal de 30 mA. Faixas compreendidas fora destas especificações poderão danificar os
componentes.
Tabela 2- Parâmetros do ID-12
Dimensões do Leitor 26 x 25 x 7 (mm)
Distância de Leitura Até 12 cm
Frequência 125 kHz
Formato do Cartão EM 4001 ou compatível
Codificação Manchester 64-Bit
Requisitos de Alimentação 5 VDC, 30 mA nominal
Intervalo de Tensão Suportado +4,6 V até +5,4V
34
Figura 4 - Leitor ID-12
Apenas para efeito de comparação, se fosse utilizado um Leitor ID-20, possibilitar-se-ia
uma leitura com distâncias de até vinte centímetros, entretanto o custo do projeto seria
maior e assim sendo, não se fez necessário, uma vez que a distância de leitura do ID-12 era
satisfatória.
Tabela 3- Parâmetros ID-20
Dimensões do Leitor 40 x 40 x 9 (mm)
Distância de Leitura Até 16 cm
Frequência 125 kHz
Formato do Cartão EM 4001 ou compatível
Codificação Manchester 64-Bit
Requisitos de Alimentação 5 VDC, 65 mA nominal
Intervalo de Tensão Suportado +4,6 V até +5,4V
35
Em relação ao formato dos dados lidos no ID-12, como mostrado em (ID
INNOVATIONS), estes são dados em formato ASCII.
3.2. Arduino Uno R3
Arduino é uma plataforma de prototipagem eletrônica de hardware livre, projetada com
um microcontrolador Atmel AVR de placa única, com suporte de entrada/saída embutido,
uma linguagem de programação padrão, a qual tem origem em Wiring, e é essencialmente
C/C++. O objetivo do projeto é criar ferramentas que são acessíveis, com baixo custo,
flexíveis e fáceis de se usar. Principalmente para aqueles que não teriam alcance aos
controladores mais sofisticados e de ferramentas mais complicadas (ARDUINO).
Figura 5 - Arduino
Pode ser usado para o desenvolvimento de objetos interativos independentes, ou ainda
para ser conectado a um computador hospedeiro. Uma típica placa Arduino é composta por
um controlador, algumas linhas de E/S digital e analógica, além de uma interface serial ou
USB, para interligar-se ao hospedeiro, que é usado para programá-la e interagi-la em tempo
real. Ela em si não possui qualquer recurso de rede, porém é comum combinar um ou mais
Arduinos deste modo, usando extensões apropriadas chamadas de shields . A interface do
hospedeiro é simples, podendo ser escrita em várias linguagens. A mais popular é a
Processing, mas outras que podem comunicar-se com a conexão serial são: Max/MSP, Pure
Data, SuperCollider, ActionScript e Java (ARDUINO).
36
Hardware
Sua placa consiste em um microcontrolador Atmel AVR de oito bits, com componentes
complementares para facilitar a programação e incorporação para outros circuitos. Um
importante aspecto é a maneira padrão que os conectores são expostos, permitindo o CPU
ser interligado a outros módulos expansivos, conhecidos como shields. Os Arduinos
originais utilizam a série de chips megaAVR, especialmente os ATmega8, ATmega168,
ATmega328 e a ATmega1280; porém muitos outros processadores foram utilizados por
clones deles (ARDUINO).
A grande maioria de placas inclui um regulador linear de cinco volts e um oscilador de
cristal de 16 MHz (podendo haver variantes com um ressonador cerâmico), embora alguns
esquemas como o LilyPad usam até 8 MHz e dispensam um regulador de tensão embutido,
por ter uma forma específica de restrições de fator. Além de ser microcontrolador, o
componente também é pré-programado com um bootloader que simplifica o carregamento
de programas para o chip de memória flash embutido, comparado com outros aparelhos que
usualmente necessitam de um chip programador externo (ARDUINO).
Conceitualmente, quando seu software é utilizado, ele monta todas as placas sobre uma
programação de conexão serial RS-232, mas a maneira que é implementado no hardware
varia em cada versão. Suas placas seriais contêm um simples circuito inversor para
converter entre os sinais dos níveis RS-232 e TTL. Atualmente, existem alguns métodos
diferentes para realizar a transmissão dos dados, como por placas programáveis via USB,
adicionadas através de um chip adaptador USB-para-Serial como o FTDI FT232. Algumas
variantes, como o Arduino Mini e o não oficial Boarduino, usam um módulo, cabo
adaptador USB, bluetooth ou outros métodos. Nestes casos, são usados com ferramentas
microcontroladoras ao invés do Arduino IDE, utilizando assim a programação padrão AVR
ISP (ARDUINO).
Software
O Arduino IDE é uma aplicação multiplataforma escrita em Java derivada dos projetos
Processing e Wiring. É esquematizado para introduzir a programação a artistas e a pessoas
não familiarizadas com o desenvolvimento de software. Inclui um editor de código com
37
recursos de realce de sintaxe, parênteses correspondentes e identação automática, sendo
capaz de compilar e carregar programas para a placa com um único clique. Com isso não há
a necessidade de editar Makefiles ou rodar programas em ambientes de linha de comando.
Tendo uma biblioteca chamada "Wiring", ele possui a capacidade de programar em C/C++.
Isto permite criar com facilidade muitas operações de entrada e saída, tendo que definir
apenas duas funções no pedido para fazer um programa funcional:
setup() – Inserida no inicio, na qual pode ser usada para inicializar configuração, e
loop() – Chamada para repetir um bloco de comandos ou esperar até que seja desligada.
O Arduino IDE usa o Conjunto de ferramentas GNU e o AVR Libc para compilar os
programas, para depois, com o avrdude, enviar os programas para a placa (ARDUINO).
Para este projeto, foi utilizado um Arduino Uno Rev3, uma vez que apresenta um baixo
custo e realiza todas as funções necessárias para o desenvolvimento.
Suas características são:
Tabela 4- Características Arduino Uno R3.
Fonte: http://www.ajudino.com/2013/05/diferenca-entre-os-modelos-de-arduino.html
Microcontrolador ATMega328P
Tensão de Operação 5V
Tensão de Entrada 7-12V
Tensão de Saída 6-20V
Pinos Digitais (Entrada/Saída) 14 (6 pinos PWM)
Pinos Analógicos (Entrada) 6
Corrente para entrada/saída 40mA
Corrente no pino 3,3V 50mA
Memória Flash 32Kb (ATMega328) 0,5 usado pelo bootloader
SRAM 2Kb (ATMega328)
EEPROM 1Kb (ATMega328)
Velocidade do Clock 16MHz
Outros tipos de Arduinos e suas principais utilizações:
38
- Arduino Mega 2560 – utilizado em projetos que necessitam mais memória e um
número maior de portas;
- Arduino Leonardo – possibilita manipular o teclado e mouse diretamente através do
sketch.
3.3. ETIQUETAS RFID DE BAIXA FREQUÊNCIA
As etiquetas (Tags) utilizadas neste projeto possuem as seguintes características:
- CI RFID baseado na ISSO EM4001
- Portadora 125kHz
- ASK 2kbps
- Codificação Manchester
- ID único 32 bits
- Stream de dados de 64 bits [Cabeçalho + ID + Dados + Paridade]
Para este desenvolvimento, foram adquiridas dez etiquetas, cada uma representando um
material diferente.
Figura 6 - Etiquetas utilizadas no projeto
39
3.4. VISUAL STUDIO
O Microsoft Visual Studio é um pacote de programas da Microsoft para
desenvolvimento de software especialmente dedicado ao .NET Framework e às linguagens
Visual Basic (VB), C, C++, C# (C Sharp) e J# (J Sharp). Também é um grande produto de
desenvolvimento na área web, usando a plataforma do ASP.NET. As linguagens com maior
frequência nessa plataforma são: VB.NET (Visual Basic.Net) e o C♯ (lê-se C Sharp)
(MICROSOFT VISUAL STUDIO).
Figura 7 - Tela inicial do Visual Studio
40
4. RESULTADOS E DISCUSSÕES
O intuito deste projeto foi aperfeiçoar um processo que é realizado dentro de uma
grande empresa situada na cidade de Sorocaba/SP. Este processo consiste num controle do
estoque de peças que serão utilizadas em serviços futuros.
Anteriormente ao projeto, este controle era feito de forma manual, onde um colaborador
recebia os produtos e os inseria em um planilha do Excel, conforme mostrado na Figura 8.
Figura 8 - Forma de Controle feito antigamente
Nele pode-se notar alguns campos que eram preenchidos como Código da Peça,
Quantidade, Descrição, Data Contratual, Comprador, Observação, entre outros.
Entretanto, além do processo ser lento, algumas peças se “perdiam” devido a erros
humanos.
Foi para solucionar estes problemas que este projeto foi criado. Utilizando-se etiquetas
de RFID nos produtos advindos de fornecedores, o controle seria feito através de um leitor,
onde o colaborador informaria alguns dados relativos aos mesmos. Além disto, gestores
seriam capazes de gerenciar seus estoques, podendo agir conforme necessidade e realizando
compras de produtos ou excluindo a possibilidade de gastos maiores, uma vez que os
estoques não seriam elevados.
Para tal, foram utilizadas dez etiquetas que possuiam as seguintes identificações:
41
Tabela 5 - Identificação de Etiquetas
Etiqueta Identificação Etiqueta Identificação
1 5800747746 6 50003E3136
2 580074D6DE 7 50003E5DB5
3 5800747BEF 8 58007484F8
4 580074DB2D 9 580074DCBD
5 580074BD45 10 580074D00E
Através da Tabela 5, pode-se verificar que cada etiqueta possui identificação única,
conforme visto em literatura.
Posto isto, ligou-se o Leitor ID-12 a um Arduino e este último ao computador, através
de uma comunicação serial. O circuito pode ser visto na figura abaixo:
Figura 9 - Circuito utilizado no Projeto
42
A arquitetura do projeto está de acordo com a Figura 10.
Figura 10 – Arquitetura do projeto
Fonte: http://bildr.org/blog/wp-content/uploads/2011/02/id-12-RFID.png
Como o intuito era a criação de um Sistema de Comunicação RFID via rede, foi
necessário a criação de um programa em linguagem C++ para configurar o Arduino. Para
isto, foi utilizado o seu programa padrão, que pode ser visto na figura abaixo:
43
Figura 11 - Tela inicial Software do Arduino
A programação utilizada está contida no Apêndice A.
Feito isto, partiu-se para a programação da interface do usuário, com o auxílio do Visual
Studio, utilizando-se linguagem C#.
Primeiramente foi feito o Menu, onde é mostrado as opções possíveis do programa. Isto
pode ser visto na Figura abaixo:
44
Figura 12 - Aba Menu
Nela pode-se ver a presença das seguintes opções: Cadastro de Produto, Buscar
Produto, Excluir Produto, Movimentação de Dados e Sair. A programação está contida no
Apêndice B.
Caso o usuário escolha a primeira opção, uma outra tela abrir-se-á:
45
Figura 13 - Aba Cadastro de Produtos
Nota-se apenas a possibilidade de se passar a etiqueta no leitor e feito isto, o usuário
deverá apertar o botão “Cadastrar”, para que sejam inseridos os dados complementares do
produto. O próximo passo é clicar em “Finalizar Cadastro”, onde os dados informados irão
para o Banco de Dados do programa ou clicar em “Cancelar Cadastro”, onde todos os
dados informados serão apagados e o usuário deverá passar a etiqueta novamente e
futuramente concluir o processo.
A programação desta aba está contida no Apêndice C.
Para efeito de simulação, foram cadastradas três etiquetas com os seguintes dados:
46
Tabela 6 - Dados contidos nas Etiquetas
Etiqueta 1
Etiqueta 2
TAG 5800747746
TAG 580074D6DE
Descrição Mancal
Descrição Parafusos
Cliente Vale Fertilizantes
Cliente Samarco
Máquina Britador HP 200
Máquina Britador C96
Data Chegada 19/03/2014
Data Chegada 11/05/2013
Fornecedor ADDN
Fornecedor Metso York
Quantidade 1
Quantidade 150
Ordem de
Venda 302056589
Ordem de
Venda 302056559
Ordem de
Serviço 201256578
Ordem de
Serviço 201256788
Valor R$ 1.000,00
Valor R$ 1.200,00
Observação
Solicitado em
11/01/13
Observação
Solicitado em
19/01/13
Etiqueta 3
TAG 5800747BEF
Descrição Chapa Espaçadora
Cliente Lafarge
Máquina Peneira Vibratória
Data Chegada 14/02/2014
Fornecedor Falk
Quantidade 1
Ordem de Venda 301956589
Ordem de Serviço 201698578
Valor R$ 15.000,00
Observação Solicitado em 11/02/13
47
Abaixo, cadastro da Etiqueta 1 no Banco de Dados.
Figura 14 - Exemplo de Cadastro
Para finalizar, bastou apenas clicar em “Finalizar Cadastro”, como exposto acima.
Outra funcionalidade do software é efetuar pesquisas dentro do Banco de Dados e isto
pode ser visto na Figura 15:
A programação desta aba está contida no Apêndice D.
48
Figura 15 – Aba Buscar Produto
Escolhida a forma de pesquisa, basta clicar em “Buscar Cadastro” e o mesmo aparecerá
na tela. Caso queira enxergar todos os produtos em estoque, apenas clique em “Buscar
Cadastro” e todos existentes serão exibidos, como mostrado na Figura 15.
Figura 16 - Exemplo de Pesquisa
49
Neste exemplo, foi utilizada a pesquisa sem filtros, ou seja, todos os produtos que
estavam presentes no Banco de Dados foram exibidos.
Note que as três etiquetas cadastradas aparecem na pesquisa. Para limpar os dados,
basta clicar em “Limpar Pesquisa”.
Outro busca possível é a de tags, onde o usuário deve escolher “TAG” dentre as opções
possíveis e então, passar a etiqueta pelo leitor para que as informações constem na tela.Há
também a possibilidade de excluir um ou mais itens do Banco de Dados. Para tal, basta
escolher a última opção “Excluir Produtos”.
A programação desta aba está contida no Apêndice E.
Figura 17 - Tela de Exclusão de Produto
Pode-se excluir quantos produtos forem necessários sem nenhuma ação do usuário.
Basta o mesmo escolher esta opção dentro do menu e iniciar a leitura das etiquetas. Elas
são excluídas automaticamente do Banco de Dados.
Como exemplo, foram excluídas as etiquetas 1 e 2, como pode-se ver na Figura 17.
50
Figura 18 - Exemplo de Exclusão de Produto
Voltando ao menu principal e realizando outra busca, tem-se:
Figura 19 - Resultado da Busca após a exclusão de dados
Pode-se observar que apenas a Chapa Espaçadora (Etiqueta 3) está contida no Banco de
Dados, ou seja, as outras 2 etiquetas foram excluídas de nosso estoque.
Todas estas informações referentes às alterações feitas no Banco de Dados estão
presentes na aba Movimentação de Dados, como mostrado abaixo:
51
Figura 20 - Log de Alterações
Pela figura 19, tem-se que foram feitas três inclusões (tags 1, 2 e 3) e duas exclusões
(tags 1 e 2), contabilizando cinco alterações no total.
E para finalizar, existe a opção “Sair” que exibe uma mensagem perguntando se o
usuário deseja realmente sair do programa.
52
Figura 21 - Saída do Software
Escolhendo a opção “Yes”, o programa encerra-se e o usuário volta ao ambiente de seu
computador.
53
4.1. FLUXOGRAMA DO SOFTWARE
A Figura 22 mostra um fluxograma esquemático do Software.
Figura 22- Fluxograma do Software
Neste pode-se observar os caminhos possíveis durante a utilização do software.
54
5. COMENTÁRIOS FINAIS E CONCLUSÕES
Após a realização deste projeto, há a possibilidade de um gerenciamento de estoques
via rede de forma segura, onde os dados lidos através de etiquetas de RFID são guardados
em Bancos de Dados.
O cadastro destes produtos é feito de acordo com as características dos mesmos e de
forma bem simples e prática, através do uso de um Leitor ID-12 de etiquetas RFID
passivas, com frequência de 125 KHz e distância de leitura de até 12 cm.
Estes dados são facilmente acessados através do software criado, possibilitando que as
pessoas responsáveis pelo gerenciamento destes itens, possam planejar compras e vendas
de produtos de uma forma mais rápida e eficiente.
Há também a possibilidade de exclusão destes produtos de uma forma automatizada,
sem necessidade de mão de obra, podendo excluir desde pequenas quantidades de produtos,
até pallets cheios dos mesmos.
Para que haja um monitoramento destas transações, foi criado um log de
movimentações, onde cada alteração, seja ela inclusão ou exclusão de produtos, é inserida
neste outro Banco de Dados com a data e hora das mesmas.
Uma característica deste projeto é o seu caráter genérico, uma vez que o mesmo pode
ser utilizado em diferentes tipos de aplicações, tais como:
- Aplicações médicas: usando dispositivos por baixo da pele, pessoas poderiam ter
todos os seus dados referentes à saúde em um banco de dados, facilitando o trabalho em
hospitais e agilizando processos hospitalares;
- Controle de Acesso: Dispositivos RFID inseridos em carros podem liberar entradas
em condomínios residenciais por exemplo. A etiqueta é reconhecida pelo leitor e sua
identificação é buscada em um banco de dados, permitindo a liberação de sua entrada.
Prática muito utilizada nos dias de hoje;
55
- Transportes Aéreos: Utilização de etiquetas em malas de passageiros visando um
controle sobre a localização de seus pertences, diminuindo assim, perdas de acessórios;
- Linha de Montagem Industrial: Uma aplicação bastante promissora para a
tecnologia RFID está nas linhas de montagens de veículos ou de máquinas industriais.
Nesse tipo de indústria, normalmente os produtos se movimentam com velocidade
constante e não podem reduzir a marcha para leitura.
- Utilização em Pequenos Negócios: Este projeto pode ser utilizado em pequenos
negócios como lojas de roupas, armazéns, entre outros.
Com o RFID todo o processo de montagem pode ser monitorado desde o início até a
entrega final do produto ao consumidor, facilitando, inclusive, o acompanhamento nos
casos de manutenção;
Ou seja, com algumas alterações neste projeto é possível criar inúmeras formas de
controles utilizando bancos de dados para diferentes aplicações.
Enfim, o projeto atendeu as expectativas propostas e proporcionou uma melhoria no
sistema de gerenciamento de estoques, criando uma nova possibilidade de processo nesta
área.
56
6. REFERÊNCIAS
DAL-RY, S. Controlar Estoques, uma necessidade. Disponível em:
<http://dalryassessoria.blogspot.com.br/2012/11/controlar-estoques-uma-
necessidade.html>. Acesso em 26/04/13.
HESSEL, F. et al. Implementando RFID na Cadeia de Negócios. Porto Alegre: Edipucrs,
2009, v. 1
KORTH, H.F.;SILBERSCHATZ, A. Sistemas de Bancos de Dados. Makron Books, 2ª
edição revisada, 1994.
FOROUZAN, B. A. Comunicacao de Dados e Redes de Computadores, 4ª edição,
eBook ISBN 13 978-0-07-296775-3.
DUARTE, O. C. M. B. RFID – Radio Frequency Identificator. Disponível em:
<http://www.gta.ufrj.br/grad/10_1/RFID/historia.html>. Acesso em 25/04/13.
DIAS, M. A. P. Administração de materiais: edição compacta. 4ª ed. São Paulo: Atlas,
1995.
TUTORIAL REPORTS. RFID Introduction. Disponível em: <http://www.tutorial-
reports.com/wireless/RFID/introduction.php>. Acesso em 25/04/13.
TELECOM HALL. O que é antena? Disponível em: <http://www.telecomhall.com/br/o-
que-e-antena.aspx>. Acesso em 17/02/14.
HESSEL, F. Chips, tags, leitores e antenas. In: Introdução ao RFID para inovação nos
negócios.,I.S.I. de Soluções em Negócios em RFID, Ed. 2008.
SIGHT, S.V.B. Quick Start Guide, v.1.3.1.
GLOVER, B; BHATT, H. Fundamentos de RFID. Alta Books, 2007.
IDENTIFICAÇÃO POR RADIOFREQUÊNCIA. In: Wikipédia: a enciclopédia livre.
Disponível em:
<http://pt.wikipedia.org/wiki/Identifica%C3%A7%C3%A3o_por_radiofrequ%C3%AAncia
>. Acessado em 20/02/14.
57
ARDUINO. In: Wikipédia: a enciclopédia livre. Disponível em:
<http://pt.wikipedia.org/wiki/Arduino>. Acessado em 27/02/2014.
PACIEVITCH, Y. C#. Disponível em: <http://www.infoescola.com/informatica/c-sharp/>.
Acessado em 13/03/2014.
REBOUÇAS, F. Rede de Computadores. Disponível em
<http://www.infoescola.com/informatica/rede-de-computadores/>. Acessado em
13/03/2014.
OFICINA DA NET. Tudo sobre o Microsoft Access. Disponível em
<http://www.oficinadanet.com.br/artigo/790/tudo_sobre_o_microsoft_access>. Acessado
em 13/03/2014.
MICROSOFT VISUAL STUDIO. In: Wikipédia: a enciclopédia livre. Disponível em
<http://pt.wikipedia.org/wiki/Microsoft_Visual_Studio>. Acessado em 17/03/2014.
IRWIN, J. D. Industrial Communication Systems. CRC Press 2011, eBook ISBN: 978-1-
4398-0282-3.
ID INNOVATIONS. ID Series Datasheet. 2005. Disponível em:
<https://www.sparkfun.com/datasheets/Sensors/ID-12-Datasheet.pdf>. Acessado em:
21/03/2014.
COULOURIS, G., DOLLIMORE, J.,KINDBERG, T. Distributed Systems: Concepts and
Design. Addison Wesley/Pearson Education. 2005.
58
APÊNDICE A – CÓDIGO ARDUINO
void setup ()
{
Serial.begin(9600); // Conecta-se a porta Serial 9600
}
void loop ()
{
byte i = 0; // Inicialização de Variáveis
byte val = 0;
byte code[6];
byte checksum = 0;
byte bytesread = 0;
byte tempbyte = 0;
if(Serial.available() > 0) // Leitura de 10 digitos + 2 digitos de checksum
{
if((val = Serial.read()) == 2)
{
bytesread = 0;
while (bytesread < 12)
{
if( Serial.available() > 0)
{
val = Serial.read();
if((val == 0x0D)||(val == 0x0A)||(val == 0x03)||(val == 0x02))
{
break;
}
59
if ((val >= '0') && (val <= '9')) // Conversão de ASCII para
//Hexadecimal
{
val = val - '0';
}
else if ((val >= 'A') && (val <= 'F'))
{
val = 10 + val - 'A';
}
if (bytesread & 1 == 1)
{
code[bytesread >> 1] = (val | (tempbyte << 4));
if (bytesread >> 1 != 5)
{
checksum ^= code[bytesread >> 1];
};
}
else
{
tempbyte = val;
};
bytesread++;
}
}
// Saída de dados para a porta Serial
if (bytesread == 12)
60
{ // Caso a leitura seja completa
for (i=0; i<5; i++)
{
if (code[i] < 16) Serial.print("0");
Serial.print(code[i], HEX);
}
Serial.println();
}
bytesread = 0; }}}
61
APÊNDICE B – ABA MENU
using System; //Bibliotecas padrões do Visual Studio
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Inventory
{
public partial class Menu : Form
{
public Menu()
{
InitializeComponent();
}
private void sairToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close(); // Esta aba é fechada ao clicar no botão X
}
private void cadastroDeProdutoToolStripMenuItem_Click(object sender,
EventArgs e)
{
62
Adicionar a = new Adicionar(); //Ao ser selecionado o item Adicionar
//Produto, a aba correspondente é aberta
a.ShowDialog();
}
private void buscarProdutoToolStripMenuItem_Click(object sender, EventArgs e)
{
Alterar a = new Alterar(); //Ao ser selecionado o item Alterar Produto,
//a aba correspondente é aberta
a.ShowDialog();
}
private void excluirProdutoToolStripMenuItem_Click(object sender, EventArgs e)
{
Excluir a = new Excluir(); //Ao ser selecionado o item Excluir Produto
//a aba correspondente é aberta
a.ShowDialog();
}
private void Menu_FormClosed(object sender, FormClosedEventArgs e)
{
if (MessageBox.Show("Deseja fechar o programa?", "Aviso",
MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
Application.Exit(); // Caso seja escolhida a opção Sair, o programa
//pergunta se o usuário Deseja fechar o programa.
}
}
}}
63
APÊNDICE C – ABA ADICIONAR PRODUTO
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb; // Biblioteca de Banco de Dados
namespace Inventory
{
public partial class Adicionar : Form // Inicializa a Planilha de Banco de Dados
{
static string _Arquivo = @"" + Application.StartupPath + "\\Dados.accdb";
static string strconn =
String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + _Arquivo +
";Persist Security Info=False;");
string vsql, tag, descricao, cliente, maquina, chegada, fornecedor, qtd, ov, os,
valor, obs, RxString = "";
public Adicionar()
{
InitializeComponent();
add_tb_Tag.Focus();
}
64
private void Adicionar_Load(object sender, EventArgs e)
{
serialPort1.PortName = "COM5"; // Define a COM5 como porta de
//entrada da comunicação serial
serialPort1.BaudRate = 9600;
add_tb_Tag.Focus();
gb2.Enabled = false;
serialPort1.Open();
}
private void Adicionar_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close(); // Caso o usuário queira sair,
//a porta serial é fechada
}
private void add_bt_cadastro_Click(object sender, EventArgs e)
{
gb2.Enabled = true;
gb1.Enabled = false;
bt_finalizar.Enabled = true;
bt_cancelar.Enabled = true;
}
private void add_tb_Tag_KeyPress(object sender, KeyPressEventArgs e)
{
// se a porta estiver fechada, não será enviado um caracter
65
if (!serialPort1.IsOpen) return;
// Se a porta estiver aberta, declarar um char com um elemento
char[] buff = new char[1];
buff[0] = e.KeyChar;
serialPort1.Write(buff, 0, 1);
e.Handled = true;
}
private void serialPort1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e)
{
RxString = serialPort1.ReadExisting(); // A variável RxString recebe o dado
que está sendo lido
this.Invoke(new EventHandler(DisplayText));
}
private void DisplayText(object sender, EventArgs e)
{
add_tb_Tag.AppendText(RxString); // O valor contido na variável
// RxString é jogado no TextBox
}
private void bt_limpar_Click(object sender, EventArgs e)
{
add_tb_Tag.Clear();
add_tb_Tag.Focus();
add_tb_Tag.Enabled = true;
add_bt_cadastro.Enabled = true;
}
66
private void bt_cancelar_Click(object sender, EventArgs e)
{
tb_chegada.Clear(); // Limpeza dos campos
tb_descriçao.Clear();
tb_ov.Clear();
tb_cliente.Clear();
tb_contratual.Clear();
tb_os.Clear();
tb_maquina.Clear();
tb_qtd.Clear();
tb_valor.Clear();
tb_obs.Clear();
gb2.Enabled = false;
gb1.Enabled = true;
add_tb_Tag.Focus();
}
private void bt_voltar_Click(object sender, EventArgs e)
{
this.Close(); // Fecha a aba.
}
private void bt_finalizar_Click(object sender, EventArgs e)
{
try
{
tag = add_tb_Tag.Text; // Insere os valores enviados pelo usuário para as
respectivas variáveis.
descricao = tb_descriçao.Text;
67
cliente = tb_cliente.Text;
maquina = tb_maquina.Text;
chegada = tb_chegada.Text;
fornecedor = tb_contratual.Text;
qtd = tb_qtd.Text;
ov = tb_ov.Text;
os = tb_os.Text;
valor = tb_valor.Text;
obs = tb_obs.Text;
OleDbConnection Conn = new OleDbConnection(strconn); // Inicializa o
Banco de Dados
OleDbCommand cmd = new OleDbCommand("", Conn);
vsql = "INSERT INTO
Dados([TAG],[Descricao],[Cliente],[Maquina],[Data_Chegada],[Fornecedor],[Quantida
de],[OV],[OS],[Valor],[Observação]) VALUES ('" + tag + "','" + descricao + "','" +
cliente + "','" + maquina + "','" + chegada + "','" + fornecedor + "','" + qtd + "','" + ov +
"','" + os + "','" + valor + "','" + obs + "')";
cmd.CommandText = vsql; // Os valores das variáveis são jogados
// no Banco de Dados
Conn.Open();
cmd.ExecuteNonQuery();
Conn.Close();
}
catch (OleDbException ex)
{
MessageBox.Show("Erro ao se conectar com o banco de dados :" + ex,
"Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
// Caso ocorra erro, esta informação é passada
}
tb_chegada.Clear(); // Limpa os campos
68
tb_descriçao.Clear();
tb_ov.Clear();
tb_cliente.Clear();
tb_contratual.Clear();
tb_os.Clear();
tb_maquina.Clear();
tb_qtd.Clear();
tb_valor.Clear();
tb_obs.Clear();
add_tb_Tag.Clear();
gb2.Enabled = false;
gb1.Enabled = true;
add_tb_Tag.Focus();
}
}
}
69
APÊNDICE D – ABA BUSCAR PRODUTO
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb; // Biblioteca de Banco de Dados
namespace Inventory
{
public partial class Alterar : Form // Inicializa a Planilha de Banco de Dados
{
static string _Arquivo = @"" + Application.StartupPath + "\\Dados.accdb";
static string strconn =
String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + _Arquivo +
";Persist Security Info=False;");
string vsql, busca;
public Alterar()
{
InitializeComponent();
}
private void bt_voltar_Click(object sender, EventArgs e)
{
70
this.Close();
}
private void alterar_bt_buscar_Click(object sender, EventArgs e)
{
try
{
OleDbConnection conn = new OleDbConnection(strconn);
// Conecta-se ao Banco de Dados
OleDbCommand cmd = new OleDbCommand("", conn);
busca = alterar_tb_buscar.Text;
if (alterar_rb_descricao.Checked)
// Caso esteja selecionada a opção "Descrição"
{
vsql = "SELECT
[TAG],[Descricao],[Cliente],[Maquina],[Data_Chegada],[Fornecedor],[Quantidade],[O
V],[OS],[Valor] FROM Dados WHERE Descricao LIKE '%" + busca + "%'";
}
else if (alterar_rb_cliente.Checked)
// Caso esteja selecionada a opção "Cliente"
{
vsql = "SELECT
[TAG],[Descricao],[Cliente],[Maquina],[Data_Chegada],[Fornecedor],[Quantidade],[O
V],[OS],[Valor] FROM Dados WHERE Cliente LIKE '%" + busca + "%'";
}
else if (alterar_rb_maquina.Checked)
// Caso esteja selecionada a opção "Máquina"
{
vsql = "SELECT
[TAG],[Descricao],[Cliente],[Maquina],[Data_Chegada],[Fornecedor],[Quantidade],[O
V],[OS],[Valor] FROM Dados WHERE Maquina LIKE '%" + busca + "%'";
71
}
else if (alterar_rb_chegada.Checked)
// Caso esteja selecionada a opção "Data Chegada"
{
vsql = "SELECT
[TAG],[Descricao],[Cliente],[Maquina],[Data_Chegada],[Fornecedor],[Quantidade],[O
V],[OS],[Valor] FROM Dados WHERE Data_Chegada LIKE '%" + busca + "%'";
}
else if (alterar_rb_fornecedor.Checked)
// Caso esteja selecionada a opção "Fornecedor"
{
vsql = "SELECT
[TAG],[Descricao],[Cliente],[Maquina],[Data_Chegada],[Fornecedor],[Quantidade],[O
V],[OS],[Valor] FROM Dados WHERE Fornecedor LIKE '%" + busca + "%'";
}
else if (alterar_rb_ov.Checked)
// Caso esteja selecionada a opção "OV"
{
vsql = "SELECT
[TAG],[Descricao],[Cliente],[Maquina],[Data_Chegada],[Fornecedor],[Quantidade],[O
V],[OS],[Valor] FROM Dados WHERE OV LIKE '%" + busca + "%'";
}
else if (alterar_rb_os.Checked)
// Caso esteja selecionada a opção "OS"
{
vsql = "SELECT
[TAG],[Descricao],[Cliente],[Maquina],[Data_Chegada],[Fornecedor],[Quantidade],[O
V],[OS],[Valor] FROM Dados WHERE OS LIKE '%" + busca + "%'";
}
alterar_gb1.Enabled = false;
72
cmd.CommandText = vsql;
conn.Open();
cmd.ExecuteNonQuery();
OleDbDataAdapter da = new OleDbDataAdapter(vsql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
conn.Close();
// Ao ser feita a pesquisa, a informação abaixo é exibida
MessageBox.Show("Pesquisa Concluida!", "Aviso!",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (OleDbException ex)
// Caso ocorra erro ao se conectar com o Banco de Dados,
//é aberta uma informação.
{
MessageBox.Show("Erro ao conectar com o banco :" + ex, "Erro",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void alterar_limpar_Click(object sender, EventArgs e)
{
alterar_tb_buscar.Clear();
// Esta opção limpa a pesquisa.
if (this.dataGridView1.DataSource != null)
{
this.dataGridView1.DataSource = null;
}
73
else
{
this.dataGridView1.Rows.Clear();
}
alterar_gb1.Enabled = true;
alterar_tb_buscar.Focus();
}
private void Alterar_Load(object sender, EventArgs e)
{
alterar_rb_descricao.Checked = true;
}
}
}
74
APÊNDICE E – EXCLUIR PRODUTO
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb; // Biblioteca de Banco de Dados
namespace Inventory
{
public partial class Excluir : Form
// Inicializa a Planilha de Banco de Dados
{
public string RxString, vsql;
static string _Arquivo = @"" + Application.StartupPath + "\\Dados.accdb";
static string strconn =
String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + _Arquivo +
";Persist Security Info=False;");
public Excluir()
{
InitializeComponent();
tb_excluir.Focus();
}
75
private void Excluir_Load(object sender, EventArgs e)
{
RxString = null;
serialPort1.PortName = "COM5";
// Define a COM5 como porta de entrada da comunicação serial
serialPort1.BaudRate = 9600;
serialPort1.Open();
}
private void Excluir_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close();
// Caso o usuário queira sair, a porta serial é fechada
}
private void excluir_bt_voltar_Click(object sender, EventArgs e)
{
serialPort1.Close();
// Caso o usuário queira sair, a porta serial é fechada
this.Close();
}
private void DisplayText(object sender, EventArgs e)
{
tb_excluir.AppendText(RxString);
try
{
//Conexão com Banco de Dados
OleDbConnection Conn = new OleDbConnection(strconn);
OleDbCommand cmd = new OleDbCommand("", Conn);
76
vsql = "DELETE FROM Dados WHERE TAG LIKE '%" +
RxString.Replace("\r\n", "") + "%'";
// Deleta o dado pedido
cmd.CommandText = vsql;
Conn.Open();
cmd.ExecuteNonQuery();
Conn.Close();
RxString = "";
}
catch (OleDbException ex)
// Caso ocorra erro, esta informação é passada
{
MessageBox.Show("Erro ao se conectar com o banco de dados :" + ex,
"Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
tb_excluir.Focus();
}
private void serialPort1_DataReceived_1(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e)
{
RxString += serialPort1.ReadExisting();
if (RxString.IndexOf("\n") ==11)
// Verifica se o dado foi lido por completo.
{
this.Invoke(new EventHandler(DisplayText));
}
}
private void tb_excluir_KeyPress(object sender, KeyPressEventArgs e)
77
{
// se a porta estiver fechada, não será enviado um caracter
if (!serialPort1.IsOpen) return;
// Se a porta estiver aberta, declarar um char com um elemento
char[] buff = new char[1];
buff[0] = e.KeyChar;
serialPort1.Write(buff, 0, 1);
e.Handled = true;
}}}