Anda di halaman 1dari 90

UNIVERSIDADE POSITIVO

SISTEMA DE RASTREABILIDADE DE PROCESSO UTILIZANDO


RFID COM TECNOLOGIA ZIGBEE

CURITIBA
2009

SERGIO A. CHEUTCHUK
TIAGO CELUPPI

SISTEMA DE RASTREABILIDADE DE PROCESSO UTILIZANDO RFID COM


TECNOLOGIA ZIGBEE

Monografia apresentada ao Curso de


Engenharia Eltrica da Universidade
Positivo, para obteno de avaliao
parcial da disciplina de Trabalho de
Concluso de Curso (TCC), como
requisito a obteno do grau de
Engenheiro Eletricista, sob a orientao
do Prof. Fabiano Zaruch Chinasso

CURITIBA
2009

SERGIO A. CHEUTCHUK
TIAGO CELUPPI

SISTEMA DE RASTREABILIDADE DE PROCESSO UTILIZANDO RFID COM


TECNOLOGIA ZIGBEE

Este trabalho foi julgado adequado e aprovado para a obteno do ttulo de


graduao em
Engenharia de Eltrica da Universidade Positivo
Curitiba, 30 de outubro de 2009
_____________________________________
Prof. Ms. Salmo Pustilnick
Coordenador do Curso de Engenharia Eltrica
BANCA EXAMINADORA:
_____________________________________
Prof. Ms. Fabiano Zaruch Chinasso
Universidade Positivo
Orientador
_____________________________________
Prof. Esp. Leonardo Gomes Tavares
Universidade Positivo
Banca

AGRADECIMENTOS
Dedico este trabalho a minha esposa Elena, meus filhos Joo Gabriel e Guilherme e
aos meus pais Mariano e Maria (in memorian). Sei que a diviso do tempo entre
Universidade e vocs, no foi justa nos ltimos anos, mas de corao obrigado pela
pacincia e apoio. Sem vocs no teria conseguido mais esta Vitria.
Sergio Antonio Cheutchuk
Dedico este trabalho a minha esposa Fernanda, a meus pais Vanderlei e Maria
Alice(in memorian). Que me apoiaram em todos os momentos para que conclusse
este projeto.
Tiago Celuppi

S aqueles que tm pacincia para fazer coisas


simples com perfeio que iro adquirir habilidade
para fazer coisas difceis com facilidade.
Johann Christoph Von Schiller

RESUMO
O trabalho consiste no desenvolvimento de um Sistema de rastreabilidade de
processo, resultado de um estudo de caso numa linha de refrigeradores e aplicao
de tecnologias inovadoras do mercado como: RFID (identificao atravs de radio
freqncia), comunicao wirelles usando padro ZigBee IEEE 802.15.4, software
de aquisio de dados em Django e Python (Linux) com banco de dados SQLite.
Estas tecnologias so aplicadas para o desenvolvimento de um dispositivo usando
um microcontrolador PIC 18F452 da Microchip. Este dispositivo realiza uma
interface homem mquina com o usurio operador da estao de trabalho do
processo em anlise e com o servidor que o gerenciador do Sistema de
Rastreabilidade.
O Sistema visa garantir que todos os produtos fabricados nas
linhas de montagem tenham sido aprovados nos pontos de inspeo e testes
durante o processo de montagem, sendo que os dados adquiridos durante o
processo de montagem do produto, tais como resultados dos testes so
armazenados em um banco de dados para consultas posteriores.
Palavras chaves: Rastreabilidade, RFID, Wireless e ZigBee

LISTA DE ILUSTRAES
Figura 1: Diagrama em Blocos do Sistema de Rastreabilidade.................................16
Figura 2: Esquemtica do Sistema Bsico de RFID...................................................22
Figura 3: Posicionamento do Padro ZigBee.............................................................24
Figura 4: Camadas de protocolos ZigBee...................................................................26
Figura 5: Diagrama de bloco Geral.............................................................................28
Figura 6: Tag AcuProx ...............................................................................................31
Figura 7: Descrio dos pinos de conexo do PIC18F452.........................................34
Figura 8: Diagrama de caso de uso geral...................................................................38
Figura 9: Diagrama de caso de uso comunicao......................................................38
Figura 10: Diagrama de caso de uso comunicao....................................................39
Figura 11: Diagrama de caso de uso IHM..................................................................39
Figura 12: Diagrama de caso de uso consulta e incluso banco de dados...............40
Figura 13: Desenvolvimento em Laboratrio..............................................................41
Figura 14: Kit PIC Genios............................................................................................42
Figura 15: Tela 1 do LCD (Tela Inicial) ......................................................................43
Figura 16: Tela 2 do LCD (Digite a opo do menu) .................................................44
Figura 17: Tela 3 do LCD (Digite o cdigo do operador) ...........................................44
Figura 18: Tela 4 do LCD (Digite o cdigo da estao de trabalho) ..........................45
Figura 19: Tela 5 do LCD (Digite o cdigo do operador) ...........................................45
Figura 20: Testes usando o software RCom Serial ...................................................46
Figura 21: Sinais recebidos na interrupo RB0 do PIC 18F452 atraves do
osciloscopio.................................................................................................................47
Figura 22: Configurao dos Mdulos Xbee usando o Software X-CTU ..................48
Figura 23: placa CON-USBBEE .................................................................................49
Figura 24: Boto Reset e LEDs indicadores da placa CON-USBBEE.......................49
Figura 25: Circuito em protoboard em testes..............................................................50
Figura 26: Tela 6 do LCD (Visulalizacao dos dados sendo enviados ao Gerenciador
do Sistema de Rastreabilidade) .................................................................................51
Figura 27: Circuito final em placa definitiva................................................................52
.....................................................................................................................................52

Figura 28: Produto final ( Apresentao IV Painel de Engenharia 2009)...................53


Figura 29: Sistema de Rastreabilidade ......................................................................53
Figura 30: Tela de Consulta do Sistema de Rastreabilidade ...................................54
Figura 31: Estrutura do programa no diretrio do servidor.........................................55
Figura 31: Modelagem dos dados Django..................................................................56

LISTA DE TABELAS
Tabela 1: Tabela de conexes do leitor......................................................................33
Tabela 2: Tabela de conexes de sada serial RS232 padro ASCII.......................33
Tabela 3: Caracterstica do LCD................................................................................36
Tabela 4: especificaes dos custos..........................................................................57
Tabela 5: Tabela de Comunicao PC - PIC .............................................................60
Tabela 6: Tabela de Comunicao PC - PIC .............................................................60

LISTA DE ABREVIATURAS
ISO - International Organization for Standardization
RFID - radio frequency identification
RF - Radio frequency
WLAN - Wireless Local Area Network
WMAN -Wireless Metropolitan Area Network
WWAN - Wide Area Network
TAG - etiqueta RFID
WPAN - Wireless Personal Area Network
PAN - Personal Area Network
IEEE - Institute of Electrical and Eletronics Engineers
PC - Personal Computer
LCD - liquid crystal display
NBR - norma da Associao Brasileira de Normas Tcnicas
EPC - Electronic Product Code

SUMRIO
1 INTRODUO.......................................................................................................12
1.1 PROBLEMA.....................................................................................................14
1.2 JUSTIFICATIVA...............................................................................................14
1.3 OBJETIVOS ESPECFICOS...........................................................................15
2 FUNDAMENTAO TERICA..............................................................................17
2.1 RASTREABILIDADE.......................................................................................17
2.2 CARTAS DE CONTROLE DE PROCESSO...................................................18
2.3 SOFTWARE PARA RASTREABILIDADE.......................................................18
2.3.1 Nvel de programao e manuteno.......................................................18
2.3.2 Nvel de usurio........................................................................................19
2.4 TECNOLOGIA RFID........................................................................................20
2.4.1 RFID - Identificao por Radiofrequncia.................................................20
2.4.2 Utilizao...................................................................................................21
2.4.3 Processo de Comunicao.......................................................................21
2.4.4 Componentes da RFID.............................................................................21
2.4.5 Faixas de Frequncia................................................................................22
2.5 TECNOLOGIA ZIGBEE...................................................................................23
2.5.1 Wireless.....................................................................................................23
2.5.2 ZigBee.......................................................................................................24
2.5.3 Caractersticas do Padro ZigBee............................................................25
2.5.4 Camadas de Protocolos............................................................................25
2.5.5 Segurana.................................................................................................27
2.5.6 Tipos de Trfego.......................................................................................27
3 ESPECIFICAO TCNICA.................................................................................28
3.1 VISO GERAL DO PROJETO........................................................................28
3.1.1 Tag............................................................................................................29
3.1.2 Leitor de rdio freqncia.........................................................................29
3.1.3 Microcontrolador.......................................................................................29
3.1.4 Dispositivos de Entrada............................................................................29
3.1.5 Dispositivo de Sada.................................................................................29

3.1.6 Software de aquisio e processamento dos dados................................30


3.1.7 Banco de dados........................................................................................30
3.2 DESCRIO FUNCIONAL DOS BLOCOS....................................................30
3.2.1 Tag............................................................................................................30
3.2.2 Leitor por rdio frequncia........................................................................32
3.2.3 Microcontrolador.......................................................................................33
3.2.4 Dispositivos de Entrada e Sada...............................................................34
3.2.5 Software de aquisio e processamento de dados..................................35
3.2.6 Banco de dados........................................................................................35
3.3 DIMENSIONAMENTO E MEMORIAL DE CLCULO.....................................35
3.3.1 Circuito regulador de tenso.....................................................................35
3.3.2 Circuito do microcontrolador.....................................................................36
3.3.3 Circuito do leitor por rdio freqncia.......................................................36
3.4 PROGRAMAO............................................................................................37
3.4.1 Descrio Geral........................................................................................37
3.5 Planejamento...................................................................................................37
3.5.1 Diagramas de caso de uso.......................................................................38
3.5.1.1 Caso de uso geral..............................................................................38
3.5.1.2 Caso de uso Comunicao................................................................38
3.5.1.3 Caso de uso leitura Tag.....................................................................38
3.5.1.4 Caso de uso Interface IHM.................................................................39
3.5.1.5 Caso de uso consulta, incluso Banco de dados..............................39
4 IMPLEMENTAO................................................................................................41
4.1 DESCRIO DA MONTAGEM.......................................................................41
4.2 TESTES, MEDIES E CONFIGURAES.................................................42
4.2.1 Testes com o Kit PicGenios......................................................................42
4.2.2 Construo dos menus de navegao usando a IHM (Teclado Matricial e
LCD).....................................................................................................................43
4.2.3 Testes com o RFID...................................................................................45
4.2.4 Testes com os mdulos wireless Xbee....................................................47
4.2.5 Testes e montagem em protoboard..........................................................50

4.2.6 Testes de interface IHM e Gerenciador....................................................51


4.2.7 Testes e montagem do hardware definitivo..............................................52
4.3 SOFTWARE DO PIC E APLICAO..............................................................54
4.3.1 Estrutura do Programa do PIC18F452.....................................................54
4.3.2 Cdigo Fonte do PIC18F452....................................................................54
4.3.3 Estrutura do Programa da Aplicao........................................................55
4.3.4 Cdigo Fonte da Aplicao ......................................................................57
4.4 CUSTOS DO PROJETO.................................................................................57
4.5 COMPONENTES E MATERIAIS.....................................................................57
5 RESULTADOS.......................................................................................................58
5.1 Leitura da Tag RFID ....................................................................................58
5.2 Microcontrolador PIC 18F452..........................................................................58
5.3 Display e Teclado............................................................................................59
5.4 Comunicao Wireless....................................................................................59
5.5 Software e Banco de Dados............................................................................59
6 CONSIDERAES FINAIS E CONCLUSES.....................................................61
7 REFERENCIAS.....................................................................................................63

INTRODUO
O sistema de rastreabilidade visa garantir que todos os produtos fabricados

na linha de montagem tenham sido aprovados nos pontos de inspeo e testes


durante o processo de montagem, sendo que os dados adquiridos durante o
processo de montagem do produto, tais como resultados dos testes sero
armazenados para consulta posteriores. Para a norma ISO 9000 existe o critrio de
normalizao e uma organizao deve seguir alguns passos e atender a alguns
requisitos para serem certificadas. Um requisito entre vrios outros implementar e
manter os registros adequados e necessrios para garantir a rastreabilidade do
processo. ISO (2007).
A tecnologia de RFID (Radio Frequency Identification identificao por
radiofreqncia) nada mais do que um termo genrico para as tecnologias que
utilizam a freqncia de rdio para captura de dados de identificao. Por isso
existem diversos mtodos de identificao, mas o mais comum armazenar um
nmero de srie que identifique uma pessoa ou um objeto, ou outra informao, em
um microchip. Tal tecnologia permite a captura automtica de dados, para
identificao de objetos com dispositivos eletrnicos, conhecidos como etiquetas
eletrnicas, tags, RF tags ou transponders, que emitem sinais de radiofreqncia
para leitores que captam estas informaes. Ela existe desde a dcada de 40 e veio
para complementar a tecnologia de cdigo de barras, bastante difundida no mundo.
UNIVERSIDADE FEDERAL DO RIO DE JANEIRO (2009).
A comunicao sem fio (ou wireless) j est inclusa na sociedade h anos
como as redes WLANs, WMANs, WWANs, todas voltadas para usurios finais de
pequenas, mdias e grandes empresas, onde o objetivo a transferncia de
grandes volumes de dados e voz em altas velocidades. So poucas as Redes
wireless destinadas exclusivamente ao controle de dispositivos como rels, trancas
eletromagnticas, ventilao, aquecimento, motores, eletrodomsticos, brinquedos,
aquisio de dados de sensores, como temperatura, luminosidade, umidade,
presso etc. WPAN (wireless PAN, wireless personal area network) est
normalmente associada ao Bluetooth. Pode ser vista com a interao entre os
12

