RFID com Raspberry Pi e Python

Saiba mais como realizar uma comunicação com modulo RFID utilizando SPI do GPIO da Raspberry PI e modulos e código na linguagem Python.
raspberry pi

Introdução

Identificação por radiofrequência, como podemos chamar o RFID, não é uma tecnologia recente e há especulações que já era utilizada na segunda guerra mundial. É a comunicação por sinal de rádio onde um dos dispositivos é energizado e fica ativo, e o outro lado, a TAG (chaveiro ou cartão RFID), não necessariamente é energizado. Quando aproximados, realizasse a captura da informação do TAG, tecnologia essa que deu o passo inicial para NFC (Near Field Communication).

Utilizando o computador de bolso mais popular, o Raspberry Pi, a linguagem de programação Python, que é o canivete suíço para prototipar ideias, e um módulo RFID comercial vamos ver como é simples, direto e didático fazer a comunicação via SPI com essa turma. 

Não conhece muito bem o Raspberry Pi? Veja o artigo Raspberry Pi do Thiago Lima. E como vamos usar o Raspberry Pi B com Linux, para conhecer melhor essa dupla veja o artigo A Raspberry Pi e o Linux de Vinicius Maciel. Se isso não te assusta, continue lendo o artigo.

Módulo RFID

O Mifare MFRC522 (NXP RC522), ou comercialmente RFID-RC522, é um dos mais populares leitores RFID do mercado, no modo comprar, ligar e usar, uma excelente forma para prototipar.

O RFID-RC522 já vem pronto para ser utilizado, fazendo uso da comunicação SPI. Essa comunicação é nova pra você? Então recomendo o artigo Comunicação SPI do Francesco Sacco. Além disso o CI RC522 possui os recursos I2C e UART para comunicação e realiza comunicação RFID a 13.56 MHz.

Na figura 1 temos uma imagem do nosso módulo leitor RFID (RFID-RC522) e junto o que o acompanha na compra, um chaveiro e um cartão.

raspberry pi

Figura 1 – Módulo RFID com cartão e chaveiro

Segue a relação dos pinos disponíveis para alimentação e comunicação na figura 2.

raspberry pi

Figura 2 – Relação de pinos de alimentação e comunicação do módulo RFID

Esquema de ligação

Na sequência, na figura 3, o esquema de ligação do módulo RFC522 com o Raspberry Pi.

raspberry pi

Figura 3 – Esquema de ligação do módulo RFID com o GPIO do Raspberry Pi B

Apenas alguns detalhes no esquema de ligação é a alimentação 3,3V utilizando o pino 1 do barra de pinos de GPIO, e a comunicação SPI, sendo o SDA no módulo RFID o sinal CS (Chip Select) ou SS (Slave Select), que depende da adoção do fabricante, sendo o correto uso do nome SDA para comunicação I2C.

Configuração do ambiente host

  • Board: Raspberry Pi B;
  • Distribuição: Raspbian – Debian Wheezy (2014-01-07);
  • Kernel 3.12.22;
  • Python 2.7.

Preparando o ambiente

Agora a parte legal, vamos preparar o Raspbian para liberar o uso device SPI no Linux, resolver as dependências de software e testar com uma aplicação padrão de teste. Para isso, o primeiro passo é verificar se o dispositivo SPI está liberado, ou melhor, se o módulo do kernel subiu para fornecer o acesso.

Se na sua Raspberry Pi obteve as mesmas saídas acima, o módulo SPI está desabilitado. Caso contrário, pule a próxima etapa. No Raspbian isso quer dizer que ele está no black list do modprobe, e para habilitar o módulo SPI siga o passo a passo abaixo e reinicie a Raspberry Pi.

Verificando novamente:

Para ler/escrever no barramento SPI precisamos de um módulo no Python. Um que possui rotinas e funções bem escritas é o SPI-Py do Louis Thiery. Vamos clonar o repositório do GitHub, compilar e instalar. Mas antes, é necessário confirmar se possui o python-dev. Você pode verificar com o comando abaixo: 

No caso acima temos instalado. Caso não aparecesse python2.7-dev ou python-dev, poderia executar a sua instalação com o comando abaixo: 

Agora vamos clonar o repositório do SPI-Py, acessar o diretório e instalar. 

