Leitor didático de RFID

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor ivair » 28 Mai 2009 18:08

Olá Jorge segue o número e o código de um dos cartões:
45759 000000000000000000011111111111111
00000011111 11111000000 000000111111 00000011111 11111000000 00000011111
111111000000 00000011111 11111000000 0000001111111 00001111111 0000011111 00000011111 000000111111
00000111111 00000011111 00000011111 000000111111 00000111111 00000011111 00000011111 000000011111
11111100000 00000011111 00000011111 000000111111 11111000000 000000111111 1111000000 000000111111
1111100000 111111000000 11111000000 000000111111 11111000000 00000011111 11111000000 111110000000.
após isso o número de repete. O início é uma sequência de 19 0s seguidos de 14 1s, fiz uma separação no que acho ser o período de um bit. A codificação "deve ser" manchester, ou seja se houver uma transição de baixo para alto no meio do bit é 1 e de alto para baixo é 0.
se você olhar no txt que está no final da página cujo link foi postado, poderá ver que somente os 259 bits finais de cada string diferem de um cartão para outro. "Rodando o Manchester" nessa parte do código cheguei ao valor 3836513 que não tem relação com o número do cartão.
Mas lendo o artigo recomendado pelo MOR_AL vimos que parece ter bits de controle no código (start,stop) e vendo a norma ISO parece ter CRC para verificação do erro na própria string.
ivair
Bit
 
Mensagens: 15
Registrado em: 07 Jun 2007 22:24

Mensagempor Jorge_Francisco » 28 Mai 2009 18:41

Qual o fabricante deste cartão? Só por curiosidade.
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor Jorge_Francisco » 28 Mai 2009 18:44

A tradução daquela página encontra-se aqui:

http://www2.eletronica.org/projetos/leitor-rfid
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor MOR_AL » 28 Mai 2009 21:24

Só para constar.
Uma vez que a parte de deteção do sinal já se encontra funcionando, obviamente que já detetaram que, no diagrama esquemático, o emissor do transistor Q2, pino 1 do 2N3906, está trocado com o coletor (pino 3). O emissor fica em cima e o coletor embaixo.
[]'s
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor Jorge_Francisco » 29 Mai 2009 00:54

Cheguei a pouco do trabalho e tive uma ideia. Independente do modo em que eu junte os bits eles possuem um padrão básico, que são 6 zeros e 5 uns. Separando então desta forma, percebi que as 3 strings formam 113 conjuntos de bits. Só que às vezes não ficam apenas 6 zeros ou 5 uns, acontece de ter um conjunto com 7 uns ou 4 zeros, nem mais, nem menos. Considerei então que cada conjunto de bits deveriam formar um intervalo de bit, aí reduzi os 113 conjuntos para 113 bits. Cada string de cada cartão tem 113 bits. Mas porque reduzi para 113 bits? Porque não faz diferença na hora de decodificar, os outros bits apenas servem para "temporizar", para acharmos o intervalo.

Com esse meu método doido consegui achar algo próximo da String procurada usando 01 para o bit 1 e 10 para o bit 0. A única conclusão que cheguei é que tem algum erro na aquisição dos dados. Ou eu sou burro,ou tenho a imaginação fértil,ou então tem algum bit vindo errado.Ou algo que eu não entendo.

Ou então sou burro com imaginação fértil,hehehehehe.

Abraço,
Jorge
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor fabim » 29 Mai 2009 09:04

Estava lendo tudo isso e tentando imaginar uma solução, e reparei que ficar pensando em 0 e 1 é o que esta ocasionando a confusão do pafússio.

IF, fazer o seguinte, montar uma rotininha simples contando que cada bit desses 0 e 1 = a 200uS.

Monta uma rotininha simples pra fazer o scan do inicio ao fim dos bytes de memo dos 1 e 0, e ir jogando isto para um pino do pic e fazer a leitura com o osciloscopio ?