dispositivos mveis de um usurio. A WPAN projetada para pequena distncia,


baixo custo e baixas taxas de transferncia. Dentre as Redes WPAN (Wireless
Personal rea Network) existentes, a mais recente e promissora a que usa o
padro ZigBee IEEE 802.15.4. A ZigBee Alliance quem desenvolve o padro
ZigBee junto ao IEEE (Institute of Electrical and Eletronics Engineers), atravs da
associao de vrias empresas, que juntas, trabalham em conjunto para
proporcionar e desenvolver tecnologias para criar um padro de baixo consumo de
energia, baixo custo, segurana, confiabilidade, e com funcionamento em rede sem
fios baseado em uma norma aberta global. ROGERCOM (2009).
A integrao dos Sistemas de Gerenciamento de Bancos de Dados (SGBDs)
com a Web vem sendo impulsionada pela grande expanso da tecnologia Web nos
ltimos anos aliada demanda por mais informaes e por formas mais eficientes
para busca e armazenamento de dados. Como vantagens da integrao, tem-se que
os SGBDs acrescentam Web mecanismos operacionais eficientes e robustos para
o acesso e manuteno e;o da consistncia dos dados. Surgiram, porm, inmeros
problemas tcnicos decorrentes do uso conjunto das duas tecnologias. A
compatibilidade entre elas implementada em produtos de software chamados
gateways, cuja funo interfacear o ambiente Web com os SGBDs, permitindo que
as aplicaes lancem mo dos recursos desenvolvidos isoladamente em cada um
deles. As arquiteturas de integrao (i.e., os gateways) apresentam uma grande
diversidade de caractersticas e funcionalidades quando comparadas segundo
critrios de local de execuo (cliente, servidor Web, servidor de Banco de Dados);
desempenho; facilidade para o desenvolvimento das aplicaes e portabilidade;
aspectos transacionais; reaproveitamento de sistemas legados. A anlise do
software integrador segundo esses parmetros ir determinar a sua adequao ao
ambiente operacional particular da Organizao. BARROSO(2009)
No presente trabalho proposto o desenvolvimento de um sistema que utilize
a tecnologia RFID para ler o cdigo de identificao do produto nos diversos pontos
de inspeo e teste, essa transmisso e recepo dos dados ocorrem entre a
IHM(Interface homem mquina) e o servidor, atravs da tecnologia das redes ZigBee
(rede wireless) onde realizado o processamento da informao gerado pelo RFID
13

na IHM e encaminhado para o servidor, aps a verificao no banco de dados


retornado esta informaes para a IHM, que fica responsvel de mostrar o resultado
para o usurio e obter dados referente a rastreabilidade assim garantir que o produto
passou por todos os testes de qualidade estando pronto para ser comercializado.

1.1

PROBLEMA

A evoluo do cho-de-fbrica tem sido significativa nas ltimas dcadas,


quando grandes investimentos tm sido realizados em infra-estrutura, automao,
treinamento e sistemas de informao, transformando-o numa rea estratgica para
as empresas. O cho-de-fbrica gera hoje grande quantidade de dados que, por
estarem dispersos ou desorganizados, no so utilizados em todo o seu potencial
como fonte de informao. SCIELO (2009).
A falta de registros adequados dificulta a rastreabilidade do processo nas
fbricas nos dias de hoje, assim ocorre uma reduo na qualidade do produto
processado e como conseqncia aumento do custo final.

1.2

JUSTIFICATIVA

Com um Sistema de Rastreabilidade possvel organizar estes dados


obtendo informaes proporcionando maior agilidade na entrada do processo e
podendo-se rapidamente tomar aes corretivas necessrias, gerando-se tambm
histricos e facilidade na recuperao das mesmas para futuras consultas.
Isto pode permitir a reduo dos custos de fabricao, pois quanto antes os
problemas so resolvidos durante os processos, menores sero os custos,
diminuindo-se perdas, retrabalhos, horas extras desnecessrias e aumentando-se a
produtividade.
A identificao dos funcionrios que atuam no processo tambm importante,
como por exemplo, se est ocorrendo um erro na montagem em um determinado
posto de trabalho, no primeiro turno das 8 s 9 horas, pode-se atravs do cadastro
no banco de dados identificarem o funcionrio, verificar o que est acontecendo e
trein-lo para que o problema no ocorra mais.
14

Com relao segurana, todo produto defeituoso pode representar um srio


risco na utilizao pelo usurio e como tanto deve ser imediatamente recolhidos ou,
por exemplo, se fazer um recall, portanto ter estas informaes e uma rpida
identificao dos produtos pode evitar custos matrias e humanos.

1.3

OBJETIVOS ESPECFICOS

Estudo de caso numa linha de processo de refrigeradores, para implementar


o Sistema de Rastreabilidade.

Pesquisa sobre Rastreabilidade de Processos aplicados a Indstria.

Desenvolvimento do modelo bsico do Sistema de Rastreabilidade

Apresentar uma soluo de implementao um Sistema de Rastreabilidade


de Processos.

Estudo de tecnologias de identificao por radiofreqncia RFID;

Estudo da Tecnologia Wireless padro ZigBee;

Desenvolvimento de um software para o Sistema de Rastreabilidade usando


Banco de Dados;

Projeto de um mdulo microcontrolado coletor de dados atravs de


identificao por radiofreqncia RFID, com transmisso Wireless para um
PC, contendo uma interface Homem Mquina com Display de LCD e teclado.
A figura 1 representa atravs de diagramas os blocos do sistema de

rastreabilidade, apresentando de maneira simplificada como os mdulos esto


dispostos e como so utilizados no projeto.

15

Figura 1: Diagrama em Blocos do Sistema de Rastreabilidade

Fonte: Prpria

16

FUNDAMENTAO TERICA

2.1

RASTREABILIDADE

De acordo com a NBR ISO 9001-2000 rastreabilidade a capacidade de


recuperar o histrico, a aplicao ou a localizao daquilo que est sendo
considerado.
V-se na grande maioria das empresas, que muitos processos so
burocrticos e que esto parcialmente informatizados gerando grficos e
estatsticas, mas que no so dadas as tratativas adequadas para apresentar
propostas, aes e solues imediatas. Segundo a NBR ISO 9001-2000 processo
definido como "conjunto de atividades inter-relacionadas ou interativas que
transforma insumos (entradas) em produtos (sadas).
Com crescimento acelerado dos recursos tecnolgicos torna-se possvel
agrupar estas informaes atravs de softwares de gerenciamento e disponibilizlas em um banco de dados. Com um Sistema de Rastreabilidade possvel
organizar estes dados obtendo informaes proporcionando maior agilidade na
entrada do processo e podendo-se rapidamente tomar aes corretivas necessrias,
gerando-se tambm histricos e facilidade na recuperao das mesmas para futuras
consultas. Este ciclo pode ser definido como PDCA, segundo Slack (2002) PDCA
a sequncia de atividades que so percorridas de maneira cclica para melhorar
atividades a sigla PDCA significa:
Plan = Planejamento: definir atividades e metas;
Do = Execuo: treinar e executar as atividades;
Check = Verificao: medir os resultados das atividades
Act = Ao: corrigir, aprender e melhorar.
O Projeto visa a automatizao da coleta dos dados em cada estao, no
somente a utilizao do sistema de rastreabilidade como uma ferramenta gerencial,
mas, principalmente, como uma ferramenta de gesto para solucionar os problemas
de Produo, de Qualidade, Produtividade e de Manufatura, atravs da visualizao
simultnea dos acontecimentos com histrico e estatsticas das principais no
17

conformidades ocorridas durante o processo de fabricao e ps-venda.


Com a implantao do sistema de rastreabilidade haver um aumento na
qualidade do produto final. Segundo Feigenbaum (1994) apud Rossato (1996, p21).:
"qualidade a correo dos problemas e de suas causas ao longo de toda a srie
de fatores relacionados com marketing, projetos, engenharia, produo e
manuteno, que exercem influncia sobre a satisfao do usurio".

2.2

CARTAS DE CONTROLE DE PROCESSO

Dentre o conjunto de tcnicas disponveis para monitorar o processo


produtivo, as mais usadas so os grficos de controle, tcnicas que fornecem
informaes sobre um determinado processo, baseado em amostras periodicamente
coletadas deste processo. Os grficos de controle auxiliam na melhoria da qualidade
contnua do produto, mostrando, quando necessrio, aes no processo que j est
sendo monitorado. O objetivo o conhecimento do processo quando se deseja
saber se o processo esta ou no sob controle.
Segundo Montgomery (1996, p43), os grficos de controle so uma das
ferramentas mais importantes para a estabilizao de processos industriais.

2.3

SOFTWARE PARA RASTREABILIDADE

O software para sistema de rastreabilidade deve oferecer recursos que


otimizem tempo de desenvolvimento e manuteno dos sistemas. As necessidades
podem ser divididas em duas partes: (1) nvel de programao e manuteno (2)
nvel de usurio. (Elipse Scada, 2009)

2.3.1

Nvel de programao e manuteno

Interface clara, lgica e intuitiva;

Conectividade com a maioria dos equipamentos disponveis no mercado ou


mesmo com outros aplicativos;

Biblioteca grfica para criao de telas; Suporte rede e arquitetura cliente /


18

servidor;

Configurao e reconhecimento de alarmes;

Relatrios formatados, graficamente customizados pelo usurio;

Registro de dados em disco e anlise histrica;

Receitas que permitem a programao de valores para o envio ao processo;

Scripts que permitem a criao de rotinas exclusivas, definindo lgicas e


criando seqncias de atitudes atravs de uma linguagem de programao
interativa, personalizando ao mximo o aplicativo;

Suporte a banco de dados - Access, SQL Server, Oracle, dBase, etc.;

CEP (Controle Estatstico de Processos);

Mdulo matemtico para a formulao de equaes;

Controle de acesso por nvel de usurio;

Acesso remoto via Internet;

Captura, registro e transmisso digital de imagens;

Aquisio de eventos com preciso;

2.3.2

Nvel de usurio

Referente ao nvel de usurio deve ser observado os seguintes fatores para


que atenda as necessidades:

O software de rastreabilidade deve ser de fcil entendimento, fcil para


trabalhar, no causando medo aos usurios;

Devem ser de fcil manuteno, atualizao e ter bom suporte tcnico;


Telas e informaes devem ser padronizadas em todos os pontos de
teste;

Deve ser criado um padro de nmero para todos os pontos de teste,


por exemplo, o nmero 1 refere-se a vazamento;

O software deve mostrar na tela do computador um layout indicando a


localizao de todos os pontos de teste;

Nveis de acesso ao programa e registros atravs de senha ou

19

matrcula dos funcionrios;

Registro de no conformidade e recuperao de produtos por hora,


dia, ms, ano, turno e funcionrio.

Registro de alteraes e falhas no sistema;

Prever possibilidade para excluso/incluso de determinado teste;

Prever possibilidade de liberao de determinado teste indicando


liberao forada atravs de cdigo caso no consiga comunicao
com o teste anterior;

Procura de produto com impresso de grfico de no conformidades;

Procura de produto atravs do teclado, sem leitura do cdigo de


barras;

Medio da produo horria instantnea e acumulada nos diferentes


leitores;

Levantamento dos produtos faltantes para acompanhamento do


fechamento das ordens de produo.

2.4

TECNOLOGIA RFID

2.4.1

RFID - Identificao por Radiofrequncia

RFID a abreviao de Radio Frequency Identification Identificao por


Radiofrequncia. Diferentemente do feixe de luz utilizado no sistema de cdigo de
barras para captura de dados, essa tecnologia utiliza a freqncia de radio.
Na dcada de 1980, o Massachusetts Institute of Technology (MIT),
juntamente com outros centros de pesquisa, iniciou o estudo de uma arquitetura que
utilizasse os recursos das tecnologias baseadas em radiofrequncia para servir
como modelo de referncia ao desenvolvimento de novas aplicaes de
rastreamento e localizao de produtos. Desse estudo, nasceu o Cdigo Eletrnico
de Produtos - EPC (Electronic Product Code). O EPC definiu uma arquitetura de
identificao de produtos que utilizava os recursos proporcionados pelos sinais de
20

radiofrequncia, chamada posteriormente de RFID (Radio Frequency Identification).


(ACURA TECHNOLOGIES, 2009)

2.4.2

Utilizao

A necessidade de captura das informaes de produtos que estivessem em


movimento incentivou a utilizao da radiofreqncia em processos produtivos.
Essa tecnologia facilita o controle do fluxo de produtos por toda a cadeia de
suprimentos de uma empresa, permitindo o seu rastreamento desde a sua
fabricao at o ponto final da distribuio. Tal tecnologia utiliza as Etiquetas
Inteligentes etiquetas eletrnicas com um microchip instalado que so colocadas
nos produtos. Esse produto pode ser rastreado por ondas de radiofrequncia
utilizando uma resistncia de metal ou carbono como antena.