O módulo para comunicação via SPI está pronto. Agora vamos baixar de outro repositório um código exemplo pronto para comunicar com RC522, que depende do módulo SPI-Py para funcionar, no caso é o MFRC522-python que, além do SPI-Py, utiliza também o RPi.GPIO

Testando a aplicação RFID

Dos arquivos clonados do repositório e que estão no diretório MFRC522-python, o importante neste momento é saber que toda programação e tratamento do SPI com o RF522 está no arquivo MFRC522.py, e que no arquivo Read.py há um exemplo pronto para testar a comunicação e o Write.py é outro exemplo para gravação no RC522. 

No momento que aproximo o cartão: 

Agora, vamos utilizar o módulo MFRC522.py e criar uma aplicação nossa baseada no Read.py. Primeiro vou abrir o código do Read.py e comentá-lo, logo em seguida irei escrever nossa aplicação (veja os comentários para mais detalhes). 

O código foi exposto e adicionei alguns comentários para facilitar. As informações detalhadas sobre o protocolo e o modo de autenticação pode ser abstraído no datasheet do cartão RFID. No meu caso o cartão é um MIFARE Classic 4k e do código do MFRC522.py.

Agora vamos à nossa aplicação rfid_embarcados.py, onde utilizaremos a estrutura pronta do Read.py, removendo a parte de autenticação. 

No caso, para um controle simples, criei uma lista chamada acessos_autorizados=[] que contem listas de ID’s RFID. Na linha 73 verifico se o uid recebido está contido ou não da minha lista. Em caso positivo, irá imprimir “Acesso Liberado!”, caso contrário, “Sem Acesso!”. Agora vamos ver nossa aplicação em funcionamento.

A aplicação funcionou como previsto, porém, algumas implementações novas surgiram na aplicação como a função check_user() e um except ImportError. Nesses casos, estou garantindo que a aplicação só deve continuar se estiver sendo executada com permissão de super-usuário e é obrigatório ter MFRC522 e RPi.GPIO para prosseguir. Agora vamos ver o que ocorre se executar a aplicação como usuário comum e logo em seguida, executar se não tivermos o MFRC522.py. 

Para melhorar essa aplicação, poderia utilizar um banco de dados que contém os IDs com alguns nomes e informações, realizar consultas e, em caso de sucesso, poderia acionar algum GPIO e abrir uma porta ou liberar algo.

Implemente, invente e faça seus testes e qualquer dúvida envie pelos comentários.

Conclusão

Vimos como é fácil realizar a configuração do módulo ao Raspberry Pi B, como é prático preparar o Linux com Python e realizar os testes, e como é simples utilizar o módulo que baixamos para criar uma aplicação própria para ler os dados RFID. E utilizando um arquivo exemplo mais os recursos do python conseguimos criar uma aplicação simples e com recursos interessantes, como por exemplo verificar se é o root que está executando e se o módulo existe.

Referências

http://www.nxp.com/documents/data_sheet/MFRC522.pdf
https://github.com/lthiery/SPI-Py
https://github.com/mxgxw/MFRC522-python
https://pypi.python.org/pypi/RPi.GPIO
https://www.nxp.com/documents/data_sheet/MF1S70YYX.pdf

Notificações
Notificar
guest
66 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Fabricio Ribeiro
Fabricio Ribeiro
26/01/2020 18:25

Srs, por acaso o Raspberry Pi 3 e este codigo seria compativel com leitor RFID da Intelbras (ex. LE 130) ? O Leitor tem comunicação Wiegand.
Obrigado pela ajuda

Raphael
Raphael
22/02/2019 16:21

Pessoal, boa tarde!

Já segui várias instruções e sempre acabo no mesmo lugar. Ao executar qualquer script que envolva o módulo MFRC22, recebo o erro:

TypeError: function takes exactly 2 arguments (1 given).

Alguma ideia ou procedimento que posso tomar para solucionar isso?

Obrigado.

Vinicius Maciel
Vinicius Maciel
Membro
Reply to  Raphael
06/08/2019 19:18
Jorge
Jorge
06/02/2018 09:00

Gostei do artigo, obrigado e parabens!!

Matheus George Abel
Matheus Abel
02/12/2017 14:37

Olá Cleiton, estou tentando implementar este artigo em uma BeagleBone Black, acha que é possível? Há alguma diferença significativa na parte de configuração dos módulos do kernel para comunicação SPI? Obrigado.

tiago
tiago
17/11/2017 15:45