Tipo, os bit´s das string´s = 0, envia 1 para o pino do pic, e as strings = 1 envia zero.
Observando o dado como sendo onda quadrada bunitinho, pode-se imprimir isto em uma folha e traçar linhas de tempo para fazer uma carta de tempos, isto vai facilitar muito para poder chegar em um padrão que se adeque ao valor real do numero do cartão..

Bom foi só uma idéia.

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor MOR_AL » 29 Mai 2009 10:32

No site da Texas Instruments tem muita informação sobre rfid.
http://www.ti.com/ww/br/prod_rfid.html
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor Jorge_Francisco » 29 Mai 2009 11:11

fabim escreveu:Estava lendo tudo isso e tentando imaginar uma solução, e reparei que ficar pensando em 0 e 1 é o que esta ocasionando a confusão do pafússio.

IF, fazer o seguinte, montar uma rotininha simples contando que cada bit desses 0 e 1 = a 200uS.

Monta uma rotininha simples pra fazer o scan do inicio ao fim dos bytes de memo dos 1 e 0, e ir jogando isto para um pino do pic e fazer a leitura com o osciloscopio ?

Tipo, os bit´s das string´s = 0, envia 1 para o pino do pic, e as strings = 1 envia zero.
Observando o dado como sendo onda quadrada bunitinho, pode-se imprimir isto em uma folha e traçar linhas de tempo para fazer uma carta de tempos, isto vai facilitar muito para poder chegar em um padrão que se adeque ao valor real do numero do cartão..

Bom foi só uma idéia.

Fabim


Então fabim,foi mais ou menos assim que pensei. So que fiz diretamente com os bits.
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor Jorge_Francisco » 29 Mai 2009 11:49

Esses cartões vem com um numero já gravado com essa string ou foi gravado pelo nosso colega?

Se puder ser gravado então eu gravaria 3 cartões com o numero 0(zero), aí veria o que muda. depois gravaria 0, 1 e 2 em cada um dos cartões e faria novamente a comparação.
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor ivair » 29 Mai 2009 13:29

Olá amigos,

A marca do cartão é HID. Em um está escrito HID corporation e no outro HID proximity.

Quanto ao 2N3906 fiz a alteração logo no início do projeto para o "modelo tradicional", porém funcionou da mesma forma :?: , excitando a bobina com a mesma amplitude e gerando o mesmo valor.

Os cartões já estão gravados, o esquema somente prevê um leitor.

O código original não funcionou aqui, troquei dois e-mails com o Rich Huang solicitando sua autorização para utilizar seu projeto como base para um trabalho escolar e questionando também se ele não tinha uma versão final do esquema elétrico, pois, se olhar a versão2 do asm que ele disponibiliza não “bate” com o esquema elétrico.
Ele respondeu que o código é livre, que gostaria muito que fosse utilizado por outras pessoas, mas que a alteração no esquema fica como um “estudo” para quem utilizasse.
Uma coisa que acho estranho é que na página tem muito sobre o início, mas nada sobre o resultado, cadê o número do cartão? Minha impressão é que ele enroscou no mesmo ponto que nós. E como não consegui fazer o código dele funcionar fico na dúvida.

Os poucos comentários que encontrei sobre o protocolo diz que o cada bit é representado por um conjunto de 10 OU 12 bits (daí a variação da quantidade de os e 1s) e a codificação é Manchester.
Depois que fiz um ajuste fino no filtro para eliminar os 125 khz posso passar o cartão 10 vezes que o número gerado é sempre idêntico. Estou fazendo um vídeo sobre isso e vou postar na minha página juntamente com o asm.
ivair
Bit
 
Mensagens: 15
Registrado em: 07 Jun 2007 22:24

Mensagempor fabim » 29 Mai 2009 13:46

faz o seguinte, coloca aqui a sequencia binaria de bit´s mais recente ja com os acertos feitos no filtro.