2.4.3

Processo de Comunicao

As Etiquetas Inteligentes so capazes de armazenar dados enviados por


transmissores. Elas respondem a sinais de rdio de um transmissor e enviam de
volta informaes quanto a sua localizao e identificao. O microchip envia sinais
para as antenas, que captam os dados e os retransmitem para leitoras especiais,
passando em seguida por uma filtragem de informaes, comunicando-se com os
diferentes sistemas da empresa, tais como Sistema de Gesto, Sistema de
Relacionamentos com Clientes, Sistemas de Suprimentos, entre outros.
Esses sistemas conseguem localizar em tempo real os estoques e
mercadorias, as informaes de preo, o prazo de validade, o lote, enfim, uma gama
de informaes que diminuem o processamento dos dados sobre os produtos
quando encontrados na linha de produo.

2.4.4

Componentes da RFID

O sistema RFID e composto basicamente por trs componentes: dispositivo


de leitura, transponder e computador, que esto arranjados conforme a Figura 2
21

Figura 2: Esquemtica do Sistema Bsico de RFID

Fonte: http://www.hightechaid.com/tech/rfid/rfid_technology.htm
O dispositivo de leitura e responsvel pela emisso de um campo
eletromagntico que alimenta o transponder, que, por sua vez, responde ao
dispositivo de leitura com o contedo de sua memria. Os dados provenientes do
transponder so encaminhados para o computador, onde e realizado o
processamento de acordo com a aplicao em questo.
O transponder, tambm conhecido como tag, e um dispositivo que contm a
informao (seja ela, 1 bit ou n bit). O transponde funciona como uma carteira de
identidade, porm faz uso de dispositivos eletrnicos (memria, processador,
resistores, capacitores e indutores) para guardar uma informao ou gerar um sinal.
Atualmente, os transponder esto disponveis em diversos formatos, tais como
cartes, pastilhas e argolas, e em materiais como plstico, vidro, epoxi etc. Esto
classificados em duas categorias:

Ativos, que fazem uso de fonte de alimentao prpria.

Passivos, que utilizam a energia proveniente do dispositivo de leitura para o


seu funcionamento.

2.4.5

Faixas de Frequncia

Os sistemas de RFID so definidos pela faixa de frequncia que operam. Os


Sistemas de Baixa Freqncia vo de 30KHz a 500KHz e servem para curta
distncia de leitura. Tendo um baixo custo operacional, esses sistemas so
22

utilizados em controles de acesso, identificao e rastreabilidade de produtos, entre


outras coisas.
Os Sistemas de Alta Freqncia vo de 850MHz a 950MHz e de 2,4GHz a
2,5GHz e serve para leitura em mdia e longas distncias e leituras a alta
velocidade. So utilizados em veculos e para coleta automtica de dados.

2.5

TECNOLOGIA ZIGBEE

2.5.1

Wireless

Um nmero cada vez maior de usurios de redes de computadores tem


optado por solues baseadas em topologias sem fio (wireless), ao invs de redes
com cabeamento convencional, especialmente quando se trata de ampliao ou
melhoria de uma rede existente.
Os avanos recentes das tecnologias de redes sem fio possibilitaram o
surgimento de vrias alternativas e padres de implementao, mas at
recentemente a grande maioria tinha como premissa principal prover um conjunto de
protocolos que garantissem a qualidade para a transmisso de voz ou de dados com
altas taxas de transferncia, o que tornava os equipamentos bastante caros e pouco
atraentes para outras aplicaes mais simples.
Ainda so poucos os padres de redes sem fio para aplicaes em redes
locais utilizando sensores e outros dispositivos do controle. O que temos so
basicamente sistemas proprietrios, desenvolvidos para atender redes especficas,
como as redes de automao industrial, por exemplo, onde aplicaes com sensores
(de temperatura, de umidade, gases, etc) e dispositivos de controle (chaves, rels,
etc) no necessitam de uma largura de banda elevada para funcionarem, mas
necessitam de uma latncia baixa e consumo de energia igualmente baixo para
preservar a vida til das baterias. Nesses casos, os sistemas wireless foram
projetados para atenderem s exigncias especficas dessas aplicaes.

23

2.5.2

ZigBee

ZigBee um padro que ser definido por uma aliana de empresas de


diferentes segmentos do mercado, chamada "ZigBee Alliance". Este protocolo est
sendo projetado para permitir comunicao sem fio confivel, com baixo consumo
de energia e baixas taxas de transmisso para aplicaes de monitoramento e
controle. Para implementar as camadas MAC (Medium Access Control) e PHY
(Physical Layer) o ZigBee utiliza a definio 802.15.4 do IEEE, que opera em
bandas de freqncia livres.
Atualmente, existem diversos padres que definem transmisso em mdias e
altas taxas para voz, vdeo, redes de computadores pessoais, entre outros.
Entretanto, at o presente momento ainda no surgiu um padro que esteja de
acordo com as necessidades nicas da comunicao sem fio entre dispositivos de
controle e sensores.
Os principais requisitos deste tipo de rede so baixa latncia, otimizao para
baixo consumo de energia, possibilidade de implementao de redes com elevado
nmero de dispositivos e baixa complexidade dos ns de rede.
A figura 3, ilustra o posicionamento do padro ZigBee no mercado de
tecnologia "Wireless".
Figura 3: Posicionamento do Padro ZigBee

Fonte:

http://www2.eletronica.org/artigos/eletronica-digital/as-redes-com-

zigbee
24

2.5.3

Caractersticas do Padro ZigBee

O padro ZigBee (IEEE 802.15.4) foi projetado objetivando apresentar as


seguintes caractersticas:
Consumo de potncia baixo e implementao simples, com interfaces de
baixo custo;
Dois estados principais de funcionamento: "active" para transmisso e
recepo e "sleep", quando no est transmitindo;
Simplicidade de configurao e redundncia de dispositivos (operao
segura);
Densidade elevada dos ns por rede. As camadas PHY e MAC permitem que
as redes funcionem com grande nmero de dispositivos ativos. Este atributo crtico
para aplicaes com sensores e redes de controle;
Protocolo simples que permite a transferncia confivel de dados com nveis
apropriados de segurana.(ZIGBEE ALLIANCE, 2009)

2.5.4

Camadas de Protocolos

A publicao do padro IEEE 802.15.4, definiu interfaces com baixas taxas de


transmisso (menores que 250Kbps) e estabeleceu uma estrutura de rede que
incorpora os conceitos de redes ad hoc, caractersticas de conexo em malha e em
multi-hop (mltiplos saltos). Adicionalmente, novos algoritmos de segurana e perfis
de aplicao foram definidos objetivando garantir a segurana e a perfeita interao
entre os diversos equipamentos.

25

Figura 4: Camadas de protocolos ZigBee

Fonte:

http://www2.eletronica.org/artigos/eletronica-digital/as-redes-com-

zigbee
A camada fsica (PHY) foi projetada para acomodar as necessidades de
interfaces de baixo custo, permitindo nveis elevados de integrao. O uso da
tcnica de transmisso de Seqncia Direta (DSS) permite que os equipamentos
sejam muito simples, possibilitando implementaes mais baratas.
A camada do Media Access Control (MAC) foi projetada para permitir
topologias mltiplas com baixa complexidade, onde o gerenciamento de energia, por
exemplo, no requer modos de operao complexos. A camada MAC tambm
permite que um dispositivo com funcionalidade reduzida (RFD) opere na rede sem a
necessidade de grandes quantidades de memria disponveis, podendo controlar
tambm um grande nmero de dispositivos sem a necessidade de coloc-los "em
espera", como ocorre em algumas tecnologias sem fio.
A camada de rede foi projetada para possibilitar o crescimento da rede sem a
necessidade de equipamentos de transmisso de potncia mais elevada. A camada
de rede tambm pode operar quantidades grandes de ns de rede com latncias
relativamente baixas.
A camada NWK utiliza um algoritmo que permite implementaes da pilha de

26

protocolos visando balancear os custos das unidades em aplicaes especficas, o


consumo das baterias, buscando produzir solues com o perfil especfico de custodesempenho para a aplicao.

2.5.5

Segurana

O padro ZigBee adotou a proposta de um novo algoritmo de segurana,


baseado na simplificao do algoritmo de roteamento AODV (Ad-hoc On-demand
Distance Vector). Esta proposta foi adotada como parte da especificao IEEE
802.15.4.
A camada MAC utiliza o padro AES (Advanced Encryption Standard) como
seu algoritmo de criptografia, descrevendo uma variedade de rotinas de segurana.
Estas rotinas tm como objetivo prover a confidencialidade, a integridade e a
autenticidade dos frames da camada MAC. A camada MAC faz o processamento de
segurana, mas so as camadas superiores que controlam o processo, ajustando as
chaves de criptografia e determinando os nveis de segurana que devero ser
usados. Quando a camada MAC transmite (ou recebe) um frame, verifica o destino
(a fonte do frame), recupera a chave associada com esse destino (fonte), e usa
ento esta chave para processar o frame de acordo com a rotina de segurana
designada para a chave que est sendo usada. Cada chave associada a uma
nica rotina de segurana e o cabealho do frame MAC possui um bit que especifica
se a segurana para o frame est habilitada ou no.

2.5.6

Tipos de Trfego

O padro suporta diferentes tipos de trfego de dados que exigem atributos


diferentes da camada MAC. O MAC IEEE 802.15.4 flexvel o bastante para
assegurar o transporte de cada um dos tipos de trfego como;

Dados peridicos, provenientes de sensores;

Dados intermitentes, provenientes de interruptores e chaves;

Dados provenientes de dispositivos repetitivos de baixa latncia.

27

ESPECIFICAO TCNICA

Neste captulo, ser apresentado viso geral do Projeto, descrio funcional


dos blocos, dimensionamento e memorial de clculo e circuitos preliminares.

3.1

VISO GERAL DO PROJETO

A figura 5 representa atravs de diagrama como esto dispostos os modulos.


Figura 5: Diagrama de bloco Geral

Fonte: Prpria

28

3.1.1

Tag

O sistema composto por tags que esto fixadas nos refrigeradores sobre os
quais deseja efetuar a rastreabilidade. Estas tags fazem comunicao identificando
o objeto, enviando um sinal para o leitor.

3.1.2

Leitor de rdio freqncia

A comunicao entre a tag e o leitor por radio freqncia atravs de ondas


eletromagnticas que so emitidas pelo leitor induzindo desta forma a tag que
retorna atravs deste mesmo princpio o dado gravado em sua memria. Este dado
decodificado pelo leitor e enviado para o microcontrolador atravs da comunicao
serial RS232.

3.1.3

Microcontrolador

O microcontrolador responsvel por receber o sinal do leitor, cria uma


interface com o software de aquisio de dados e controla dispositivos de entrada e
sada.
A interface entre o microcontrolador atua nos dispositivos de sada fazendo uso das
sadas digitais que este contm.

3.1.4

Dispositivos de Entrada

Os dispositivos de entrada so responsveis pela incluso do registro (cdigo


da falha) pelo operador na linha de produo, atravs de um teclado.

3.1.5

Dispositivo de Sada

Os dispositivos de Sada so responsveis pela visualizao dos registros


para verificar se o produto esta dentro da norma da rastreabilidade, atravs de um
visor LCD.

29

3.1.6

Software de aquisio e processamento dos dados

Coleta informaes disponibilizadas pelo leitor e realiza o registro do cdigo


das tags, determinando onde o refrigerador esta e para onde ele deve ir.
A comunicao entre o software de aquisio de dados atravs de TCP/IP.

3.1.7

Banco de dados

Responsvel por armazenar as informaes da rastreabilidade de processo.


Esto registrados: os operadores, e os cdigos das tags dos refrigeradores e a ponto
de teste que o refrigerador se encontra.

3.2

DESCRIO FUNCIONAL DOS BLOCOS

3.2.1

Tag

A tag utilizada para identificao dos refrigeradores a etiqueta AcuProx


Clear Disc Unique 30mm adesivada do fabricante Acura Technologies. Este modelo
de tag adotado, pois especifico para alocao interna ao equipamento sem
conexes eltricas com o mesmo. O material que faz proteo mecnica do circuito
emissor o polietileno com polister. Esta tag pode ser aplicada a uma faixa de
temperatura de operao entre -20C a +60C e possui formato circular com
dimetro 30mm, conforme ilustrado na figura 6.

30

Figura 6: Tag AcuProx

Fonte: Acura Technologies Ltda Especificao tcnica disponvel no site