Olá, gostaria de saber se é possível e como realizar a leitura da RFID e consulta em um banco de dados que esta em um servidor, tudo isso via rede.

Javier Thevenet
Javier Thevenet
27/07/2015 19:21

hola, quisiera hacer una consulta sobre el modulo MFRC522. Segui todos los pasos de este post

pero cuando ejecuto Read.py no detecta la tarjeta ni el llavero.He probado con varias tarjetas y llaveros. Verifique conexiones y todos los pasos.
Alguna sugerencia para que pueda hacer funcionar el modulo? Gracias!

Cleiton Bueno
Cleiton Bueno
Reply to  Javier Thevenet
19/08/2015 10:40

Hola javier. Su tarjeta RFID también se MIFARE? ¿Qué error?

Bruno Oliveira de Faria
Bruno Oliveira de Faria
04/06/2015 12:35

Cleiton estou querendo escrever em uma tag rfid, você pode informar como ou conhece algum site que descreva sobre isto?

Cleiton Bueno
Cleiton Bueno
Reply to  Bruno Oliveira de Faria
04/06/2015 13:45

Olá Bruno,

recomendaria você ler o artigo do Henrique Puhlmann (http://embarcados.com.br/introducao-a-tecnologia-de-identificacao-rfid/) ele aborda com muitos detalhes o RDIF e principalmente as classes e você terá a resposta para as duas perguntas sobre ler e/ou escrever em um ou o que são os números que aparecem.

Abraço.

Bruno Oliveira de Faria
Bruno Oliveira de Faria
03/06/2015 19:18

Cleiton, você sabe me dizer o que representa cada número desse UID “227, 41, 93, 116” ?

Cleiton Bueno
Cleiton Bueno
Reply to  Bruno Oliveira de Faria
04/06/2015 13:56

Recomendo a leitura no caso do artigo usei este da MIFARE:

http://www.nxp.com/documents/data_sheet/MF1S70YYX.pdf

E este outro link:
http://www.corerfid.com/Files/077%20Mifare%20Codes%20FAQ.pdf

Pra você entender o que é UID e quando/como pode modificá-lo de acordo com o modelo que possuir.

Bruno Oliveira de Faria
Bruno Oliveira de Faria
10/05/2015 14:19

Parceiro segui os passos do artigo e deu tudo certo até o momento em que tentei a identificação da tag rfid, onde não acontece nada. Só fica naquele parte “Welcome…”
Tenho o raspberry b+, os pinos da da comunicação SPI pelo que pesquisei são em lugares diferentes do raspberry b, será que pode ser isto?

Cleiton Bueno
Cleiton Bueno
Reply to  Bruno Oliveira de Faria
10/05/2015 17:43

Olá Bruno, sim o GPIO da Raspberry PI B+ possui mais pinos, porém, fisicamente o SPI e os pinos utilizados aqui estão na mesma localização, veja a imagem do link a seguir:

http://data.designspark.info/uploads/images/53bc258dc6c0425cb44870b50ab30621

Se você verificar tanto no Raspberry PI B quando na Raspberry PI B+ são utilizados os pinos (19,21,23) e (22,24), e estes pinos “físicos” estão na mesma ordem no RaspB+, porém o GPIO é estendido um pouco mais.

Você conectou olhando na descrição do SPI do novo GPIO?

Bruno Oliveira de Faria
Bruno Oliveira de Faria
Reply to  Cleiton Bueno
11/05/2015 07:47

Realmente Cleiton, a posições dos pinos são as mesmas. E sim, conectei conforme a SPI do novo GPIO. Provavelmente o problema não será esse. O que acha que pode ser? Outra coisa tem a possibilidade de minha tag estar vazia?

Cleiton Bueno
Cleiton Bueno
Reply to  Bruno Oliveira de Faria
11/05/2015 21:39

Você esta executando como super-usuário(root)? Tentou o segundo exemplo rfid_embarcados.py?

Bruno Oliveira de Faria
Bruno Oliveira de Faria
Reply to  Cleiton Bueno
11/05/2015 21:49

Boa noite amigo, primeiramente muito obrigado pela atenção. Estou executando conforme esta no seu artigo “sudo python Read.py”. O segundo exemplo não tentei. Mas esta engraçado parece que não estabeleceu nenhuma conexão entre o rfid e raspberry pois não esboça nenhuma mensagem, nem de erro. Só fica no “Welcome…”

Cleiton Bueno
Cleiton Bueno
Reply to  Bruno Oliveira de Faria
11/05/2015 22:06

Que isso Bruno.

Então, se esta iniciando e parando em:

print “Welcome to the MFRC522 data read example”
print “Press Ctrl-C to stop.”

Esta aguardando a leitura, se realmente as ligações estão corretas e continuidade da conexão OK, pode ser algo com cartão ou chaveiro RFID, tem outro para testar ou como ver se estes ae esta OK?

Bruno Oliveira de Faria
Bruno Oliveira de Faria
Reply to  Cleiton Bueno
11/05/2015 22:21

Então Cleiton as ligações fiz conforme seu artigo, creio que está ok!
Testei os dois o cartão e o chaveiro que veio com o produto e não deu certo. Tenho outros porém são de 125 khz. 7
Pois é Cleiton, não sei como ver se estão “Ok”, você tem alguma ideia?
Obs: testei o segundo exemplo e ele fica aguardando a leitura, sem sucesso!

Cleiton Bueno
Cleiton Bueno
Reply to  Bruno Oliveira de Faria
11/05/2015 22:35

Mas o modulo RFID é um MFRC522? Ou qual você esta usando?

Bruno Oliveira de Faria
Bruno Oliveira de Faria
Reply to  Cleiton Bueno
11/05/2015 23:05

Estou usando o mesmo do seu artigo o MFRC522! Falei do 125khz pois estou com outra antena rfid aqui. Mas resolvi usar o C522 por ter encontrado seu artigo e não precisar de uma protoboard!

Cleiton Bueno
Cleiton Bueno
Reply to  Bruno Oliveira de Faria
13/05/2015 22:46

Estou sem parâmetros/recursos para falar pra voce Bruno.
Tem como você tirar uma foto da placa + o modulo instalado? Fazer upload em algum lugar e passar o link.

PS: Existe algum /dev/spi*?

Bruno Oliveira de Faria
Bruno Oliveira de Faria
Reply to  Cleiton Bueno
14/05/2015 07:14
Cleiton Bueno
Cleiton Bueno
Reply to  Bruno Oliveira de Faria
14/05/2015 11:33

Gostei que conseguiu usar as mesmas cores na ligação 🙂

Bruno, copie o código abaixo, salve como teste.py dentro do diretório do MFRC522-python onde esta o Read.py e Write.py.

http://pastebin.com/kfkKUWvp

E execute com:
$ sudo python teste.py

PS: E mostre a saída pra mim, se der erro também, porque eu adaptei mas não testei.

Bruno Oliveira de Faria
Bruno Oliveira de Faria
Reply to  Cleiton Bueno
14/05/2015 21:03

Segue a img do codigo em execução. Ele entra em modo de loop nesse Type e Status.
Tirei uma foto porque estou acessando remotamente do vnc e o print não estava dando xD.

Ps: Deu erro no momento de executar o código porém já arrumei. E antes que pergunte, ou não hehe, eu testei aqui com o cartão e a tag e não esboçou nem um resultado.

Cleiton Bueno
Cleiton Bueno
Reply to  Bruno Oliveira de Faria
14/05/2015 21:15

Baseado na informação modulo MFRC522.py

https://github.com/mxgxw/MFRC522-python/blob/master/MFRC522.py

Nas linhas 36 a 38 podemos ver que 2 é ERRO, quando você passa o cartão ele retornar 2 tambem?
Tenta adicionar um time.sleep(0.25) e la em cima coloca um import time

Pode-se tentar outros parâmetros do próprio modulo pra tentar chegar a algo mais concreto.

O Cartão RFID e chaveiro você testou ou tem como testar pra ver se estão ok? Porque eu tenho um chaveiro que nunca funcionou.

Bruno Oliveira de Faria
Bruno Oliveira de Faria
Reply to  Cleiton Bueno
14/05/2015 21:35

Não entendi muito bem quando você disse: “Nas linhas 36 a 38 podemos ver que 2 é ERRO”.

Mas assim, quando passo o cartão e o chaveiro não acontece nada, o sistema continua em loop como se não houvesse nenhuma intervenção.

Qual a necessidade do time.sleep?

Pois é, com relação a testar, eu não sei como realizar o procedimento para verificar a integridade do cartão e do chaveiro, já dei umas pesquisadas aqui mas não achei nada concreto.

Obrigado pela atenção Cleiton!

Cleiton Bueno
Cleiton Bueno
Reply to  Bruno Oliveira de Faria
14/05/2015 22:28

Na ultima imagem que você passou, o status vale 2, nas linhas 36, 37 e 38 do MFRC522.py tem a variável que equivale a este numero. MI_OK = 0 MI_NOTAGERR = 1 MI_ERR = 2 Sobre o time.sleep() é para colocar um “delay” nesse loop e não ficar direto, ae lá parte superior do código que enviar você coloca lá. import time E dentro do while continue_reading: e antes do (status,uid) = MIFAREReader.MFRC522_Anticoll(). eu colocaria um time.sleep(0.25) Sobre demais testes, estou ficando sem alternativas, porque esse mesmo passo a passo dois amigos fizeram e fluiu bem, e mais uma galera… Leia mais »

Bruno Oliveira de Faria
Bruno Oliveira de Faria
Reply to  Cleiton Bueno
17/05/2015 12:13

Pois é Cletion, também estou sem saber onde recorrer e a que recorrer. E precisava resolver logo, pois esse protótipo é pro meu tcc que tem que estar pronto ate julho!
A possibilidade de meu modulo estar com defeito não existe né? Pelo fato da luz estar acendendo.

E com relação ao Arduíno, não tenho ele :/.

Mas obrigado mais uma vez pela atenção,

Bruno Oliveira de Faria
Bruno Oliveira de Faria
Reply to  Bruno Oliveira de Faria
17/05/2015 12:15

Você conhece algum bom fórum que posso expor esse meu problema?

Roberto Falk
Roberto Falk
Reply to  Bruno Oliveira de Faria
29/08/2015 23:12

Oi Bruno, alguma evolução? Estou enfrentando o mesmo problema com meu rasp B+.

Att.,
Roberto

Cleiton Bueno
Cleiton Bueno
Reply to  Roberto Falk
30/08/2015 10:41

Olá Roberto, você esta com o mesmo problema (erro) que o Bruno? Quer reportar a saida aqui?

Abraço

Roberto Falk
Roberto Falk
Reply to  Cleiton Bueno
30/08/2015 13:40

Estou exatamente com o mesmo problema do Bruno, ao aproximar o cartão ou o chaveiro, nada acontece. Estranho que pelo que li nos foruns, parece que o problema so ocorre com rasp pi B+. Obrigado!

Bruno Oliveira de Faria
Bruno Oliveira de Faria
Reply to  Roberto Falk
31/08/2015 13:41

Ola Roberto. O meu consegui resolver sim e o problema nem era no código ou em algum passo do artigo que tinha seguido erroneamente , o problema era mal contato do módulo rfid, eu não tinha soldado os pinos com o módulo rc522, com isso não tinha um contato plausível. Depois que soldei, ficou “balaa”.

Cleiton Bueno
Cleiton Bueno
Reply to  Bruno Oliveira de Faria
31/08/2015 14:09

Legal Bruno, que bom que deu certo.
E obrigado por compartilhar a solução 😉

Bruno Oliveira de Faria
Bruno Oliveira de Faria
Reply to  Cleiton Bueno
13/05/2015 21:57

Aguardando respostas suas Cleiton. Estou sem saber o que fazer. Tenho pesquisado aqui mas não encontro nada de concreto pro meu problema!

Jonas Eduardo Scheibe
Jonas Eduardo Scheibe
14/04/2015 22:51

Como eu faria para ler as tags em hexadecimal?

Cleiton Bueno
Cleiton Bueno
Reply to  Jonas Eduardo Scheibe
15/04/2015 08:40

Olá Jonas, para ler direto em hexadecimal precisaria verificar no modulo que esta lendo e implementado. Uma alternatura é usar a função hex() do Python, assim você pode criar a lista atual como hexadecimal e se for o caso converter o que esta chegando no caso do post a lista uid. Um exemplo usando a nossa lista acessos_autorizados: acessos_autorizados = [[227,41,93,116,227], [201,39,92,115,201], [225,95,12,103,225]] print acessos_autorizados # # … # acessos_autorizados_hex = [ [hex(id_hex) for id_hex in inds] for inds in acessos_autorizados ] print acessos_autorizados_hex Acima estou convertendo para hex a nossa lista criada, mas você pode trocar o acessos_autorizados pelo… Leia mais »

Jonas Eduardo Scheibe
Jonas Eduardo Scheibe
Reply to  Cleiton Bueno
15/04/2015 19:53

Obrigado pelo retorno Cleiton.

Contudo, ainda fiquei na dúvida, com relação a simples leitura dos cartões. Simplesmente fazer printar na tela em hexadecimal.

Cleiton Bueno
Cleiton Bueno
Reply to  Jonas Eduardo Scheibe
15/04/2015 22:13

No exemplo que escrevi usei uma lista com 5 elementos, quem esta usando 4 é no Read.py que usei do repositorio clonado.

Quando vou testar a aplicação exemplo, no caso, Read.py que veio no repositorio (MFRC522-python) tenho a linha 64:

# Print UID

print “Card read UID: “+str(uid[0])+”,”+str(uid[1])+”,”+str(uid[2])+”,”+str(uid[3])

Se eu quisesse imprimir o uid em hexadecimal, eu faria assim:

print “Card read UID: “+str(hex(uid[0]))+”,”+str(hex(uid[1]))+”,”+str(hex(uid[2]))+”,”+str(hex(uid[3]))

Explicando o print espera uma string, o uid contem em cada indice um numero, então de numero convertemos para hexadecimal e formatamos para o formato string e usamos no print.

Ficou mais claro agora, ajudou?

Jonas Eduardo Scheibe
Jonas Eduardo Scheibe
Reply to  Cleiton Bueno
15/04/2015 23:39

Muito bom!
Perfeito, funcionou. Quem sabe, sabe né Cleiton.
Estou trabalhando em um projeto com banco de dados, e como arranho no arduino, consegui fazê-lo funcionar em Windows.

Decidimos utilizar um Raspberry como terminal, por isso a necessidade do retorno em hexa.
Agora preciso extrunchar uma maneira de printar o hexa, sem o “0x” na frente. Alguma sugestão?

Como sempre, Muito Obrigado!

Cleiton Bueno
Cleiton Bueno
Reply to  Jonas Eduardo Scheibe
15/04/2015 23:51

Opa, que bom que deu certo.

Sim, tem o modo Chuck Norris e o normal pra resolver isso rs*

# Método Chuch Norris
print “Card read UID: “+str(hex(uid[0])).strip(‘0x’)+”,”+str(hex(uid[1])).strip(‘0x’)+”,”+str(hex(uid[2])).strip(‘0x’)+”,”+str(hex(uid[3]).strip(‘0x’))

# Método 2 ( Ate facilitou o seu print 🙂 )
print “Card read UID: %x %x %x %x” % (uid[0], uid[1], uid[2], uid[3])

Jonas Eduardo Scheibe
Jonas Eduardo Scheibe
Reply to  Cleiton Bueno
15/04/2015 23:57

Ééééééééééééééééé muuuuuuuuiiiiito bom esse Cleiton Bueno.

Faz juz ao Sobrenome.

Muitíssimo obrigado!

Rodrigo Araújo Cavalcante
Rodrigo Araújo Cavalcante
Reply to  Cleiton Bueno
18/08/2015 10:47

Bom dia, sei que tem um certo tempinho, estou na seguinte duvida, usei o seu codigo de exemplo no entanto minha TAG usando o “Read.py” só retorna 4 elementos, fiz a alteração na lista para apenas 4 elementos, mas ainda sim da a mensagem “Sem Acesso”
“Print do acessos_autorizados”
[[20, 205, 28, 150], [165, 251, 192, 193]]
Pressione Ctrl-C para encerrar a aplicação.
Card read UID: 20,205,28,150
Sem acesso!

Cleiton Bueno
Cleiton Bueno
Reply to  Rodrigo Araújo Cavalcante
19/08/2015 10:37

Olá Rodrigo, você esta usando o Read.py ou o exemplo que fizemos no artigo?

Se estiver usando o exemplo que fizemos adicione a seguinte linha para ajudar no debug de problema:

# Get the UID of the card
(status,uid) = MIFAREReader.MFRC522_Anticoll()

# Print status and uid
print(“Status -> %s” % status)
print(“UID -> %s” % uid)
print(“Size List -> %d” % len(uid))

# If we have the UID, continue
if status == MIFAREReader.MI_OK:
if uid in acessos_autorizados:
print(“Acesso liberado!”)
else:
print(“Sem acesso!”)

WEBINAR

Visão Computacional para a redução de erros em processos manuais

DATA: 23/09 ÀS 17:00 H