Usando módulo RFID com Raspberry Pi 4
Neste post vamos mostrar como usar o módulo RFID MFRC522 com Raspberry Pi, criando um prático controle de acesso usando poucas linhas de código.
O RFID (Radio Frequency Identification ou Identificação por Radiofrequência) é muito usado em projetos de controle de acesso pela sua versatilidade e facilidade de uso. Com uma simples tag você permite (ou não) o acesso de pessoas a determinados ambientes na sua casa ou escritório.
O módulo RFID que vamos usar é esse da imagem abaixo, muito utilizado em projetos maker pelo seu baixo custo e facilidade de uso.

Ele funciona com tags de 13.56 MHz e é compatível com cartões do tipo Mifare, como o Mifare1 S50, S70 Mifare1, Mifare UltraLight, Mifare Pro e Mifare Desfire.
Confira também o uso desse módulo com Arduino.
Conexão do módulo RFID MFRC522 na Raspberry Pi 4
A conexão do MFRC522 na placa Raspberry Pi 4 segue o esquema mostrado abaixo. O módulo usa a interface SPI, que na Raspberry Pi se encontra nos pinos 19,21, 23 e 24:

Vamos então conectar os pinos do módulo RFID na Raspberry Pi da seguinte maneira:
| PINO MFRC522 | PINO RASPBERRY PI |
| 3.3V | Pino 1 – 3.3V |
| RST | Pino 22 (GPIO25) |
| GND | Pino 6 – GND |
| IRQ | Não usado |
| MISO | Pino 21 (GPIO9) |
| MOSI | Pino 19 (GPIO10) |
| SCK | Pino 23 (GPIO11) |
| SDA | Pino 24 (GPIO8) |
Além do módulo, vamos acrescentar ao circuito 2 leds para sinalizar se o cartão foi aceito ou recusado.
O led verde será conectado no pino 11 (GPIO17) e o led vermelho no pino 13 (GPIO27).
Nosso circuito fica assim:

No circuito usei resistores de 1 K para os leds, mas você pode usar os valores que estiverem disponíveis na sua bancada.
Instalação biblioteca MFRC522
Nesta etapa você já deve estar com a sua placa Raspberry Pi configurada e o sistema operacional Raspbian instalado.
Aqui fizemos uma instalação “limpa” utilizando as informações do post Raspberry Pi Imager: um jeito fácil de instalar o Raspbian. Seguindo as instruções desse post em poucos minutos você configura o cartão SD e instala o Raspbian na sua placa Raspberry Pi.
Antes de qualquer coisa, vamos atualizar o Raspbian com os comandos:
sudo apt-get update sudo apt-get upgrade
Vamos agora habilitar a interface SPI, usando o raspi-config:
sudo raspi-config
Na tela principal do raspi-config escolha a opção 3 – Interface Options, na tela seguinte a opção P4 SPI e responda SIM à pergunta “Você deseja habilitar a interface SPI?”

Após a confirmação de que a interface SPI foi habilitada, podemos sair do raspi-config.
Reinicie a placa. Para conferir se o módulo RFID foi reconhecido use o comando
lsmod | gre spi
…que deve mostrar uma saída como essa:

Agora instale os pacotes python3-dev e python-pip, e também a biblioteca spidev:
sudo apt-get install python3-dev python3-pip sudo pip3 install spidev
Finalmente, vamos instalar a biblioteca MFRC522, que vai possibilitar o uso de comandos simples para reconhecer a tag RFID:
sudo pip3 install mfrc522
Com a configuração finalizada, vamos aos programas de teste.
Lendo tags RFID com Raspberry Pi
Para ler o valor da tag usando a biblioteca MFRC522 que instalamos no passo anterior vamos usar um pequeno programa em python.
Copie o código abaixo e grave em um arquivo chamado leitura.py
#Programa: Teste leitura ID tag RFID
#Autor: Arduino e Cia
#!/usr/bin/env python
import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522
leitorRfid = SimpleMFRC522()
print("Aproxime o cartao da leitora...")
try:
id, text = leitorRfid.read()
print("ID do cartao: ", id)
finally:
GPIO.cleanup()
Rode o programa usando o comando sudo python3 leitura.py
O que esse programa faz é simplesmente ler a ID (identificação) do cartão e mostrar o seu valor na tela. É útil quando você quer fazer um teste rápido de funcionamento do circuito. A saída do programa fica assim:

Agora que eu sei a ID do meu cartão, posso usar essa informação nesse outro programa, que vai acender o led verde se o cartão for permitido, ou o led vermelho se for um cartão inválido.
Coloque a ID da tag que você deseja permitir na linha 27:
#Programa: Controle de Acesso RFID com Raspberry Pi
#Autor: Arduino e Cia
#!/usr/bin/env python
import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522
import time
leitorRfid = SimpleMFRC522()
GPIO.setmode(GPIO.BOARD)
#Define os pinos 11 e 13 como saida
GPIO.setup(11, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
#Apaga os leds
GPIO.output(11, 0)
GPIO.output(13, 0)
print("Aproxime o cartao da leitora...")
try:
id, text = leitorRfid.read()
print("ID do cartao: ", id)
if id == 291913269973:
print("Tag RFID valida!")
GPIO.output(11, 1)
time.sleep(2)
else:
print("Tag RFID nao permitida!")
GPIO.output(13,1)
time.sleep(2)
finally:
GPIO.cleanup()
Você pode melhorar este projeto acrescentando por exemplo um display LCD para mostrar informações ao usuário, ou então acionar relés usando a GPIO e criando o seu projeto de automação residencial.
Gostou? Confira outros posts usando RFID aqui mesmo no Arduino e Cia!