http://www.acura.com.br
A freqncia de operao utilizada pela tag 125kHz. Esta faixa estipulada
pela ANATEL, de acordo com a resoluo 365 (10 de maio de 2004), 237 e 238. O
sistema classificado ento classificado como: equipamento de radiocomunicao
de radiao restrita [Fonte: www.anatel.gov.br, Maio 2009]
A tag possui capacidade de 64 bits de memria do tipo leitura comumente
chamada UNIQUE, ou seja, no possibilita a gravao de dados na mesma.
A tag alimentada atravs de uma tenso induzida e captada pela antena
receptora da tag atravs do campo magntico, este sinal ento retificado atravs
de uma ponte retificadora de onda completa e disponibilizado para alimentar o
circuito. Parte da alta freqncia (125kHz) captada pela antena direcionada para o
divisor de tempo, responsvel por gerar o sinal em conjunto com dados
armazenados na memria EEPROM que contm a informao transmitida pelo
leitor.
A estrutura das memrias das tags constituda de acordo com cada
fabricante. A transmisso comea com uma seqncia de nove bits 1 chamada de
cabealho, todos programados de fabrica, seguido de um bit de parada com nvel
lgico 0. importante ressaltar que esta sequncia de nove bits 1 seguidos dos

31

bits 0 no pode ser utilizada nos bits de dados, para evitar que o receptor
considere o fim da transmisso. Logo aps o cabealho so representados os bits
que identificam o cliente sendo eles transmitidos de D00 a D03 em seguida
acrescentado um bit de paridade P0, logo em seguida enviado os restantes dos
bits que identificam os clientes e aps isto transmitido o segundo bit de paridade
P1. Para os dados de identificao so reservados 32 bits divididos em oito grupos
de quatro bits de dados e em seguida um bit de paridade.
A capacidade de combinao desta informao 232 resultado num total de
4,294,967,296 combinaes disponveis. Quatro colunas de bits de paridade
seguidos de um bit de parada com nvel lgico 0 encerram a transmisso da tag
para o leitor.

3.2.2

Leitor por rdio frequncia

O leitor por radio freqncia tem funo de emitir ondas eletromagnticas


para alimentar o circuito tag que retorna o dado nela gravado; em seguida o leitor
recebe os dados e disponibiliza-os de maneira segura ao microcontrolador. O leitor
utilizado o modulo RFID AP-20, que opera com freqncia de 125 kHz, compatvel
com as tags definidas para identificao dos refrigeradores. Esta frequncia
especifica para aplicaes como esta, em que a distncia no ser muito longa. Outra
vantagem desta faixa de frequncia baixo custo da tag por ser geralmente
somente de leitura e tambm ser passiva ao invs de ativa; isto significa que a tag
no necessita ser alimentada por baterias ou pilhas.
A sua alimentao atravs de uma fonte de tenso de 12 V, conforme
indicado na tabela 1, e a interface utilizada a comunicao serial com o padro
ASCII indicada na tabela 2.

32

Tabela 1: Tabela de conexes do leitor

Fonte: Acura Technologies Ltda Especificao tcnica disponvel no site


http://www.acura.com.br

Tabela 2: Tabela de conexes de sada serial RS232 padro ASCII

Fonte: Acura Technologies Ltda Especificao tcnica disponvel no site


http://www.acura.com.br

3.2.3

Microcontrolador

A escolha do microcontrolador foi em funo do nmero de portas


necessrias para interface homem mquina (IHM) com teclado e display e uma porta
33

serial para comunicao com Servidor. Outro fator importante que a placa de
prototipao escolhida da Microgenios usa o PIC 18F452.
O microcontrolador atua como interface entre o software de aquisio de
dados e o leitor por radio freqncia.

Este dispositivo recebe os dados do leitor

AP-09 em formato RS232 / TTL aps converso por um circuito Max 232, atravs da
porta INT 0, no pino 33 ( interrrupo 0) e disponibiliza estas informaes para o
software de aquisio de dados que efetua uma busca no banco de dados para
verificar se o registro esta no ponto da linha de produo correto.
Ver detalhes no anexo 1, circuito.
Figura 7: Descrio dos pinos de conexo do PIC18F452

Fonte: Datasheet Microchip Technology Inc. 2004

3.2.4

Dispositivos de Entrada e Sada

34

Os dispositivos a serem controlados no nosso projeto so um teclado


matriciais de 12 teclas matriciais e mais 4 teclas ligadas diretamente aos pinos do
PIC e um display LCD 16X2.

3.2.5

Software de aquisio e processamento de dados

O software de aquisio de dados recebe a informao do microcontrolador


atravs de comunicao serial RS232, sendo a estrutura dos dados definida como
ASCII.
A principal funo do software de aquisio e processamento de dados
identificar o cdigo da tag enviado pelo microcontrolador, pesquis-lo no banco de
dados e retornar uma resposta ao microcontrolador, verificando se a posio do
refrigerador na linha de produo se encontra no local correto atravs de consulta ao
banco de dados.

3.2.6

Banco de dados

O banco de dados responsvel pelo armazenamento das informaes em


quais os pontos de teste e retrabalho se encontra o refrigerador.

3.3

DIMENSIONAMENTO E MEMORIAL DE CLCULO

3.3.1

Circuito regulador de tenso

A alimentao do circuito atravs de uma bateria com as seguintes


caractersticas: tenso 9 V, corrente de sada 400 mA. Para alimentar o circuito do
microcontrolador e tambm o circuito leitor por rdio freqncia, necessrio
35

controlar a tenso de entrada e disponibilizar dois nveis distintos de teso, 5 V e 12


V. Para isso sero utilizados os componentes LM7812 e LM7805 ligados em
cascata.

3.3.2

Circuito do microcontrolador

O dimensionamento do LCD originou-se da necessidade de criar uma


interface entre o dispositivo de segurana com o colaborador. Pela simplicidade das
informaes que o mesmo apresenta definiu-se um display com as caractersticas
apresentadas na tabela 7.

Tabela 3: Caracterstica do LCD

Fonte: Crystalfontz Especificao tcnica disponvel no site


http://www.crystalfontz.com/products/1602a/CFAH1602AYYBJP.PDF
O circuito de reset foi dimensionado, com base nas recomendaes presentes
no datasheet(PIC 18F452) do microcontrolador para efetuar determinada operao.

3.3.3

Circuito do leitor por rdio freqncia

A freqncia de operao das tags bem como a do leitor por rdio freqncia
foi determinada em 125 kHz, pois com esta freqncia distncia de leitura de
aproximadamente 20 centmetros. Para a aplicao proposta torna-se a melhor
opo em termos de custos/benefcios.
36

3.4

PROGRAMAO
3.4.1

Descrio Geral

A programao aplicada ao projeto composta por quatro etapas, nas quais


esto associados software e firmware.
O firmware est alocado no microcontrolador e responsvel por interpretar o
dado enviado pelo leitor de RFID, disponibilizando-o para a leitura do software de
aquisio de dados. O firmware responsvel pela habilitao de uma segunda
porta de comunicao serial RS232, pois uma faz a conexo do leitor com o
microcontrolador e a outra a conexo entre o microcontrolador e o microcomputador.
Ao enviar um comando atravs do software de aquisio de dados, o firmware
interpreta este comando e posteriormente faz o acionamento das sadas digitais.
O compilador CCS foi utilizado para o desenvolvimento do firmware do
microcontrolador, este executado em sistema operacional Windows e o software
que faz o upload do programa para o microcontrolador o ProgPic2.
O software de aquisio de dados foi desenvolvido com Django e Python.
Django um framework, construdo usando a linguagem Python.
Framework um conjunto de classes que colaboram para realizar uma
responsabilidade para um domnio de um subsistema da aplicao.FAYAD e
SCHMIDT(1997)
Python uma linguagem de programao de alto nvel, interpretada,
imperativa, orientada a objetos, de tipagem dinmica e forte.
Este software recebe o dado enviado pelo microcontrolador atravs da
comunicao serial RS232 e verifica no banco de dados a validade do mesmo como
est ilustrado no fluxograma.

3.5

Planejamento

37

3.5.1

Diagramas de caso de uso

Um diagrama de Caso de Uso descreve um cenrio que mostra as


funcionalidades do sistema do ponto de vista do usurio.UFCG(2007)
3.5.1.1

Caso de uso geral

Diagrama do caso de uso geral, este diagrama demostra como so os


relacionamentos entre os elementos e o autor que neste caso so o operador.
Figura 8: Diagrama de caso de uso geral

Fonte: Prpria
3.5.1.2

Caso de uso Comunicao

Diagrama do caso de uso comunicao, este diagrama demostra como so


os relacionamentos entre os elementos da comunicao entre os ZigBee, o autor
que neste caso so os Zigbee.
Figura 9: Diagrama de caso de uso comunicao

Fonte: Prpria
3.5.1.3

Caso de uso leitura Tag

Diagrama do caso de uso leitura Tag, este diagrama demostra como so os


relacionamentos entre os elementos da leitura da Tag atravs do leitor do RFID , o
autor que neste caso so o leitor de RFID e a Tag.
38

Figura 10: Diagrama de caso de uso comunicao

Fonte: Prpria
3.5.1.4

Caso de uso Interface IHM

Diagrama do caso de uso interface IHM, este diagrama demostra como so


os relacionamentos entre os elementos da interface da IHM atravs do
microcontrolador , o autor que neste caso o microcontrolador.
Figura 11: Diagrama de caso de uso IHM

Fonte: Prpria
3.5.1.5

Caso de uso consulta, incluso Banco de dados

Diagrama do caso de uso consulta e incluso banco de dados, este diagrama


demostra como so os relacionamentos entre os elementos da banco de dados
atravs do servidor, o autor que neste caso o banco de dados.

39

Figura 12: Diagrama de caso de uso consulta e incluso banco de dados

Fonte: Prpria

40

IMPLEMENTAO

4.1

DESCRIO DA MONTAGEM

Na fase de especificao tcnica foram definidos esquemas eltricos e


escolhidos componentes baseados em teorias e especificaes de datasheets.
Nesta fase de implementao, foram realizados testes em protoboard, testes
de

comunicao

serial,

testes

com

RFID

usando

interrupo

externa

implementados os circuitos especificados, usando a placa (Kit PicGenios) com PIC


18F452 e elaborado programas no PIC em Linguagem C usando o compilador CCS.
Figura 13: Desenvolvimento em Laboratrio

FONTE: Prpria.

41

4.2

TESTES, MEDIES E CONFIGURAES

A implementao foi dividida em fases, conforme segue descrito:


4.2.1

Testes com o Kit PicGenios

Elaborado programas testes em linguaguem C usando o Compilador PCW


verso 4.057 do fabricante CCS

e o programa de gravao PicKit 2 V2.4

da

Microchip usando o teclado matricial de 3 Colunas por 4 linhas e o LCD (display de


Cristal Liquido) de 16 caracteres por 2 linhas.
Usado os programas exemplos da biblioteca do compilador CCS: lcd.c e
kbd.c. Estes programas foram configurados para trabalhar com o PIC 18F452 e na
configurao de hardware do Kit PicGenios mostrado na figura 14, aps as
alteraes necessrias foram salvos como mykbd.c e mylcd.c, ambos os programas
viabilizam a interface homem-mquina ( IHM ) do projeto.
Figura 14: Kit PIC Genios

FONTE: Prpria.

42

4.2.2

Construo dos menus de navegao usando a IHM

(Teclado Matricial e LCD)

Realizado diversos testes de programao para construo dos menus, e


devido a configuraao de hardware do teclado no programa mykbd.c que :
Coluna 0 PIN_B0, Coluna 1 PIN_B1, Coluna 2 PIN_B2, Linha 0 PIN_D3, Linha 0
PIN_D2, Linha 0 PIN_D1, foi necessrio alterar as teclas de navegao, pois a
interrupo INT0 seria usada no pino B0, e esta coincidncia impossibilitou a
navegao do menu usando a interrupo.
Para resolver este problema, as teclas de funes para chamada de menu:
RB3 PIN_B3 para acessar pagina de login do operador, RB4 - PIN_B4 para
acessar a pgina de configurao da estao de trabalho e RB5 PIN_B5 para
acessar a pgina de cadastro do evento ocorrido no sistema de Rastreabilidade,
usou-se tambm a tecla RA5 para voltar ao menu inicial.
Assim no ocorreu mais problemas com o acionamento acidental da interrupo no
pino B0.
Seguem abaixo as telas do menu do LCD para o Sistema de Rastreabilidade:
Figura 15: Tela 1 do LCD (Tela Inicial)

FONTE: Prpria.

43

Figura 16: Tela 2 do LCD (Digite a opo do menu)

FONTE: Prpria.

Figura 17: Tela 3 do LCD (Digite o cdigo do operador)

FONTE: Prpria.

44

Figura 18: Tela 4 do LCD (Digite o cdigo da estao de trabalho)

FONTE: Prpria.
Figura 19: Tela 5 do LCD (Digite o cdigo do operador)

FONTE: Prpria.

4.2.3

Testes com o RFID

Para testes com o RFID, foram realizado testes de leitura na porta


serial RS232 do PC, usando o software Rcom Serial, conforme figura 20, o cdigo
da Tag que para teste (04159E6056).
45

Figura 20: Testes usando o software RCom Serial

FONTE: Prpria.
Como a sada do leitor RFID em RS232, para testes na interrupo teve-se
que usar um circuito integrado Max 232 da Texas Instruments, para converso do
sinal RS232 para TTL 5V.
Nos testes com o PIC monitorou-se as interrupes por borda de descida
(de 1 para 0) no pino RB0. A cada leitura do estado da porta RB0 esse estado foi
armazenado num vetor e em uma varivel.
Quando esta interrupo ocorreu, houve um delay (ou atraso) de um tero de
tempo de bit de validao para aumentarmos a tolerncia de escorregamento de
amostragem do sinal, ou seja, usamos usamos um TBit de 102us pois a taxa de
transmisso do Leitor de 9600 bps ( Bits por segundo) .
A estrutura de Dados fornecidos pelo leitor RFID Serial ASCII, Baud 9600,
sem paridade( STX (02 HEX) DATA (10 HEX CHARACTERS) CR LF ETX (03
HEX)).
A figura 21 mostra na tela do osciloscopio a leitura da Tag atraves do Leitor
do RFID,

