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.

Módulo RFID MFRC522

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:

Interface SPI na GPIO da Raspberry Pi

Vamos então conectar os pinos do módulo RFID na Raspberry Pi da seguinte maneira:

PINO MFRC522PINO RASPBERRY PI
3.3VPino 1 – 3.3V
RSTPino 22 (GPIO25)
GNDPino 6 – GND
IRQNão usado
MISOPino 21 (GPIO9)
MOSIPino 19 (GPIO10)
SCKPino 23 (GPIO11)
SDAPino 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:

Circuito Raspberry Pi 4 e módulo RFID MFRC522

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?”

Raspi-config habilitar 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:

Saida terminal lsmod

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:

Saida leitura ID do cartão RFID

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!

5/5 - (1 vote)