Manual

do

Maker

.

com

Configurar o leitor RFID RC522 no Raspberry

Configurar o leitor RFID RC522 no Raspberry

Pra variar, mais um projeto com Raspberry Pi que pego e o procedimento não é trivial. Tem os passos tradicionais que o colocam pra o RC522 no Raspberry Pi 1 sem maiores problemas e os passos adicionais, que permitem seu uso no Raspberry Pi 2. Vou descrever o processo e quando forem os passos adicionais, aviso. Desse modo, você poderá parar tão logo a versão 1 do seu RPi esteja configurado ou então seguir adiante para os próximos passos, caso deseje configurar o RC522 no RPi 2.

Atualizando o sistema do Raspberry

Não importa se é uma imagem que você acabou de baixar, siga esse procedimento para garantir que o processo seja o mesmo descrito nesse post. É bom que você preceda mantendo tudo atualizado para a configuração adequada, portanto recomendo que faça isso:

sudo su
apt-get update
apt-get dist-upgrade
reboot

Isto é, você atualiza os repositórios, então faz uma atualização do sistema e posteriormente o reinicia. Pra mim esse processo foi fundamental na Raspberry Pi 3, que não estava achando o WiFi com a imagem padrão. Mas isso também pode ajudar a previnir outros tipos de erros, portanto, é extremamente recomendado.

RC522 no Raspberry

Barramento SPI

O barramento SPI (ou, Serial Peripheral Interface) é um dos tantos barramentos seriais disponíveis. Em seu comportamento, tenho uma visão de que ele se assimila ligeiramente ao RS485 por ter um master e vários slaves em uma rede. A maior diferença é que ele serve para comunicação no barramento do hardware, mas não só isso.

Em displays ele é grandemente difundido e também é utilizado em comunicação com cartão de memória. O comportamento normal é a comunicação full-duplex entre master-slave, tendo apenas um master.

Quando escravo, ele recebe sinal de clock e quando em mestre, ele gera o sinal. Nesse caso, ele precisa de um gatilho para habilitar o periférico que fará a comunicação e é aí que começamos falar de Raspberry.

Barramento SPI no Raspberry

As conexões são as mesmas para as diferentes versões do RPi, porém como existem variações do número de pinos de GPIO, as conexões ficam mais ao centro ou mais à borda.

Uma característica interessante do Raspberry é que ele não suporta comunicação com slaves. Ao contrário, suporta apenas master e o mais interessante - suporta 2 dispositivos master. Logo você já deve ter imaginado; 2 dispositivos, 2 gatilhos. E assim o é. Se você olhar a imagem de pinout, verá os gatilhos CE0 e CE1. Esses gatilhos funcionam de forma simples, bastando levantar ou baixar o nível lógico. Desse modo, qualquer pino serviria como gatilho, mas considere que bibliotecas já tem um endereçamento pré-definido.

Habilitar o barramento SPI no Raspberry

Não, o barramento não está disponível por padrão. Será necessário habilitá-lo manualmente ou da maneira mais prática, através do programa 'raspi-config'.

No próximo menu, basta habilitar o SPI.

Pra resumir, alguns questionamentos serão feitos. Apenas confirme (iniciar durante o boot, bla,bla,bla...). Ao término, quando selecionar 'Finish', ele perguntará se deve reiniciar. Confirme também.

Baixar o programa para testes

Primeiro de tudo, precisamos testar. Depois cada um implementa como quiser, mas para o teste recomendo algo bem simples, como essa belezinha escrita em Python. Mas calma, não acabou por ai; antes de executá-lo será necessário instalar essa outra coisinha.  Sugiro que faça tudo via git mesmo. Ao clonar, entre no diretório SPI-Py e como root instale a dependência e execute a instalação:

sudo su
apt-get install python-dev
python setup.py build
python setup.py install

Depois disso, sugiro que faça um reboot. Ao iniciar novamente, entre no diretório MFRC522-python e experimente fazer a leitura:

python Reader.py

Hum? Ah, é. Faltou o wiring, vamos lá.

wiring-rc522.jpg

Se você tem o RPi 1, parabéns, seu trabalho terminou. Se você tem o RPi 2, acomode-se um pouco mais.

Device tree

Nas versões mais atuais dos sistemas para Raspberry, o Device Tree é utilizado por padrão para alocação de recursos e carga de módulos, porém esse recurso não é 100% integrado com o sistema e barramentos como o I²C, SPI e I²S precisam ser instanciados. Para tal, forçamos a carga no boot, modificando o arquivo /boot/config.txt. Apenas adicione a linha a seguir ao final do arquivo:

device_tree=on

Muito fácil até aqui, não? Ótimo, porque ainda tem mais trabalho pela frente.

Baixar a última versão da biblioteca da Broadcom BCM 2835

A última versão disponível na publicação desse post é a 1.50, disponível nesse link, mas você pode visitar o site aqui e bisbilhotar se tem algo novo.

Após baixar, será necessário compilá-lo, uma vez que trata-se de código C.

tar zxvf bcm2835-1.50.tar.gz && cd bcm2835-1.50
./configure && make && sudo su
make check && make install && reboot

Como todo o remédio, esse também tem efeito colateral. Você não poderá acessar o GPIO pelo pino quando usando o RC522 porque ele coloca o GPIO em modo BOARD. Por exemplo:

import RPi.GPIO as GPIO

#ai voce escolhe
GPIO.setmode(GPIO.BOARD)
#ou...
GPIO.setmode(GPIO.BCM)

O programa utiliza GPIO.BOARD, portanto você precisará referenciar-se pelo número do pino especificado na board para utilizar o GPIO com o MFRC522-python.

Não vou fazer video de algo tão besta quanto ler uma tag, desculpe-me se esperava por isso. EU até fiz um video, mas é idiota demais um video pra mostrar a leitura de um cartão RFID e certamente os negativadores negativarão; os haters odiarão. Mas tranquilamente deve funcionar pra você, se funcionou pra mim.

Em um outro post mostro como configurar um segundo dispositivo SPI. Não posso fazê-lo agora porque estou em um projeto sobre isso e não posso utilizar os mesmos hardwares pra fazer o exemplo, não seria ético, mas tenho mais dispositivos SPI, logo mais escrevo.

Aproveite pra se inscrever na nossa página. à direita, você pode curtir nossa fanpage e lá em cima, no começo da página, tem o nosso grupo do face no último ícone.

Inscreva-se no nosso canal Manual do Maker Brasil no YouTube.

Próximo post a caminho!

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.