46

Figura 21: Sinais recebidos na interrupo RB0 do PIC 18F452 atraves do


osciloscopio

FONTE: Prpria.

4.2.4

Testes com os mdulos wireless Xbee

Para testes dos mdulos Xbee-pro que tem uma comunicao RS232 TTL
5V, foi necessrio tambm um circuito integrado Max 232, para converso do sinal
TTL 5V para RS232 para comunicao com a porta serial RS232 do PIC 18F452.
Inicialmente usamos o software Rcom Serial para testes e para configurao
dos mdulos usamos o software X-CTU da MaxStream, figura 22.
Basicamente os mdulos XBee/XBee-Pro j vem de fabrica configurados para
serem usados mais facilmente, o mnimo que precisa ser feito para estabelecer um
link de comunicao alimentar os mdulos corretamente com uma tenso de 3.3V.

47

Figura 22: Configurao dos Mdulos Xbee usando o Software X-CTU

FONTE: Prpria.
Configuraes realizadas no software X-CTU da MaxStream:
Mdulo Terminal ( remoto )
Networking & Security
ID: 3332
DL: 1234
MY: 5678
NI: REMOTO
Mdulo Coordenador ( base )
Networking & Security
ID: 3332
DL: 5678
MY:1234
NI: BASE

48

Para facilitar a conexo do mdulo Base XBee/XBee-Pro ao computador,


seja para atualizao do firmware ou mesmo para fazer coleta de dados ou controle,
atravs dos mdulos remotos, usamos a placa CON-USBBEE, figura 23, com
facilidade de conexo estilo Pen drive.
Figura 23: placa CON-USBBEE

FONTE: Prpria.

A placa CON-USBBE usa um chip conversor USB/Serial; regulador de tenso


LDO (baixa queda de tenso), comparador de tenso conectado aos LEDs (RSSI)
que simulam a fora do sinal de RF; LEDs indicadores de TX, RX , mdulo ligado
(ASS), e um micro-boto para "resetar" o mdulo XBee/XBee-Pro.
Segue detalhes na figura 24:
Figura 24: Boto Reset e LEDs indicadores da placa CON-USBBEE

