Esta API foi desenvolvida como trabalho da disciplina de Programação de Sistemas Embarcados da UFMG –Prof. Ricardo de Oliveira Duarte –Departamento de Engenharia Eletrônica.
Autores: João Vitor Gomes Mapa da Silva | Tiago de Faria Oliveira
Essa API foi desenvolvida para realizar comunicação entre o módulo RFID-RC522 e o microcontrolador STM32F103RBTx.
O módulo RFID-RC522 foi desenvolvido para criar um campo eletromagnético de 13,56 MHz e se comunicar com tags RFID (tags padrão ISO 14443A).
O sensor pode se comunicar com um microcontrolador através do padrão SPI (usado no projeto dessa API) de 4 pinos com uma taxa de dados máxima de 10 Mbps. Ele também suporta comunicação sobre os protocolos I2C e UART.
Mais detalhes sobre o hardware desse módulo podem ser encotrados no datasheet.
As imagens abaixo representam o microcontrolador utilizado para desenvolver a API, e o esquema de ligação entre os componentes.
Para utilizar essa biblioteca é necessário existir uma variável do tipo SPI_HandleTypeDef inicializada como um barremento SPI. O barramento desejado pode ser selecionado com
void SET_HSPI(SPI_HandleTypeDef hspi)
O objetivo dessa função é identificar se há um cartão, com tag RFID, próximo ao sensor. Ela é uma função lógica que retorna verdadeiro caso houver cartão e falso, caso não haja contato de alguma tag com o sensor.
retorna true caso sejam iguais e false caso não.
bool IsCardPresent(void)Essa função retorna o UID do cartão que estive em contato com o sensor RFID. Essa função é útil para situações em que a tag e sensor RFID são usadas para a autenticação de usuários. As catracas de controle de acesso dos prédios da Escola de Engenharia, são um exemplo de locais onde essa função tem aplicação.
uid é o endereço do UID a ser comparado.
retorna true caso sejam iguais e false caso não.
bool getCardUID(uint8_t* uid)Essa função recebe um ponteiro com endereço de memória de um UID ou de um array de UID's e verifica se algum deles é igual ao UID que está sendo lido através do sensor RFID.
uid é o endereço do cartao que se deseja comparar.
retorna true caso sejam iguais e false caso não.
bool verifyUID(uint8_t*uid)Essa função lê um bloco do cartão.
blockValue é onde os dados armazenados serão retornados.
blockAddr é o endereço do bloco que se deseja ler.
retorna true para sucesso e false para fracasso.
bool readMIFARE(uint8_t* blockValue,uint8_t blockAddr)Essa função é usada para escrever informações adicionais na etiqueta do cartão RFID.
data é o endereço onde o valor do bloco será escrito.
blockAddr é o endereço do bloco que se deseja ler.
não tem retorno.
void writeMIFARE(uint8_t* data,uint8_t blockAddr)