Tive uma ideóta!!

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Jorge_Francisco » 29 Mai 2009 13:53

String 45759 :

1111111111111100000011111111110000000000001111110000001111111111000000
0000001111111111100000000000011111111110000000000001111111000011111110
0000111110000001111100000011111100000111111000000111110000001111100000
0111111000001111110000001111100000011111000000011111111111000000000001
1111000000111110000001111111111100000000000011111111110000000000001111
1111111000001111110000001111100000000000011111111111000000000000111111
1111000000111110000000000001111110000001111111111000000111110000001111
1100000111111000000000000111110000000000000000000111111111111111000000
1111111111000000000000111111000000111111111100000000000011111111111000
00

Agrupando 5 uns e 6 zeros,depois considerando uma sequencia de uns em 1(um) e uma sequencia de zeros em 0(zero), resulta em qualquer string sempre em 113 bits:

11101100101N100110011001010101010101010101010101010110011001011001010110010110011001100110011000011101100101100110

1011001010111111(45759 em binário)

01100101101001100110010101010101(45759 com o método 01=1,10=0)

O N na sequência em vermelho indica que deveria ter dois bits ali. E na sequencia do numero 45759 depois da codificação manchester, sobra dois bits que coloquei em azul.
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor fabim » 29 Mai 2009 14:38

Código: Selecionar todos
000000000000000000011111111111111
00000011111x0          y1   
11111000000x1      y0
000000111111  x0      y1
 00000011111 x0       y1
11111000000x1        y0
 00000011111 x0.     y1

111111000000 x1    y0 
00000011111 x0       y1
11111000000 x1       y0
0000001111111 x0  y1
 00001111111x0        y1
 0000011111x0         y1
 00000011111 x0        y1 
000000111111 x0       y1

00000111111x0         y1
 00000011111 x0       y1
00000011111 x0        y1
000000111111x0      y1
 00000111111 x0   y1
00000011111 x0     y1
00000011111 x0       y1 
000000011111 x0      y1

11111100000 x1        y0
00000011111 x0       y1
00000011111 x0      y1
00000011111x0       y1
111111000000 x1    y0
000000111111 x0    y1
1111000000 x1       y0
000000111111 x0   y1

1111100000 x1       y0
111111000000 x1  y0
11111000000 x1      y0
000000111111 x0   y1
11111000000 x1     y0
00000011111 x0    y1
11111000000 x1    y0
111110000000. x1  y0


como é o negócio?
Eu estava estudando assim, e percebi que sempre ia faltar 2 bits para 5 bytes.
Quer dizer que os 5 bytes = valor de cada string de "45759", em binário ?

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor ivair » 29 Mai 2009 16:20

Fabim, segue o pedido:
111111111111110000001111111111000000000000111111000000111111111100000000000011111111111
0000000000001111111111000000000000111111000001111110000001111100000011111000000111111
000001111110000001111100000011111000000111111000001111110000001111100000011111000000
111111111110000000000001111100000011111000000111111111110000000000001111111111000000000000
11111111111000001111110000001111100000000000011111111111000000000000111111111100000011111
0000000000001111110000001111111111000000111110000001111110000011111100000000000011111
cartão = 45759, a leitura inicia após uma sequência de 19 0s (que não apoarece na string depois 14 1s e depois o númeroapós esse código os números começam a repetir.

na página: http://br.geocities.com/ivairt/leitor

tem mais um vídeo que mostra a string sendo recebida pelo PC, um txt com as strings de dois cartões (capturadas no vídeo) e o asm completo.
Se tiver um tempinho de olhar pode ajudar a esclarecer.
ivair
Bit
 
Mensagens: 15
Registrado em: 07 Jun 2007 22:24

Mensagempor fabim » 29 Mai 2009 16:50

Imagem

Pergunto, quais dos dois padrões, os seus cartões seguem ?
Putz to com um nó na cabeça..
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

AnteriorPróximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x