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!