FONTE: RogerCom
Ao instalar no computador o driver USB para (Windows 98, ME, 2000,
49

XP,Vista, x64 e tambm para Linux e Mac) que acompanha a placa, o windows cria
uma porta COMx virtual quando a placa CON-USBBEE plugada. Assim, possvel
atravs de um programa (escrito em C/C++Builder, Delphi, VB, Java, C#, etc), se
comunicar com a placa como se fosse uma comunicao serial padro RS232.
Tambm possvel acessar a placa atravs de uma DLL, que oferece mais recursos
na programao.
4.2.5

Testes e montagem em protoboard

Circuito desenvolvido em protoboard contendo fonte de alimentao, 5V para


circuito Max 232 e Leitor RFID, e 3,3V para modulo Xbee terminal, no protoboard
tambm foi montado o circuito dos CIs Max 232 para o Xbee terminal e para o
RFID.
Ser desenvolvida uma placa PCI, para substituio do circuito montado em
protoboard, a mesma ser desenvolvida em Software Proteus ou Orcad.
Tambm ser desenvolvida uma placa para a IHM contento o PIC 18F452,
circuitos auxiliares, teclado matricial e Diplay LCD, ambos os componentes e placas
sero encapsulados numa caixa que ser a IHM Coletor de Dados RFID, com
transmisso Wireless ( Zigbee).
Figura 25: Circuito em protoboard em testes

FONTE: Prpria.
50

4.2.6

Testes de interface IHM e Gerenciador

Para testes de envio / recebimento de informaes do mdulo IHM RFID com


o Gerenciador, foram realizados testes de comunicao atravs dos mdulos Xbee e
inicialmente o softwrare Rcom Serial, aps finalizado os testes com o hardware e
firmware da IHM, realizou-se testes de interface de envio e recebimento das
informaes, usando o gerenciador do Sistema com o banco de dados.
As informaes enviadas so 10 bytes, conforme figura 26, que contm o
cdigo da Tag lida pelo leitor RFID (04159E6056), a tag com 10 bytes podem por
exemplo trazer as informaes dos produtos em questo como modelo, cor, tenso
e etc, outra informao que temos um byte com a identificao do operador, um
byte com a identificao da estao de trabalho e outro byte com o evento ocorrido
no Sistema de Rastreabilidade, as informae so separadas por um caracter de
ponto (.) para organizao do pacote de dados.
Aps o envio das informaes ao Gerenciador, o mesmo consulta o Banco de dados
e retorna a resposta que visualizada na tela do Display LCD, assim o Sistema
consulta e registra as informaes necessrias para a Rastreabilidade do Processo.
Figura 26: Tela 6 do LCD (Visulalizacao dos dados sendo enviados ao
Gerenciador do Sistema de Rastreabilidade)

FONTE: Prpria.

51

Sistema de Rastreabilidade conectado ao Mdulo Xbee-Pro atravs da placa


CON-USBBEE, atravs da porta USB do Computador, comunicando-se com a IHM.
4.2.7

Testes e montagem do hardware definitivo

Circuito desenvolvido em placa universal e PCI, contendo fonte de


alimentao, 5V para circuito Max 232 e Leitor RFID, e 3,3V para modulo Xbee
terminal, tambm foi montado o circuito dos CIs Max 232 para o Xbee terminal e
para o RFID. Esta placa acoplada no display de LCD e na placa desenvolvida para
o teclado matricial que foram acopladas na caixa da IHM para interface com o
usurio.
Figura 27: Circuito final em placa definitiva

FONTE: Prpria.

52

Figura 28: Produto final ( Apresentao IV Painel de Engenharia 2009)

FONTE: Prpria.
Figura 29: Sistema de Rastreabilidade

FONTE: Prpria.

53

Figura 30: Tela de Consulta do Sistema de Rastreabilidade

FONTE: Prpria.
4.3. CDIGO FONTE
4.3

SOFTWARE DO PIC E APLICAO


4.3.1

Estrutura do Programa do PIC18F452

Segue abaixo a estrutura do programa no PIC18F452

mykbd.c ( programa de leitura do teclado matricial 3 colunas por 4 linhas)

mylcd.c ( teclado 16x2 caracteres por linha)

MYIHM.c (programa completo)

4.3.2

Cdigo Fonte do PIC18F452

Segue o cdigo do pic18f452 em anexo 2.

54

4.3.3

Estrutura do Programa da Aplicao

Segue abaixo a estrutura do programa no diretrio do servidor


Figura 31: Estrutura do programa no diretrio do servidor

Fonte: Prpria
Para armazenar e resgatar informaes do banco de dados, no necessrio
ir at ele e conhecer a linguagem dele .
Pode se usar uma ferramenta do Django chamada ORM, que interpreta o seu
cdigo, leva aquilo at o banco de dados, e depois devolve as informaes
desejadas.
A parte do cdigo onde voc configura quais so seus modelos de dados e
que tipo de informaes eles devem armazenar, um arquivo chamado models.py.

55

Figura 31: Modelagem dos dados Django

Fonte:

http://www.aprendendodjango.com/entendendo-como-o-django-

trabalha/
MVC a sigla que resume tudo isso:
Modelo (Model)
Viso (View)
Controle (Controller)
Modelo onde esto as definies dos dados, como eles devem ser
armazenados e tratados. l que voc diz quais campos uma tabela deve ter, seus
tipos e valores padro e se eles so obrigatrios ou no. Dentre outras coisas.
Viso so as funes que recebem requisies e retornam respostas, ao
usurio, a outro computador, a uma impressora ou qualquer outra coisa externa. Ou
seja, as views.
E Controle so todas as coisas que ficam no meio do caminho, como o
handler, os middlewares e o URL dispatcher. A maior parte dessas coisas feita
pelo prprio Django, e voc deve se preocupar pouco ou nada com isso.

56

4.3.4

Cdigo Fonte da Aplicao

Segue o cdigo do aplicativo web no anexo 3.


4.4

CUSTOS DO PROJETO

O custo total do projeto foi de R$ 717,00, conforme especificado na tabela 4.

4.5

COMPONENTES E MATERIAIS

Tabela 4: especificaes dos custos


Quantidade

Item

Preo Unitrio

Preo Total

Xbee-Pro

R$ 135,00

R$ 270,00

PIC18F452

R$ 34,00

R$ 34,00

Conversor

Xbee- R$ 120,00

R$ 120,00

Pro - USB
2

Max232

R$ 3,00

R$ 3,00

Leitor RFID

R$ 200,00

R$ 200,00

Display (16x2)

R$ 20,00

R$ 20,00

Bateria 9V

R$ 40,00

R$ 40,00

TAG(RFID)

R$ 6,97

R$ 6,97

16

Capacitor

R$ 0,08

R$ 1,28

Resistores

R$ 0,05

R$ 0,45

Oscilador

R$ 2,71

R$ 2,71

Diodo

R$ 0,59

R$ 2,95

7805

R$ 0,60

R$ 0,60

LM317L

R$ 0,47

R$ 0,47

Teclado Matricial

R$ 15,00

R$ 15,00

Valor Final

R$ 717,43

57

RESULTADOS
No decorrer do desenvolvimento do projeto, foi necessrio utilizar muitos

conceitos estudados ao longo do curso de graduao, pois foram utilizadas desde a


simples lei de ohm at tcnicas de programao avanada.
O projeto realizado buscou sempre garantir a qualidade do produto,
acompanhando o processo de fabricao dos refrigeradores na linha de produo.
Os principais resultados do projeto so:
5.1

Leitura da Tag RFID

Foram usadas tags conforme especificao do projeto, e para a leitura destas


tags, usou-se o Leitor RFID AP20 que tem um bom alcance de
aproximadamente 8cm, para

enviar os dados

para o PIC foi utilizado a

interrupo externa atrves do pino RB0. Um dos pontos que necessitou


muitos testes foi esta leitura, pois inicialmente foi especificado a leitura do
cdigo da TAG pela serial do PIC atravs de multiplexao serial com a
comunicao entre a IHM ( PIC) com o servidor, assim depois de estudos e
testes verificamos que a melhor soluco seria individualizar a leitura da tag
atravs da interrupo externa. Os resultados apesar da dificuldade de
trabalhar com leitura bit a bit no pino de interrupo foram alcanados, aps
muita anlise dos dados atravs de osciloscpio e consulta a documentao
do leitor RFID e testes com programas em linguagem C.

5.2

Microcontrolador PIC 18F452

A escolha do Microcontrolador foi bem acertada na etapa de especificao,


bem como a utilizao do Kit PIC Genios, pois alm de recursos necessrios
para desenvolvimento o Kit forneceu uma excelente placa de prototipao,
onde foram realizados diversos testes at que chegou-se na soluo final do
Projeto, assim a escolha do kit foi de extrema importancia para a etapa de
desenvolvimento do trabalho.
Sobre o compilador, usou-se o CCS que o que sempre esteve nas

58

disciplinas aprendidas e relacionadas, apesar que o Kit comprado no tinha


nenhum exemplo em CCS, pois a fabricante Genios trabalha com outros
compiladores, assim foram necessrios diversas pesquisas sobre o
Compilador CCS usando o PIC 18F452.

5.3

Display e Teclado

Para o Display e o teclado, o trabalho principal foi estudar os drives lcd.c e


kbd.c disponveis na Biblioteca do CCS, aps estudos foram necessrias
configuraes de hardware para adequao com a placa de prototipao e
posteriormente com o hardware definitivo. Um dos pontos crticos foi a
atualizao de teclado em qualquer momento da utilizao do Sistema de
Rastreabilidade, mas a soluo foi encontrada atravs de laos de programa,
que aguardavam sempre estas atualizaes, conforme pode ser visto nos
programas do captulo de desenvolvimento.

5.4

Comunicao Wireless

A comunicao Wireless foi um ponto muito importante no desenvolvimento


do projeto, pois disponibilizou flexibilidade na utilizao do Sistema. A escolha
dos mdulos Xbee-Pro utilizando a tecnologia ZigBee foi excelente, pois os
mdulos so muito confiveis e o material tcnico sobre a tecnologia est
bem acessivel, assim aps configuraes usando softwares do fabricante e
testes a comunicao Wireless funcionou sempre de maneira bem estvel.

5.5

Software e Banco de Dados

Para implementao do software e do banco de dados utilizou um framework


para pginas WEB o Django, e o Python como linguagem de programao. Ambos
so opensource e no requerem licena para implantao nos servidores. Para o
banco de dados foi utilizado o SQLite que nos testes do projeto demostrou uma
performance adequada para o projeto.
59

Tabela 5: Tabela de Comunicao PC - PIC


Tabela Comunicao PC - PIC
cdigo
Mensagem Display IHM
recebido
RASTREABILIDADE REALI0
ZE TESTE
1

ESTACAO 1

NAO TESTOU

ESTACAO 2

NAO TESTOU

ESTACAO 3

NAO TESTOU

ESTACAO 4

NAO TESTOU

ESTACAO 5

NAO TESTOU

ESTACAO 6

NAO TESTOU

ESTACAO 7

NAO TESTOU

ESTACAO 8

NAO TESTOU

RASTREABILIDADE

OK!

Fonte: Prpria

Tabela 6: Tabela de Comunicao PC - PIC


Tabela cdigos de Evento
cdigo digitado

Descrio no PC

Login

NC - Falha 1

NC - Falha 2

60

NC - Falha 3

NC - Falha 4

NC - Falha 5

NC - Falha 6

NC - Falha 7

NC - Falha 8

Resultado dos Testes OK!

Fonte: Prpria

CONSIDERAES FINAIS E CONCLUSES

De maneira geral, pode-se considerar a concluso deste projeto bastante


positiva sendo o principal ponto a ser destacado, o elevado aumento de
conhecimento tcnico, quando colocado em prtica. Nem sempre tudo o que se
imagina ser possvel de ser feito, realmente possvel, mesmo que os datasheets
digam o contrrio. Alis, datasheets tambm erram e, apesar de bastante extensos
de maneira geral, por vezes no so suficientes para sanar todas as dvidas
referentes a determinados componentes.
Em todas as etapas do Projetos o importante dividir em partes, determinar
quem so as prioriedades e trabalhar em uma de cada vez e quanto todas as partes
estiverem funcionando, a ento deve-se realizar a integrao, aumentando assim o
nvel de dificuldade.

A tcnica pode ser aplicada tanto no desenvolvimento de

hardware quanto de software, e pode auxiliar no desenvolvimento de Projetos.


Segue sugesto de sofisticao ou melhoria do Sistema de Rastreabilidade
61

de Processos usando um mdulo wireless Xbee Terminal para controle, sinalizaao


e interface com o processo em questo.
Este mdulo pode ser chamado de estao de controle e interface com o
projeto, possibilitando paradas de linha, quanto detectado uma falha no processo,
acionamento de transportadores para retirada dos produtos do processo e
encaminhamento para uma estao de retrabalho por exemplo, tambm pode-se
atravs desta estao relizar sinalizaes visuais ou sonoras e tambm possibilitar
interface com o controle da linha de produo atrves de comunio com PLC, por
exemplo.
Outras melhorias podem com certeza serem desenvolvidas, pois este assunto
foi abordado e estudado para um projeto Bsico, assim basta criatividade e
aplicaes de algumas tcnicas de engenharia e o cu o limite.

62

REFERENCIAS

ACURA TECHNOLOGIES. RFID: Disponvel em:


http://www.acura.com.br. Acesso em 30 de Maio de 2009.
ASSOCIAO BRASILEIRA DE NORMAS TCNICAS, NBR ISO 9001-2000,
Sistemas de gesto da qualidade - Fundamentos e vocabulrio, Rio de Janeiro,
2000. p.7-11.
CRYSTALFONTZ . LCD : Disponivel em:
http://www.crystalfontz.com/products/1602a/CFAH1602AYYBJP.PDF. Acesso em 30
de Maio de 2009.
FINKENZELER, Klaus RFID HANDBOOK segunda edio.
MONTGOMERY, Douglas C. Introduo ao controle estatstico da qualidade. 3.
ed. New York: John Wiley, 1996.
ROSSATO, Ivete de Ftima. Uma metodologia para anlise e solues de
problemas, Florianpolis, Maro 1996. Disponvel em: <http://www.eps.ufsc.br
/disserta96/rossato/indice/index.htm#sumario>. Acessado em 19/09/2008
ROGERCOM..Xbee/ZigBee:

Disponivel

em:

<http://www.rogercom.com/ZigBee/ZigBee.htm>. Acesso em 22 de Abril de 2009


SLACK, Nigel, Administrao da produo. So Paulo: Atlas, 2002. 119p.
UNIVERSIDADE FEDERAL DO RIO DE JANEIRO. O que RFID?: Disponvel em:
<http://www.gta.ufrj.br/grad/07_1/rfid/RFID_arquivos/o%20que%20e.htm>.
em 22 de Abril de 2009.

63

Acesso

WIKIPEDIA. ISO 9000: Disponvel em: <http://pt.wikipedia.org/wiki/ISO_9000>.


Acesso em 22 de Abril de 2009.
ISO. ISO 9000: Disponvel em: <http://www.iso.org/iso/survey10thcycle.pdf>. Acesso
em 22 de Abril de 2009.
FAYAD, Mohamed; Schmidt, Douglas. Object-Oriented Application Frameworks.
Communications of the ACM, New York, v. 40, n. 10, p. 32-38, Oct. 1997.
CASO

DE

USO.

Diagrama

de

cado

de

uso:

Disponvel

em:

<http://www.dsc.ufcg.edu.br/~sampaio/cursos/2007.1/Graduacao/SIII/Uml/diagramas/usecases/usecases.htm>. Acesso em 22 de Abril de 2009.


The Making of Python (em ingls). Artima Developer. Pgina visitada em 2007-0322.

64

ANEXO 1: Circuito eltrico ( esquemtico do Sistema de Rastreabilidade )

ANEXO 2: Cdigo Fonte Pic18f452


Segue abaixo o cdigo fonte do arquivo mykbd.c
// mykbd.C
#byte kbd_rows = 0xF83 // Port D on 18F452
#byte kbd_cols = 0xF81 // Port B on 18F452
#define set_tris_kbd_rows(x) set_tris_d(x)
#define set_tris_kbd_cols(x) set_tris_b(x)
#define Bitmask(x) (1 << (x & 7))
#define COL0
#define COL1
#define COL2
#define COL3
#define COL4
#define COL5
#define ROW0
#define ROW1
#define ROW2
#define ROW3

Bitmask(PIN_B0)
Bitmask(PIN_B1)
Bitmask(PIN_B2)
Bitmask(PIN_B3)
Bitmask(PIN_B4)
Bitmask(PIN_B5)
Bitmask(PIN_D3)
Bitmask(PIN_D2)
Bitmask(PIN_D1)
Bitmask(PIN_D0)

#define ALL_ROWS (ROW0|ROW1|ROW2|ROW3)


#define ALL_COLS (COL0|COL1|COL2|COL3|COL4|COL5)
// Keypad layout:
char const KEYS[4][3] = {{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}};
// Set this number to apx n/333 where
// n is the number of times you expect
// to call kbd_getc each second.
#define KBD_DEBOUNCE_FACTOR 33
void kbd_init()
{
}
char kbd_getc( )
{
static BYTE kbd_call_count;
static short int kbd_down;
static char last_key;
static BYTE col;
BYTE kchar;
BYTE row;
kchar='\0';
if(++kbd_call_count>KBD_DEBOUNCE_FACTOR) {
switch (col) {
case 0 : set_tris_kbd_cols(ALL_COLS&~COL0);
kbd_cols=~COL0&ALL_COLS;

break;
case 1 : set_tris_kbd_cols(ALL_COLS&~COL1);
kbd_cols=~COL1&ALL_COLS;
break;
case 2 : set_tris_kbd_cols(ALL_COLS&~COL2);
kbd_cols=~COL2&ALL_COLS;
break;
}
if(kbd_down) {
if((kbd_rows & (ALL_ROWS))==(ALL_ROWS)) {
kbd_down=FALSE;
kchar=last_key;
last_key='\0';
}
} else {
if((kbd_rows & (ALL_ROWS))!=(ALL_ROWS)) {
if((kbd_rows & ROW0)==0)
row=0;
else if((kbd_rows & ROW1)==0)
row=1;
else if((kbd_rows & ROW2)==0)
row=2;
else if((kbd_rows & ROW3)==0)
row=3;
last_key =KEYS[row][col];
kbd_down = TRUE;
} else {
++col;
if(col==3)
col=0;
}
}
kbd_call_count=0;
}
set_tris_kbd_rows(ALL_ROWS);
set_tris_kbd_cols(ALL_COLS);
return(kchar);
}
Segue abaixo o codigo fonte do arquivo mylcd.c
//
mylcd.c
//
// lcd_init() Deve ser chamado antes de outras funes.
//
// lcd_putc(c) Visualiza c na posio seguinte do display.
//
Caracteres especiais de controle:
//
\f Apagar display
//
\n Passar para segunda linha
//
\b Retroceder uma posio.
//
// lcd_gotoxy(x,y) seleciona uma nova posio de escrita no display.
//
//
// lcd_getc(x,y) Devolve o caracter na posio x y do display.
//
//////////////////////////////////////////////////////////////////////////////
// Definio dos pinos usados para o display

#define LCD_DB4 PIN_D4


#define LCD_DB5 PIN_D5
#define LCD_DB6 PIN_D6
#define LCD_DB7 PIN_D7
#define LCD_RS PIN_E2
//#define LCD_RW PIN_E0
#define LCD_E PIN_E1
// If you only want a 6-pin interface to your LCD, then
// connect the R/W pin on the LCD to ground, and comment
// out the following line.
//#define USE_LCD_RW 1
//========================================
#define lcd_type 2 // 0=5x7, 1=5x10, 2=2 lines
#define lcd_line_two 0x40 // LCD RAM address for the 2nd line
int8 const LCD_INIT_STRING[4] =
{
0x20 | (lcd_type << 2), // Func set: 4-bit, 2 lines, 5x8 dots
0xc, // Display on
1, // Clear display
6 // Increment cursor
};
//------------------------------------void lcd_send_nibble(int8 nibble)
{
// Note: !! converts an integer expression
// to a boolean (1 or 0).
output_bit(LCD_DB4, !!(nibble & 1));
output_bit(LCD_DB5, !!(nibble & 2));
output_bit(LCD_DB6, !!(nibble & 4));
output_bit(LCD_DB7, !!(nibble & 8));
delay_cycles(1);
output_high(LCD_E);
delay_us(2);
output_low(LCD_E);
}
//----------------------------------// This sub-routine is only called by lcd_read_byte().
// It's not a stand-alone routine. For example, the
// R/W signal is set high by lcd_read_byte() before
// this routine is called.
#ifdef USE_LCD_RW
int8 lcd_read_nibble(void)
{
int8 retval;
// Create bit variables so that we can easily set
// individual bits in the retval variable.
#bit retval_0 = retval.0
#bit retval_1 = retval.1

#bit retval_2 = retval.2


#bit retval_3 = retval.3
retval = 0;
output_high(LCD_E);
delay_cycles(1);
retval_0 = input(LCD_DB4);
retval_1 = input(LCD_DB5);
retval_2 = input(LCD_DB6);
retval_3 = input(LCD_DB7);
output_low(LCD_E);
return(retval);
}
#endif
//--------------------------------------// Read a byte from the LCD and return it.
#ifdef USE_LCD_RW
int8 lcd_read_byte(void)
{
int8 low;
int8 high;
output_high(LCD_RW);
delay_cycles(1);
high = lcd_read_nibble();
low = lcd_read_nibble();
return( (high<<4) | low);
}
#endif
//---------------------------------------// Send a byte to the LCD.
void lcd_send_byte(int8 address, int8 n)
{
output_low(LCD_RS);
#ifdef USE_LCD_RW
while(bit_test(lcd_read_byte(),7)) ;
#else
delay_us(60);
#endif
if(address)
output_high(LCD_RS);
else
output_low(LCD_RS);
delay_cycles(1);
#ifdef USE_LCD_RW
output_low(LCD_RW);

delay_cycles(1);
#endif
output_low(LCD_E);
lcd_send_nibble(n >> 4);
lcd_send_nibble(n & 0xf);
}
//---------------------------void lcd_init(void)
{
int8 i;
output_low(LCD_RS);
#ifdef USE_LCD_RW
output_low(LCD_RW);
#endif
output_low(LCD_E);
delay_ms(15);
for(i=0 ;i < 3; i++)
{
lcd_send_nibble(0x03);
delay_ms(5);
}
lcd_send_nibble(0x02);
for(i=0; i < sizeof(LCD_INIT_STRING); i++)
{
lcd_send_byte(0, LCD_INIT_STRING[i]);
// If the R/W signal is not used, then
// the busy bit can't be polled. One of
// the init commands takes longer than
// the hard-coded delay of 60 us, so in
// that case, lets just do a 5 ms delay
// after all four of them.
#ifndef USE_LCD_RW
delay_ms(5);
#endif
}
}
//---------------------------void lcd_gotoxy(int8 x, int8 y)
{
int8 address;
if(y != 1)
address = lcd_line_two;
else
address=0;

address += x-1;
lcd_send_byte(0, 0x80 | address);
}
//----------------------------void lcd_putc(char c)
{
switch(c)
{
case '\f':
lcd_send_byte(0,1);
delay_ms(2);
break;
case '\n':
lcd_gotoxy(1,2);
break;
case '\b':
lcd_send_byte(0,0x10);
break;
default:
lcd_send_byte(1,c);
break;
}
}
//-----------------------------#ifdef USE_LCD_RW
char lcd_getc(int8 x, int8 y)
{
char value;
lcd_gotoxy(x,y);
// Wait until busy flag is low.
while(bit_test(lcd_read_byte(),7));
output_high(LCD_RS);
value = lcd_read_byte();
output_low(lcd_RS);
return(value);
}
#endif
void lcd_setcursor_vb(short visible, short blink) {
lcd_send_byte(0, 0xC|(visible<<1)|blink);
}
Segue abaixo o cdigo fonte do arquivo MYIHM.C

MYIHM.C
/////////////////////////////////////////////////////////////////////////
////
MYIHM.C
////
////

////

////
////
/////////////////////////////////////////////////////////////////////////

#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay(clock=8000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)//Habilita as funes RS232 com velocidade de
9600 baud
#include <mylcd.c>//Inclui funo de manipulao de LCD 16X2
#include <mykbd.c>//Inclui funo de manipulao de teclado matricial de 3X4
/* Declarao de bytes usados para comunicaao RS232 - obtidos no data sheet do PIC 18F452*/
#byte INTCON = 0xFF2 //Registrador INTCON
#define TBit 104 //Valor do Tempo de Bit (us) para 9600
#define MAXBUFFER 20 // Define o tamanho mximo dos buffers de transmisso e recepo
/* declarao de bytes usados para comunicaao RS232 - obtidos no data sheet do PIC 18F452*/
#byte PIR1 = 0xF9E
#byte PIE1 = 0xF9D
#BIT TXIF = PIR1.4
#BIT TXIE = PIE1.4
byte SerialIn[MAXBUFFER]; // buffer de recepo(RX)
byte SerialOut[MAXBUFFER]; // buffer de trasnmiso (TX)
byte ReadPtr=0; // ponteiro de leitura utilizado pela rotina de interrupo
byte ReadBufPtr=0; //ponteiro de leitura indicando o dado disponvel no buffer
byte WritePtr=0; // ponteiro de escrita utilizado pela rotina de interrupo
byte WriteBufPtr=0;// ponteiro de escrita indicando a posio livre no buffer de escrita

/*Funes*/
void ExibeT0(void);//exibe tela 0 LEITURA RFID
void ExibeT1(void);//exibe tela 1 OPERADOR
void ExibeT2(void);//exibe tela 2 ESTACAO
void ExibeT3(void);//exibe tela 3 EVENTO
void ExibeT4(void);//exibe tela 4 RESULTADOS
void ExibeT5(void);//exibe tela 5 LOGIN (OPERADOR, ESTACAO, EVENTO)
void ExibeT6(void);//exibe tela 6 REALIZE O TESTE
void ExibeT7(void);//exibe tela 7 ESTACAO 1 NAO TESTOU
void ExibeT8(void);//exibe tela 8 ESTACAO 2 NAO TESTOU
void ExibeT9(void);//exibe tela 9 ESTACAO 3 NAO TESTOU
void ExibeT10(void);//exibe tela 10 ESTACAO 4 NAO TESTOU
void ExibeT11(void);//exibe tela 11 ESTACAO 5 NAO TESTOU
void ExibeT12(void);//exibe tela 12 ESTACAO 6 NAO TESTOU
void ExibeT13(void);//exibe tela 13 ESTACAO 7 NAO TESTOU
void ExibeT14(void);//exibe tela 14 ESTACAO 8 NAO TESTOU
void ExibeT15(void);//exibe tela 15 RASTREABILIDADE OK
void ExibeT16(void);//exibe tela 16 AGUARDA RESPOSTA SERVIDOR
void UpdateTag(void);
//#int_ext
void RecPacT(void); //Recebe Pacote do RFID (interrupo RB0)
void MontaRFID(void);//Monta RFID ( 2 bytes)

/*Variveis Globais*/
char k=0;
char Operador=0;
char Estacao=0;
char Evento=0;
int Estado=0;
int i=0,j=0,Cont=0;
int8 Byte1[16]="000000000000000", pos=0;
int NewTag=0,upok=0;
char recebido;
char dado[20];
int EstadoCom=0;

/* PACOTE:|0|1|2|3|4|5|6|7|8|9|.|1|.|2|.|1|
| DADO RFID 10BITS |.|O|P|.|E|S|.|E|V|*/
char val3[20]="0123456789.1.2.3";// Teste constante fixa
char val4[20]="0000000000.0.0.0";// String para montagem e transmissao RFID
char val2[20]="0000000000.0.0.0";// String para montagem e tela RFID
char val0[20]="0000000000.0.0.0";// String para montagem e transmissao PACOTE VAZIO
/* rotina de tratamento da interrupo de leitura da porta serial chamada sempre que um dado foi
recebido */
#INT_RDA // diretiva compilador
void readSerial()
{
/* coloca o dado recebido no buffer RX */
SerialIn[ReadPtr++]=getc();
/* controle do ponteiro cclico */
if (ReadPtr == MAXBUFFER) ReadPtr=0;
}
/* rotina para retirar uma dado do buffer RX substitui getc*/
byte readBuffer()
{
byte data;
/* esperar por haver um dado no buffer RX */
if (ReadBufPtr == ReadPtr) return 0;
data = SerialIn[ReadBufPtr++];
/* controle cclico do ponteiro */
if (ReadBufPtr == MAXBUFFER) ReadBufPtr=0;
return data;
}
/* rotina de tratamento da interrupo de escrita da porta serial, chamada sempre que um dado foi
transmitido */
#INT_TBE // diretiva compilador
void writeSerial()
{
/* transmite quando exsite um dado no buffer TX */
if (WriteBufPtr != WritePtr)
{
putc(SerialOut[WritePtr++]);
/* controle do ponteiro cclico */
if (WritePtr == MAXBUFFER) WritePtr=0;
}

/* disabilita a interrupo quando buffer TX est vazio */


else
disable_interrupts(INT_TBE);
}
/* rotina para inserir uma dado no buffer TX substitui putc */
void writeBuffer(byte data)
{
/* espera por espao livre no buffer TX */
while ((WriteBufPtr == (WritePtr -1)) || ((WriteBufPtr==MAXBUFFER-1) && (WritePtr == 0)));
SerialOut[WriteBufPtr++] = data; // controle cclico do ponteiro
if (WriteBufPtr == MAXBUFFER) WriteBufPtr=0; // ativa a interrupo de TX para enviar dado se j
no est em andamento
if ((TXIF) && (TXIE == 0))
enable_interrupts(INT_TBE);
}
/* funo puts utilizando o buffer de trasnmisso */
puts_int(char *ptr)
{
while (*ptr) writeBuffer(*ptr++);
writeBuffer('\r');
writeBuffer('\n');
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
struct bit
{
int1 BitRecTra; //Bit Recebido da INT RB0
};
struct bit BitRecTra[8]; //Bits recebidos da INT RB0 (Pacote)
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT0(void)
{
Estado=0;
lcd_putc("\fRASTREABILIDADE\n");//Tela inicial
lcd_putc("Leia o codigo:\n");
lcd_gotoxy(15,2);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT1(void)
{
Estado=1;
delay_ms(1000);
lcd_putc("\fLOGIN OPERADOR\n");//Tela 1
lcd_putc("digite:\n");
lcd_gotoxy(8,2);
While(Estado==1)
{
k=kbd_getc();
if(k!=0)
lcd_putc(k);
Operador=k;
if(Operador!=0)
{
Estado=2;
ExibeT2();

}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT2(void)
{
Estado=2;
delay_ms(1000);
lcd_putc("\fLOGIN ESTACAO\n");//Tela 2
lcd_putc("digite:\n");
lcd_gotoxy(8,2);
While(Estado==2)
{
k=kbd_getc();
if(k!=0)
lcd_putc(k);
Estacao=k;
if(Estacao!=0)
{
Estado=3;
ExibeT3();
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT3(void)
{
Estado=3;
delay_ms(1000);
lcd_putc("\fEVENTO\n");//Tela 3
lcd_putc("digite:\n");
lcd_gotoxy(8,2);
While(Estado==3)
{
k=kbd_getc();
if(k!=0)
lcd_putc(k);
Evento=k;
if(Evento!=0)
{
Estado=4;
ExibeT4();
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT4(void)
{
Estado=4;
lcd_putc("\fMontando Login:\n");
lcd_gotoxy(4,2);
lcd_putc(Operador);
lcd_gotoxy(8,2);
lcd_putc(Estacao);
lcd_gotoxy(12,2);
lcd_putc(Evento);
delay_ms(2000);
val4[11]=Operador;
val4[13]=Estacao;

val4[15]=Evento;
lcd_putc("\f");
lcd_putc("\fMontando dados:\n");
lcd_gotoxy(1,2);
printf(lcd_putc, "%s ", val4);
delay_ms(2000);
EstadoCom=1;
Estado=0;
ExibeT16();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT5(void)
{
Estado=5;
lcd_putc("\fRASTREABILIDADE\n");//Tela inicial
lcd_putc("Digite opcao:\n");
lcd_gotoxy(15,2);
Estado=0;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void UpdateTag(void)
{
for(i=0;i<10;i++)
{
val4[i]=Byte1[i+1];
}
lcd_putc("\f");
printf(lcd_putc, "%s\n ",val4);
delay_ms(500);
NewTag=0;
ExibeT5();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void MontaRFID(void) //Monta os bytes do cdigo do RFID
{
for(j=0;j<8;j++)
{
// (MSB)Byte1(LSB) -----------------------------------------------------if(bit_test(BitRecTra[j].BitRecTra,0))
bit_set(Byte1[pos],j);
else
bit_clear(Byte1[pos],j);
}
pos++;
if (pos==14)
{
NewTag=1;
Byte1[pos]=0;
pos=0;
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT6(void)
{
Estado=6;
lcd_putc("\fRASTREABILIDADE\n");//Realize os testes, Login ok, Rastreabilidade ok (Estacoes

anteriores ok)
lcd_putc("REALIZE TESTES:\n");
lcd_gotoxy(15,2);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT7(void)
{
Estado=7;
lcd_putc("\fESTACAO 1\n");//Retornar a estao anterior, pois os resultados no estao ok ou nao
foram realizados
lcd_putc("NAO TESTOU!\n");
lcd_gotoxy(15,2);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT8(void)
{
Estado=8;
lcd_putc("\fESTACAO 2\n");//Retornar a estao anterior, pois os resultados no esto ok ou no
foram realizados
lcd_putc("NAO TESTOU!\n");
lcd_gotoxy(15,2);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT9(void)
{
Estado=9;
lcd_putc("\fESTACAO 3\n");//Retornar a estao anterior, pois os resultados no esto ok ou no
foram realizados
lcd_putc("NAO TESTOU!\n");
lcd_gotoxy(15,2);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT10(void)
{
Estado=10;
lcd_putc("\fESTACAO 4\n");//Retornar a estao anterior, pois os resultados no esto ok ou no
foram realizados
lcd_putc("NAO TESTOU!\n");
lcd_gotoxy(15,2);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT11(void)
{
Estado=11;
lcd_putc("\fESTACAO 5\n");//Retornar a estao anterior, pois os resultados no esto ok ou no
foram realizados
lcd_putc("NAO TESTOU!\n");
lcd_gotoxy(15,2);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT12(void)
{
Estado=12;
lcd_putc("\fESTACAO 6\n");//Retornar a estao anterior, pois os resultados no esto ok ou no

foram realizados
lcd_putc("NAO TESTOU!\n");
lcd_gotoxy(15,2);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT13(void)
{
Estado=13;
lcd_putc("\fESTACAO 7\n");//Retornar a estao anterior, pois os resultados no esto ok ou no
foram realizados
lcd_putc("NAO TESTOU!\n");
lcd_gotoxy(15,2);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT14(void)
{
Estado=14;
lcd_putc("\fESTACAO 8\n");//Retornar a estao anterior, pois os resultados no esto ok ou no
foram realizados
lcd_putc("NAO TESTOU!\n");
lcd_gotoxy(15,2);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT15(void)
{
Estado=15;
lcd_putc("\fRASTREABILIDADE\n");//Retornar a estao anterior, pois os resultados no esto ok
ou nao foram realizados
lcd_putc("OK!\n");
lcd_gotoxy(15,2);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void ExibeT16(void)
{
Estado=15;
lcd_putc("\fAGUARDA RESPOSTA\n");//Aguarda Resposta do Servidor
lcd_putc("DO SERVIDOR\n");
lcd_gotoxy(15,2);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
#int_ext
void RecPacT(void)
{
INTCON = 0x00; //Desabilita a interrupo (Global | Int_ext)
//----------------------------------------------------------------------delay_us(TBit);
delay_us(TBit/4);
if(!NewTag)
{
BitRecTra[0].BitRecTra = input(PIN_B0); //LSB do Byte
delay_us(TBit);
BitRecTra[1].BitRecTra = input(PIN_B0);
delay_us(TBit);
BitRecTra[2].BitRecTra = input(PIN_B0);
delay_us(TBit);

BitRecTra[3].BitRecTra = input(PIN_B0);
delay_us(TBit);
BitRecTra[4].BitRecTra = input(PIN_B0);
delay_us(TBit);
BitRecTra[5].BitRecTra = input(PIN_B0);
delay_us(TBit);
BitRecTra[6].BitRecTra = input(PIN_B0);
delay_us(TBit);
BitRecTra[7].BitRecTra = input(PIN_B0); //MSB Byte
// Fim da leitura do Pacote Recebido
MontaRFID();
}
INTCON = 0xD0; //Habilita a interrupo (Global | Int_ext)
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void main()
{
char recebido;
char dado[20];
/*** Inicializao de interrupo externa ***/
SETUP_COUNTERS(rtcc_internal,rtcc_div_32);
ext_int_edge(H_TO_L);
INTCON = 0xD0; //Habilita a interrupo (Global | Int_ext)
/*** Inicializao de interrupo serial ***/
enable_interrupts(INT_RDA);//habilita interrupo de recepo
enable_interrupts(GLOBAL);//habilita interrupes
lcd_init();
kbd_init();
if(Estado!=5)
ExibeT0();
while (TRUE)
{
if(!input(PIN_B3))//Tecla de funo F1 ( Operador )
{
INTCON =0;
ExibeT1();
}
else
if(!input(PIN_B4))//Tecla de funo F2 ( Estao )
{
INTCON =0;
ExibeT2();
}
else
if(!input(PIN_B5))//Tecla de funo F3 ( Evento )
{
INTCON =0;
ExibeT3();
}
else
if(!input(PIN_B2))//Tecla de funo F0 ( Menu Iniciar )

{
INTCON =0;
ExibeT0();
}
INTCON = 0xD0; //Habilita a interrupo (Global | Int_ext)
if(NewTag)
UpdateTag();
/*** Rotina de leitura do buffer RX ***/
delay_ms(50);
recebido=readBuffer();
if(recebido=='t')//Caracter recebido na serial TOKEN
{
if(EstadoCom==0)
{
/*lcd_putc("\f");
lcd_putc("\fEnviando dados:\n");
lcd_gotoxy(1,2);
printf(lcd_putc, "%s ", val0);
delay_ms(4000);
*/
sprintf(dado,"%s",val0);
puts_int(dado);
//ExibeT0();
EstadoCom=0;
}
else
if(EstadoCom==1)
{
lcd_putc("\f");
lcd_putc("\fEnviando dados:\n");
lcd_gotoxy(1,2);
printf(lcd_putc, "%s ", val4);
delay_ms(4000);
sprintf(dado,"%s",val4);
puts_int(dado);
ExibeT16();
EstadoCom=0;
}
}
else
if(recebido=='0') ExibeT6();
else
if (recebido=='1') ExibeT7();
else
if (recebido=='2') ExibeT8();
else
if (recebido=='3')ExibeT9();
else
if (recebido=='4')ExibeT10();
else
if (recebido=='5') ExibeT11();
else
if (recebido=='6')ExibeT12();
else
if (recebido=='7') ExibeT13();

else
if (recebido=='8') ExibeT14();
else
if (recebido=='9')ExibeT15();

}
}

ANEXO 3: Codigo Fonte Aplicativo Web


No diretorio rprfid no arquivo settings.py, responsvel pela configurao do projeto
# Django settings for rprfid project.
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@domain.com'),
)
MANAGERS = ADMINS
DATABASE_ENGINE = 'sqlite3'
# 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or
'oracle'.
DATABASE_NAME = 'rprfid.db'
# Or path to database file if using sqlite3.
DATABASE_USER = ''
# Not used with sqlite3.
DATABASE_PASSWORD = ''
# Not used with sqlite3.
DATABASE_HOST = ''
# Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''
# Set to empty string for default. Not used with sqlite3.
# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# If running in a Windows environment this must be set to the same as your
# system time zone.
TIME_ZONE = 'America/Sao_Paulo'
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'pt-BR'
SITE_ID = 1
# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True
# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = ''
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com", "http://example.com/media/"
MEDIA_URL = ''
# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: "http://foo.com/media/", "/media/".
ADMIN_MEDIA_PREFIX = '/media/'
# Make this unique, and don't share it with anybody.
SECRET_KEY = '!fpgec(zs4ad^g&m=j#10^uw%amfv6a+v^vzct^i=5rk+9zwzl'
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.load_template_source',
'django.template.loaders.app_directories.load_template_source',
# 'django.template.loaders.eggs.load_template_source',
)

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
)
ROOT_URLCONF = 'rprfid.urls'
TEMPLATE_DIRS = (
'/home/tiago/Projetos/rprfid/templates'
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'rprfid.main',
)
No diretorio rprfid no arquivo urls.py, responsvel pela direcionamentos das url.
import settings
from django.conf.urls.defaults import *
from rprfid.main.views import index
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^$', index),
(r'^admin/(.*)', admin.site.root),
)
if settings.DEBUG:
urlpatterns += patterns('',
(r'^static/(?P<path>.*)$',
'django.views.static.serve',
{'document_root': '/home/tiago/Projetos/rprfid/static'}),
)
No diretorio rprfid no arquivo rprfid_daemon.py, a implementao das rotinas de leitura da porta
usb.
#!/usr/bin/env python
#-*- coding: utf-8 -*import os
import sys
import time
import serial
from optparse import OptionParser
try:
import settings
except ImportError:
sys.stderr.write('Arquivo settings.py no encontrado.\n')
sys.exit(1)

try:
from django.core.management import setup_environ
except ImportError:
sys.stderr.write('No foi possvel importar django.core.management.setup_environ, verifique sua
instalao do Django.\n')
sys.exit(1)
# Configura ambiente de execuo.
setup_environ(settings)
from rprfid.main.models import Registro, Operador, Estacao, Evento
def le_usb(usb):
# Abre conexo com a Serial
ser = serial.Serial("/dev/ttyUSB0", 9600)
matrizxbee=['5678','6789']
matrizteste=['ok','','','','','','','','']
s=0
while 1:
if (matrizxbee[s]=='5678'):
print("Testando xbee 5678")
# Verificao Xbee
ser.write('+++')
resultado1=ser.readline(eol='\r')
print(resultado1)
time.sleep(1)
ser.write('ATDL5678\r')
resultado2=ser.readline(eol='\r')
print(resultado2)
time.sleep(0.1)
#ser.write('ATWR\r')
#resultado3=ser.readline(eol='\r')
#print(resultado3)
time.sleep(1)
ser.write('ATCN\r')
resultado4=ser.readline(eol='\r')
print(resultado4)
#Fim verificao xbee
ser.write("t")
linha = ser.readline()
slinha = linha.split('.')
atual=int(slinha[2][0])
anterior=int(slinha[2][0])-1
#print linha
if linha!="":
if slinha[0]=="0000000000" and slinha[1][0]=="0" and slinha[2][0]=="0"
and slinha[3][0]=="0":
arquivo = open("/home/tiago/Projetos/rprfid/arq.txt", 'a')
arquivo.write("Estao no tem dados\n")
arquivo.close()
else:
# Incluso de registro inicial estao 1
if slinha[0]!="" and slinha[1][0]!="" and slinha[2][0]=="1" and
slinha[3][0]=="0":
ser.write("0")
else:
if slinha[0]!="" and slinha[1][0]!="" and slinha[2]
[0]=="1" and slinha[3][0]=="9":
#print("Estou aqui-2")
r = Registro(

codigo=slinha[0],
operador=Operador.objects.filter(codigo=slinha[1][0])[0],
estacao=Estacao.objects.filter(codigo=slinha[2][0])[0],
evento=Evento.objects.filter(codigo=slinha[3]
[0])[0],
)
r.save()
ser.write("9")
if slinha[0]!="" and slinha[1][0]!="" and slinha[2]
[0]=="1" and slinha[3][0]!="9":
#print("Estou aqui-1")
r = Registro(
codigo=slinha[0],
operador=Operador.objects.filter(codigo=slinha[1][0])[0],
estacao=Estacao.objects.filter(codigo=slinha[2][0])[0],
evento=Evento.objects.filter(codigo=slinha[3]
[0])[0],
)
r.save()
ser.write("9")
# Termino incluso de registro inicial estao 1
# Inicio incluso de registro inicial demais estaes
# Verificao da estao e evento Ok
if slinha[0]!="" and slinha[1][0]!="" and slinha[2][0]!="1" and
slinha[3][0]=="0":
#print("Estou aqui")
n=slinha[2][0]
if
Registro.objects.values().filter(codigo=slinha[0],
estacao=atual-1, evento=9):
for x in range(1,int(n)+1):
if
Registro.objects.values().filter(codigo=slinha[0], estacao=x):
matrizteste[x]='ok'
else:
matrizteste[x]='nok'
for i in range(1,int(n)):
if matrizteste[i]=="nok":
ser.write(str(i))
break
else:
ser.write("0")
matrizteste=['ok','','','','','','','','']
else:
ser.write(str(anterior))
else:
#print("Estou aqui 2")
if slinha[0]!="" and slinha[1][0]!="" and slinha[2][0]!="1"
and slinha[3][0]!="0":
n=slinha[2][0]
for x in range(1,int(n)+1):
if
Registro.objects.values().filter(codigo=slinha[0], estacao=x):
matrizteste[x]='ok'
else:
matrizteste[x]='nok'
for i in range(1,int(n)):
if matrizteste[i]=="nok":
ser.write(str(i))

break
if
Registro.objects.values().filter(codigo=slinha[0], estacao=atual-1, evento=9):
#print("Estou aqui3")
r = Registro(
codigo=slinha[0],
operador=Operador.objects.filter(codigo=slinha[1][0])[0],
estacao=Estacao.objects.filter(codigo=slinha[2][0])[0],
evento=Evento.objects.filter(codigo=slinha[3][0])[0],
)
r.save()
ser.write("9")
matrizteste=['ok','','','','','','','','']
else:
if
Registro.objects.values().filter(codigo=slinha[0], estacao=atual-1, evento=9):
#print("Estou aqui4")
r = Registro(
codigo=slinha[0],
operador=Operador.objects.filter(codigo=slinha[1][0])[0],
estacao=Estacao.objects.filter(codigo=slinha[2][0])[0],
evento=Evento.objects.filter(codigo=slinha[3][0])[0],
)
r.save()
matrizteste=['ok','','','','','','','','']
else:
ser.write(str(anterior))
s=1
if (matrizxbee[s]=='6789'):
print("Testando xbee 6789")
print("No disponivel")
s=0
#Fim verificao xbee
time.sleep(5)

def le_arquivo(arq):
arquivo = open(arq, 'r')
for linha in arquivo.readlines():
linha = linha.split('.')
print linha[0], linha[1], linha[2], linha[3]
r = Registro(
codigo=linha[0],
operador=Operador.objects.filter(codigo=linha[1])[0],
estacao=Estacao.objects.filter(codigo=linha[2])[0],
evento=Evento.objects.filter(codigo=linha[3].replace('\n',''))[0],
)
r.save()
if __name__ == "__main__":
oparser = OptionParser(usage=u'%prog [opcao]')
oparser.add_option('--usb', action="store_true",
help=u'Faz a leitura dos dados da porta USB.')

oparser.add_option('--arquivo', action="store_true",
help=u'Faz a leitura dos dados de um arquivo')
options, args = oparser.parse_args()
if not options.usb and not options.arquivo:
oparser.print_help()
if options.usb:
le_usb('/dev/ttyUSB0')
if options.arquivo:
le_arquivo('arquivox.txt')
No diretorio rprfid/main, tem o arquivo models.py onde tem a estrutura do banco de dados
# -*- coding: utf-8 -*from django.db import models
from django.contrib.auth.models import User

class Evento(models.Model):
codigo = models.CharField(max_length=50)
nome = models.CharField(max_length=50)
descricao = models.TextField()
def __unicode__(self):
return '%s %s' % (self.codigo, self.nome)

class Estacao(models.Model):
codigo = models.CharField(max_length=50)
nome = models.CharField(max_length=50)
descricao = models.TextField()
def __unicode__(self):
return self.nome

class Operador(models.Model):
usuario = models.ForeignKey(User)
codigo = models.CharField(max_length=64)
setor = models.CharField(max_length=64)
cargo = models.CharField(max_length=64)
def __unicode__(self):
return '%s %s' % (self.codigo, self.usuario)

class Registro(models.Model):
codigo = models.CharField(max_length=10)
operador = models.ForeignKey('Operador')
estacao = models.ForeignKey('Estacao')
evento = models.ForeignKey('Evento')
data = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
return self.codigo
No diretorio rprfid/main, tem o arquivo views.py onde tem o direcionamento da pagina index.html
from django.template import RequestContext
from django.shortcuts import render_to_response
from rprfid.main.models import Evento, Estacao, Operador, Registro
def index(request):
return render_to_response(
'index.html',
{'registro': Registro.objects.all(),
},
context_instance=RequestContext(request)
)
No diretorio rprfid/templates, tem o arquivo index.html
{% extends "base_header_menu_footer.html" %}
{% load i18n %}
{% block content %}
<div id="display_box">
<div class="container">
<h2>{{ registro.count }} {% trans "Registro" %}</h2>
{% if registro.count %}
<table cellspacing="0">
<thead>
<tr><th>Produto</th><th>Operador</th><th>Estacao</th><th>Evento</th><th>Data</th></tr>
</thead>
<tbody>
{% for r in registro %}
<tr class="{% cycle 'row1' 'row2' %}">
<td>{{ r.codigo }}</a></td><td>{{ r.operador }}</td><td>{{ r.estacao }}</td><td>{{ r.evento }}</td><t
d>{{ r.data }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<div id="info">
<p>Nenhum registro encontrado</p>
</div>
{% endif %}
</div>
{% endblock %}

Anda mungkin juga menyukai